手机端-企标制修订-技术标准
This commit is contained in:
@@ -26,6 +26,28 @@
|
||||
v-model="form.standEnName"
|
||||
:disabled="disabled"
|
||||
></InputFormItem>
|
||||
<InputFormItem
|
||||
v-if="$route.name === 'phoneBussLibrary13'"
|
||||
label="企业标准号"
|
||||
prop="standCode"
|
||||
v-model="form.standCode"
|
||||
:disabled="disabled"
|
||||
></InputFormItem>
|
||||
<InputFormItem
|
||||
v-if="$route.name === 'phoneBussLibrary13'"
|
||||
v-show="form.reviseStatus === '1' || form.reviseStatus === '2'"
|
||||
label="企标顺序号"
|
||||
prop="standNum"
|
||||
v-model="form.standNum"
|
||||
:disabled="disabled"
|
||||
></InputFormItem>
|
||||
<DatePickerFormItem
|
||||
v-if="$route.name === 'phoneBussLibrary13'"
|
||||
label="发布日期"
|
||||
prop="issueTime"
|
||||
v-model="form.issueTime"
|
||||
:disabled="disabled"
|
||||
></DatePickerFormItem>
|
||||
<DatePickerFormItem
|
||||
label="企标实施日期"
|
||||
prop="putTime"
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
<template>
|
||||
<el-table
|
||||
ref="selection"
|
||||
:data="data"
|
||||
tooltip-effect="dark"
|
||||
style="width: 100%;"
|
||||
border
|
||||
row-key="id"
|
||||
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}"
|
||||
>
|
||||
<el-table-column
|
||||
prop="footFileName"
|
||||
label="编写文件名称"
|
||||
align="center"
|
||||
min-width="30%">
|
||||
<template slot-scope="scope">
|
||||
<a @click="handlePreview(scope.row)" class="table-jump">{{ scope.row.footFileName }}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="userName"
|
||||
label="起草人"
|
||||
min-width="15%"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "FileSummary",
|
||||
props: {
|
||||
data: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handlePreview (file) {
|
||||
const attId = file.footFile
|
||||
this.$preview(attId)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,192 @@
|
||||
<template>
|
||||
<div class="root">
|
||||
<el-table
|
||||
ref="selection"
|
||||
:data="form.evaluationData"
|
||||
:summary-method="getSummaries"
|
||||
show-summary
|
||||
:span-method="(({row, column, rowIndex, columnIndex})=>objectSpanMethod({row, column, rowIndex, columnIndex},form.evaluationData))"
|
||||
tooltip-effect="dark"
|
||||
style="width: 100%;"
|
||||
border
|
||||
row-key="id"
|
||||
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}"
|
||||
>
|
||||
<el-table-column label="企业标准编写质量评价表" align="center" label-class-name="column1">
|
||||
<el-table-column label="标准类别">
|
||||
<el-table-column
|
||||
prop="oneIndexTitle"
|
||||
align="center"
|
||||
label="一级指标"
|
||||
width = '100'
|
||||
></el-table-column>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column :label="standSort">
|
||||
<el-table-column
|
||||
prop="twoIndexTitle"
|
||||
align="center"
|
||||
label="二级指标"
|
||||
width = '100'
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="threeIndexTitle"
|
||||
label="三级指标"
|
||||
width="370"
|
||||
>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="标准名称">
|
||||
<el-table-column
|
||||
prop="weight"
|
||||
align="center"
|
||||
label="指标权重 %"
|
||||
width = '120'
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{scope.row.valueType === 'number' ? scope.row.weight * 100 : '加分项('+scope.row.weight+'分)'}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column :label="standName">
|
||||
<el-table-column
|
||||
prop="score"
|
||||
align="center"
|
||||
label="指标分值(10分制)优≥8分;合格6~8分;不合格<6分"
|
||||
width = '220'
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="scoreMin"
|
||||
align="center"
|
||||
label="分值小计"
|
||||
width = '80'
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{setScoreMin(scope.row)}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="reason"
|
||||
align="center"
|
||||
label="简述扣分理由(不合格<6分,必填)"
|
||||
width="400"
|
||||
>
|
||||
</el-table-column>
|
||||
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "Score",
|
||||
props: {
|
||||
form: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
},
|
||||
standSort: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
standName: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
setScoreMin(row){
|
||||
return row.scoreMin = ((row.score === undefined || row.score === '') ? '' : row.valueType === 'add' ? row.score : (row.score / 10).toFixed(1))
|
||||
},
|
||||
getSummaries(param) {
|
||||
const { columns, data } = param;
|
||||
const sums = [];
|
||||
columns.forEach((column, index) => {
|
||||
if (index === 3) {
|
||||
sums[index] = '合计:';
|
||||
return;
|
||||
}else if(index === 6){
|
||||
sums[index] = '';
|
||||
return;
|
||||
}
|
||||
const values = data.map(item => Number(item[column.property]));
|
||||
if (!values.every(value => isNaN(value))) {
|
||||
sums[index] = values.reduce((prev, curr) => {
|
||||
const value = Number(curr);
|
||||
if (!isNaN(value)) {
|
||||
return prev + curr;
|
||||
} else {
|
||||
return prev;
|
||||
}
|
||||
}, 0);
|
||||
sums[index] += ' ';
|
||||
} else {
|
||||
sums[index] = '';
|
||||
}
|
||||
if(sums[index] !== '' && sums[index].indexOf(".") !== -1){
|
||||
sums[index] = parseFloat(sums[index]).toFixed(1);
|
||||
}
|
||||
});
|
||||
if(this.form.evaluationData && this.form.evaluationData.length > 0){
|
||||
this.form.evaluationData[0].sum = sums[4]
|
||||
}
|
||||
return sums;
|
||||
},
|
||||
objectSpanMethod({ row, column, rowIndex, columnIndex },value) {
|
||||
if (columnIndex === 0) {
|
||||
if (rowIndex === 0) {
|
||||
return {
|
||||
rowspan: value.length,
|
||||
colspan: 1
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
rowspan: 0,
|
||||
colspan: 0
|
||||
};
|
||||
}
|
||||
}else if(columnIndex === 1 ) {
|
||||
const _row = (this.filterData2(this.form.evaluationData).one)[rowIndex]
|
||||
const _col = _row > 0 ? 1 : 0
|
||||
return {
|
||||
rowspan: _row,
|
||||
colspan: _col
|
||||
}
|
||||
}
|
||||
},
|
||||
filterData2(){
|
||||
let spanOneArr = []
|
||||
let concatOne = 0
|
||||
this.form.evaluationData.forEach((item,index)=>{//循环后端查询出来的数据(orderdata)
|
||||
if(index === 0){
|
||||
spanOneArr.push(1)
|
||||
}else{
|
||||
//name 修改
|
||||
if(item.twoIndexTitle === this.form.evaluationData[index - 1].twoIndexTitle){ //第一列需合并相同内容的字段
|
||||
spanOneArr[concatOne] += 1
|
||||
spanOneArr.push(0)
|
||||
}else{
|
||||
spanOneArr.push(1)
|
||||
concatOne = index
|
||||
}
|
||||
}
|
||||
})
|
||||
return {
|
||||
one: spanOneArr,
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.root {
|
||||
height: calc(100vh - 167px);
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,93 @@
|
||||
<template>
|
||||
<el-table
|
||||
ref="selection"
|
||||
:data="data"
|
||||
tooltip-effect="dark"
|
||||
:height="$route.name === 'phoneBussLibrary5' ? '100%' : 'auto'"
|
||||
style="width: 100%;"
|
||||
border
|
||||
row-key="id"
|
||||
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}"
|
||||
>
|
||||
<el-table-column
|
||||
prop="modelNum"
|
||||
label="条款号"
|
||||
width="100"
|
||||
align="center"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="修改前"
|
||||
prop="modelUpdBefore"
|
||||
align="center"
|
||||
width="150">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="修改后"
|
||||
prop="modelUpdAfter"
|
||||
align="center"
|
||||
width="150">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="修改理由"
|
||||
prop="modelContent"
|
||||
align="center"
|
||||
width="150">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="zrDeptIdName"
|
||||
label="提出部门"
|
||||
align="center"
|
||||
width="150">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="zrUserIdName"
|
||||
label="责任人"
|
||||
width="150"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-if="$route.name !== 'phoneBussLibrary5'"
|
||||
label="意见是否采纳"
|
||||
prop="opinionsAdopted"
|
||||
width="120"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.opinionsAdopted ? opinionsAdoptedOptions.find(item => item.value === scope.row.opinionsAdopted).label : '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-if="$route.name !== 'phoneBussLibrary5'"
|
||||
prop="opinionsAdoptedCont"
|
||||
label="采纳理由"
|
||||
align="center"
|
||||
width="150">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "TermInfo",
|
||||
props: {
|
||||
data: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
}
|
||||
},
|
||||
data () {
|
||||
const opinionsAdoptedOptions = [
|
||||
{value: '1',label: '采纳'},
|
||||
{value: '2',label: '部分采纳'},
|
||||
{value: '3',label: '不采纳'},
|
||||
]
|
||||
return {
|
||||
opinionsAdoptedOptions
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -185,7 +185,6 @@ export default {
|
||||
this.form.YYBZ = this.form.YYBZ || this.form.esMatingRelations
|
||||
|
||||
this.roleForm = processForm.roleForm
|
||||
console.log( this.roleForm)
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.reloadForm = true
|
||||
|
||||
@@ -0,0 +1,349 @@
|
||||
<template>
|
||||
<div class="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">
|
||||
<el-form
|
||||
v-if="reloadForm"
|
||||
ref="form"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
class="label-input-form phoneForm"
|
||||
label-width="112px"
|
||||
>
|
||||
<template v-if="active === '1'">
|
||||
<div>
|
||||
<ProcessTitle>
|
||||
<template slot="title">基础信息</template>
|
||||
</ProcessTitle>
|
||||
<Basic :form="form" :dict="dict" :disabled="disabled"></Basic>
|
||||
<ProcessTitle>
|
||||
<template slot="title">过程稿件</template>
|
||||
</ProcessTitle>
|
||||
<ProcessFile :form="form" :disabled="disabled"></ProcessFile>
|
||||
<ProcessTitle>
|
||||
<template slot="title">适用范围</template>
|
||||
</ProcessTitle>
|
||||
<Range :form="form" :dict="dict" :disabled="disabled"></Range>
|
||||
<ProcessTitle>
|
||||
<template slot="title">关联信息</template>
|
||||
</ProcessTitle>
|
||||
<Info :form="form" :dict="dict" :disabled="disabled"></Info>
|
||||
<!--<ProcessTitle>-->
|
||||
<!-- <template slot="title">文件汇总</template>-->
|
||||
<!--</ProcessTitle>-->
|
||||
<!--<FileSummary :data="form.fileModelList"></FileSummary>-->
|
||||
<ProcessTitle>
|
||||
<template slot="title">意见信息</template>
|
||||
</ProcessTitle>
|
||||
<TermInfo :data="form.infoList"></TermInfo>
|
||||
<div class="prc-content-border">
|
||||
<UploadFormItem
|
||||
label="汇总评审意见文件"
|
||||
prop="summaryFileName"
|
||||
:ids.sync="form.summaryFile"
|
||||
:names.sync="form.summaryFileName"
|
||||
view
|
||||
:disabled="disabled"
|
||||
></UploadFormItem>
|
||||
</div>
|
||||
<ProcessTitle>
|
||||
<template slot="title">培训文件</template>
|
||||
</ProcessTitle>
|
||||
<div class="prc-content-border">
|
||||
<UploadFormItem
|
||||
label="培训文件"
|
||||
prop="madelSubName"
|
||||
:ids.sync="form.madelSub"
|
||||
:names.sync="form.madelSubName"
|
||||
view
|
||||
:disabled="disabled"
|
||||
></UploadFormItem>
|
||||
</div>
|
||||
</div>
|
||||
<ReceiptDescription v-model="form.commentText" prop="commentText" title="回执说明"></ReceiptDescription>
|
||||
</template>
|
||||
<template v-if="active === '2'">
|
||||
<RoleInfo :roleForm="roleForm"></RoleInfo>
|
||||
</template>
|
||||
<template v-if="active === '3'">
|
||||
<PhoneHistortTable :prcNum="this.$route.query.prcNum"></PhoneHistortTable>
|
||||
</template>
|
||||
<template v-if="active === '4'">
|
||||
<div style="height: 100%">
|
||||
<ProcessTitle>
|
||||
<template slot="title">条款信息</template>
|
||||
</ProcessTitle>
|
||||
<TermInfo :data="form.modelData"></TermInfo>
|
||||
</div>
|
||||
</template>
|
||||
<template v-if="active === '5'">
|
||||
<Score :form="form" :standSort="form.standSort" :standName="form.standName"></Score>
|
||||
</template>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-submit2
|
||||
show-transfer
|
||||
:submitLoading="footerLoading"
|
||||
@submit2="handle2"
|
||||
@transfer="handleTransfer"
|
||||
@over2="handle1"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!-- 福田全公司选人解决方案 -->
|
||||
<phoneRoleTree
|
||||
check-box
|
||||
:is-title="drawerTitle"
|
||||
:is-visible.sync="drawerModal"
|
||||
@checkedRole="checkedRole"
|
||||
:nodeList="nodeList"
|
||||
></phoneRoleTree>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {inboundLiaisonDetail, processCreateStand, changeAssigneeNew} from 'api/process'
|
||||
import {getEvaluationIndex} from "api/businessApi";
|
||||
|
||||
import ProcessHeaderPhone from '@/pages/processCenter/pages/components/ProcessHeaderPhone'
|
||||
import ProcessTitle from '@/pages/processCenter/pages/components/ProcessTitle'
|
||||
import ProcessFooter from '@/pages/processCenter/pages/components/ProcessFooter'
|
||||
import PhoneHistortTable from '@/components/hzwlComponents/phoneComponents/phoneApprovalHistory'
|
||||
import ReceiptDescription from "@/components/hzwlComponents/ReceiptDescription";
|
||||
import phoneRoleTree from '@/components/hzwlComponents/phoneComponents/phoneRoleTree'
|
||||
|
||||
import Basic from "./components/Basic";
|
||||
import ProcessFile from "./components/ProcessFile";
|
||||
import Range from "./components/Range";
|
||||
import Info from "./components/Info";
|
||||
import RoleInfo from "./components/RoleInfo";
|
||||
import FileSummary from "./components/FileSummary";
|
||||
import TermInfo from "./components/TermInfo";
|
||||
import Score from "./components/Score";
|
||||
|
||||
import UploadFormItem from '@/components/hzwlComponents/UploadFormItem'
|
||||
|
||||
|
||||
export default {
|
||||
name: "step2",
|
||||
components: {
|
||||
ProcessHeaderPhone,
|
||||
PhoneHistortTable,
|
||||
ProcessTitle,
|
||||
ProcessFooter,
|
||||
ReceiptDescription,
|
||||
phoneRoleTree,
|
||||
Basic,
|
||||
ProcessFile,
|
||||
Range,
|
||||
Info,
|
||||
RoleInfo,
|
||||
FileSummary,
|
||||
TermInfo,
|
||||
Score,
|
||||
UploadFormItem
|
||||
},
|
||||
data () {
|
||||
const form = {}
|
||||
return {
|
||||
active: '1',
|
||||
reloadForm: true,
|
||||
form,
|
||||
rules: {},
|
||||
roleForm: {},
|
||||
dict: {},
|
||||
textStatusMap: [],
|
||||
disabled: true,
|
||||
footerLoading: false,
|
||||
|
||||
// 福田全公司选人解决方案
|
||||
drawerModal: false,
|
||||
drawerTitle: '',
|
||||
nodeList: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getDicTypeListCode()
|
||||
this.getData()
|
||||
},
|
||||
methods: {
|
||||
handleTabs(name) {
|
||||
this.active = name;
|
||||
},
|
||||
getData () {
|
||||
const { taskIds, prcId } = this.$route.query
|
||||
|
||||
inboundLiaisonDetail({
|
||||
taskIds,
|
||||
pId: prcId
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
this.reloadForm = false
|
||||
const processForm = JSON.parse(res.mesg)
|
||||
this.form = JSON.parse(JSON.stringify(processForm.form || processForm))
|
||||
this.form.commentText = ''
|
||||
|
||||
// if (!processForm.form) {
|
||||
// this.getEvaluation()
|
||||
// }
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.reloadForm = true
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
handle2 () {
|
||||
this.$message({
|
||||
dangerouslyUseHTMLString: true,
|
||||
message: <div style="word-break: keep-all;color: #F56C6C">当前任务不支持手机端处理</div>,
|
||||
type: 'error'
|
||||
})
|
||||
|
||||
// this.form.approvalOpinion = 0
|
||||
// this.$refs['form'].validate((valid) => {
|
||||
// if (valid) {
|
||||
// this.handleSubmit()
|
||||
// }
|
||||
// })
|
||||
},
|
||||
handle1 () {
|
||||
this.form.approvalOpinion = 1
|
||||
this.handleSubmit()
|
||||
},
|
||||
|
||||
handleSubmit() {
|
||||
this.addRule()
|
||||
this.$refs['form'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.footerLoading = true
|
||||
const json = JSON.stringify(this.form);
|
||||
const query = {
|
||||
taskIds: this.$route.query.taskIds,
|
||||
userId : this.$route.query.userId,
|
||||
json: json
|
||||
}
|
||||
this.$http._post('lawss/activiti/completeTask', query).then(res => {
|
||||
if (res.success) {
|
||||
if(this.form.approvalOpinion === 1){
|
||||
this.$message.warning("驳回成功")
|
||||
}else{
|
||||
this.$message.success('操作成功')
|
||||
}
|
||||
this.footerLoading = false
|
||||
|
||||
this.$router.go(-2)
|
||||
} else {
|
||||
this.footerLoading = false
|
||||
this.$message.error(res.message)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查基础信息表单是否填写完整')
|
||||
}
|
||||
})
|
||||
},
|
||||
addRule() {
|
||||
if (this.form.approvalOpinion === 0) {
|
||||
this.rules.commentText = [
|
||||
{ required: false }
|
||||
]
|
||||
this.$refs.form.clearValidate('commentText')
|
||||
} else {
|
||||
this.rules.commentText = [
|
||||
{ required: true, message: '审批意见不能为空' }
|
||||
]
|
||||
}
|
||||
this.rules = { ...this.rules }
|
||||
},
|
||||
handleTransfer () {
|
||||
this.drawerModal = true
|
||||
this.drawerTitle = '转办处理人'
|
||||
},
|
||||
// 转办
|
||||
checkedRole (data) {
|
||||
this.footerLoading = true
|
||||
changeAssigneeNew({
|
||||
taskId: this.$route.query.taskIds, // 任务id
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
assignee: data[0].id, // 被委托人
|
||||
pId: this.$route.query.prcId, // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.drawerModal = false
|
||||
this.$message.success('调整成功')
|
||||
setTimeout(() => {
|
||||
this.$router.go(-2)
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.footerLoading = false
|
||||
})
|
||||
},
|
||||
getDicTypeListCode () {
|
||||
this.$http._getData('sys/dictype/getDicTypeListCode').then(res => {
|
||||
this.dict = { ...res.data }
|
||||
})
|
||||
},
|
||||
getEvaluation() {
|
||||
return new Promise((resolve, reject) => {
|
||||
getEvaluationIndex({
|
||||
indexType: 'quality'
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
const evalList = []
|
||||
res.data.forEach(item =>{
|
||||
item.score = ''
|
||||
item.scoreMin = ''
|
||||
item.reason = ''
|
||||
item.userId = this.userId
|
||||
item.processNode = this.taskInfo
|
||||
evalList.push(item)
|
||||
})
|
||||
this.form.evaluationData = evalList
|
||||
this.$forceUpdate()
|
||||
}
|
||||
}).catch(e => {
|
||||
})
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.phoneBox .content {
|
||||
border-top: 1px solid #DCDFE6;
|
||||
margin-top: 51px;
|
||||
height: calc(100% - 156px);
|
||||
|
||||
background-color: #fff;
|
||||
padding: 0 10px;
|
||||
box-sizing: border-box;
|
||||
|
||||
overflow: auto;
|
||||
.phoneForm {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
.phoneBox /deep/ .van-field__label {
|
||||
width: 112px !important;
|
||||
margin-right: 0 !important;
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
.phoneBox /deep/ .van-field__control {
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,458 @@
|
||||
<template>
|
||||
<div class="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">
|
||||
<el-form
|
||||
v-if="reloadForm"
|
||||
ref="form"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
class="label-input-form phoneForm"
|
||||
label-width="112px"
|
||||
>
|
||||
<template v-if="active === '1'">
|
||||
<div>
|
||||
<ProcessTitle>
|
||||
<template slot="title">基础信息</template>
|
||||
</ProcessTitle>
|
||||
<Basic :form="form" :dict="dict" :disabled="disabled"></Basic>
|
||||
<ProcessTitle>
|
||||
<template slot="title">过程稿件</template>
|
||||
</ProcessTitle>
|
||||
<ProcessFile :form="form" :disabled="disabled"></ProcessFile>
|
||||
<ProcessTitle>
|
||||
<template slot="title">适用范围</template>
|
||||
</ProcessTitle>
|
||||
<Range :form="form" :dict="dict" :disabled="disabled"></Range>
|
||||
<ProcessTitle>
|
||||
<template slot="title">关联信息</template>
|
||||
</ProcessTitle>
|
||||
<Info :form="form" :dict="dict" :disabled="disabled"></Info>
|
||||
<!--<ProcessTitle>-->
|
||||
<!-- <template slot="title">文件汇总</template>-->
|
||||
<!--</ProcessTitle>-->
|
||||
<!--<FileSummary :data="form.fileModelList"></FileSummary>-->
|
||||
<ProcessTitle>
|
||||
<template slot="title">意见信息</template>
|
||||
</ProcessTitle>
|
||||
<TermInfo :data="form.infoList"></TermInfo>
|
||||
<div class="prc-content-border">
|
||||
<UploadFormItem
|
||||
label="汇总评审意见文件"
|
||||
prop="summaryFileName"
|
||||
:ids.sync="form.summaryFile"
|
||||
:names.sync="form.summaryFileName"
|
||||
view
|
||||
:disabled="disabled"
|
||||
></UploadFormItem>
|
||||
</div>
|
||||
<ProcessTitle>
|
||||
<template slot="title">培训文件</template>
|
||||
</ProcessTitle>
|
||||
<div class="prc-content-border">
|
||||
<UploadFormItem
|
||||
label="培训文件"
|
||||
prop="madelSubName"
|
||||
:ids.sync="form.madelSub"
|
||||
:names.sync="form.madelSubName"
|
||||
view
|
||||
:disabled="disabled"
|
||||
></UploadFormItem>
|
||||
</div>
|
||||
</div>
|
||||
<ReceiptDescription v-model="form.commentText" prop="commentText" title="回执说明"></ReceiptDescription>
|
||||
</template>
|
||||
<template v-if="active === '2'">
|
||||
<RoleInfo :roleForm="roleForm"></RoleInfo>
|
||||
</template>
|
||||
<template v-if="active === '3'">
|
||||
<PhoneHistortTable :prcNum="this.$route.query.prcNum"></PhoneHistortTable>
|
||||
</template>
|
||||
<template v-if="active === '4'">
|
||||
<div style="height: 100%">
|
||||
<ProcessTitle>
|
||||
<template slot="title">条款信息</template>
|
||||
</ProcessTitle>
|
||||
<TermInfo :data="form.modelData"></TermInfo>
|
||||
</div>
|
||||
</template>
|
||||
<template v-if="active === '5'">
|
||||
<Score :form="form" :standSort="form.standSort" :standName="form.standName"></Score>
|
||||
</template>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-submit2
|
||||
show-transfer
|
||||
:submitLoading="footerLoading"
|
||||
@submit2="handle2"
|
||||
@transfer="handleTransfer"
|
||||
@over2="handle1"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!-- 福田全公司选人解决方案 -->
|
||||
<phoneRoleTree
|
||||
check-box
|
||||
:is-title="drawerTitle"
|
||||
:is-visible.sync="drawerModal"
|
||||
@checkedRole="checkedRole"
|
||||
:nodeList="nodeList"
|
||||
></phoneRoleTree>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {inboundLiaisonDetail, processCreateStand, changeAssigneeNew} from 'api/process'
|
||||
import {getEvaluationIndex} from "api/businessApi";
|
||||
|
||||
import ProcessHeaderPhone from '@/pages/processCenter/pages/components/ProcessHeaderPhone'
|
||||
import ProcessTitle from '@/pages/processCenter/pages/components/ProcessTitle'
|
||||
import ProcessFooter from '@/pages/processCenter/pages/components/ProcessFooter'
|
||||
import PhoneHistortTable from '@/components/hzwlComponents/phoneComponents/phoneApprovalHistory'
|
||||
import ReceiptDescription from "@/components/hzwlComponents/ReceiptDescription";
|
||||
import phoneRoleTree from '@/components/hzwlComponents/phoneComponents/phoneRoleTree'
|
||||
|
||||
import Basic from "./components/Basic";
|
||||
import ProcessFile from "./components/ProcessFile";
|
||||
import Range from "./components/Range";
|
||||
import Info from "./components/Info";
|
||||
import RoleInfo from "./components/RoleInfo";
|
||||
import FileSummary from "./components/FileSummary";
|
||||
import TermInfo from "./components/TermInfo";
|
||||
import Score from "./components/Score";
|
||||
|
||||
import UploadFormItem from '@/components/hzwlComponents/UploadFormItem'
|
||||
|
||||
|
||||
export default {
|
||||
name: "step2",
|
||||
components: {
|
||||
ProcessHeaderPhone,
|
||||
PhoneHistortTable,
|
||||
ProcessTitle,
|
||||
ProcessFooter,
|
||||
ReceiptDescription,
|
||||
phoneRoleTree,
|
||||
Basic,
|
||||
ProcessFile,
|
||||
Range,
|
||||
Info,
|
||||
RoleInfo,
|
||||
FileSummary,
|
||||
TermInfo,
|
||||
Score,
|
||||
UploadFormItem
|
||||
},
|
||||
data () {
|
||||
const form = {}
|
||||
return {
|
||||
active: '1',
|
||||
reloadForm: true,
|
||||
form,
|
||||
rules: {},
|
||||
roleForm: {},
|
||||
dict: {},
|
||||
textStatusMap: [],
|
||||
disabled: true,
|
||||
footerLoading: false,
|
||||
|
||||
// 福田全公司选人解决方案
|
||||
drawerModal: false,
|
||||
drawerTitle: '',
|
||||
nodeList: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getDicTypeListCode()
|
||||
this.getData()
|
||||
},
|
||||
methods: {
|
||||
handleTabs(name) {
|
||||
this.active = name;
|
||||
},
|
||||
getData () {
|
||||
const { taskIds, prcId } = this.$route.query
|
||||
|
||||
inboundLiaisonDetail({
|
||||
taskIds,
|
||||
pId: prcId
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
this.reloadForm = false
|
||||
const processForm = JSON.parse(res.mesg)
|
||||
this.form = JSON.parse(JSON.stringify(processForm.form || processForm))
|
||||
this.form.commentText = ''
|
||||
|
||||
if (!processForm.form) {
|
||||
// this.getEvaluation()
|
||||
this.getStandInfoByReviseStatus()
|
||||
}
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.reloadForm = true
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
getStandInfoByReviseStatus() {
|
||||
let date = new Date();
|
||||
let year = date.getFullYear();
|
||||
if(this.form.reviseStatus === '2'){
|
||||
let index1 = this.form.DTQBBHBUSS.split(',')[0].lastIndexOf('-') // 7
|
||||
this.standYear = this.form.DTQBBHBUSS.split(',')[0].slice(index1 + 1) // 2023 x
|
||||
if(this.standYear.indexOf(' ')>0){
|
||||
const _index = this.standYear.indexOf(' ')
|
||||
this.standYear = this.standYear.slice(0,_index)
|
||||
}else if(this.standYear.indexOf(' X')>0){
|
||||
const _index = this.standYear.indexOf(' X') // 4
|
||||
this.standYear = this.standYear.slice(0,_index) // 2023
|
||||
}
|
||||
|
||||
this.standSort = this.form.standSort
|
||||
this.form.standYear = year
|
||||
if((this.standYear+'').slice(0,4) != year){
|
||||
this.form.standYear = year
|
||||
}else{
|
||||
if((this.standYear+'').slice(0,4) == (this.form.standYear + '').slice(0,4)){
|
||||
this.form.standYear = this.standYear + ' X'
|
||||
}else{
|
||||
this.form.standYear = this.standYear
|
||||
}
|
||||
}
|
||||
|
||||
if(this.form.standYear == this.standYear){
|
||||
this.form.standYear = this.form.standYear + ' X'
|
||||
}
|
||||
|
||||
if (this.form.standNum.includes(',')) {
|
||||
// 多个代替企标编号 调接口获取企标顺序号
|
||||
this.$http.get('lawss/sarBussionessStand/getStandInfoByReviseStatus',{reviseStatus:'buss1_'+this.form.reviseStatus,standSort:this.form.standSort,taskId: this.taskIds}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.form.standNum = res.data + ''
|
||||
this.form.standNum = this.form.standNum.replace(/^0+/,"")
|
||||
this.form.standNum = this.form.standNum.padStart(3,'0')
|
||||
this.standNum = this.form.standNum // 保存初始顺序号
|
||||
this.form.standCode = this.form.standSort + this.form.standNum + ( this.form.standYear === '' ? '' : '-' + this.form.standYear )
|
||||
this.standCode = this.form.standCode
|
||||
this.formKey++
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
this.form.standNum = this.form.standNum.replace(/^0+/,"")
|
||||
this.form.standNum = this.form.standNum.padStart(3,'0')
|
||||
|
||||
this.standNum = this.form.standNum // 保存初始顺序号
|
||||
this.form.standCode = this.form.standSort + this.form.standNum + ( this.form.standYear === '' ? '' : '-' + this.form.standYear )
|
||||
|
||||
this.standCode = this.form.standCode
|
||||
this.formKey++
|
||||
}
|
||||
|
||||
} else if (this.form.reviseStatus === '3'){
|
||||
this.standCode = this.form.standCode
|
||||
// ---
|
||||
let index1 = this.form.standCode.lastIndexOf('-') // 7
|
||||
this.standYear = this.form.standCode.slice(index1 + 1) // 2023 x
|
||||
if(this.standYear.indexOf(' ')>0){
|
||||
const _index = this.standYear.indexOf(' ')
|
||||
this.standYear = this.standYear.slice(0,_index)
|
||||
}else if(this.standYear.indexOf(' X')>0){
|
||||
const _index = this.standYear.indexOf(' X') // 4
|
||||
this.standYear = this.standYear.slice(0,_index) // 2023
|
||||
}
|
||||
|
||||
let noYearStand = this.form.standCode.slice(0, index1) // 'Q-F 101'
|
||||
this.standNum = noYearStand.replace(this.form.standSort,'').trim() // '101'
|
||||
|
||||
this.standSort = this.form.standSort
|
||||
|
||||
this.standNum = this.standNum.replace(/^0+/,"")
|
||||
this.standNum = this.standNum.padStart(3,'0')
|
||||
|
||||
this.form.standNum = this.standNum
|
||||
// ---
|
||||
|
||||
this.form.standYear = this.standYear
|
||||
|
||||
this.form.standCode = this.form.standSort + this.form.standNum + ( this.form.standYear === '' ? '' : '-' + this.form.standYear )
|
||||
} else {
|
||||
this.form.standYear = year
|
||||
|
||||
this.$http.get('lawss/sarBussionessStand/getStandInfoByReviseStatus',{reviseStatus:'buss1_'+this.form.reviseStatus,standSort:this.form.standSort,taskId: this.taskIds}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
const standSn = res.data
|
||||
this.form.standSn = standSn
|
||||
this.form.standNumber = standSn
|
||||
this.form.standNum = standSn + ''
|
||||
|
||||
this.form.standNum = this.form.standNum.replace(/^0+/,"")
|
||||
this.form.standNum = this.form.standNum.padStart(3,'0')
|
||||
|
||||
this.form.standCode = this.form.standSort + this.form.standNum + ( this.form.standYear === '' ? '' : '-' + this.form.standYear )
|
||||
this.standSort = this.form.standSort
|
||||
this.standCode = this.form.standCode
|
||||
|
||||
|
||||
this.formKey++
|
||||
}, e => {
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
handle2 () {
|
||||
this.$message({
|
||||
dangerouslyUseHTMLString: true,
|
||||
message: <div style="word-break: keep-all;color: #F56C6C">当前任务不支持手机端处理</div>,
|
||||
type: 'error'
|
||||
})
|
||||
|
||||
// this.form.approvalOpinion = 0
|
||||
// this.$refs['form'].validate((valid) => {
|
||||
// if (valid) {
|
||||
// this.handleSubmit()
|
||||
// }
|
||||
// })
|
||||
},
|
||||
handle1 () {
|
||||
this.form.approvalOpinion = 1
|
||||
this.handleSubmit()
|
||||
},
|
||||
|
||||
handleSubmit() {
|
||||
this.addRule()
|
||||
this.$refs['form'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.footerLoading = true
|
||||
const json = JSON.stringify(this.form);
|
||||
const query = {
|
||||
taskIds: this.$route.query.taskIds,
|
||||
userId : this.$route.query.userId,
|
||||
json: json
|
||||
}
|
||||
this.$http._post('lawss/activiti/completeTask', query).then(res => {
|
||||
if (res.success) {
|
||||
if(this.form.approvalOpinion === 1){
|
||||
this.$message.warning("驳回成功")
|
||||
}else{
|
||||
this.$message.success('操作成功')
|
||||
}
|
||||
this.footerLoading = false
|
||||
|
||||
this.$router.go(-2)
|
||||
} else {
|
||||
this.footerLoading = false
|
||||
this.$message.error(res.message)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查基础信息表单是否填写完整')
|
||||
}
|
||||
})
|
||||
},
|
||||
addRule() {
|
||||
if (this.form.approvalOpinion === 0) {
|
||||
this.rules.commentText = [
|
||||
{ required: false }
|
||||
]
|
||||
this.$refs.form.clearValidate('commentText')
|
||||
} else {
|
||||
this.rules.commentText = [
|
||||
{ required: true, message: '审批意见不能为空' }
|
||||
]
|
||||
}
|
||||
this.rules = { ...this.rules }
|
||||
},
|
||||
handleTransfer () {
|
||||
this.drawerModal = true
|
||||
this.drawerTitle = '转办处理人'
|
||||
},
|
||||
// 转办
|
||||
checkedRole (data) {
|
||||
this.footerLoading = true
|
||||
changeAssigneeNew({
|
||||
taskId: this.$route.query.taskIds, // 任务id
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
assignee: data[0].id, // 被委托人
|
||||
pId: this.$route.query.prcId, // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.drawerModal = false
|
||||
this.$message.success('调整成功')
|
||||
setTimeout(() => {
|
||||
this.$router.go(-2)
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.footerLoading = false
|
||||
})
|
||||
},
|
||||
getDicTypeListCode () {
|
||||
this.$http._getData('sys/dictype/getDicTypeListCode').then(res => {
|
||||
this.dict = { ...res.data }
|
||||
})
|
||||
},
|
||||
getEvaluation() {
|
||||
return new Promise((resolve, reject) => {
|
||||
getEvaluationIndex({
|
||||
indexType: 'quality'
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
const evalList = []
|
||||
res.data.forEach(item =>{
|
||||
item.score = ''
|
||||
item.scoreMin = ''
|
||||
item.reason = ''
|
||||
item.userId = this.userId
|
||||
item.processNode = this.taskInfo
|
||||
evalList.push(item)
|
||||
})
|
||||
this.form.evaluationData = evalList
|
||||
this.$forceUpdate()
|
||||
}
|
||||
}).catch(e => {
|
||||
})
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.phoneBox .content {
|
||||
border-top: 1px solid #DCDFE6;
|
||||
margin-top: 51px;
|
||||
height: calc(100% - 156px);
|
||||
|
||||
background-color: #fff;
|
||||
padding: 0 10px;
|
||||
box-sizing: border-box;
|
||||
|
||||
overflow: auto;
|
||||
.phoneForm {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
.phoneBox /deep/ .van-field__label {
|
||||
width: 112px !important;
|
||||
margin-right: 0 !important;
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
.phoneBox /deep/ .van-field__control {
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,212 @@
|
||||
<template>
|
||||
<div class="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">
|
||||
<el-form
|
||||
v-if="reloadForm"
|
||||
ref="form"
|
||||
:model="form"
|
||||
class="label-input-form phoneForm"
|
||||
label-width="112px"
|
||||
>
|
||||
<template v-if="active === '1'">
|
||||
<div>
|
||||
<ProcessTitle>
|
||||
<template slot="title">基础信息</template>
|
||||
</ProcessTitle>
|
||||
<Basic :form="form" :dict="dict" :disabled="disabled"></Basic>
|
||||
<ProcessTitle>
|
||||
<template slot="title">过程稿件</template>
|
||||
</ProcessTitle>
|
||||
<ProcessFile :form="form" :disabled="disabled"></ProcessFile>
|
||||
<ProcessTitle>
|
||||
<template slot="title">适用范围</template>
|
||||
</ProcessTitle>
|
||||
<Range :form="form" :dict="dict" :disabled="disabled"></Range>
|
||||
<ProcessTitle>
|
||||
<template slot="title">关联信息</template>
|
||||
</ProcessTitle>
|
||||
<Info :form="form" :dict="dict" :disabled="disabled"></Info>
|
||||
</div>
|
||||
<ReceiptDescription v-model="form.commentText" title="回执说明"></ReceiptDescription>
|
||||
</template>
|
||||
<template v-if="active === '2'">
|
||||
<RoleInfo :roleForm="roleForm"></RoleInfo>
|
||||
</template>
|
||||
<template v-if="active === '3'">
|
||||
<PhoneHistortTable :prcNum="this.$route.query.prcNum"></PhoneHistortTable>
|
||||
</template>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-submit
|
||||
show-transfer
|
||||
:submitLoading="footerLoading"
|
||||
@submit="handleSubmit"
|
||||
@transfer="handleTransfer"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!-- 福田全公司选人解决方案 -->
|
||||
<phoneRoleTree
|
||||
check-box
|
||||
:is-title="drawerTitle"
|
||||
:is-visible.sync="drawerModal"
|
||||
@checkedRole="checkedRole"
|
||||
:nodeList="nodeList"
|
||||
></phoneRoleTree>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {inboundLiaisonDetail, processCreateStand, changeAssigneeNew} from 'api/process'
|
||||
import { selectByIdAtt } from "@/api/flow/index.js"
|
||||
|
||||
import ProcessHeaderPhone from '@/pages/processCenter/pages/components/ProcessHeaderPhone'
|
||||
import ProcessTitle from '@/pages/processCenter/pages/components/ProcessTitle'
|
||||
import ProcessFooter from '@/pages/processCenter/pages/components/ProcessFooter'
|
||||
import PhoneHistortTable from '@/components/hzwlComponents/phoneComponents/phoneApprovalHistory'
|
||||
import ReceiptDescription from "@/components/hzwlComponents/ReceiptDescription";
|
||||
import phoneRoleTree from '@/components/hzwlComponents/phoneComponents/phoneRoleTree'
|
||||
|
||||
import Basic from "./components/Basic";
|
||||
import ProcessFile from "./components/ProcessFile";
|
||||
import Range from "./components/Range";
|
||||
import Info from "./components/Info";
|
||||
import RoleInfo from "./components/RoleInfo";
|
||||
|
||||
export default {
|
||||
name: "step2",
|
||||
components: {
|
||||
ProcessHeaderPhone,
|
||||
PhoneHistortTable,
|
||||
ProcessTitle,
|
||||
ProcessFooter,
|
||||
ReceiptDescription,
|
||||
phoneRoleTree,
|
||||
Basic,
|
||||
ProcessFile,
|
||||
Range,
|
||||
Info,
|
||||
RoleInfo
|
||||
},
|
||||
data () {
|
||||
const form = {}
|
||||
return {
|
||||
active: '1',
|
||||
reloadForm: true,
|
||||
form,
|
||||
roleForm: {},
|
||||
dict: {},
|
||||
textStatusMap: [],
|
||||
disabled: true,
|
||||
footerLoading: false,
|
||||
|
||||
// 福田全公司选人解决方案
|
||||
drawerModal: false,
|
||||
drawerTitle: '',
|
||||
nodeList: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getDicTypeListCode()
|
||||
this.getData()
|
||||
},
|
||||
methods: {
|
||||
handleTabs(name) {
|
||||
this.active = name;
|
||||
},
|
||||
getData () {
|
||||
const { taskIds, prcId } = this.$route.query
|
||||
|
||||
inboundLiaisonDetail({
|
||||
taskIds,
|
||||
pId: prcId
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
this.reloadForm = false
|
||||
const processForm = JSON.parse(res.mesg)
|
||||
this.form = JSON.parse(JSON.stringify(processForm.form || processForm))
|
||||
this.form.commentText = ''
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.reloadForm = true
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
async handleSubmit () {
|
||||
this.$message({
|
||||
dangerouslyUseHTMLString: true,
|
||||
message: <div style="word-break: keep-all;color: #F56C6C">当前任务不支持手机端处理</div>,
|
||||
type: 'error'
|
||||
})
|
||||
},
|
||||
handleTransfer () {
|
||||
this.drawerModal = true
|
||||
this.drawerTitle = '转办处理人'
|
||||
},
|
||||
// 转办
|
||||
checkedRole (data) {
|
||||
this.footerLoading = true
|
||||
changeAssigneeNew({
|
||||
taskId: this.$route.query.taskIds, // 任务id
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
assignee: data[0].id, // 被委托人
|
||||
pId: this.$route.query.prcId, // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.drawerModal = false
|
||||
this.$message.success('调整成功')
|
||||
setTimeout(() => {
|
||||
this.$router.go(-2)
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.footerLoading = false
|
||||
})
|
||||
},
|
||||
getDicTypeListCode () {
|
||||
this.$http._getData('sys/dictype/getDicTypeListCode').then(res => {
|
||||
this.dict = { ...res.data }
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.phoneBox .content {
|
||||
border-top: 1px solid #DCDFE6;
|
||||
margin-top: 51px;
|
||||
height: calc(100% - 156px);
|
||||
|
||||
background-color: #fff;
|
||||
padding: 0 10px;
|
||||
box-sizing: border-box;
|
||||
|
||||
overflow: auto;
|
||||
.phoneForm {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
.phoneBox /deep/ .van-field__label {
|
||||
width: 112px !important;
|
||||
margin-right: 0 !important;
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
.phoneBox /deep/ .van-field__control {
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,218 @@
|
||||
<template>
|
||||
<div class="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">
|
||||
<el-form
|
||||
v-if="reloadForm"
|
||||
ref="form"
|
||||
:model="form"
|
||||
class="label-input-form phoneForm"
|
||||
label-width="112px"
|
||||
>
|
||||
<template v-if="active === '1'">
|
||||
<div>
|
||||
<ProcessTitle>
|
||||
<template slot="title">基础信息</template>
|
||||
</ProcessTitle>
|
||||
<Basic :form="form" :dict="dict" :disabled="disabled"></Basic>
|
||||
<ProcessTitle>
|
||||
<template slot="title">过程稿件</template>
|
||||
</ProcessTitle>
|
||||
<ProcessFile :form="form" :disabled="disabled"></ProcessFile>
|
||||
<ProcessTitle>
|
||||
<template slot="title">适用范围</template>
|
||||
</ProcessTitle>
|
||||
<Range :form="form" :dict="dict" :disabled="disabled"></Range>
|
||||
<ProcessTitle>
|
||||
<template slot="title">关联信息</template>
|
||||
</ProcessTitle>
|
||||
<Info :form="form" :dict="dict" :disabled="disabled"></Info>
|
||||
<ProcessTitle>
|
||||
<template slot="title">文件汇总</template>
|
||||
</ProcessTitle>
|
||||
<FileSummary :data="form.fileModelList"></FileSummary>
|
||||
</div>
|
||||
<ReceiptDescription v-model="form.commentText" title="回执说明"></ReceiptDescription>
|
||||
</template>
|
||||
<template v-if="active === '2'">
|
||||
<RoleInfo :roleForm="roleForm"></RoleInfo>
|
||||
</template>
|
||||
<template v-if="active === '3'">
|
||||
<PhoneHistortTable :prcNum="this.$route.query.prcNum"></PhoneHistortTable>
|
||||
</template>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-submit
|
||||
show-transfer
|
||||
:submitLoading="footerLoading"
|
||||
@submit="handleSubmit"
|
||||
@transfer="handleTransfer"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!-- 福田全公司选人解决方案 -->
|
||||
<phoneRoleTree
|
||||
check-box
|
||||
:is-title="drawerTitle"
|
||||
:is-visible.sync="drawerModal"
|
||||
@checkedRole="checkedRole"
|
||||
:nodeList="nodeList"
|
||||
></phoneRoleTree>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {inboundLiaisonDetail, processCreateStand, changeAssigneeNew} from 'api/process'
|
||||
import { selectByIdAtt } from "@/api/flow/index.js"
|
||||
|
||||
import ProcessHeaderPhone from '@/pages/processCenter/pages/components/ProcessHeaderPhone'
|
||||
import ProcessTitle from '@/pages/processCenter/pages/components/ProcessTitle'
|
||||
import ProcessFooter from '@/pages/processCenter/pages/components/ProcessFooter'
|
||||
import PhoneHistortTable from '@/components/hzwlComponents/phoneComponents/phoneApprovalHistory'
|
||||
import ReceiptDescription from "@/components/hzwlComponents/ReceiptDescription";
|
||||
import phoneRoleTree from '@/components/hzwlComponents/phoneComponents/phoneRoleTree'
|
||||
|
||||
import Basic from "./components/Basic";
|
||||
import ProcessFile from "./components/ProcessFile";
|
||||
import Range from "./components/Range";
|
||||
import Info from "./components/Info";
|
||||
import RoleInfo from "./components/RoleInfo";
|
||||
import FileSummary from "./components/FileSummary";
|
||||
|
||||
export default {
|
||||
name: "step2",
|
||||
components: {
|
||||
ProcessHeaderPhone,
|
||||
PhoneHistortTable,
|
||||
ProcessTitle,
|
||||
ProcessFooter,
|
||||
ReceiptDescription,
|
||||
phoneRoleTree,
|
||||
Basic,
|
||||
ProcessFile,
|
||||
Range,
|
||||
Info,
|
||||
RoleInfo,
|
||||
FileSummary
|
||||
},
|
||||
data () {
|
||||
const form = {}
|
||||
return {
|
||||
active: '1',
|
||||
reloadForm: true,
|
||||
form,
|
||||
roleForm: {},
|
||||
dict: {},
|
||||
textStatusMap: [],
|
||||
disabled: true,
|
||||
footerLoading: false,
|
||||
|
||||
// 福田全公司选人解决方案
|
||||
drawerModal: false,
|
||||
drawerTitle: '',
|
||||
nodeList: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getDicTypeListCode()
|
||||
this.getData()
|
||||
},
|
||||
methods: {
|
||||
handleTabs(name) {
|
||||
this.active = name;
|
||||
},
|
||||
getData () {
|
||||
const { taskIds, prcId } = this.$route.query
|
||||
|
||||
inboundLiaisonDetail({
|
||||
taskIds,
|
||||
pId: prcId
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
this.reloadForm = false
|
||||
const processForm = JSON.parse(res.mesg)
|
||||
this.form = JSON.parse(JSON.stringify(processForm.form || processForm))
|
||||
this.form.commentText = ''
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.reloadForm = true
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
async handleSubmit () {
|
||||
this.$message({
|
||||
dangerouslyUseHTMLString: true,
|
||||
message: <div style="word-break: keep-all;color: #F56C6C">当前任务不支持手机端处理</div>,
|
||||
type: 'error'
|
||||
})
|
||||
},
|
||||
handleTransfer () {
|
||||
this.drawerModal = true
|
||||
this.drawerTitle = '转办处理人'
|
||||
},
|
||||
// 转办
|
||||
checkedRole (data) {
|
||||
this.footerLoading = true
|
||||
changeAssigneeNew({
|
||||
taskId: this.$route.query.taskIds, // 任务id
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
assignee: data[0].id, // 被委托人
|
||||
pId: this.$route.query.prcId, // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.drawerModal = false
|
||||
this.$message.success('调整成功')
|
||||
setTimeout(() => {
|
||||
this.$router.go(-2)
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.footerLoading = false
|
||||
})
|
||||
},
|
||||
getDicTypeListCode () {
|
||||
this.$http._getData('sys/dictype/getDicTypeListCode').then(res => {
|
||||
this.dict = { ...res.data }
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.phoneBox .content {
|
||||
border-top: 1px solid #DCDFE6;
|
||||
margin-top: 51px;
|
||||
height: calc(100% - 156px);
|
||||
|
||||
background-color: #fff;
|
||||
padding: 0 10px;
|
||||
box-sizing: border-box;
|
||||
|
||||
overflow: auto;
|
||||
.phoneForm {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
.phoneBox /deep/ .van-field__label {
|
||||
width: 112px !important;
|
||||
margin-right: 0 !important;
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
.phoneBox /deep/ .van-field__control {
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,263 @@
|
||||
<template>
|
||||
<div class="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 === '4' ? 'active' : ''" @click="handleTabs('4')">会签意见</div>
|
||||
<div class="headerTabsItem" :class="active === '5' ? 'active' : ''" @click="handleTabs('5')">会签评分</div>
|
||||
<div class="headerTabsItem" :class="active === '3' ? 'active' : ''" @click="handleTabs('3')">审批历史</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<el-form
|
||||
v-if="reloadForm"
|
||||
ref="form"
|
||||
:model="form"
|
||||
class="label-input-form phoneForm"
|
||||
label-width="112px"
|
||||
>
|
||||
<template v-if="active === '1'">
|
||||
<div>
|
||||
<ProcessTitle>
|
||||
<template slot="title">基础信息</template>
|
||||
</ProcessTitle>
|
||||
<Basic :form="form" :dict="dict" :disabled="disabled"></Basic>
|
||||
<ProcessTitle>
|
||||
<template slot="title">过程稿件</template>
|
||||
</ProcessTitle>
|
||||
<ProcessFile :form="form" :disabled="disabled"></ProcessFile>
|
||||
<ProcessTitle>
|
||||
<template slot="title">适用范围</template>
|
||||
</ProcessTitle>
|
||||
<Range :form="form" :dict="dict" :disabled="disabled"></Range>
|
||||
<ProcessTitle>
|
||||
<template slot="title">关联信息</template>
|
||||
</ProcessTitle>
|
||||
<Info :form="form" :dict="dict" :disabled="disabled"></Info>
|
||||
<ProcessTitle>
|
||||
<template slot="title">文件汇总</template>
|
||||
</ProcessTitle>
|
||||
<FileSummary :data="form.fileModelList"></FileSummary>
|
||||
</div>
|
||||
<ReceiptDescription v-model="form.commentText" title="回执说明"></ReceiptDescription>
|
||||
</template>
|
||||
<template v-if="active === '2'">
|
||||
<RoleInfo :roleForm="roleForm"></RoleInfo>
|
||||
</template>
|
||||
<template v-if="active === '3'">
|
||||
<PhoneHistortTable :prcNum="this.$route.query.prcNum"></PhoneHistortTable>
|
||||
</template>
|
||||
<template v-if="active === '4'">
|
||||
<div style="height: 100%">
|
||||
<ProcessTitle>
|
||||
<template slot="title">条款信息</template>
|
||||
</ProcessTitle>
|
||||
<div style="height: calc(100% - 30px)">
|
||||
<TermInfo :data="form.modelData"></TermInfo>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<template v-if="active === '5'">
|
||||
<Score :form="form" :standSort="form.standSort" :standName="form.standName"></Score>
|
||||
</template>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-submit
|
||||
show-transfer
|
||||
:submitLoading="footerLoading"
|
||||
@submit="handleSubmit"
|
||||
@transfer="handleTransfer"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!-- 福田全公司选人解决方案 -->
|
||||
<phoneRoleTree
|
||||
check-box
|
||||
:is-title="drawerTitle"
|
||||
:is-visible.sync="drawerModal"
|
||||
@checkedRole="checkedRole"
|
||||
:nodeList="nodeList"
|
||||
></phoneRoleTree>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {inboundLiaisonDetail, processCreateStand, changeAssigneeNew} from 'api/process'
|
||||
import {getEvaluationIndex} from "api/businessApi";
|
||||
|
||||
import ProcessHeaderPhone from '@/pages/processCenter/pages/components/ProcessHeaderPhone'
|
||||
import ProcessTitle from '@/pages/processCenter/pages/components/ProcessTitle'
|
||||
import ProcessFooter from '@/pages/processCenter/pages/components/ProcessFooter'
|
||||
import PhoneHistortTable from '@/components/hzwlComponents/phoneComponents/phoneApprovalHistory'
|
||||
import ReceiptDescription from "@/components/hzwlComponents/ReceiptDescription";
|
||||
import phoneRoleTree from '@/components/hzwlComponents/phoneComponents/phoneRoleTree'
|
||||
|
||||
import Basic from "./components/Basic";
|
||||
import ProcessFile from "./components/ProcessFile";
|
||||
import Range from "./components/Range";
|
||||
import Info from "./components/Info";
|
||||
import RoleInfo from "./components/RoleInfo";
|
||||
import FileSummary from "./components/FileSummary";
|
||||
import TermInfo from "./components/TermInfo";
|
||||
import Score from "./components/Score";
|
||||
|
||||
export default {
|
||||
name: "step2",
|
||||
components: {
|
||||
ProcessHeaderPhone,
|
||||
PhoneHistortTable,
|
||||
ProcessTitle,
|
||||
ProcessFooter,
|
||||
ReceiptDescription,
|
||||
phoneRoleTree,
|
||||
Basic,
|
||||
ProcessFile,
|
||||
Range,
|
||||
Info,
|
||||
RoleInfo,
|
||||
FileSummary,
|
||||
TermInfo,
|
||||
Score
|
||||
},
|
||||
data () {
|
||||
const form = {}
|
||||
return {
|
||||
active: '1',
|
||||
reloadForm: true,
|
||||
form,
|
||||
roleForm: {},
|
||||
dict: {},
|
||||
textStatusMap: [],
|
||||
disabled: true,
|
||||
footerLoading: false,
|
||||
|
||||
// 福田全公司选人解决方案
|
||||
drawerModal: false,
|
||||
drawerTitle: '',
|
||||
nodeList: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getDicTypeListCode()
|
||||
this.getData()
|
||||
},
|
||||
methods: {
|
||||
handleTabs(name) {
|
||||
this.active = name;
|
||||
},
|
||||
getData () {
|
||||
const { taskIds, prcId } = this.$route.query
|
||||
|
||||
inboundLiaisonDetail({
|
||||
taskIds,
|
||||
pId: prcId
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
this.reloadForm = false
|
||||
const processForm = JSON.parse(res.mesg)
|
||||
this.form = JSON.parse(JSON.stringify(processForm.form || processForm))
|
||||
this.form.commentText = ''
|
||||
|
||||
if (!processForm.form) {
|
||||
this.getEvaluation()
|
||||
}
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.reloadForm = true
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
async handleSubmit () {
|
||||
this.$message({
|
||||
dangerouslyUseHTMLString: true,
|
||||
message: <div style="word-break: keep-all;color: #F56C6C">当前任务不支持手机端处理</div>,
|
||||
type: 'error'
|
||||
})
|
||||
},
|
||||
handleTransfer () {
|
||||
this.drawerModal = true
|
||||
this.drawerTitle = '转办处理人'
|
||||
},
|
||||
// 转办
|
||||
checkedRole (data) {
|
||||
this.footerLoading = true
|
||||
changeAssigneeNew({
|
||||
taskId: this.$route.query.taskIds, // 任务id
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
assignee: data[0].id, // 被委托人
|
||||
pId: this.$route.query.prcId, // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.drawerModal = false
|
||||
this.$message.success('调整成功')
|
||||
setTimeout(() => {
|
||||
this.$router.go(-2)
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.footerLoading = false
|
||||
})
|
||||
},
|
||||
getDicTypeListCode () {
|
||||
this.$http._getData('sys/dictype/getDicTypeListCode').then(res => {
|
||||
this.dict = { ...res.data }
|
||||
})
|
||||
},
|
||||
getEvaluation() {
|
||||
return new Promise((resolve, reject) => {
|
||||
getEvaluationIndex({
|
||||
indexType: 'quality'
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
const evalList = []
|
||||
res.data.forEach(item =>{
|
||||
item.score = ''
|
||||
item.scoreMin = ''
|
||||
item.reason = ''
|
||||
item.userId = this.userId
|
||||
item.processNode = this.taskInfo
|
||||
evalList.push(item)
|
||||
})
|
||||
this.form.evaluationData = evalList
|
||||
this.$forceUpdate()
|
||||
}
|
||||
}).catch(e => {
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.phoneBox .content {
|
||||
border-top: 1px solid #DCDFE6;
|
||||
margin-top: 51px;
|
||||
height: calc(100% - 156px);
|
||||
|
||||
background-color: #fff;
|
||||
padding: 0 10px;
|
||||
box-sizing: border-box;
|
||||
|
||||
overflow: auto;
|
||||
.phoneForm {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
.phoneBox /deep/ .van-field__label {
|
||||
width: 112px !important;
|
||||
margin-right: 0 !important;
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
.phoneBox /deep/ .van-field__control {
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,278 @@
|
||||
<template>
|
||||
<div class="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 === '5' ? 'active' : ''" @click="handleTabs('5')">评审评分</div>
|
||||
<div class="headerTabsItem" :class="active === '3' ? 'active' : ''" @click="handleTabs('3')">审批历史</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<el-form
|
||||
v-if="reloadForm"
|
||||
ref="form"
|
||||
:model="form"
|
||||
class="label-input-form phoneForm"
|
||||
label-width="112px"
|
||||
>
|
||||
<template v-if="active === '1'">
|
||||
<div>
|
||||
<ProcessTitle>
|
||||
<template slot="title">基础信息</template>
|
||||
</ProcessTitle>
|
||||
<Basic :form="form" :dict="dict" :disabled="disabled"></Basic>
|
||||
<ProcessTitle>
|
||||
<template slot="title">过程稿件</template>
|
||||
</ProcessTitle>
|
||||
<ProcessFile :form="form" :disabled="disabled"></ProcessFile>
|
||||
<ProcessTitle>
|
||||
<template slot="title">适用范围</template>
|
||||
</ProcessTitle>
|
||||
<Range :form="form" :dict="dict" :disabled="disabled"></Range>
|
||||
<ProcessTitle>
|
||||
<template slot="title">关联信息</template>
|
||||
</ProcessTitle>
|
||||
<Info :form="form" :dict="dict" :disabled="disabled"></Info>
|
||||
<!--<ProcessTitle>-->
|
||||
<!-- <template slot="title">文件汇总</template>-->
|
||||
<!--</ProcessTitle>-->
|
||||
<!--<FileSummary :data="form.fileModelList"></FileSummary>-->
|
||||
<ProcessTitle>
|
||||
<template slot="title">意见信息</template>
|
||||
</ProcessTitle>
|
||||
<TermInfo :data="form.infoList"></TermInfo>
|
||||
<div class="prc-content-border">
|
||||
<UploadFormItem
|
||||
label="汇总评审意见文件"
|
||||
prop="summaryFileName"
|
||||
:ids.sync="form.summaryFile"
|
||||
:names.sync="form.summaryFileName"
|
||||
view
|
||||
:disabled="disabled"
|
||||
></UploadFormItem>
|
||||
</div>
|
||||
</div>
|
||||
<ReceiptDescription v-model="form.commentText" title="回执说明"></ReceiptDescription>
|
||||
</template>
|
||||
<template v-if="active === '2'">
|
||||
<RoleInfo :roleForm="roleForm"></RoleInfo>
|
||||
</template>
|
||||
<template v-if="active === '3'">
|
||||
<PhoneHistortTable :prcNum="this.$route.query.prcNum"></PhoneHistortTable>
|
||||
</template>
|
||||
<template v-if="active === '4'">
|
||||
<div style="height: 100%">
|
||||
<ProcessTitle>
|
||||
<template slot="title">条款信息</template>
|
||||
</ProcessTitle>
|
||||
<TermInfo :data="form.modelData"></TermInfo>
|
||||
</div>
|
||||
</template>
|
||||
<template v-if="active === '5'">
|
||||
<Score :form="form" :standSort="form.standSort" :standName="form.standName"></Score>
|
||||
</template>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-submit2
|
||||
show-transfer
|
||||
:submitLoading="footerLoading"
|
||||
@submit2="handleSubmit"
|
||||
@transfer="handleTransfer"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!-- 福田全公司选人解决方案 -->
|
||||
<phoneRoleTree
|
||||
check-box
|
||||
:is-title="drawerTitle"
|
||||
:is-visible.sync="drawerModal"
|
||||
@checkedRole="checkedRole"
|
||||
:nodeList="nodeList"
|
||||
></phoneRoleTree>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {inboundLiaisonDetail, processCreateStand, changeAssigneeNew} from 'api/process'
|
||||
import {getEvaluationIndex} from "api/businessApi";
|
||||
|
||||
import ProcessHeaderPhone from '@/pages/processCenter/pages/components/ProcessHeaderPhone'
|
||||
import ProcessTitle from '@/pages/processCenter/pages/components/ProcessTitle'
|
||||
import ProcessFooter from '@/pages/processCenter/pages/components/ProcessFooter'
|
||||
import PhoneHistortTable from '@/components/hzwlComponents/phoneComponents/phoneApprovalHistory'
|
||||
import ReceiptDescription from "@/components/hzwlComponents/ReceiptDescription";
|
||||
import phoneRoleTree from '@/components/hzwlComponents/phoneComponents/phoneRoleTree'
|
||||
|
||||
import Basic from "./components/Basic";
|
||||
import ProcessFile from "./components/ProcessFile";
|
||||
import Range from "./components/Range";
|
||||
import Info from "./components/Info";
|
||||
import RoleInfo from "./components/RoleInfo";
|
||||
import FileSummary from "./components/FileSummary";
|
||||
import TermInfo from "./components/TermInfo";
|
||||
import Score from "./components/Score";
|
||||
|
||||
import UploadFormItem from '@/components/hzwlComponents/UploadFormItem'
|
||||
|
||||
|
||||
export default {
|
||||
name: "step2",
|
||||
components: {
|
||||
ProcessHeaderPhone,
|
||||
PhoneHistortTable,
|
||||
ProcessTitle,
|
||||
ProcessFooter,
|
||||
ReceiptDescription,
|
||||
phoneRoleTree,
|
||||
Basic,
|
||||
ProcessFile,
|
||||
Range,
|
||||
Info,
|
||||
RoleInfo,
|
||||
FileSummary,
|
||||
TermInfo,
|
||||
Score,
|
||||
UploadFormItem
|
||||
},
|
||||
data () {
|
||||
const form = {}
|
||||
return {
|
||||
active: '1',
|
||||
reloadForm: true,
|
||||
form,
|
||||
roleForm: {},
|
||||
dict: {},
|
||||
textStatusMap: [],
|
||||
disabled: true,
|
||||
footerLoading: false,
|
||||
|
||||
// 福田全公司选人解决方案
|
||||
drawerModal: false,
|
||||
drawerTitle: '',
|
||||
nodeList: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getDicTypeListCode()
|
||||
this.getData()
|
||||
},
|
||||
methods: {
|
||||
handleTabs(name) {
|
||||
this.active = name;
|
||||
},
|
||||
getData () {
|
||||
const { taskIds, prcId } = this.$route.query
|
||||
|
||||
inboundLiaisonDetail({
|
||||
taskIds,
|
||||
pId: prcId
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
this.reloadForm = false
|
||||
const processForm = JSON.parse(res.mesg)
|
||||
this.form = JSON.parse(JSON.stringify(processForm.form || processForm))
|
||||
this.form.commentText = ''
|
||||
|
||||
if (!processForm.form) {
|
||||
this.getEvaluation()
|
||||
}
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.reloadForm = true
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
async handleSubmit () {
|
||||
this.$message({
|
||||
dangerouslyUseHTMLString: true,
|
||||
message: <div style="word-break: keep-all;color: #F56C6C">当前任务不支持手机端处理</div>,
|
||||
type: 'error'
|
||||
})
|
||||
},
|
||||
handleTransfer () {
|
||||
this.drawerModal = true
|
||||
this.drawerTitle = '转办处理人'
|
||||
},
|
||||
// 转办
|
||||
checkedRole (data) {
|
||||
this.footerLoading = true
|
||||
changeAssigneeNew({
|
||||
taskId: this.$route.query.taskIds, // 任务id
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
assignee: data[0].id, // 被委托人
|
||||
pId: this.$route.query.prcId, // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.drawerModal = false
|
||||
this.$message.success('调整成功')
|
||||
setTimeout(() => {
|
||||
this.$router.go(-2)
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.footerLoading = false
|
||||
})
|
||||
},
|
||||
getDicTypeListCode () {
|
||||
this.$http._getData('sys/dictype/getDicTypeListCode').then(res => {
|
||||
this.dict = { ...res.data }
|
||||
})
|
||||
},
|
||||
getEvaluation() {
|
||||
return new Promise((resolve, reject) => {
|
||||
getEvaluationIndex({
|
||||
indexType: 'quality'
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
const evalList = []
|
||||
res.data.forEach(item =>{
|
||||
item.score = ''
|
||||
item.scoreMin = ''
|
||||
item.reason = ''
|
||||
item.userId = this.userId
|
||||
item.processNode = this.taskInfo
|
||||
evalList.push(item)
|
||||
})
|
||||
this.form.evaluationData = evalList
|
||||
this.$forceUpdate()
|
||||
}
|
||||
}).catch(e => {
|
||||
})
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.phoneBox .content {
|
||||
border-top: 1px solid #DCDFE6;
|
||||
margin-top: 51px;
|
||||
height: calc(100% - 156px);
|
||||
|
||||
background-color: #fff;
|
||||
padding: 0 10px;
|
||||
box-sizing: border-box;
|
||||
|
||||
overflow: auto;
|
||||
.phoneForm {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
.phoneBox /deep/ .van-field__label {
|
||||
width: 112px !important;
|
||||
margin-right: 0 !important;
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
.phoneBox /deep/ .van-field__control {
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,331 @@
|
||||
<template>
|
||||
<div class="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 === '5' ? 'active' : ''" @click="handleTabs('5')">评审评分</div>
|
||||
<div class="headerTabsItem" :class="active === '3' ? 'active' : ''" @click="handleTabs('3')">审批历史</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<el-form
|
||||
v-if="reloadForm"
|
||||
ref="form"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
class="label-input-form phoneForm"
|
||||
label-width="112px"
|
||||
>
|
||||
<template v-if="active === '1'">
|
||||
<div>
|
||||
<ProcessTitle>
|
||||
<template slot="title">基础信息</template>
|
||||
</ProcessTitle>
|
||||
<Basic :form="form" :dict="dict" :disabled="disabled"></Basic>
|
||||
<ProcessTitle>
|
||||
<template slot="title">过程稿件</template>
|
||||
</ProcessTitle>
|
||||
<ProcessFile :form="form" :disabled="disabled"></ProcessFile>
|
||||
<ProcessTitle>
|
||||
<template slot="title">适用范围</template>
|
||||
</ProcessTitle>
|
||||
<Range :form="form" :dict="dict" :disabled="disabled"></Range>
|
||||
<ProcessTitle>
|
||||
<template slot="title">关联信息</template>
|
||||
</ProcessTitle>
|
||||
<Info :form="form" :dict="dict" :disabled="disabled"></Info>
|
||||
<!--<ProcessTitle>-->
|
||||
<!-- <template slot="title">文件汇总</template>-->
|
||||
<!--</ProcessTitle>-->
|
||||
<!--<FileSummary :data="form.fileModelList"></FileSummary>-->
|
||||
<ProcessTitle>
|
||||
<template slot="title">意见信息</template>
|
||||
</ProcessTitle>
|
||||
<TermInfo :data="form.infoList"></TermInfo>
|
||||
<div class="prc-content-border">
|
||||
<UploadFormItem
|
||||
label="汇总评审意见文件"
|
||||
prop="summaryFileName"
|
||||
:ids.sync="form.summaryFile"
|
||||
:names.sync="form.summaryFileName"
|
||||
view
|
||||
:disabled="disabled"
|
||||
></UploadFormItem>
|
||||
</div>
|
||||
</div>
|
||||
<ReceiptDescription v-model="form.commentText" prop="commentText" title="回执说明"></ReceiptDescription>
|
||||
</template>
|
||||
<template v-if="active === '2'">
|
||||
<RoleInfo :roleForm="roleForm"></RoleInfo>
|
||||
</template>
|
||||
<template v-if="active === '3'">
|
||||
<PhoneHistortTable :prcNum="this.$route.query.prcNum"></PhoneHistortTable>
|
||||
</template>
|
||||
<template v-if="active === '4'">
|
||||
<div style="height: 100%">
|
||||
<ProcessTitle>
|
||||
<template slot="title">条款信息</template>
|
||||
</ProcessTitle>
|
||||
<TermInfo :data="form.modelData"></TermInfo>
|
||||
</div>
|
||||
</template>
|
||||
<template v-if="active === '5'">
|
||||
<Score :form="form" :standSort="form.standSort" :standName="form.standName"></Score>
|
||||
</template>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-submit
|
||||
show-over2
|
||||
show-transfer
|
||||
:submitLoading="footerLoading"
|
||||
@submit="handle2"
|
||||
@transfer="handleTransfer"
|
||||
@over2="handle1"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!-- 福田全公司选人解决方案 -->
|
||||
<phoneRoleTree
|
||||
check-box
|
||||
:is-title="drawerTitle"
|
||||
:is-visible.sync="drawerModal"
|
||||
@checkedRole="checkedRole"
|
||||
:nodeList="nodeList"
|
||||
></phoneRoleTree>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {inboundLiaisonDetail, processCreateStand, changeAssigneeNew} from 'api/process'
|
||||
import {getEvaluationIndex} from "api/businessApi";
|
||||
|
||||
import ProcessHeaderPhone from '@/pages/processCenter/pages/components/ProcessHeaderPhone'
|
||||
import ProcessTitle from '@/pages/processCenter/pages/components/ProcessTitle'
|
||||
import ProcessFooter from '@/pages/processCenter/pages/components/ProcessFooter'
|
||||
import PhoneHistortTable from '@/components/hzwlComponents/phoneComponents/phoneApprovalHistory'
|
||||
import ReceiptDescription from "@/components/hzwlComponents/ReceiptDescription";
|
||||
import phoneRoleTree from '@/components/hzwlComponents/phoneComponents/phoneRoleTree'
|
||||
|
||||
import Basic from "./components/Basic";
|
||||
import ProcessFile from "./components/ProcessFile";
|
||||
import Range from "./components/Range";
|
||||
import Info from "./components/Info";
|
||||
import RoleInfo from "./components/RoleInfo";
|
||||
import FileSummary from "./components/FileSummary";
|
||||
import TermInfo from "./components/TermInfo";
|
||||
import Score from "./components/Score";
|
||||
|
||||
import UploadFormItem from '@/components/hzwlComponents/UploadFormItem'
|
||||
|
||||
|
||||
export default {
|
||||
name: "step2",
|
||||
components: {
|
||||
ProcessHeaderPhone,
|
||||
PhoneHistortTable,
|
||||
ProcessTitle,
|
||||
ProcessFooter,
|
||||
ReceiptDescription,
|
||||
phoneRoleTree,
|
||||
Basic,
|
||||
ProcessFile,
|
||||
Range,
|
||||
Info,
|
||||
RoleInfo,
|
||||
FileSummary,
|
||||
TermInfo,
|
||||
Score,
|
||||
UploadFormItem
|
||||
},
|
||||
data () {
|
||||
const form = {}
|
||||
return {
|
||||
active: '1',
|
||||
reloadForm: true,
|
||||
form,
|
||||
rules: {},
|
||||
roleForm: {},
|
||||
dict: {},
|
||||
textStatusMap: [],
|
||||
disabled: true,
|
||||
footerLoading: false,
|
||||
|
||||
// 福田全公司选人解决方案
|
||||
drawerModal: false,
|
||||
drawerTitle: '',
|
||||
nodeList: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getDicTypeListCode()
|
||||
this.getData()
|
||||
},
|
||||
methods: {
|
||||
handleTabs(name) {
|
||||
this.active = name;
|
||||
},
|
||||
getData () {
|
||||
const { taskIds, prcId } = this.$route.query
|
||||
|
||||
inboundLiaisonDetail({
|
||||
taskIds,
|
||||
pId: prcId
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
this.reloadForm = false
|
||||
const processForm = JSON.parse(res.mesg)
|
||||
this.form = JSON.parse(JSON.stringify(processForm.form || processForm))
|
||||
this.form.commentText = ''
|
||||
|
||||
if (!processForm.form) {
|
||||
this.getEvaluation()
|
||||
}
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.reloadForm = true
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
async handle2 () {
|
||||
this.$message({
|
||||
dangerouslyUseHTMLString: true,
|
||||
message: <div style="word-break: keep-all;color: #F56C6C">当前任务不支持手机端处理</div>,
|
||||
type: 'error'
|
||||
})
|
||||
},
|
||||
handle1 () {
|
||||
this.form.approvalOpinion = 1
|
||||
this.handleSubmit()
|
||||
},
|
||||
|
||||
handleSubmit() {
|
||||
this.addRule()
|
||||
this.$refs['form'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.footerLoading = true
|
||||
const json = JSON.stringify(this.form);
|
||||
const query = {
|
||||
taskIds: this.$route.query.taskIds,
|
||||
userId : this.$route.query.userId,
|
||||
json: json
|
||||
}
|
||||
this.$http._post('lawss/activiti/completeTask', query).then(res => {
|
||||
if (res.success) {
|
||||
if(this.form.approvalOpinion === 1){
|
||||
this.$message.warning("驳回成功")
|
||||
}else{
|
||||
this.$message.success('操作成功')
|
||||
}
|
||||
this.footerLoading = false
|
||||
|
||||
this.$router.go(-2)
|
||||
} else {
|
||||
this.footerLoading = false
|
||||
this.$message.error(res.message)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查基础信息表单是否填写完整')
|
||||
}
|
||||
})
|
||||
},
|
||||
addRule() {
|
||||
if (this.form.approvalOpinion === 0) {
|
||||
this.rules.commentText = [
|
||||
{ required: false }
|
||||
]
|
||||
this.$refs.form.clearValidate('commentText')
|
||||
} else {
|
||||
this.rules.commentText = [
|
||||
{ required: true, message: '审批意见不能为空' }
|
||||
]
|
||||
}
|
||||
this.rules = { ...this.rules }
|
||||
},
|
||||
handleTransfer () {
|
||||
this.drawerModal = true
|
||||
this.drawerTitle = '转办处理人'
|
||||
},
|
||||
// 转办
|
||||
checkedRole (data) {
|
||||
this.footerLoading = true
|
||||
changeAssigneeNew({
|
||||
taskId: this.$route.query.taskIds, // 任务id
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
assignee: data[0].id, // 被委托人
|
||||
pId: this.$route.query.prcId, // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.drawerModal = false
|
||||
this.$message.success('调整成功')
|
||||
setTimeout(() => {
|
||||
this.$router.go(-2)
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.footerLoading = false
|
||||
})
|
||||
},
|
||||
getDicTypeListCode () {
|
||||
this.$http._getData('sys/dictype/getDicTypeListCode').then(res => {
|
||||
this.dict = { ...res.data }
|
||||
})
|
||||
},
|
||||
getEvaluation() {
|
||||
return new Promise((resolve, reject) => {
|
||||
getEvaluationIndex({
|
||||
indexType: 'quality'
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
const evalList = []
|
||||
res.data.forEach(item =>{
|
||||
item.score = ''
|
||||
item.scoreMin = ''
|
||||
item.reason = ''
|
||||
item.userId = this.userId
|
||||
item.processNode = this.taskInfo
|
||||
evalList.push(item)
|
||||
})
|
||||
this.form.evaluationData = evalList
|
||||
this.$forceUpdate()
|
||||
}
|
||||
}).catch(e => {
|
||||
})
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.phoneBox .content {
|
||||
border-top: 1px solid #DCDFE6;
|
||||
margin-top: 51px;
|
||||
height: calc(100% - 156px);
|
||||
|
||||
background-color: #fff;
|
||||
padding: 0 10px;
|
||||
box-sizing: border-box;
|
||||
|
||||
overflow: auto;
|
||||
.phoneForm {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
.phoneBox /deep/ .van-field__label {
|
||||
width: 112px !important;
|
||||
margin-right: 0 !important;
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
.phoneBox /deep/ .van-field__control {
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,338 @@
|
||||
<template>
|
||||
<div class="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 === '5' ? 'active' : ''" @click="handleTabs('5')">评审评分</div>
|
||||
<div class="headerTabsItem" :class="active === '3' ? 'active' : ''" @click="handleTabs('3')">审批历史</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<el-form
|
||||
v-if="reloadForm"
|
||||
ref="form"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
class="label-input-form phoneForm"
|
||||
label-width="112px"
|
||||
>
|
||||
<template v-if="active === '1'">
|
||||
<div>
|
||||
<ProcessTitle>
|
||||
<template slot="title">基础信息</template>
|
||||
</ProcessTitle>
|
||||
<Basic :form="form" :dict="dict" :disabled="disabled"></Basic>
|
||||
<ProcessTitle>
|
||||
<template slot="title">过程稿件</template>
|
||||
</ProcessTitle>
|
||||
<ProcessFile :form="form" :disabled="disabled"></ProcessFile>
|
||||
<ProcessTitle>
|
||||
<template slot="title">适用范围</template>
|
||||
</ProcessTitle>
|
||||
<Range :form="form" :dict="dict" :disabled="disabled"></Range>
|
||||
<ProcessTitle>
|
||||
<template slot="title">关联信息</template>
|
||||
</ProcessTitle>
|
||||
<Info :form="form" :dict="dict" :disabled="disabled"></Info>
|
||||
<!--<ProcessTitle>-->
|
||||
<!-- <template slot="title">文件汇总</template>-->
|
||||
<!--</ProcessTitle>-->
|
||||
<!--<FileSummary :data="form.fileModelList"></FileSummary>-->
|
||||
<ProcessTitle>
|
||||
<template slot="title">意见信息</template>
|
||||
</ProcessTitle>
|
||||
<TermInfo :data="form.infoList"></TermInfo>
|
||||
<div class="prc-content-border">
|
||||
<UploadFormItem
|
||||
label="汇总评审意见文件"
|
||||
prop="summaryFileName"
|
||||
:ids.sync="form.summaryFile"
|
||||
:names.sync="form.summaryFileName"
|
||||
view
|
||||
:disabled="disabled"
|
||||
></UploadFormItem>
|
||||
</div>
|
||||
</div>
|
||||
<ReceiptDescription v-model="form.commentText" prop="commentText" title="回执说明"></ReceiptDescription>
|
||||
</template>
|
||||
<template v-if="active === '2'">
|
||||
<RoleInfo :roleForm="roleForm"></RoleInfo>
|
||||
</template>
|
||||
<template v-if="active === '3'">
|
||||
<PhoneHistortTable :prcNum="this.$route.query.prcNum"></PhoneHistortTable>
|
||||
</template>
|
||||
<template v-if="active === '4'">
|
||||
<div style="height: 100%">
|
||||
<ProcessTitle>
|
||||
<template slot="title">条款信息</template>
|
||||
</ProcessTitle>
|
||||
<TermInfo :data="form.modelData"></TermInfo>
|
||||
</div>
|
||||
</template>
|
||||
<template v-if="active === '5'">
|
||||
<Score :form="form" :standSort="form.standSort" :standName="form.standName"></Score>
|
||||
</template>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-submit2
|
||||
show-over2
|
||||
show-transfer
|
||||
:submitLoading="footerLoading"
|
||||
@submit2="handle2"
|
||||
@transfer="handleTransfer"
|
||||
@over2="handle1"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!-- 福田全公司选人解决方案 -->
|
||||
<phoneRoleTree
|
||||
check-box
|
||||
:is-title="drawerTitle"
|
||||
:is-visible.sync="drawerModal"
|
||||
@checkedRole="checkedRole"
|
||||
:nodeList="nodeList"
|
||||
></phoneRoleTree>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {inboundLiaisonDetail, processCreateStand, changeAssigneeNew} from 'api/process'
|
||||
import {getEvaluationIndex} from "api/businessApi";
|
||||
|
||||
import ProcessHeaderPhone from '@/pages/processCenter/pages/components/ProcessHeaderPhone'
|
||||
import ProcessTitle from '@/pages/processCenter/pages/components/ProcessTitle'
|
||||
import ProcessFooter from '@/pages/processCenter/pages/components/ProcessFooter'
|
||||
import PhoneHistortTable from '@/components/hzwlComponents/phoneComponents/phoneApprovalHistory'
|
||||
import ReceiptDescription from "@/components/hzwlComponents/ReceiptDescription";
|
||||
import phoneRoleTree from '@/components/hzwlComponents/phoneComponents/phoneRoleTree'
|
||||
|
||||
import Basic from "./components/Basic";
|
||||
import ProcessFile from "./components/ProcessFile";
|
||||
import Range from "./components/Range";
|
||||
import Info from "./components/Info";
|
||||
import RoleInfo from "./components/RoleInfo";
|
||||
import FileSummary from "./components/FileSummary";
|
||||
import TermInfo from "./components/TermInfo";
|
||||
import Score from "./components/Score";
|
||||
|
||||
import UploadFormItem from '@/components/hzwlComponents/UploadFormItem'
|
||||
|
||||
|
||||
export default {
|
||||
name: "step2",
|
||||
components: {
|
||||
ProcessHeaderPhone,
|
||||
PhoneHistortTable,
|
||||
ProcessTitle,
|
||||
ProcessFooter,
|
||||
ReceiptDescription,
|
||||
phoneRoleTree,
|
||||
Basic,
|
||||
ProcessFile,
|
||||
Range,
|
||||
Info,
|
||||
RoleInfo,
|
||||
FileSummary,
|
||||
TermInfo,
|
||||
Score,
|
||||
UploadFormItem
|
||||
},
|
||||
data () {
|
||||
const form = {}
|
||||
return {
|
||||
active: '1',
|
||||
reloadForm: true,
|
||||
form,
|
||||
rules: {},
|
||||
roleForm: {},
|
||||
dict: {},
|
||||
textStatusMap: [],
|
||||
disabled: true,
|
||||
footerLoading: false,
|
||||
|
||||
// 福田全公司选人解决方案
|
||||
drawerModal: false,
|
||||
drawerTitle: '',
|
||||
nodeList: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getDicTypeListCode()
|
||||
this.getData()
|
||||
},
|
||||
methods: {
|
||||
handleTabs(name) {
|
||||
this.active = name;
|
||||
},
|
||||
getData () {
|
||||
const { taskIds, prcId } = this.$route.query
|
||||
|
||||
inboundLiaisonDetail({
|
||||
taskIds,
|
||||
pId: prcId
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
this.reloadForm = false
|
||||
const processForm = JSON.parse(res.mesg)
|
||||
this.form = JSON.parse(JSON.stringify(processForm.form || processForm))
|
||||
this.form.commentText = ''
|
||||
|
||||
if (!processForm.form) {
|
||||
this.getEvaluation()
|
||||
}
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.reloadForm = true
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
handle2 () {
|
||||
this.$message({
|
||||
dangerouslyUseHTMLString: true,
|
||||
message: <div style="word-break: keep-all;color: #F56C6C">当前任务不支持手机端处理</div>,
|
||||
type: 'error'
|
||||
})
|
||||
|
||||
// this.form.approvalOpinion = 0
|
||||
// this.$refs['form'].validate((valid) => {
|
||||
// if (valid) {
|
||||
// this.handleSubmit()
|
||||
// }
|
||||
// })
|
||||
},
|
||||
handle1 () {
|
||||
this.form.approvalOpinion = 1
|
||||
this.handleSubmit()
|
||||
},
|
||||
|
||||
handleSubmit() {
|
||||
this.addRule()
|
||||
this.$refs['form'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.footerLoading = true
|
||||
const json = JSON.stringify(this.form);
|
||||
const query = {
|
||||
taskIds: this.$route.query.taskIds,
|
||||
userId : this.$route.query.userId,
|
||||
json: json
|
||||
}
|
||||
this.$http._post('lawss/activiti/completeTask', query).then(res => {
|
||||
if (res.success) {
|
||||
if(this.form.approvalOpinion === 1){
|
||||
this.$message.warning("驳回成功")
|
||||
}else{
|
||||
this.$message.success('操作成功')
|
||||
}
|
||||
this.footerLoading = false
|
||||
|
||||
this.$router.go(-2)
|
||||
} else {
|
||||
this.footerLoading = false
|
||||
this.$message.error(res.message)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查基础信息表单是否填写完整')
|
||||
}
|
||||
})
|
||||
},
|
||||
addRule() {
|
||||
if (this.form.approvalOpinion === 0) {
|
||||
this.rules.commentText = [
|
||||
{ required: false }
|
||||
]
|
||||
this.$refs.form.clearValidate('commentText')
|
||||
} else {
|
||||
this.rules.commentText = [
|
||||
{ required: true, message: '审批意见不能为空' }
|
||||
]
|
||||
}
|
||||
this.rules = { ...this.rules }
|
||||
},
|
||||
handleTransfer () {
|
||||
this.drawerModal = true
|
||||
this.drawerTitle = '转办处理人'
|
||||
},
|
||||
// 转办
|
||||
checkedRole (data) {
|
||||
this.footerLoading = true
|
||||
changeAssigneeNew({
|
||||
taskId: this.$route.query.taskIds, // 任务id
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
assignee: data[0].id, // 被委托人
|
||||
pId: this.$route.query.prcId, // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.drawerModal = false
|
||||
this.$message.success('调整成功')
|
||||
setTimeout(() => {
|
||||
this.$router.go(-2)
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.footerLoading = false
|
||||
})
|
||||
},
|
||||
getDicTypeListCode () {
|
||||
this.$http._getData('sys/dictype/getDicTypeListCode').then(res => {
|
||||
this.dict = { ...res.data }
|
||||
})
|
||||
},
|
||||
getEvaluation() {
|
||||
return new Promise((resolve, reject) => {
|
||||
getEvaluationIndex({
|
||||
indexType: 'quality'
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
const evalList = []
|
||||
res.data.forEach(item =>{
|
||||
item.score = ''
|
||||
item.scoreMin = ''
|
||||
item.reason = ''
|
||||
item.userId = this.userId
|
||||
item.processNode = this.taskInfo
|
||||
evalList.push(item)
|
||||
})
|
||||
this.form.evaluationData = evalList
|
||||
this.$forceUpdate()
|
||||
}
|
||||
}).catch(e => {
|
||||
})
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.phoneBox .content {
|
||||
border-top: 1px solid #DCDFE6;
|
||||
margin-top: 51px;
|
||||
height: calc(100% - 156px);
|
||||
|
||||
background-color: #fff;
|
||||
padding: 0 10px;
|
||||
box-sizing: border-box;
|
||||
|
||||
overflow: auto;
|
||||
.phoneForm {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
.phoneBox /deep/ .van-field__label {
|
||||
width: 112px !important;
|
||||
margin-right: 0 !important;
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
.phoneBox /deep/ .van-field__control {
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
</style>
|
||||
+90
-1
@@ -3447,6 +3447,28 @@ const routes = [
|
||||
title: '企标制修订-技术标准'
|
||||
}
|
||||
},
|
||||
// 企标编写
|
||||
{
|
||||
path: '/phoneBussLibrary2',
|
||||
name: 'phoneBussLibrary2',
|
||||
component: () => import('@/pages/processCenter/pages/phone/qbrk/step2.vue'),
|
||||
meta: {
|
||||
isBoolean: true,
|
||||
requireAuth: true,
|
||||
title: '企标制修订-技术标准'
|
||||
}
|
||||
},
|
||||
// 企标编写汇总
|
||||
{
|
||||
path: '/phoneBussLibrary3',
|
||||
name: 'phoneBussLibrary3',
|
||||
component: () => import('@/pages/processCenter/pages/phone/qbrk/step3.vue'),
|
||||
meta: {
|
||||
isBoolean: true,
|
||||
requireAuth: true,
|
||||
title: '企标制修订-技术标准'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/phoneBussLibrary4',
|
||||
name: 'phoneBussLibrary4',
|
||||
@@ -3457,6 +3479,40 @@ const routes = [
|
||||
title: '企标制修订流程及企业标准库流程'
|
||||
}
|
||||
},
|
||||
// 征求意见
|
||||
{
|
||||
path: '/phoneBussLibrary5',
|
||||
name: 'phoneBussLibrary5',
|
||||
component: () => import('@/pages/processCenter/pages/phone/qbrk/step5.vue'),
|
||||
meta: {
|
||||
isBoolean: true,
|
||||
requireAuth: true,
|
||||
title: '企标制修订-技术标准'
|
||||
}
|
||||
},
|
||||
// 技术委员会评审、评审意见修改
|
||||
{
|
||||
path: '/phoneBussLibrary6',
|
||||
name: 'phoneBussLibrary6',
|
||||
component: () => import('@/pages/processCenter/pages/phone/qbrk/step6.vue'),
|
||||
meta: {
|
||||
isBoolean: true,
|
||||
requireAuth: true,
|
||||
title: '企标制修订-技术标准'
|
||||
}
|
||||
},
|
||||
// 标准化复审
|
||||
{
|
||||
path: '/phoneBussLibrary7',
|
||||
name: 'phoneBussLibrary7',
|
||||
component: () => import('@/pages/processCenter/pages/phone/qbrk/step7.vue'),
|
||||
meta: {
|
||||
isBoolean: true,
|
||||
requireAuth: true,
|
||||
title: '企标制修订-技术标准'
|
||||
}
|
||||
},
|
||||
// 审核
|
||||
{
|
||||
path: '/phoneBussLibrary8',
|
||||
name: 'phoneBussLibrary8',
|
||||
@@ -3464,7 +3520,18 @@ const routes = [
|
||||
meta: {
|
||||
isBoolean: true,
|
||||
requireAuth: true,
|
||||
title: '企标制修订流程及企业标准库流程'
|
||||
title: '企标制修订-技术标准'
|
||||
}
|
||||
},
|
||||
// 审核
|
||||
{
|
||||
path: '/phoneBussLibrary9',
|
||||
name: 'phoneBussLibrary9',
|
||||
component: () => import('@/pages/processCenter/pages/phone/qbrk/step9.vue'),
|
||||
meta: {
|
||||
isBoolean: true,
|
||||
requireAuth: true,
|
||||
title: '企标制修订-技术标准'
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -3487,6 +3554,28 @@ const routes = [
|
||||
title: '企标制修订流程及企业标准库流程'
|
||||
}
|
||||
},
|
||||
// 主起草人培训
|
||||
{
|
||||
path: '/phoneBussLibrary12',
|
||||
name: 'phoneBussLibrary12',
|
||||
component: () => import('@/pages/processCenter/pages/phone/qbrk/step12.vue'),
|
||||
meta: {
|
||||
isBoolean: true,
|
||||
requireAuth: true,
|
||||
title: '企标制修订-技术标准'
|
||||
}
|
||||
},
|
||||
// 发布
|
||||
{
|
||||
path: '/phoneBussLibrary13',
|
||||
name: 'phoneBussLibrary13',
|
||||
component: () => import('@/pages/processCenter/pages/phone/qbrk/step13.vue'),
|
||||
meta: {
|
||||
isBoolean: true,
|
||||
requireAuth: true,
|
||||
title: '企标制修订-技术标准'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/phoneBussLibraryProduct4',
|
||||
name: 'phoneBussLibraryProduct4',
|
||||
|
||||
Reference in New Issue
Block a user