|
@@ -1,128 +1,133 @@
|
|
<template>
|
|
<template>
|
|
<view class="content">
|
|
<view class="content">
|
|
<view class="title"> 项目详情 </view>
|
|
<view class="title"> 项目详情 </view>
|
|
- <view class="list">
|
|
|
|
- <view class="detail">
|
|
|
|
- <span class="subTitle">项目名称:</span>
|
|
|
|
- <span class="detailContent">{{ currentProject.project_name }}</span>
|
|
|
|
- </view>
|
|
|
|
- <view class="detail" v-if="currentProject.TypeInfo">
|
|
|
|
- <span class="subTitle">项目类别:</span>
|
|
|
|
- <span class="detailContent">{{ currentProject.TypeInfo.name }}</span>
|
|
|
|
- </view>
|
|
|
|
- <view class="detail" v-if="currentProject.IndustryInfo">
|
|
|
|
- <span class="subTitle">行业名称:</span>
|
|
|
|
- <span class="detailContent">
|
|
|
|
- {{ currentProject.IndustryInfo.name }}
|
|
|
|
- </span>
|
|
|
|
- </view>
|
|
|
|
- <view class="detail">
|
|
|
|
- <span class="subTitle">流程:</span>
|
|
|
|
- <span class="detailContent">{{ currentProject.FlowInfo.name }}</span>
|
|
|
|
- </view>
|
|
|
|
- <view class="detail">
|
|
|
|
- <span class="subTitle">状态:</span>
|
|
|
|
- <span class="detailContent">
|
|
|
|
- {{ status[currentProject.project_status] }}
|
|
|
|
- </span>
|
|
|
|
- </view>
|
|
|
|
- <view class="detail">
|
|
|
|
- <span class="subTitle">节点:</span>
|
|
|
|
- <span class="detailContent">
|
|
|
|
- {{ `${currentProject.NodeInfo.node}(` }}
|
|
|
|
- <span v-if="currentProject.audit_status == 0">待提交</span>
|
|
|
|
- <span
|
|
|
|
- v-if="currentProject.audit_status == 1"
|
|
|
|
- :style="{ color: '#1890ff' }"
|
|
|
|
- >
|
|
|
|
- 审核中
|
|
|
|
|
|
+ <view class="main">
|
|
|
|
+ <view class="list">
|
|
|
|
+ <view class="detail">
|
|
|
|
+ <span class="subTitle">项目名称:</span>
|
|
|
|
+ <span class="detailContent">{{ currentProject.project_name }}</span>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="detail" v-if="currentProject.TypeInfo">
|
|
|
|
+ <span class="subTitle">项目类别:</span>
|
|
|
|
+ <span class="detailContent">{{ currentProject.TypeInfo.name }}</span>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="detail" v-if="currentProject.IndustryInfo">
|
|
|
|
+ <span class="subTitle">行业名称:</span>
|
|
|
|
+ <span class="detailContent">
|
|
|
|
+ {{ currentProject.IndustryInfo.name }}
|
|
</span>
|
|
</span>
|
|
- <span
|
|
|
|
- v-if="currentProject.audit_status == 2"
|
|
|
|
- :style="{ color: '#f5222d' }"
|
|
|
|
- >
|
|
|
|
- 审核拒绝
|
|
|
|
|
|
+ </view>
|
|
|
|
+ <view class="detail">
|
|
|
|
+ <span class="subTitle">流程:</span>
|
|
|
|
+ <span class="detailContent">{{ currentProject.FlowInfo.name }}</span>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="detail">
|
|
|
|
+ <span class="subTitle">状态:</span>
|
|
|
|
+ <span class="detailContent">
|
|
|
|
+ {{ status[currentProject.project_status] }}
|
|
</span>
|
|
</span>
|
|
- <span
|
|
|
|
- v-if="currentProject.audit_status == 3"
|
|
|
|
- :style="{ color: '#a0d911' }"
|
|
|
|
- >
|
|
|
|
- 审核通过
|
|
|
|
|
|
+ </view>
|
|
|
|
+ <view class="detail">
|
|
|
|
+ <span class="subTitle">节点:</span>
|
|
|
|
+ <span class="detailContent">
|
|
|
|
+ {{ `${currentProject.NodeInfo.node}(` }}
|
|
|
|
+ <span v-if="currentProject.audit_status == 0">待提交</span>
|
|
|
|
+ <span
|
|
|
|
+ v-if="currentProject.audit_status == 1"
|
|
|
|
+ :style="{ color: '#1890ff' }"
|
|
|
|
+ >
|
|
|
|
+ 审核中
|
|
|
|
+ </span>
|
|
|
|
+ <span
|
|
|
|
+ v-if="currentProject.audit_status == 2"
|
|
|
|
+ :style="{ color: '#f5222d' }"
|
|
|
|
+ >
|
|
|
|
+ 审核拒绝
|
|
|
|
+ </span>
|
|
|
|
+ <span
|
|
|
|
+ v-if="currentProject.audit_status == 3"
|
|
|
|
+ :style="{ color: '#a0d911' }"
|
|
|
|
+ >
|
|
|
|
+ 审核通过
|
|
|
|
+ </span>
|
|
|
|
+ <span>)</span>
|
|
</span>
|
|
</span>
|
|
- <span>)</span>
|
|
|
|
- </span>
|
|
|
|
- </view>
|
|
|
|
- <view class="detail" v-if="currentProject.audit_status == 2">
|
|
|
|
- <span class="subTitle">拒绝原因:</span>
|
|
|
|
- <span class="detailContent">
|
|
|
|
- {{ currentProject.audit_comment }}
|
|
|
|
- </span>
|
|
|
|
- </view>
|
|
|
|
- <view class="detail" v-if="currentProject.location">
|
|
|
|
- <span class="subTitle">项目地区:</span>
|
|
|
|
- <span class="detailContent">
|
|
|
|
- {{ `${currentProject.location}(${currentProject.location_code})` }}
|
|
|
|
- </span>
|
|
|
|
- </view>
|
|
|
|
- <view class="detail" v-if="currentProject.name">
|
|
|
|
- <span class="subTitle">项目简称:</span>
|
|
|
|
- <span class="detailContent">{{ currentProject.name }}</span>
|
|
|
|
- </view>
|
|
|
|
- <view class="detail" v-if="currentProject.version">
|
|
|
|
- <span class="subTitle">项目批次:</span>
|
|
|
|
- <span class="detailContent">{{ currentProject.version }}期</span>
|
|
|
|
- </view>
|
|
|
|
- <view class="detail" v-if="currentProject.AuthorUser">
|
|
|
|
- <span class="subTitle">创建人:</span>
|
|
|
|
- <span class="detailContent">{{ currentProject.AuthorUser.CName }}</span>
|
|
|
|
- </view>
|
|
|
|
- <view class="detail" v-if="currentProject.AuthorDepInfo">
|
|
|
|
- <span class="subTitle">所属部门:</span>
|
|
|
|
- <span class="detailContent">
|
|
|
|
- {{ currentProject.AuthorDepInfo.Name }}
|
|
|
|
- </span>
|
|
|
|
|
|
+ </view>
|
|
|
|
+ <view class="detail" v-if="currentProject.audit_status == 2">
|
|
|
|
+ <span class="subTitle">拒绝原因:</span>
|
|
|
|
+ <span class="detailContent">
|
|
|
|
+ {{ currentProject.audit_comment }}
|
|
|
|
+ </span>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="detail" v-if="currentProject.location">
|
|
|
|
+ <span class="subTitle">项目地区:</span>
|
|
|
|
+ <span class="detailContent">
|
|
|
|
+ {{ `${currentProject.location}(${currentProject.location_code})` }}
|
|
|
|
+ </span>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="detail" v-if="currentProject.name">
|
|
|
|
+ <span class="subTitle">项目简称:</span>
|
|
|
|
+ <span class="detailContent">{{ currentProject.name }}</span>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="detail" v-if="currentProject.version">
|
|
|
|
+ <span class="subTitle">项目批次:</span>
|
|
|
|
+ <span class="detailContent">{{ currentProject.version }}期</span>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="detail" v-if="currentProject.AuthorUser">
|
|
|
|
+ <span class="subTitle">创建人:</span>
|
|
|
|
+ <span class="detailContent">{{
|
|
|
|
+ currentProject.AuthorUser.CName
|
|
|
|
+ }}</span>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="detail" v-if="currentProject.AuthorDepInfo">
|
|
|
|
+ <span class="subTitle">所属部门:</span>
|
|
|
|
+ <span class="detailContent">
|
|
|
|
+ {{ currentProject.AuthorDepInfo.Name }}
|
|
|
|
+ </span>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="detail">
|
|
|
|
+ <span class="subTitle">项目编号:</span>
|
|
|
|
+ <span class="detailContent">
|
|
|
|
+ {{ currentProject.project_full_code }}
|
|
|
|
+ </span>
|
|
|
|
+ </view>
|
|
</view>
|
|
</view>
|
|
- <view class="detail">
|
|
|
|
- <span class="subTitle">项目编号:</span>
|
|
|
|
- <span class="detailContent">
|
|
|
|
- {{ currentProject.project_full_code }}
|
|
|
|
- </span>
|
|
|
|
|
|
+
|
|
|
|
+ <view class="title">审核详情 </view>
|
|
|
|
+ <view class="list">
|
|
|
|
+ <uni-steps
|
|
|
|
+ :options="nodeList.list"
|
|
|
|
+ :active="nodeList.currentIndex"
|
|
|
|
+ direction="column"
|
|
|
|
+ />
|
|
</view>
|
|
</view>
|
|
- </view>
|
|
|
|
|
|
|
|
- <view class="title">审核详情 </view>
|
|
|
|
- <view class="list">
|
|
|
|
- <uni-steps
|
|
|
|
- :options="nodeList.list"
|
|
|
|
- :active="nodeList.currentIndex"
|
|
|
|
- direction="column"
|
|
|
|
- />
|
|
|
|
|
|
+ <uni-card title="操作" v-if="!this.auth">
|
|
|
|
+ <view class="editBtns" slot="actions">
|
|
|
|
+ <view class="edit" v-if="canEdit(0)" @click="onEdit()">编辑</view>
|
|
|
|
+ <view class="edit" v-if="canEdit(0)" @click="onDelete()">删除</view>
|
|
|
|
+ <view class="edit" v-if="canEdit(0)" @click="onSubmitAuth()">
|
|
|
|
+ 提交审核
|
|
|
|
+ </view>
|
|
|
|
+ <view class="edit" v-if="canEdit(1)" @click="onMember()"
|
|
|
|
+ >成员管理
|
|
|
|
+ </view>
|
|
|
|
+ <view class="edit" v-if="canEdit(2)" @click="onExecute()">
|
|
|
|
+ 转执行
|
|
|
|
+ </view>
|
|
|
|
+ <view class="edit" v-if="canEdit(3)" @click="onWarranty()">
|
|
|
|
+ 转质保
|
|
|
|
+ </view>
|
|
|
|
+ <view class="edit" v-if="canEdit(3)" @click="onOperate()">
|
|
|
|
+ 转运营
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ </uni-card>
|
|
</view>
|
|
</view>
|
|
|
|
|
|
- <uni-card title="操作">
|
|
|
|
- <view class="editBtns" slot="actions">
|
|
|
|
- <view class="edit" v-if="canEdit(0)" @click="onEdit()">编辑</view>
|
|
|
|
- <view class="edit" v-if="canEdit(0)" @click="onDelete()">删除</view>
|
|
|
|
- <view class="edit" v-if="canEdit(0)" @click="onSubmitAuth()"
|
|
|
|
- >提交审核</view
|
|
|
|
- >
|
|
|
|
- <view class="edit" v-if="canEdit(1)" @click="onMember()">成员管理</view>
|
|
|
|
- <view class="edit" v-if="canEdit(2)" @click="onExecute()">转执行</view>
|
|
|
|
- <view class="edit" v-if="canEdit(3)" @click="onWarranty()">转质保</view>
|
|
|
|
- <view class="edit" v-if="canEdit(3)" @click="onOperate()">转运营</view>
|
|
|
|
- </view>
|
|
|
|
- </uni-card>
|
|
|
|
-
|
|
|
|
- <view class="group">
|
|
|
|
- <button v-if="canAuth()" @click="onHandleAudit(0)" class="commit">
|
|
|
|
- 审核拒绝
|
|
|
|
- </button>
|
|
|
|
- <button
|
|
|
|
- v-if="canAuth()"
|
|
|
|
- @click="onHandleAudit(1)"
|
|
|
|
- type="primary"
|
|
|
|
- class="commit"
|
|
|
|
- >
|
|
|
|
|
|
+ <view class="group" v-if="this.auth && canAuth()">
|
|
|
|
+ <button @click="onHandleAudit(0)" class="commit">审核拒绝</button>
|
|
|
|
+ <button @click="onHandleAudit(1)" type="primary" class="commit">
|
|
审核通过
|
|
审核通过
|
|
</button>
|
|
</button>
|
|
</view>
|
|
</view>
|
|
@@ -131,13 +136,21 @@
|
|
|
|
|
|
<script>
|
|
<script>
|
|
import { mapState } from "vuex";
|
|
import { mapState } from "vuex";
|
|
-import { queryFlow, deleteApproval, submitAudit } from "@/services/project";
|
|
|
|
|
|
+import {
|
|
|
|
+ queryFlow,
|
|
|
|
+ deleteApproval,
|
|
|
|
+ submitAudit,
|
|
|
|
+ queryUserDetail,
|
|
|
|
+ authApproval,
|
|
|
|
+} from "@/services/project";
|
|
export default {
|
|
export default {
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
auth: false,
|
|
auth: false,
|
|
status: ["售前", "转执行", "转运营", "转质保"],
|
|
status: ["售前", "转执行", "转运营", "转质保"],
|
|
flowList: [],
|
|
flowList: [],
|
|
|
|
+ depRole: [],
|
|
|
|
+ user: {},
|
|
};
|
|
};
|
|
},
|
|
},
|
|
computed: {
|
|
computed: {
|
|
@@ -166,16 +179,65 @@ export default {
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
async init() {
|
|
async init() {
|
|
|
|
+ this.user = uni.getStorageSync("user");
|
|
let res;
|
|
let res;
|
|
res = await queryFlow();
|
|
res = await queryFlow();
|
|
this.flowList = res.data;
|
|
this.flowList = res.data;
|
|
|
|
+ res = await queryUserDetail(this.user);
|
|
|
|
+ let depId = this.user.DepId;
|
|
|
|
+ let dep = res.data.Dep.find((item) => item.ID == depId);
|
|
|
|
+ this.depRole = dep.Role;
|
|
},
|
|
},
|
|
|
|
+
|
|
canAuth() {
|
|
canAuth() {
|
|
- return this.auth;
|
|
|
|
|
|
+ let { NodeInfo, audit_status, project_status } = this.currentProject;
|
|
|
|
+ if (!NodeInfo || this.flowList.length == 0 || this.depRole.length == 0)
|
|
|
|
+ return false;
|
|
|
|
+ if (audit_status != 1) return false;
|
|
|
|
+
|
|
|
|
+ if (project_status == 2)
|
|
|
|
+ return this.currentProject.opt_manager_id == this.user.ID;
|
|
|
|
+ if (project_status == 3)
|
|
|
|
+ return this.currentProject.wty_manager_id == this.user.ID;
|
|
|
|
+
|
|
|
|
+ let flow = this.flowList.find((item) => item.id == NodeInfo.flow_id);
|
|
|
|
+ if (!flow) return false;
|
|
|
|
+ let { NodeAudits } = flow.Nodes.find((item) => item.id == NodeInfo.id);
|
|
|
|
+ const role = this.depRole.find((item) =>
|
|
|
|
+ NodeAudits.find((audit) => audit.audit_role == item.ID)
|
|
|
|
+ );
|
|
|
|
+ return Boolean(role);
|
|
},
|
|
},
|
|
onHandleAudit(value) {
|
|
onHandleAudit(value) {
|
|
- if (value) console.log("审核通过");
|
|
|
|
- else console.log("审核拒绝");
|
|
|
|
|
|
+ if (value) {
|
|
|
|
+ uni.showModal({
|
|
|
|
+ title: "审批通过",
|
|
|
|
+ content: "是否确认通过审批",
|
|
|
|
+ confirmText: "通过",
|
|
|
|
+ success: async (res) => {
|
|
|
|
+ if (res.confirm) {
|
|
|
|
+ let payload = {
|
|
|
|
+ id: this.currentProject.id,
|
|
|
|
+ project_full_code: this.currentProject.project_full_code,
|
|
|
|
+ flow_id: this.currentProject.flow_id,
|
|
|
|
+ node_id: this.currentProject.node_id,
|
|
|
|
+ audit_status: 3,
|
|
|
|
+ audit_comment: "",
|
|
|
|
+ };
|
|
|
|
+ await authApproval(payload);
|
|
|
|
+ uni.showToast({
|
|
|
|
+ title: "审核成功",
|
|
|
|
+ });
|
|
|
|
+ setTimeout(function () {
|
|
|
|
+ uni.hideToast();
|
|
|
|
+ uni.navigateTo({
|
|
|
|
+ url: "./auth",
|
|
|
|
+ });
|
|
|
|
+ }, 1800);
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ });
|
|
|
|
+ } else console.log("审核拒绝");
|
|
},
|
|
},
|
|
getAudits(nodeInfo) {
|
|
getAudits(nodeInfo) {
|
|
switch (nodeInfo.id) {
|
|
switch (nodeInfo.id) {
|
|
@@ -194,7 +256,6 @@ export default {
|
|
}
|
|
}
|
|
},
|
|
},
|
|
canEdit(index) {
|
|
canEdit(index) {
|
|
- const user = uni.getStorageSync("user");
|
|
|
|
let {
|
|
let {
|
|
audit_status,
|
|
audit_status,
|
|
project_status,
|
|
project_status,
|
|
@@ -212,7 +273,7 @@ export default {
|
|
return (
|
|
return (
|
|
project_status == 0 &&
|
|
project_status == 0 &&
|
|
(audit_status == 0 || audit_status == 2) &&
|
|
(audit_status == 0 || audit_status == 2) &&
|
|
- (user.ID == author || user.IsSuper)
|
|
|
|
|
|
+ (this.user.ID == author || this.user.IsSuper)
|
|
);
|
|
);
|
|
//成员管理
|
|
//成员管理
|
|
case 1:
|
|
case 1:
|
|
@@ -232,14 +293,16 @@ export default {
|
|
manager = wty_manager_id;
|
|
manager = wty_manager_id;
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
- return audit_status == 3 && (user.ID == manager || user.IsSuper);
|
|
|
|
|
|
+ return (
|
|
|
|
+ audit_status == 3 && (this.user.ID == manager || this.user.IsSuper)
|
|
|
|
+ );
|
|
//转执行
|
|
//转执行
|
|
case 2:
|
|
case 2:
|
|
//售前,审核通过,售前经理/管理员
|
|
//售前,审核通过,售前经理/管理员
|
|
return (
|
|
return (
|
|
project_status == 0 &&
|
|
project_status == 0 &&
|
|
audit_status == 3 &&
|
|
audit_status == 3 &&
|
|
- (user.ID == author || user.IsSuper)
|
|
|
|
|
|
+ (this.user.ID == author || this.user.IsSuper)
|
|
);
|
|
);
|
|
//转质保运营
|
|
//转质保运营
|
|
case 3:
|
|
case 3:
|
|
@@ -247,7 +310,7 @@ export default {
|
|
return (
|
|
return (
|
|
project_status == 1 &&
|
|
project_status == 1 &&
|
|
audit_status == 3 &&
|
|
audit_status == 3 &&
|
|
- (user.ID == LeaderId || user.IsSuper)
|
|
|
|
|
|
+ (this.user.ID == LeaderId || this.user.IsSuper)
|
|
);
|
|
);
|
|
}
|
|
}
|
|
},
|
|
},
|
|
@@ -328,6 +391,9 @@ export default {
|
|
display: flex;
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
flex-wrap: wrap;
|
|
}
|
|
}
|
|
|
|
+.main {
|
|
|
|
+ padding-bottom: 60px;
|
|
|
|
+}
|
|
.title {
|
|
.title {
|
|
width: 100%;
|
|
width: 100%;
|
|
padding: 0 20px 20px 20px;
|
|
padding: 0 20px 20px 20px;
|