Commit 73d3a3ec authored by 罗超's avatar 罗超

新增资产审核,一键登录资产系统

parent 02c848e9
import request from '../../utils/request_zc'
export function getAuditChangeLogPageList(data) {
return request({
url: '/property/GetAuditChangeLogPageList',
method: 'post',
data
});
}
export function auditOrRefund(data) {
return request({
url: '/property/AuditOrRefund',
method: 'post',
data
});
}
export function getPropertyAuditDetail(data) {
return request({
url: '/property/GetPropertyAuditDetail',
method: 'post',
data
});
}
\ No newline at end of file
...@@ -2,6 +2,7 @@ import Vue from 'vue' ...@@ -2,6 +2,7 @@ import Vue from 'vue'
import ElementUI from 'element-ui' import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css' import 'element-ui/lib/theme-chalk/index.css'
import Erpindex from '../utils/erpindex' import Erpindex from '../utils/erpindex'
import request_zc from '../utils/request_zc'
import axios from 'axios' import axios from 'axios'
import 'vue-easytable/libs/themes-base/index.css' import 'vue-easytable/libs/themes-base/index.css'
import {VTable,VPagination} from 'vue-easytable' import {VTable,VPagination} from 'vue-easytable'
...@@ -33,6 +34,8 @@ Date.prototype.Format = function (fmt) { ...@@ -33,6 +34,8 @@ Date.prototype.Format = function (fmt) {
}; };
Vue.use(ElementUI) Vue.use(ElementUI)
Vue.use(Erpindex) Vue.use(Erpindex)
Vue.use(request_zc)
Vue.use(Viewer); Vue.use(Viewer);
Vue.component(VTable.name, VTable) Vue.component(VTable.name, VTable)
Vue.component(VPagination.name, VPagination) Vue.component(VPagination.name, VPagination)
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
class="no-border-radius flex column"> class="no-border-radius flex column">
<q-tabs v-model="tab" class="text-grey" active-color="secondary" indicator-color="secondary" align="justify" <q-tabs v-model="tab" class="text-grey" active-color="secondary" indicator-color="secondary" align="justify"
narrow-indicator inline-label> narrow-indicator inline-label>
<q-tab alert="negative" name="msg" style="display:none;"> <q-tab alert="negative" name="msg">
<inline-svg class="svg-icon q-mr-xs" :class="[tab=='msg'?'svg-icon-secondary':'svg-icon-grey']" <inline-svg class="svg-icon q-mr-xs" :class="[tab=='msg'?'svg-icon-secondary':'svg-icon-grey']"
src="icons/svg/Communication/Chat-check.svg"></inline-svg> src="icons/svg/Communication/Chat-check.svg"></inline-svg>
<span>消息</span> <span>消息</span>
...@@ -269,13 +269,13 @@ ...@@ -269,13 +269,13 @@
return temp return temp
} }
}, },
undefinedGongneng() { undefinedGongneng(item) {
this.$q.dialog({ this.$router.push("/AssetsShenpi")
title: '功能提示', // this.$q.dialog({
message: '灰度测试功能,即将在下版本中开启' // title: '功能提示',
}).onOk(() => { // message: '灰度测试功能,即将在下版本中开启'
// }).onOk(() => {
}); // });
}, },
//请求公告数据 //请求公告数据
getNotify() { getNotify() {
......
...@@ -34,6 +34,17 @@ ...@@ -34,6 +34,17 @@
<q-item-label class="font-pfb">{{item.MenuName}}</q-item-label> <q-item-label class="font-pfb">{{item.MenuName}}</q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
<!-- 跳转资产 -->
<q-item class="q-my-sm" clickable v-ripple @click="goUrlZC">
<q-item-section avatar>
<q-avatar style="background-color: #F3F6F9;" rounded size="40px" text-color="primary">
<!-- <i :class="[item.MenuIcon]"></i> -->
</q-avatar>
</q-item-section>
<q-item-section>
<q-item-label class="font-pfb">资产管理</q-item-label>
</q-item-section>
</q-item>
</q-list> </q-list>
<q-separator color="grey-2" class="q-my-md"></q-separator> <q-separator color="grey-2" class="q-my-md"></q-separator>
<div class="text-weight-bold" style="font-size:16px;">常用功能</div> <div class="text-weight-bold" style="font-size:16px;">常用功能</div>
...@@ -91,6 +102,7 @@ ...@@ -91,6 +102,7 @@
</template> </template>
<script> <script>
import Lockr from "lockr"
export default { export default {
props: { props: {
showObj: { showObj: {
...@@ -129,6 +141,15 @@ export default { ...@@ -129,6 +141,15 @@ export default {
}) })
}, },
goUrlZC() {
let userinfo = this.getLocalStorage();
let token=Lockr.get("Token");
let url = "http://www.test.com:8080/#/Autologin?ObjInfo=" + token + "&SecretKey=" + userinfo.UploadConfig.SecretKey;
// let url = "http://zcyx.oytour.com/#/Autologin?ObjInfo=" + token
// let url = "http://www.test.com:8080/#/Autologin?ObjInfo=" + token
window.open(url)
},
}, },
} }
</script> </script>
......
This diff is collapsed.
<template>
<div class="CheckDetails basefix">
<div class="left">
<el-carousel v-if="datainfo.ImageList.length>0" height="500px">
<el-carousel-item style="display:flex;align-items:center" v-for="(item,index) in datainfo.ImageList" :key="index">
<img style="width:100%;" :src="item" alt="">
</el-carousel-item>
</el-carousel>
<img v-else style="width:100%;height:500px;border: 1px solid #ccc;" src="../../../assets/img/Travelslider.png" alt="">
</div>
<div class="right overflowY" style="height:500px">
<div class="baseTitle f12">使用信息</div>
<div class="desItem">
<p>使用人</p>
<p>
<span v-if="datainfo.EmName && datainfo.EmName!=''">{{datainfo.EmName}}</span>
<span v-else></span>
</p>
</div>
<div class="desItem">
<p>领取时间</p>
<p>{{datainfo.GetTime}}</p>
</div>
<div class="baseTitle f12">基本信息</div>
<div class="baseDiv">
<div class="desItem">
<p>资产名称</p>
<p>{{datainfo.Name}}</p>
</div>
<div class="desItem">
<p>资产分类</p>
<p>
<span v-if="datainfo.CategoryName && datainfo.CategoryName!=''">{{datainfo.CategoryName}}</span>
<span v-else></span>
</p>
</div>
<div class="desItem">
<p>品牌</p>
<p>{{datainfo.BrandName}}</p>
</div>
<div class="desItem">
<p>型号</p>
<p>
<span v-if="datainfo.PropertyModel && datainfo.PropertyModel!=''">{{datainfo.PropertyModel}}</span>
<span v-else></span>
</p>
</div>
<div class="desItem">
<p>单位</p>
<p>
<span v-if="datainfo.Units && datainfo.Units!=''">{{datainfo.Units}}</span>
<span v-else></span>
</p>
</div>
<div class="desItem">
<p>序列号</p>
<p>
<span v-if="datainfo.SerialNumber && datainfo.SerialNumber!=''">{{datainfo.SerialNumber}}</span>
<span v-else></span>
</p>
</div>
<div class="desItem">
<p>购置日期</p>
<p>{{datainfo.BuyDate}}</p>
</div>
<div class="desItem">
<p>购置方式</p>
<p>{{datainfo.BuyTypeName}}</p>
</div>
<div class="desItem">
<p>金额</p>
<p>
<span v-if="datainfo.Money && datainfo.Money!=''">{{datainfo.Money}}</span>
<span v-else></span>
</p>
</div>
<div class="desItem">
<p>使用类型</p>
<p>{{datainfo.UseStatusName}}</p>
</div>
<div class="desItem">
<p>公司</p>
<p>
<span v-if="datainfo.BranchName && datainfo.BranchName!=''">{{datainfo.BranchName}}</span>
<span v-else></span>
</p>
</div>
<div class="desItem">
<p>备注</p>
<p>
<span v-if="datainfo.Remark && datainfo.Remark!=''">{{datainfo.Remark}}</span>
<span v-else></span>
</p>
</div>
<div class="desItem">
<p>供应商</p>
<p>
<span v-if="datainfo.SupplierName && datainfo.SupplierName!=''">{{datainfo.SupplierName}}</span>
<span v-else></span>
</p>
</div>
</div>
<div class="baseTitle f12">操作记录</div>
<table class="myTable miniTable" border="0" cellspacing="0" cellpadding="0" >
<thead>
<th>类型</th>
<th>内容</th>
<th>签名图片</th>
<th>操作人/时间</th>
</thead>
<tbody>
<tr v-for="(item, index) in OperationList" :key="index">
<td>{{ item.TypeName }}</td>
<td>{{ item.Content }}</td>
<td>
<img
v-if="item.SignImage && item.SignImage != ''"
style="height: 45px;width: 55px;"
:src="item.SignImage"
alt=""
/>
<span class="c99" v-else>-</span>
</td>
<td>
<p>{{ item.CreateBy }}</p>
<p>{{ item.CreateDate }}</p>
</td>
</tr>
<tr v-show="OperationList.length == 0">
<td colspan="4" align="center">暂无数据</td>
</tr>
</tbody>
</table>
<el-pagination
@current-change="currentChange"
background
:page-size="msg.pageSize"
layout="prev, pager, next"
:total="total"
>
</el-pagination>
</div>
</div>
</template>
<script>
export default {
name: '',
data(){
return{
msg: {
pageIndex: 1,
pageSize: 5,
PropertyId: ""
},
OperationList:[],
total:0,
datainfo:{
ImageList:[],
},
PropertyId:'',
}
},
created(){
},
mounted(){
},
methods:{
InitData(id){
this.PropertyId=id;
this.msg.PropertyId=id;
this.getOperation();
this.getDataInfo();
},
currentChange(val) {
this.msg.pageIndex = val;
this.getOperation();
},
getOperation() {
this.apiJavaPost(
"/api/property/GetPropertyLogPageList",
this.msg,
res => {
this.OperationLoad = false;
if (res.data.resultCode === 1) {
this.OperationList = res.data.data.pageData;
this.total = res.data.data.count;
} else {
this.Error(res.data.message);
}
},
null
);
},
getDataInfo(){
this.apiJavaPost(
"/api/property/GetPropertyInfo",
{Id:this.PropertyId},
res => {
this.OperationLoad = false;
if (res.data.resultCode === 1) {
this.datainfo = res.data.data;
} else {
this.Error(res.data.message);
}
},
null
);
},
},
}
</script>
<style scoped>
.myTable{
width: 100%;
font-size: 12px;
border-collapse: collapse;
font-family: "宋体"!important;
}
.myTable thead th{
color:#A6C6C6;
padding-left: 20px;
height: 50px;
line-height: 50px;
font-weight:bold;
text-align: left;
}
.myTable thead tr{
background:transparent!important;
}
.myTable .hoverSpan1{
left: -20px;
}
.myTable .hoverSpan2{
right: -20px;
}
.myTable .commonStyle{
height:100%;
background:#fff;
position: absolute;
width: 20px;
top:0;
display: none;
}
.miniTable tr td{
padding:6px 0 6px 20px!important;
}
.myTable tr{
background:#fff;
border-bottom: 4px solid #F8FAFB;
cursor: pointer;
}
.noHoverTable tr{
border-bottom:none!important;
}
.myTable .trNobottom{
border-top: 4px solid #F8FAFB!important;
border-bottom:none!important;
}
.myTable tbody tr:hover{
box-shadow:0px 0 20px 0px rgba(176,176,176,0.2);
transition: transform .5s ease;
/* transform: scaleX(1.02); */
}
.noHoverTable tbody tr:hover{
box-shadow:0 0 0 transparent!important;
}
.myTable tbody tr:hover .commonStyle{
display: block;
transition: transform .5s ease;
box-shadow:0px 0px 0px 0px rgba(176,176,176,0.2);
}
.myTable tbody tr:hover td{
border-radius:0!important;
}
.myTable tbody tr:first-child td:first-child{
border-radius:20px 0 0 0;
}
.myTable tbody tr:first-child td:last-child{
border-radius:0 20px 0 0;
}
.myTable tbody tr:last-child td:first-child{
border-radius:0 0 0 20px;
}
.myTable tbody tr:last-child td:last-child{
border-radius:0 0 20px 0;
}
.myTable tr td{
position: relative;
padding:11px 0 11px 20px;
}
.overflowY{
overflow-y: scroll;
height: 100%;
box-sizing: border-box;
position: relative;
}
.CheckDetails .baseDiv .desItem:nth-child(3n){
margin-right:0;
}
.CheckDetails p{
margin:0;
}
.CheckDetails .desItem p:first-child{
margin-bottom: 4px;
}
.CheckDetails .desItem{
display: inline-block;
background: #F1F1F1;
box-sizing: border-box;
border-radius: 10px;
width: 200px;
margin:10px 10px 10px 0;
padding:6px 10px;
}
.CheckDetails .baseTitle{
padding:5px 0;
border-bottom: 1px dashed #ccc;
margin-bottom:10px
}
.CheckDetails>div{
float: left;
font-size: 12px;
}
.CheckDetails .left{
width:440px;
box-sizing: border-box;
padding:25px;
}
.CheckDetails .right{
width: 680px;
padding:0 10px 0 15px;
box-sizing: border-box;
}
</style>
...@@ -119,9 +119,10 @@ ...@@ -119,9 +119,10 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="受委内容:"> <el-form-item label="受委内容:">
<el-checkbox-group v-model="delegateContent"> <el-checkbox-group v-model="delegateContent">
<!-- <el-checkbox label="1" name="1" key="1">工作审批</el-checkbox>--> <!--<el-checkbox label="1" name="1" key="1">工作审批</el-checkbox>-->
<el-checkbox label="2" name="2" key="2">财务审批</el-checkbox> <el-checkbox label="2" name="2" key="2">财务审批</el-checkbox>
<!-- <el-checkbox label="3" name="3" key="3">客户审批</el-checkbox>--> <!-- <el-checkbox label="3" name="3" key="3">客户审批</el-checkbox>-->
<el-checkbox label="4" name="4" key="4">资产审批</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
......
...@@ -681,6 +681,14 @@ const routes = [{ ...@@ -681,6 +681,14 @@ const routes = [{
component: () => component: () =>
import("pages/financial/financalDocument/PrintPageN.vue") import("pages/financial/financalDocument/PrintPageN.vue")
}, },
{
path: '/AssetsShenpi', //资产管理审批
name: 'AssetsShenpi',
component: () => import('pages/administration/AssetsSystem/AssetsShenpi'),
meta: {
title: '资产管理'
},
},
{ {
path: "*", path: "*",
component: () => component: () =>
......
...@@ -39,6 +39,7 @@ service.interceptors.request.use( ...@@ -39,6 +39,7 @@ service.interceptors.request.use(
"Msg": config.data "Msg": config.data
} }
} }
return config; return config;
}, },
error => { error => {
......
import axios from "axios";
import Lockr from "lockr"
import {
removeAuth
} from "../utils/auth";
import qs from "qs";
import {
Dialog,
Notify
} from 'quasar'
let url_zc='http://192.168.1.13:8087/api'
var showLoginMessageBox = false;
axios.defaults.headers["Content-Type"] = "application/json;charset=UTF-8"; //application/x-www-form-urlencoded;charset=UTF-8
let token=Lockr.get("Token");
const service = axios.create({
baseURL: url_zc,
timeout: 15000
});
// request拦截器
service.interceptors.request.use(
config => {
if (config.headers["responseType"] == "arraybuffer") {
config.responseType = "arraybuffer";
}
const flag =
config.headers["Content-Type"] &&
config.headers["Content-Type"].indexOf("application/json") !== -1;
if (!flag) {
const mult =
config.headers["Content-Type"] &&
config.headers["Content-Type"].indexOf("multipart/form-data") !== -1;
if (mult) {
config.data = config.data;
} else {
config.data = qs.stringify(config.data);
}
} else {
config.data = {
"Msg": config.data,
token:token
}
}
return config;
},
error => {
//TODO 新增网络请求异常处理业务
return Promise.reject(error);
}
);
// response 拦截器
service.interceptors.response.use(
response => {
const res = response.data;
console.log(res)
// TODO 确定后台的CODE码
if (response.status === 200 ) {
// 文件类型特殊处理
return response;
} else if (res.resultCode != 1) {
// TODO 确定后台的CODE码
if (res.resultCode == 10000) {
if (!showLoginMessageBox) {
showLoginMessageBox = true;
Dialog.create({
title: "登出",
message: "抱歉,你的账户信息已失效,你需要重新登录使用",
persistent: true
}).onOk(() => {
removeAuth()
.then(() => {
location.reload(); // 为了重新实例化vue-router对象 避免bug
})
.catch(() => {
location.reload();
});
});
}
} else {
if (res.Message) {
Notify.create({
icon: "error",
color: "negative",
message: res.Message,
position: "top"
});
}
}
return Promise.reject(res);
} else {
return res;
}
},
error => {
Notify.create({
icon: "error",
color: "negative",
message: "网络请求失败,请稍候再试",
position: "top"
});
return Promise.reject(error);
}
);
export default service;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment