Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
shenyanpei
2021-12-27 16:18:13 +08:00
3 changed files with 794 additions and 0 deletions
@@ -0,0 +1,316 @@
<!-- 参与外部标准制修订信息提报流程-->
<template>
<div class="phoneCywbbzzxdStep2 phoneBox">
<ProcessHeaderPhone toggle>
<template slot="proName">参与外部标准制修订信息提报流程</template>
<template slot="proNode">选择责任工程师</template>
</ProcessHeaderPhone>
<div class="content">
<ProcessTitle>
<template slot="title">人员信息</template>
</ProcessTitle>
<div class="block" style="padding-top: 20px; height: 100%">
<el-timeline>
<el-form
ref="Form"
:model="roleForm"
:rules="roleFormRules"
class="label-input-form">
<el-timeline-item timestamp="发起流程" placement="top" :color="roleForm.startUser ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="prcCreateUserName" style="margin-bottom: 0">
<h4>标准法规工程师</h4>
<div style="margin-top: 10px;">
<el-input v-model="roleForm.prcCreateUser" style="display: none;"></el-input>
<el-input v-model="roleForm.prcCreateUserName" placeholder="流程发起人"
disabled></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="责任部门对接人选择责任人填写信息" placement="top"
:color="roleForm.dockUser ? '#66b1ff' : ''" >
<el-card>
<el-form-item prop="dockUserName" style="margin-bottom: 0">
<h4>责任部门对接人</h4>
<div style="margin-top: 10px;">
<el-input v-model="roleForm.dockUser" style="display: none;"></el-input>
<el-input v-model="roleForm.dockUserName" placeholder="选择责任部门对接人"
disabled>
</el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="选择责任工程师填写信息" placement="top"
:color="roleForm.workPeople ? '#66b1ff' : ''" >
<el-card>
<el-form-item prop="workPeopleName" style="margin-bottom: 0">
<h4>责任工程师</h4>
<div style="margin-top: 10px;">
<el-input v-model="roleForm.workPeople" style="display: none;"></el-input>
<el-input v-model="roleForm.workPeopleName" placeholder="选择责任工程师"
@click.native="choiceZRR">
</el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="审批" placement="top"
:color="roleForm.directorUser ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="directorUserName" style="margin-bottom: 0">
<h4>标准法规部部长</h4>
<div style="margin-top: 10px;">
<el-input v-model="roleForm.directorUser" style="display: none;"></el-input>
<el-input v-model="roleForm.directorUserName" placeholder="选择标准法规部部长"
disabled></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
</el-form>
</el-timeline>
<ProcessFooter
show-save
show-submit
:submitLoading="isSubmit"
:saveLoading="saveLoading"
@save="handleSave"
@submit="handleSubmit"
>
</ProcessFooter>
</div>
</div>
<!-- 多选择责任人-->
<Role-tree
is-title="选择责任部门对接人"
:is-visible.sync="modalshowflag2"
@checkedRole="checkedRole2"
:nodeList="nodeList2"
></Role-tree>
<Role-tree
check-box
:is-title="drawerTitle"
:is-visible.sync="modalshowflag"
@checkedRole="checkedRole"
:nodeList="nodeList"
></Role-tree>
<phone-role
:role-title="drawerTitle"
:result-list="phoneRoleList"
:is-show-phone.sync="phoneshowflag"
@checkedRole="drawerCheck"
/>
</div>
</template>
<script>
import { Dialog } from 'vant';
import ProcessHeaderPhone from '../../components/ProcessHeaderPhone'
import ProcessTitle from "process/components/ProcessTitle";
import ProcessFooter from "process/components/ProcessFooter";
import { inboundLiaisonDetail } from "api/process";
export default {
name: "phoneCywbbzzxdStep2",
components: {
ProcessHeaderPhone,
ProcessTitle,
ProcessFooter
},
data() {
return {
phoneshowflag: false,
phoneRoleList: [],
phoneDrawerTitle: '',
isSubmit: false,
saveLoading: false,
modalshowflag: false, // drawer开关
modalshowflag2: false,
nodeList2: [],
drawerTitle: "", //drawer标题
nodeList: [],
roleForm: {
prcCreateUserName: this.$store.getters.userInfo.userName,
prcCreateUser: this.$store.getters.userInfo.userId,
dockUser: "",
directorUser: "",
workPeople: "",
dockUserName: "",
workPeopleName: "",
directorUserName: ""
},
roleFormRules: {
// dockUserName: [
// {required: true, message: "请选择标准化员", trigger: "change"}
// ],
// workPeopleName: [
// {required: true, message: '请选择责任工程师', trigger: "change"}
// ],
// directorUserName: [
// {required: true, message: "请选择标准法规部部长", trigger: "change"}
// ]
},
};
},
mounted() {
this.getData();
},
methods:{
getData() {
return new Promise((resolve, reject) => {
inboundLiaisonDetail({
taskIds: this.$route.query.taskIds,
pId: this.$route.query.prcId
}).then(res => {
if (res) {
const processForm = JSON.parse(res.mesg);
this.getFormFieldList(processForm);
}
}).catch(e => {
});
});
},
/**
* @description: 动态表单读取
*/
getFormFieldList(item) {
this.$nextTick(() => {
this.roleForm = item
});
},
choiceZRR() {
this.drawerTitle = '选择责任工程师';
this.phoneshowflag = true;
},
drawerCheck(data){
this.roleForm.workPeople = data[0].id
this.roleForm.workPeopleName = data[0].name
},
choiceZRRS() {
this.nodeList2 = [];
if (this.roleForm.workPeople.length > 0) {
this.nodeList2 = this.roleForm.workPeople.split(",");
}
this.modalshowflag2 = true;
},
checkedRole(data) {
if (this.type === "dockUser") {
this.roleForm.dockUser = this.roleRow.id;
this.roleForm.dockUserName = this.roleRow.name;
} else if (this.type === "directorUser") {
this.roleForm.directorUser = data[0].id;
this.roleForm.directorUserName = data[0].name;
} else if(this.type === "workPeople"){
this.roleForm.workPeople = data[0].id;
this.roleForm.workPeopleName = data[0].name;
}
this.modalshowflag = false;
},
checkedRole2(data) {
var idList = "";
var nameList = "";
data.forEach(item => {
if (nameList.length > 0) {
nameList += ",";
idList += ",";
}
idList += item.id;
nameList += item.name;
});
this.roleForm.workPeople = idList;
this.roleForm.workPeopleName = nameList;
},
handleSubmit(){
if(this.roleForm.workPeople !== undefined){
let json = this.roleForm
this.$refs["Form"].validate((valid) => {
if (valid) {
this.isSubmit = true
this.$http.post("lawss/activiti/completeTask", {
taskIds: this.$route.query.taskIds,
userId: this.$store.getters.userInfo.userId,
json: JSON.stringify(json)
}, {
_this: this
}, res => {
if (res.success) {
this.$message.success(res.message);
this.$router.push("/processCenter");
}
this.isSubmit = false
});
} else {
return this.$message.warning("请完善人员信息");
}
});
}else{
this.$message.warning('请选择责任工程师')
}
},
handleSave(){
},
},
};
</script>
<style lang="less" scoped>
@import '~@/assets/styles/phone';
.phoneCywbbzzxdStep2 {
/deep/.van-dialog__content {
min-height: 300px;
padding: 10px;
}
.prc-content-border {
overflow: auto;
}
/deep/.prc-content-border .el-form-item__content {
width: 270px;
}
//.headerTabs {
// height: 52px;
// display: flex;
// align-items: center;
// position: absolute;
// top: 75px;
// right: 10px;
// .headerTabsItem {
// border: 1px solid #c1c1c1;
// padding: 0 5px;
// height: 30px;
// line-height: 30px;
// cursor: pointer;
// }
// .active {
// border: 1px solid #E6A23C;
// color: #fff;
// background: #E6A23C;
// }
//}
.content {
border-top: 1px solid #DCDFE6;
display: flex;
flex-direction: column;
justify-content: space-between;
margin-top: 52px;
//height: calc(~'100% - 180px');
overflow: auto;
.tableTitle {
margin-bottom: 10px;
height: 30px;
line-height: 30px;
position: relative;
font-size: 13px;
font-weight: bold;
.tableButton {
position: absolute;
right: 0;
top: 0;
}
}
}
}
</style>
@@ -0,0 +1,458 @@
<!--企标复审-->
<template>
<div class="phoneQbfsStep2 phoneBox">
<ProcessHeaderPhone toggle>
<template slot="proName">企标复审流程</template>
<template slot="proNode">工作组组长指派责任人</template>
</ProcessHeaderPhone>
<div class="headerTabs">
<div class="headerTabsItem" :class="active === '1' ? 'active' : ''" @click="handleTabs('1')">基础信息</div>
<div class="headerTabsItem" :class="active === '3' ? 'active' : ''" @click="handleTabs('3')">审批历史</div>
</div>
<div class="content" v-show="active === '1'">
<div style="flex: auto; overflow: auto">
<process-title>
<template slot="title">基础信息</template>
</process-title>
<el-form
ref="qbfsForm"
:model="qbfsForm"
:rules="formRules"
class="label-input-form prc-content-border"
label-width="150px"
>
<el-row :gutter="24">
<el-col :span="24">
<el-form-item label="企标编号" prop="entNumber" class="add-form-item form-item-disabled">
<el-input
readonly
v-model="qbfsForm.entNumber"
placeholder="请输入企标编号"
clearable
></el-input>
</el-form-item>
<el-form-item label="中文名称" prop="cnName" class="add-form-item form-item-disabled">
<el-input
readonly
v-model="qbfsForm.cnName"
placeholder="请输入中文名称"
clearable
></el-input>
</el-form-item>
<el-form-item label="英文名称" prop="enName" class="add-form-item form-item-disabled">
<el-input
readonly
v-model="qbfsForm.enName"
placeholder="请输入英文名称"
clearable
></el-input>
</el-form-item>
<el-form-item label="企标类别" prop="entCategory" class="add-form-item form-item-disabled">
<el-input
readonly
v-model="qbfsForm.entCategory"
placeholder="请输入企标类别"
clearable
></el-input>
</el-form-item>
<el-form-item label="代替企标编号" prop="replaceNumber" class="add-form-item form-item-disabled">
<el-input
readonly
v-model="qbfsForm.replaceNumber"
placeholder="请输入代替企标编号"
clearable
></el-input>
</el-form-item>
<el-form-item label="被代替企标编号" prop="replacedNumber" class="add-form-item form-item-disabled">
<el-input
readonly
v-model="qbfsForm.replacedNumber"
placeholder="请输入被代替企标编号"
clearable
></el-input>
</el-form-item>
<el-form-item label="发布日期" prop="releaseDate" class="add-form-item form-item-disabled">
<el-input
readonly
v-model="qbfsForm.releaseDate"
placeholder="请输入发布日期"
clearable
></el-input>
</el-form-item>
<el-form-item label="实施日期" prop="implementDate" class="add-form-item form-item-disabled">
<el-input
readonly
v-model="qbfsForm.implementDate"
placeholder="请输入实施日期"
clearable
></el-input>
</el-form-item>
<el-form-item label="复审日期" prop="reviewDate" class="add-form-item form-item-disabled">
<el-input
readonly
v-model="qbfsForm.reviewDate"
placeholder="请输入复审日期"
clearable
></el-input>
</el-form-item>
<el-form-item label="附件" prop="fileName" class="add-form-item form-item-disabled">
<div class="file-box" v-if="fileList.length > 0">
<p v-for="item in fileList"
:key="item.id"> {{ item.oldFileName }}
<i
title="下载"
@click="downloadFile(item.id)"
class="icon-download"
v-btn-permission="''"
/>
<i
title="下载带水印"
@click="downloadFileByWater(item.id, item.name)"
class="icon-download2"
v-btn-permission="''"
/>
</p>
</div>
<div v-else>
暂无数据
</div>
</el-form-item>
<el-form-item label="工作组成员" prop="jgUser" class="add-form-item form-item-disabled">
<el-input
v-model="qbfsForm.jgUser"
placeholder="请选择工作组成员"
clearable
@click.native="choiceZRRS"
></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div>
<el-collapse accordion>
<el-collapse-item title="回执说明">
<div style="margin: 10px 0;">
<el-input
type="textarea"
:rows="3"
resize="none"
placeholder="请输入意见"
v-model="commentText">
</el-input>
</div>
</el-collapse-item>
</el-collapse>
</div>
</div>
<div class="content" v-show="active === '3'">
<Phone-histort-table :prc-num="$route.query.prcNum"></Phone-histort-table>
</div>
<ProcessFooter
show-transfer
show-submit
:transfer-loading="isTransfer"
:submitLoading="isSubmit"
:saveLoading="saveLoading"
:approval="true"
@transfer="handleTransfer"
@submit="handleSubmit"
>
</ProcessFooter>
<phone-role
:role-title="drawerTitle"
:result-list="phoneRoleList"
:is-show-phone.sync="phoneshowflag"
@checkedRole="drawerCheck"
/>
<!-- &lt;!&ndash; 选择责任人&ndash;&gt;-->
<!-- <Role-tree-->
<!-- :is-title="drawerTitle"-->
<!-- :is-visible.sync="modalshowflag"-->
<!-- @checkedRole="checkedRole"-->
<!-- :nodeList="nodeList2"-->
<!-- ></Role-tree>-->
<phone-role
check-more
role-title="选择工作组成员"
:result-list="nodeList"
:is-show-phone.sync="drawerModal"
@checkedRole="checkedRole"
/>
</div>
</template>
<script>
import { Dialog } from 'vant';
import ProcessHeaderPhone from '../../components/ProcessHeaderPhone'
import ProcessFooter from "../../components/ProcessFooter";
import ProcessTitle from "../../components/ProcessTitle";
import { changeAssigneeNew, inboundLiaisonDetail, saveTaskFirst } from "api/process";
export default {
name: "phoneQbfsStep2",
components:{
ProcessFooter,
ProcessTitle,
ProcessHeaderPhone
},
data() {
return {
phoneshowflag: false,
phoneRoleList: [],
phoneDrawerTitle: '',
active: '1',
fileList: [],
commentText: '',
detailData: [],
nodeList: [],
nodeList2: [],
isSubmit: false,
saveLoading: false,
isTransfer: false,
// 调整处理人抽屉状态
drawerModal: false,
drawerTitle: "", //drawer标题
modalshowflag: false, // drawer开关
loading: false,
qbfsForm:{
entNumber: '',
cnName: '',
enName: '',
entCategory: '',
replaceNumber: '',
replacedNumber: '',
releaseDate: '',
implementDate: '',
reviewDate: '',
jgUser: '',
jgUserId: '',
},
roleForm: {
jgUser: ""
},
formRules: {
jgUser: [
{required: true, message: "请选择工作组成员", trigger: "change"}
],
},
}
},
mounted() {
this.processTable()
this.getData()
},
methods:{
processTable() {
this.$http.get("lawss/activiti/get_list_by_instance", {
prcNum: this.$route.query.prcNum,
sortWord: this.shunxu ? this.paixu : "",
shunxu: this.shunxu
}, {
loading: "loading",
_this: this
}, res => {
this.detailData = res
}, e => {
})
},
getData() {
return new Promise((resolve, reject) => {
inboundLiaisonDetail({
taskIds: this.$route.query.taskIds,
pId: this.$route.query.prcId,
}).then(res => {
if (res) {
const processForm = JSON.parse(res.mesg)
this.getFormFieldList(processForm)
}
}).catch(e => {
})
})
},
/**
* @description: 动态表单读取
*/
getFormFieldList (item) {
this.$nextTick(() => {
this.qbfsForm = JSON.parse(JSON.stringify(item))
this.fileList = item.fileList
})
},
handleTabs(name) {
this.active = name;
},
//流程提交
handleSubmit(){
this.isSubmit = true
this.qbfsForm.commentText = this.commentText
let json = JSON.stringify(this.qbfsForm);
this.$http.post('lawss/activiti/completeTask', {
taskIds: this.$route.query.taskIds,
userId: this.$store.getters.userInfo.userId,
json: json,
}, {
_this: this
}, res => {
if (res.success) {
this.$message.success(res.message)
this.$router.push('/processCenter')
}
this.isSubmit = false
}, e => {
});
},
//转办按钮
handleTransfer(){
this.phoneshowflag = true
this.phoneRoleList = this.roleTransfer
this.phoneDrawerTitle = '转办处理人'
},
//确认转办
drawerCheck (data) {
this.roleTransfer = data
this.phoneRoleList = this.roleTransfer
this.turnLoading = true
changeAssigneeNew({
taskId: this.$route.query.taskIds, // 任务id
assignee: data[0].id, // 被委托人
userId: this.$store.getters.userInfo.userId, // 委托人
pId: this.$route.query.prcId // 流程实例
}).then(res =>{
if (res.success) {
this.turnLoading = false
this.$message.success('调整成功')
this.$router.push("/processCenter")
} else {
this.$message.warning(res.message)
}
})
this.modalshowflag = false
},
// 请求转换流程图
processNum (row) {
axios.request({
url: '/api/lawss/activiti/getImg?_t=' + new Date().getTime(),
responseType: 'blob',
method: 'get',
params: {
prcNum: this.$route.query.prcNum
}
}).then(res => {
// let blob = new Blob([res.data], {type: 'image/jpg'})
// let url = window.URL.createObjectURL(res.data)
this.processStep = window.URL.createObjectURL(res.data)
})
},
choiceZRRS() {
if (this.qbfsForm.jgUserId) {
this.phoneRoleList = this.listForm.jgUserId.split(',')
}
this.drawerModal = true;
},
checkedRole(data) {
let idList = "";
let nameList = "";
data.forEach(item => {
if (nameList.length) {
nameList += ",";
idList += ",";
}
idList += item.id;
nameList += item.name;
});
this.$set(this.qbfsForm, 'jgUser', nameList)
this.$set(this.qbfsForm, 'jgUserId', idList)
if(this.qbfsForm.jgUser){
this.$refs.qbfsForm.validateField('jgUser')
}
},
/**
* @Description: 点击下载
*/
downloadFile(attId) {
if (attId != null && attId !== "") {
window.location.href = "/api/att/attFile/downloadFileForSar?fileId=" + attId;
} else {
this.$message.error("请选择要下载的文件");
}
},
downloadFileByWater(attId, fileSuffix) {
let fileExtension = fileSuffix.substring(fileSuffix.lastIndexOf(".") + 1);
if (fileExtension !== "pdf" && fileExtension !== "PDF") {
this.$message.error("水印下载仅支持PDF,pdf格式文件");
} else {
if (attId != null && attId !== "") {
window.location.href = "/api/att/attFile/downloadFileForSarWaterMark?fileId=" + attId;
} else {
this.$message.error("请选择要下载的文件");
}
}
},
},
computed: {
listNoDataText() {
return this.processType === 1 ? "暂无待办流程" : "暂无已办流程";
}
},
};
</script>
<style lang="less" scoped>
@import '~@/assets/styles/phone';
.phoneQbfsStep2 {
/deep/.van-dialog__content {
min-height: 300px;
padding: 10px;
}
.prc-content-border {
overflow: auto;
}
/deep/.prc-content-border .el-form-item__content {
width: 270px;
}
//.headerTabs {
// height: 52px;
// display: flex;
// align-items: center;
// position: absolute;
// top: 52px;
// right: 10px;
// .headerTabsItem {
// border: 1px solid #c1c1c1;
// padding: 0 5px;
// height: 30px;
// line-height: 30px;
// cursor: pointer;
// }
// .active {
// border: 1px solid #E6A23C;
// color: #fff;
// background: #E6A23C;
// }
//}
.content {
border-top: 1px solid #DCDFE6;
display: flex;
flex-direction: column;
justify-content: space-between;
margin-top: 52px;
//height: calc(~'100% - 180px');
overflow: auto;
.tableTitle {
margin-bottom: 10px;
height: 30px;
line-height: 30px;
position: relative;
font-size: 13px;
font-weight: bold;
.tableButton {
position: absolute;
right: 0;
top: 0;
}
}
}
}
</style>
+20
View File
@@ -2359,6 +2359,16 @@ const routes = [
title: '未符合项整改流程'
}
},
{
path: '/phoneCywbbzzxdStep2',
name: 'phoneCywbbzzxdStep2',
component: () => import('@/pages/processCenter/pages/phone/cywbbzzxd/step2.vue'),
meta: {
isBoolean: true,
requireAuth: true,
title: '参与外部标准制修订信息提报流程'
}
},
{
path: '/phoneCywbbzzxdStep4',
name: 'phoneCywbbzzxdStep4',
@@ -2429,6 +2439,16 @@ const routes = [
title: '企标制修订计划管控流程'
}
},
{
path: '/phoneQbfsStep2',
name: 'phoneQbfsStep2',
component: () => import('@/pages/processCenter/pages/phone/qbfs/step2.vue'),
meta: {
isBoolean: true,
requireAuth: true,
title: '企标复审流程'
}
},
{
path: '/phoneQbfsStep4',
name: 'phoneQbfsStep4',