对接重点认证标准/政策合规性项目审查流程

This commit is contained in:
范强强
2023-10-25 14:02:40 +08:00
parent 2903b7e1c1
commit c7510e4651
8 changed files with 413 additions and 85 deletions
@@ -163,6 +163,7 @@ export default {
}
},
mounted () {
console.log(this.config);
this.tagList = this.value !== '' && this.value !== null && typeof (this.value) !== 'undefined' ? this.value.split(',') : []
}
}
@@ -399,7 +399,7 @@
this.$nextTick(()=>{
this.multipleTableItemForm = {}
this.multipleTableItemForm = {...this.multipleTableItemForm}
this.$refs['multipleTableItemRef'].resetFields()
this.$refs['multipleTableItemRef'].clearValidate()
})
},
cancel() {
@@ -0,0 +1,231 @@
<template>
<el-drawer
:title="multipleTableTitle"
:visible.sync="multipleTableItemDialog"
size="800px"
custom-class="demo-drawer"
>
<div class="demo-drawer-content">
<div class="content">
<div class="standard-table-search">
<el-form :model="multipleTableItemForm" inline class="label-input-form"
:rules="multipleTableItemFormRules" label-width="200px"
ref="multipleTableItemRef">
<el-row :gutter="24">
<el-col :span="24">
<el-form-item prop="lawCode" label="标准编号/政策编号"
class="add-form-item">
<el-input v-model="multipleTableItemForm.lawCode"
placeholder="请输入标准编号/政策编号"/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="lawName" label="标准名称/政策名称"
class="add-form-item">
<el-input v-model="multipleTableItemForm.lawName"
placeholder="请输入标准名称/政策名称"/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="productType" label="产品类型"
class="add-form-item">
<el-input v-model="multipleTableItemForm.productType"
placeholder="请输入产品类型"/>
</el-form-item>
</el-col>
<CustomDatePickGroup
:config="config"
:labelWidth="'200px'"
v-model="multipleTableItemForm.implTime"
></CustomDatePickGroup>
<el-col :span="24">
<el-form-item prop="implRequire" label="实施要求"
class="add-form-item">
<el-input v-model="multipleTableItemForm.implRequire"
placeholder="请输入实施要求"/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="conformSituation" label="资源符合情况"
class="add-form-item">
<el-input v-model="multipleTableItemForm.conformSituation"
placeholder="请输入资源符合情况"/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="devScheme" label="开发计划"
class="add-form-item">
<el-input v-model="multipleTableItemForm.devScheme"
placeholder="请输入开发计划"/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="sopTime" label="SOP时间"
class="add-form-item">
<el-date-picker
v-model="multipleTableItemForm.sopTime"
style="width: 100%;"
type="date"
placeholder="请选择SOP时间"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="completeSituation" label="完成情况"
style="width: 100%; margin-right:10px" class="add-form-item">
<el-input v-model="multipleTableItemForm.completeSituation"
placeholder="请输入完成情况"/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="timeoutSituation" label="SOP时间超过法规时限的空档期的业务应对方案"
style="width: 100%;" class="add-form-item">
<el-input v-model="multipleTableItemForm.timeoutSituation"
placeholder="请输入SOP时间超过法规时限的空档期的业务应对方案"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
</div>
<div class="demo-drawer-footer">
<el-button size="mini" @click="cancel">取消</el-button>
<el-button type="primary" size="mini" :loading="isSubmit" @click="submit">提交</el-button>
</div>
</el-drawer>
</template>
<script>
import CustomDatePickGroup from '@/components/CustomFormComponents/DatePickerGroup'
export default {
name: "businessDivisionEdit",
components: {
CustomDatePickGroup
},
data() {
return {
multipleTableTitle: '',
multipleTableItemDialog: false,
multipleTableItemForm: {},
infoTableDatas: [],
multipleTableItemFormRules: {
lawCode: [
{
type: "string",
max: 200,
message: "标准编号/政策编号不能超过200个字符",
trigger: "blur"
}
],
lawName: [
{
type: "string",
max: 200,
message: "标准名称/政策名称不能超过200个字符",
trigger: "blur"
}
],
productType: [
{
type: "string",
max: 200,
message: "产品类型不能超过200个字符",
trigger: "blur"
}
],
implRequire: [
{
type: "string",
max: 200,
message: "实施要求不能超过200个字符",
trigger: "blur"
}
],
conformSituation: [
{
type: "string",
max: 200,
message: "资源符合情况不能超过200个字符",
trigger: "blur"
}
],
devScheme: [
{
type: "string",
max: 200,
message: "开发计划不能超过200个字符",
trigger: "blur"
}
],
completeSituation: [
{
type: "string",
max: 200,
message: "完成情况不能超过200个字符",
trigger: "blur"
}
],
timeoutSituation: [
{
type: "string",
max: 300,
message: "SOP时间超过法规时限的空档期的业务应对方案不能超过300个字符",
trigger: "blur"
}
],
},
isSubmit: false,
config: {
attrName: '实施日期',
attrField: 'implTime'
}
}
},
methods: {
edit(row) {
this.multipleTableItemDialog = true
this.multipleTableTitle = '编辑'
this.$nextTick(() => {
this.multipleTableItemForm = JSON.parse(JSON.stringify(row))
this.multipleTableItemForm = {...this.multipleTableItemForm}
this.$refs['multipleTableItemRef'].clearValidate()
})
},
cancel() {
this.multipleTableItemDialog = false
},
submit() {
this.$refs['multipleTableItemRef'].validate((valid) => {
if (valid) {
this.isSubmit = true
this.$emit('businessDivisionEditForm', this.multipleTableItemForm)
this.multipleTableItemDialog = false
this.$nextTick(() => {
this.isSubmit = false
})
}
})
}
}
}
</script>
<style lang="less" scoped>
.demo-drawer-footer {
height: 70px !important;
}
::v-deep .add-form-item {
width: 100%;
}
::v-deep .el-form-item__content {
width: calc(100% - 200px);
}
</style>
@@ -6,7 +6,7 @@
tooltip-effect="dark"
border
style="width: 100%;"
height="100%"
height="500"
:header-cell-style="{background: '#E8E8E8', color: '#333333', fontSize: '16px',
fontWeight: 'bold', height: '48px'}">
<el-table-column
@@ -17,128 +17,142 @@
<el-table-column
prop="lawCode"
label="标准编号/政策编号"
show-overflow-tooltip
align="center"
width="150"
width="180"
>
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.lawCode"></el-input>
</template>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="lawName"
label="标准名称/政策名称"
min-width="150"
min-width="180"
align="center"
>
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.lawName"></el-input>
</template>
</el-table-column>
<el-table-column
prop="productType"
show-overflow-tooltip
width="120"
align="center"
label="产品类型">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.productType"></el-input>
</template>
</el-table-column>
<el-table-column
prop="implTime"
align="center"
width="155"
show-overflow-tooltip
width="170"
label="实施日期">
<template slot-scope="scope">
<el-date-picker
v-model="scope.row.implTime"
style="width: 130px"
type="date"
placeholder="选择日期">
</el-date-picker>
</template>
</el-table-column>
<el-table-column
prop="implRequire"
show-overflow-tooltip
align="center"
width="120"
width="180"
label="实施要求">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.implRequire"></el-input>
</template>
</el-table-column>
<el-table-column
prop="conformSituation"
show-overflow-tooltip
align="center"
width="130"
width="180"
label="资源符合情况">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.conformSituation"></el-input>
</template>
</el-table-column>
<el-table-column
prop="devScheme"
align="center"
width="120"
show-overflow-tooltip
width="180"
label="开发计划">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.devScheme"></el-input>
</template>
</el-table-column>
<el-table-column
prop="sopTime"
align="center"
width="155"
show-overflow-tooltip
width="170"
label="SOP时间">
<template slot-scope="scope">
<el-date-picker
value-format="yyyy-MM-dd"
v-model="scope.row.sopTime"
style="width: 130px"
type="date"
placeholder="选择日期">
</el-date-picker>
</template>
</el-table-column>
<el-table-column
prop="completeSituation"
align="center"
width="120"
width="180"
show-overflow-tooltip
label="完成情况">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.completeSituation"></el-input>
</template>
</el-table-column>
<el-table-column
prop="timeoutSituation"
align="center"
show-overflow-tooltip
width="400"
label="SOP时间超过法规时限的空档期的业务应对方案">
</el-table-column>
<el-table-column
v-if="showInput"
align="center"
fixed="right"
width="80"
label="操作">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.timeoutSituation"></el-input>
<a class="scopeText" @click="editModel(scope.row,scope.$index)">
编辑
</a>
</template>
</el-table-column>
</el-table>
<businessDivisionEdit ref="businessDivisionEditRef" @businessDivisionEditForm="businessDivisionEditForm"/>
</div>
</template>
<script>
import businessDivisionEdit from "./businessDivisionEdit";
export default {
name: "businessDivisionList",
components: {
businessDivisionEdit
},
data() {
return {
infoTableDatas: [{}]
infoTableDatas: [],
taskKey: this.$route.query.taskDefinitionKey,
selectNum: 0,
}
},
computed: {
showInput() {
if (this.taskKey == 'PolicyComplianceProgramReviewProcessKey8' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey9') {
return true
}
return false
},
},
methods: {
getData(val) {
this.infoTableDatas = val || []
this.infoTableDatas = [...this.infoTableDatas]
},
submit(callback) {
callback && callback(this.infoTableDatas)
},
businessDivisionEditForm(row) {
this.infoTableDatas[this.selectNum] = row
this.infoTableDatas = [...this.infoTableDatas]
console.log(this.infoTableDatas);
},
editModel(row, index) {
console.log(row);
console.log(index);
this.selectNum = index
this.$refs.businessDivisionEditRef.edit(JSON.parse(JSON.stringify(row)))
},
}
}
</script>
<style scoped>
.scopeText {
color: #66b1ff;
cursor: pointer;
}
</style>
@@ -1,7 +1,7 @@
<template>
<div style="margin-top: 10px">
<div class="tableTitle">
<div class="tableButton">
<div class="tableButton" v-if="showTableButton">
<el-button plain class="common-button-primary" size="mini" @click="handleSearchStandard">调取</el-button>
<el-button plain class="common-button-primary" size="mini" @click="handleDeleteStandard">删除</el-button>
</div>
@@ -225,8 +225,18 @@
}
],
deleteSelectedList: [],
taskKey: this.$route.query.taskDefinitionKey,
}
},
computed:{
showTableButton() {
if (!this.taskKey || this.taskKey == 'PolicyComplianceProgramReviewProcessKey1' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey3') {
return true
}
return false
},
},
methods: {
getData(row) {
this.infoTableDatas = row
@@ -40,11 +40,11 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="责任单位截止时间"
:prop="!disabledXX ? 'responsibleUnitDeadline':''"
<el-form-item label="审批单位截止时间"
:prop="!disabledXX ? 'approvalUnitDeadline':''"
class="add-form-item form-item-disabled">
<el-date-picker :disabled="disabledXX"
v-model="dataForm.responsibleUnitDeadline"
v-model="dataForm.approvalUnitDeadline"
type="date"
style="width: 100%"
placeholder="请选择责任单位截止时间">
@@ -242,8 +242,8 @@
endTime: [
{required: true, message: '请选择截止时间', trigger: 'change'},
],
responsibleUnitDeadline: [
{required: true, message: '请选择责任单位截止时间', trigger: 'change'},
approvalUnitDeadline: [
{required: true, message: '请选择审批单位截止时间', trigger: 'change'},
],
zrrUserNames: [
{required: true, message: '请选择责任人', trigger: 'change'},
@@ -275,6 +275,7 @@
isSubmit: false,
isReject: false,
roleForm: {},
departmentList: [],
}
},
computed: {
@@ -372,27 +373,29 @@
return false
},
isBusinessDivisionList() {
if (this.taskKey == 'PolicyComplianceProgramReviewProcessKey8' ||
if ((this.taskKey == 'PolicyComplianceProgramReviewProcessKey8' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey9' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey10' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey11' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey12' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey13' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey14' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey15') {
this.taskKey == 'PolicyComplianceProgramReviewProcessKey15') &&
this.dataForm.departmentType == 'undertaking') {
return true
}
return false
},
isProductPlanningList() {
if (this.taskKey == 'PolicyComplianceProgramReviewProcessKey8' ||
if ((this.taskKey == 'PolicyComplianceProgramReviewProcessKey8' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey9' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey10' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey11' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey12' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey13' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey14' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey15') {
this.taskKey == 'PolicyComplianceProgramReviewProcessKey15') &&
this.dataForm.departmentType == 'productPlanning') {
return true
}
return false
@@ -511,8 +514,49 @@
})
} else if (this.taskKey == 'PolicyComplianceProgramReviewProcessKey2' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey4' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey5' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey7') { //审核、审定、批准、责任人分配任务
this.taskKey == 'PolicyComplianceProgramReviewProcessKey5') { //审核、审定、批准、责任人分配任务
const json = Object.assign(this.dataForm);
json.commentText = this.commentText
json.approvalFlag = 0
let query = {
form: json,
commentText: this.commentText
}
this.completeTask(this.$route.query.taskIds, query)
} else if (this.taskKey == 'PolicyComplianceProgramReviewProcessKey7') {
let undertaking = this.departmentList[0].institutionName.includes('事业')
let productPlanning = this.departmentList[0].institutionName.includes('产品规划')
for (let i = 0; i < this.departmentList.length; i++) {
if (this.departmentList[i].institutionName.includes('事业') ||
this.departmentList[i].institutionName.includes('产品规划')) {
if (undertaking) {
if (this.departmentList[i].institutionName.includes('产品规划')) {
this.$message.warning("只能选择同一个部门的人员");
this.closeButtonLoading()
return
}
}
if (productPlanning) {
if (this.departmentList[i].institutionName.includes('事业')) {
this.$message.warning("只能选择同一个部门的人员");
this.closeButtonLoading()
return
}
}
} else {
this.$message.warning("只能选择事业部人员或产品规划部人员");
this.closeButtonLoading()
return
}
}
if (productPlanning) {
this.dataForm.departmentType = 'productPlanning'
} else if (undertaking) {
this.dataForm.departmentType = 'undertaking'
} else {
this.$message.warning("请选择责任人");
return
}
const json = Object.assign(this.dataForm);
json.commentText = this.commentText
json.approvalFlag = 0
@@ -543,19 +587,22 @@
this.taskKey == 'PolicyComplianceProgramReviewProcessKey14' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey15') {//责任人任务处理
this.closeButtonLoading()
this.$refs.solicitationListRef.submit((row, ids) => {
const json = Object.assign(this.dataForm);
json.commentText = this.commentText
json.approvalFlag = 0
let query = {
form: json,
policySolicitOpinionEOList: row,
removeIds: ids,
commentText: this.commentText
}
this.openButtonLoading()
this.completeTask(this.$route.query.taskIds, query)
})
if (this.dataForm.departmentType == 'undertaking') {
this.$refs.businessDivisionListRef.submit((row) => {
console.log(row);
return
const json = Object.assign(this.dataForm);
json.commentText = this.commentText
json.infoTableDatas = row
json.approvalFlag = 0
let query = {
form: json,
commentText: this.commentText
}
this.openButtonLoading()
this.completeTask(this.$route.query.taskIds, query)
})
}
}
} else {
return this.$message.warning('请完善基础信息')
@@ -670,6 +717,7 @@
names.push(data[i].name)
}
}
this.departmentList = []
if (this.selectType == '转办处理人') {
changeAssigneeNew({
taskId: this.$route.query.taskIds, // 任务id
@@ -687,6 +735,8 @@
}
})
} else if (this.selectType == '责任人') {
this.departmentList = data
console.log(this.departmentList);
this.dataForm.zrrUserIds = ids.join(',')
this.dataForm.zrrUserNames = names.join(',')
this.dataForm = {...this.dataForm}
@@ -755,6 +805,15 @@
if (this.showPersonnel) {
this.$refs.personnelInformationRef.getData(row.form)
}
if (this.isFetchList) {
this.$refs.fetchListRef.getData(row.form.infoTableDatas)
}
console.log(this.isBusinessDivisionList);
if (this.isBusinessDivisionList) {
this.$nextTick(() => {
this.$refs.businessDivisionListRef.getData(row.form.infoTableDatas)
})
}
},
getTaskDraftData() {
this.dataLoading = true
@@ -129,7 +129,7 @@
{
type: "string",
max: 200,
message: "章节编号不能超过100个字符",
message: "章节编号不能超过200个字符",
trigger: "blur"
}
],
@@ -137,7 +137,7 @@
{
type: "string",
max: 200,
message: "章节条目不能超过100个字符",
message: "章节条目不能超过200个字符",
trigger: "blur"
}
],
@@ -145,7 +145,7 @@
{
type: "string",
max: 200,
message: "修改前不能超过100个字符",
message: "修改前不能超过200个字符",
trigger: "blur"
}
],
@@ -153,7 +153,7 @@
{
type: "string",
max: 200,
message: "修改后不能超过100个字符",
message: "修改后不能超过200个字符",
trigger: "blur"
}
],
@@ -161,7 +161,7 @@
{
type: "string",
max: 200,
message: "修改理由不能超过100个字符",
message: "修改理由不能超过200个字符",
trigger: "blur"
}
],
@@ -169,7 +169,7 @@
{
type: "string",
max: 200,
message: "处理意见不能超过100个字符",
message: "处理意见不能超过200个字符",
trigger: "blur"
}
],
@@ -177,7 +177,7 @@
{
type: "string",
max: 200,
message: "处理原因不能超过100个字符",
message: "处理原因不能超过200个字符",
trigger: "blur"
}
],
@@ -185,7 +185,7 @@
{
type: "string",
max: 200,
message: "原因不能超过100个字符",
message: "原因不能超过200个字符",
trigger: "blur"
}
],
@@ -2266,6 +2266,19 @@
}
})
break
case '30':
this.$router.push({
path: 'policyComplianceReview',
query: {
taskIds: row.taskIds,
prcId: row.prcId,
prcNum: row.prcNum,
prcName: row.prcName,
prcType: row.prcType,
taskDefinitionKey: row.taskDefinitionKey
}
})
break
}
},
...mapMutations(['setProcess', 'setHandleInfo']),