[update] 修改企标立项、变更流程
This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
"lint": "vue-cli-service lint"
|
"lint": "vue-cli-service lint"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"ant-design-vue": "1.7.2",
|
||||||
"axios": "^0.21.1",
|
"axios": "^0.21.1",
|
||||||
"core-js": "^3.8.3",
|
"core-js": "^3.8.3",
|
||||||
"js-base64": "^3.6.0",
|
"js-base64": "^3.6.0",
|
||||||
|
|||||||
+17
-1
@@ -26,6 +26,9 @@ const checkRuleByCode = (params) => getAction('/sys/checkRule/checkByCode', para
|
|||||||
// 通过文件的id获取文件的相应信息
|
// 通过文件的id获取文件的相应信息
|
||||||
const getFileInfo = (params) => getAction('/sys/oss/file/queryById', params)
|
const getFileInfo = (params) => getAction('/sys/oss/file/queryById', params)
|
||||||
|
|
||||||
|
// 获取部门列表数据
|
||||||
|
const getDepartmentList = (params) => getAction('/sys/sysDepart/queryTreeList', params)
|
||||||
|
|
||||||
// 获取人员信息列表
|
// 获取人员信息列表
|
||||||
const getPersonInfoList = (params) => getAction('/process/fb/processFbInfo/getNodeList', params)
|
const getPersonInfoList = (params) => getAction('/process/fb/processFbInfo/getNodeList', params)
|
||||||
|
|
||||||
@@ -50,6 +53,14 @@ const rejectStandardECProcess = (params) => postAction('/process/fb/processFbEnt
|
|||||||
// 初始化数据
|
// 初始化数据
|
||||||
// 根据流程id获取流程信息
|
// 根据流程id获取流程信息
|
||||||
const getProcessDataById = (taskId, params) => getAction(`/process/es/initChange/handle/${taskId}`, params)
|
const getProcessDataById = (taskId, params) => getAction(`/process/es/initChange/handle/${taskId}`, params)
|
||||||
|
// 同意
|
||||||
|
const enterprisePlanApprovalAgree = (params) => postAction('/process/es/initChange/agree', params)
|
||||||
|
// 驳回
|
||||||
|
const enterprisePlanApprovalReject = (params) => postAction('/process/es/initChange/reject', params)
|
||||||
|
// 转办
|
||||||
|
const enterprisePlanApprovalTurnTo = (params) => postAction('/process/es/initChange/transfer', params)
|
||||||
|
// 保存
|
||||||
|
const enterprisePlanApprovalSave = (params) => postAction('/process/es/initChange/save', params)
|
||||||
|
|
||||||
export {
|
export {
|
||||||
queryPermissionsByUser,
|
queryPermissionsByUser,
|
||||||
@@ -58,6 +69,7 @@ export {
|
|||||||
duplicateCheck,
|
duplicateCheck,
|
||||||
checkRuleByCode,
|
checkRuleByCode,
|
||||||
getFileInfo,
|
getFileInfo,
|
||||||
|
getDepartmentList,
|
||||||
getSSOUserInfo,
|
getSSOUserInfo,
|
||||||
|
|
||||||
getPersonInfoList,
|
getPersonInfoList,
|
||||||
@@ -70,5 +82,9 @@ export {
|
|||||||
agreeStandardECProcess,
|
agreeStandardECProcess,
|
||||||
rejectStandardECProcess,
|
rejectStandardECProcess,
|
||||||
|
|
||||||
getProcessDataById
|
getProcessDataById,
|
||||||
|
enterprisePlanApprovalAgree,
|
||||||
|
enterprisePlanApprovalReject,
|
||||||
|
enterprisePlanApprovalTurnTo,
|
||||||
|
enterprisePlanApprovalSave
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,4 +93,19 @@
|
|||||||
-webkit-text-fill-color: #888888;
|
-webkit-text-fill-color: #888888;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 表格样式 */
|
||||||
|
/deep/ .ant-table {
|
||||||
|
padding: 0.2rem 0.32rem;
|
||||||
|
color: @font-color;
|
||||||
|
th {
|
||||||
|
font-size: 0.26rem;
|
||||||
|
font-weight: 600;
|
||||||
|
padding: 0.44rem 0;
|
||||||
|
}
|
||||||
|
td {
|
||||||
|
font-size: 0.24rem;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -22,12 +22,85 @@ module.exports = {
|
|||||||
turnTo: '转办',
|
turnTo: '转办',
|
||||||
agree: '同意',
|
agree: '同意',
|
||||||
reject: '驳回',
|
reject: '驳回',
|
||||||
|
save: '保存',
|
||||||
|
submit: '提交',
|
||||||
|
determine: '确定',
|
||||||
processApprovalInfo: '流程审批信息',
|
processApprovalInfo: '流程审批信息',
|
||||||
remark: '备注',
|
remark: '备注',
|
||||||
clickSelect: '点击选择',
|
clickSelect: '点击选择',
|
||||||
selectUser: '选择人员',
|
selectUser: '选择人员',
|
||||||
|
finishDate: '完成日期',
|
||||||
|
rangeOfApplication: '适用范围',
|
||||||
|
standardNumber: '标准编号',
|
||||||
|
standardName: '标准名称',
|
||||||
|
serialNumber: '序号',
|
||||||
|
pleaseEnterRemarks: '请填写备注',
|
||||||
|
// 标准法规入库/变更流程
|
||||||
standardEntryOrChange: {
|
standardEntryOrChange: {
|
||||||
source: '来源',
|
source: '来源',
|
||||||
operationType: '操作类型'
|
operationType: '操作类型'
|
||||||
|
},
|
||||||
|
esInitChange: {
|
||||||
|
applicationType: '申请类型',
|
||||||
|
standardProjectEstablishment: '标准立项',
|
||||||
|
change: '变更',
|
||||||
|
itemCategory: '项目类别',
|
||||||
|
formulate: '制定',
|
||||||
|
revise: '修订',
|
||||||
|
completionTimeChange: '完成时间变更',
|
||||||
|
terminationOfWork: '工作终止',
|
||||||
|
dutyDepartChange: '责任部门变更',
|
||||||
|
merge: '合并',
|
||||||
|
enterpriseStandardNum: '企标编号',
|
||||||
|
enterpriseStandardName: '企标名称',
|
||||||
|
enterpriseStandardCode: '企业标准代号',
|
||||||
|
enterpriseNameCode: '企业名称代号',
|
||||||
|
standardCategoryCode: '标准类别代号',
|
||||||
|
yearNumber: '年代号',
|
||||||
|
newEnterpriseStandardNum: '新企标编号',
|
||||||
|
newEnterpriseStandardName: '新企标名称',
|
||||||
|
standardEnglishName: '标准英文名称',
|
||||||
|
standardSystem: '标准体系',
|
||||||
|
standardType: '标准类型',
|
||||||
|
standardGradeClassification: '标准等级分类',
|
||||||
|
compilationIllustration: '编制说明',
|
||||||
|
draftPlanFinishDate: '草稿计划完成日期',
|
||||||
|
exposureDraftPlanFinishDate: '征求意见稿计划完成日期',
|
||||||
|
planSubmissionDate: '计划报批日期',
|
||||||
|
partName: '零部件名称',
|
||||||
|
authorizationDepart: '授权部门',
|
||||||
|
principalDrafter: '主起草人',
|
||||||
|
mainDraftUnit: '主起草单位',
|
||||||
|
headOfMainDraftingUnit: '起草单位负责人',
|
||||||
|
standardPusher: '标准推进人',
|
||||||
|
suitUnit: '配合单位',
|
||||||
|
projectStatement: '立项说明',
|
||||||
|
projectApprovalChangeReason: '立项/变更原因',
|
||||||
|
projectBackground: '立项背景、立项依据',
|
||||||
|
homogeneousStandardAnalysis: '国际、国家及行业同类标准分析',
|
||||||
|
standardContrastiveAnalysis: '企业同类标准对比分析',
|
||||||
|
leadershipAndNecessity: '立项标准的领先性与必要性',
|
||||||
|
initiatedProject: '立项目的及预期效果等',
|
||||||
|
uploadAttachment: '上传附件',
|
||||||
|
originalDraftPlanFinishDate: '原草稿计划完成日期',
|
||||||
|
originalExposureDraftPlanFinishDate: '原征求意见稿计划完成日期',
|
||||||
|
originalPlanSubmissionDate: '原计划报批日期',
|
||||||
|
changeReason: '变更原因',
|
||||||
|
originPrincipalDrafter: '原主起草人',
|
||||||
|
originMainDraftUnit: '原主起草单位',
|
||||||
|
originHeadOfMainDraftingUnit: '原起草单位负责人',
|
||||||
|
newPrincipalDrafter: '新主起草人',
|
||||||
|
newMainDraftUnit: '新主起草单位',
|
||||||
|
newHeadOfMainDraftingUnit: '新起草单位负责人',
|
||||||
|
mergeStandardInformation: '合并标准信息',
|
||||||
|
typeOfRevision: '制修订类型',
|
||||||
|
superintendent: '所长',
|
||||||
|
relatedPersonnel: '相关人员'
|
||||||
|
},
|
||||||
|
// 标准征求意见流程
|
||||||
|
standardConsultation: {
|
||||||
|
standardText: '标准文本',
|
||||||
|
relevantDocument: '相关文件',
|
||||||
|
closingDateForComments: '征求意见结束日期'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,9 @@ module.exports = {
|
|||||||
turnTo: '转办',
|
turnTo: '转办',
|
||||||
agree: '同意',
|
agree: '同意',
|
||||||
reject: '驳回',
|
reject: '驳回',
|
||||||
|
save: '保存',
|
||||||
|
submit: '提交',
|
||||||
|
determine: '确定',
|
||||||
processApprovalInfo: '流程审批信息',
|
processApprovalInfo: '流程审批信息',
|
||||||
remark: '备注',
|
remark: '备注',
|
||||||
clickSelect: '点击选择',
|
clickSelect: '点击选择',
|
||||||
@@ -30,6 +33,8 @@ module.exports = {
|
|||||||
rangeOfApplication: '适用范围',
|
rangeOfApplication: '适用范围',
|
||||||
standardNumber: '标准编号',
|
standardNumber: '标准编号',
|
||||||
standardName: '标准名称',
|
standardName: '标准名称',
|
||||||
|
serialNumber: '序号',
|
||||||
|
pleaseEnterRemarks: '请填写备注',
|
||||||
// 标准法规入库/变更流程
|
// 标准法规入库/变更流程
|
||||||
standardEntryOrChange: {
|
standardEntryOrChange: {
|
||||||
source: '来源',
|
source: '来源',
|
||||||
@@ -76,7 +81,21 @@ module.exports = {
|
|||||||
standardContrastiveAnalysis: '企业同类标准对比分析',
|
standardContrastiveAnalysis: '企业同类标准对比分析',
|
||||||
leadershipAndNecessity: '立项标准的领先性与必要性',
|
leadershipAndNecessity: '立项标准的领先性与必要性',
|
||||||
initiatedProject: '立项目的及预期效果等',
|
initiatedProject: '立项目的及预期效果等',
|
||||||
uploadAttachment: '上传附件'
|
uploadAttachment: '上传附件',
|
||||||
|
originalDraftPlanFinishDate: '原草稿计划完成日期',
|
||||||
|
originalExposureDraftPlanFinishDate: '原征求意见稿计划完成日期',
|
||||||
|
originalPlanSubmissionDate: '原计划报批日期',
|
||||||
|
changeReason: '变更原因',
|
||||||
|
originPrincipalDrafter: '原主起草人',
|
||||||
|
originMainDraftUnit: '原主起草单位',
|
||||||
|
originHeadOfMainDraftingUnit: '原起草单位负责人',
|
||||||
|
newPrincipalDrafter: '新主起草人',
|
||||||
|
newMainDraftUnit: '新主起草单位',
|
||||||
|
newHeadOfMainDraftingUnit: '新起草单位负责人',
|
||||||
|
mergeStandardInformation: '合并标准信息',
|
||||||
|
typeOfRevision: '制修订类型',
|
||||||
|
superintendent: '所长',
|
||||||
|
relatedPersonnel: '相关人员'
|
||||||
},
|
},
|
||||||
// 标准征求意见流程
|
// 标准征求意见流程
|
||||||
standardConsultation: {
|
standardConsultation: {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
<van-field
|
<van-field
|
||||||
readonly
|
readonly
|
||||||
clickable
|
clickable
|
||||||
|
type="text"
|
||||||
name="calendar"
|
name="calendar"
|
||||||
:value="value"
|
:value="value"
|
||||||
v-bind="$attrs"
|
v-bind="$attrs"
|
||||||
@@ -13,8 +14,6 @@
|
|||||||
<van-calendar
|
<van-calendar
|
||||||
color="#3074F6"
|
color="#3074F6"
|
||||||
v-model="showCalendar"
|
v-model="showCalendar"
|
||||||
:min-date="minDate"
|
|
||||||
:max-date="maxDate"
|
|
||||||
@confirm="onConfirm"
|
@confirm="onConfirm"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -25,22 +24,6 @@
|
|||||||
export default {
|
export default {
|
||||||
name: 'CalendarField',
|
name: 'CalendarField',
|
||||||
props: {
|
props: {
|
||||||
// 可选择的最小日期--不知道为什么没有起作用
|
|
||||||
minDate: {
|
|
||||||
// type: [Date, String],
|
|
||||||
required: false,
|
|
||||||
default: () => {
|
|
||||||
return new Date(2020, 0, 1)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 可选择的最大日期--不知道为什么没有起作用
|
|
||||||
maxDate: {
|
|
||||||
type: [Date, String],
|
|
||||||
required: false,
|
|
||||||
default: () => {
|
|
||||||
return new Date(2030, 12, 31)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
value: {
|
value: {
|
||||||
type: [String, Number, Object],
|
type: [String, Number, Object],
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
@@ -0,0 +1,268 @@
|
|||||||
|
<template>
|
||||||
|
<ul class="list-menu" v-if="data.length">
|
||||||
|
<!-- @click.stop="!item.isLeaf || selectItem(item.value)"-->
|
||||||
|
<li v-for="(item, i) in data" :key="i" @click.stop="selectItem(item.value)" v-show="expandFlag">
|
||||||
|
<div class="item">
|
||||||
|
<div class="item-left">
|
||||||
|
<!-- 展开的图标 -->
|
||||||
|
<i class='expandIcon'
|
||||||
|
@click.stop="expandItem(item, i)"
|
||||||
|
:class="[expandArr.includes(i) ? 'reduce' : 'add',item.children && item.children.length ? '' : 'disabled']">
|
||||||
|
</i>
|
||||||
|
<!-- 选项名 -->
|
||||||
|
<span class="value-span">{{ item.title }}</span>
|
||||||
|
</div>
|
||||||
|
<!-- 选择的图标 -->
|
||||||
|
<!-- 单选 -->
|
||||||
|
<template v-if="!multiple">
|
||||||
|
<i class='selectIcon'
|
||||||
|
:class="[value === item.value ? 'checked' : 'noChecked']">
|
||||||
|
</i>
|
||||||
|
</template>
|
||||||
|
<!-- 多选 -->
|
||||||
|
<template v-else>
|
||||||
|
<i class='selectIcon multiple-select-icon'
|
||||||
|
:class="[checkedArr.includes(item.value) ? 'checked' : 'noChecked']">
|
||||||
|
</i>
|
||||||
|
</template>
|
||||||
|
<!-- <i class='selectIcon'-->
|
||||||
|
<!-- :class="[checkedArr.indexOf(item.value) > -1 ? 'checked' : 'noChecked']">-->
|
||||||
|
<!-- </i>-->
|
||||||
|
</div>
|
||||||
|
<select-department
|
||||||
|
v-if='item.children'
|
||||||
|
@input='input'
|
||||||
|
:data='item.children'
|
||||||
|
:valueKey='valueKey'
|
||||||
|
:labelKey='labelKey'
|
||||||
|
:value="value"
|
||||||
|
:toastText='toastText'
|
||||||
|
:expandFlag='expandArr.includes(i)'
|
||||||
|
:multiple="multiple"
|
||||||
|
/>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'SelectDepartment',
|
||||||
|
props: {
|
||||||
|
// 选中的值的属性名,必传
|
||||||
|
valueKey: String,
|
||||||
|
// 在页面要展示的选项属性名,必传
|
||||||
|
labelKey: String,
|
||||||
|
// 选中的值,必传
|
||||||
|
value: [Object, String, Array],
|
||||||
|
// 控制展开,不需要传
|
||||||
|
expandFlag: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
|
},
|
||||||
|
// 总数据,必传
|
||||||
|
data: Array,
|
||||||
|
// 不可选提示文字,非必传
|
||||||
|
toastText: String,
|
||||||
|
// 是否多选
|
||||||
|
multiple: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
value: {
|
||||||
|
immediate: true,
|
||||||
|
deep: true,
|
||||||
|
handler (val) {
|
||||||
|
if (this.multiple !== false) {
|
||||||
|
this.checkedArr = this.value
|
||||||
|
}
|
||||||
|
return val
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
// 当前级组件已展开的项
|
||||||
|
expandArr: [],
|
||||||
|
checkedArr: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 子组件逐级传递选中项
|
||||||
|
input (item) {
|
||||||
|
// console.log(item.concat(this.checkedArr))
|
||||||
|
if (!this.multiple) {
|
||||||
|
// 是单选
|
||||||
|
this.$emit('input', item)
|
||||||
|
} else {
|
||||||
|
this.$emit('input', item)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 选择
|
||||||
|
selectItem (item) {
|
||||||
|
console.log(item)
|
||||||
|
// this.$emit('input', item)
|
||||||
|
if (!this.multiple) {
|
||||||
|
// 是单选
|
||||||
|
this.$emit('input', item)
|
||||||
|
} else {
|
||||||
|
this.checkedArr.indexOf(item) <= -1 ? this.checkedArr.push(item) : this.checkedArr.splice(this.checkedArr.indexOf(item), 1)
|
||||||
|
this.$emit('input', this.checkedArr)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 展开
|
||||||
|
expandItem (item, i) {
|
||||||
|
if (item.children && item.children.length) {
|
||||||
|
const index = this.expandArr.indexOf(i)
|
||||||
|
if (index > -1) {
|
||||||
|
this.expandArr.splice(index, 1)
|
||||||
|
} else {
|
||||||
|
this.expandArr.push(i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created () {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
@import '~@assets/less/common.less';
|
||||||
|
.popup-box > ul {
|
||||||
|
padding-right: @pad-base;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
width: 100%;
|
||||||
|
color: #2a2a2a;
|
||||||
|
font-size: 0.22rem;
|
||||||
|
background: #fff;
|
||||||
|
border-bottom: .8px solid #e1e1e1;
|
||||||
|
|
||||||
|
li {
|
||||||
|
.item {
|
||||||
|
padding: @pad-base;
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
width: 100%;
|
||||||
|
font-size: 0.3rem;
|
||||||
|
|
||||||
|
&-left {
|
||||||
|
display: flex;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.expandIcon {
|
||||||
|
height: 0.4rem;
|
||||||
|
width: 0.4rem;
|
||||||
|
font-style: normal;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
font-size: 0.4rem;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.add {
|
||||||
|
border-color: #2a2a2a;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
color: #2a2a2a;
|
||||||
|
content: '+';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.reduce {
|
||||||
|
border-color: @primary-color;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
color: @primary-color;
|
||||||
|
content: '-';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.disabled {
|
||||||
|
border-color: #ddd;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
color: #ddd;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.value-span {
|
||||||
|
text-align: left;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.selectIcon {
|
||||||
|
float: right;
|
||||||
|
height: 0.3rem;
|
||||||
|
width: 0.3rem;
|
||||||
|
border: 1.5px solid;
|
||||||
|
border-radius: 50%;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.checked {
|
||||||
|
border-color: @primary-color;
|
||||||
|
background: @primary-color;;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
color: #fff;
|
||||||
|
content: '✓';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.noChecked {
|
||||||
|
border-color: @primary-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.disabled {
|
||||||
|
border-color: #ddd;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.multiple-select-icon {
|
||||||
|
border-radius: 0.04rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(:first-child) {
|
||||||
|
border-top: .8px solid #e1e1e1;
|
||||||
|
}
|
||||||
|
|
||||||
|
> ul {
|
||||||
|
border-bottom: 0;
|
||||||
|
padding-left: 0.35rem;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
li {
|
||||||
|
.item {
|
||||||
|
padding-left: 0.35rem;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.item-left span{
|
||||||
|
width: 0;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
border-top: .8px solid #e1e1e1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,273 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<van-field
|
||||||
|
:class="(required ? 'required ' : '') + 'form-item label-weight'"
|
||||||
|
type="textarea"
|
||||||
|
:label="label"
|
||||||
|
clearable
|
||||||
|
@click="showPopup"
|
||||||
|
v-model="departmentNames"
|
||||||
|
:rules="rules"
|
||||||
|
rows="1"
|
||||||
|
autosize
|
||||||
|
:placeholder="$t('clickSelect') + label"
|
||||||
|
readonly
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- 多选选择责任单位 -->
|
||||||
|
<van-popup v-if="multiple" v-model="showSelectDepartment" style="height: 60vh" position="bottom" safe-area-inset-bottom
|
||||||
|
:close-on-click-overlay="false" :close-on-popstate="true">
|
||||||
|
<div class="popup-box">
|
||||||
|
<div class="operate">
|
||||||
|
<span @click="selectDepartmentCancel">取消</span>
|
||||||
|
<span @click="selectDepartmenthandleOk">确认</span>
|
||||||
|
</div>
|
||||||
|
<select-department :data="list" :value="selectedDepartTemp" @input="selected" :multiple="true"></select-department>
|
||||||
|
</div>
|
||||||
|
</van-popup>
|
||||||
|
|
||||||
|
<!-- 单选选择责任单位 -->
|
||||||
|
<van-popup v-else v-model="showSelectDepartment" style="height: 60vh" position="bottom" safe-area-inset-bottom
|
||||||
|
:close-on-click-overlay="false" :close-on-popstate="true">
|
||||||
|
<div class="popup-box">
|
||||||
|
<div class="operate">
|
||||||
|
<span @click="selectDepartmentCancel">取消</span>
|
||||||
|
<span @click="singleSelectDepartmentHandleOk">确认</span>
|
||||||
|
</div>
|
||||||
|
<select-department :data="list" :value="singleSelectedDepartTemp" @input="selected" :multiple="false"></select-department>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- <link-menu :data="list" value-key="value" label-key="title" :value="singleSelectedDepartTemp" @input="selected"></link-menu>-->
|
||||||
|
</van-popup>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import SelectDepartment from './SelectDepartment'
|
||||||
|
export default {
|
||||||
|
name: 'SelectDepartmentField',
|
||||||
|
components: { SelectDepartment },
|
||||||
|
props: {
|
||||||
|
readonly: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
value: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
default: () => ''
|
||||||
|
},
|
||||||
|
list: {
|
||||||
|
type: Array,
|
||||||
|
default: () => []
|
||||||
|
},
|
||||||
|
departmentNameString: {
|
||||||
|
type: String,
|
||||||
|
default: () => ''
|
||||||
|
},
|
||||||
|
// 是否是多选,默认是多选
|
||||||
|
multiple: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
// 是否必填
|
||||||
|
required: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
// 校验信息
|
||||||
|
rules: {
|
||||||
|
type: [Array, null],
|
||||||
|
required: false,
|
||||||
|
default: null
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
default: '部门'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
departmentNameString: {
|
||||||
|
immediate: true,
|
||||||
|
deep: true,
|
||||||
|
handler (val) {
|
||||||
|
this.departmentNames = val
|
||||||
|
return val
|
||||||
|
}
|
||||||
|
},
|
||||||
|
value: {
|
||||||
|
immediate: true,
|
||||||
|
deep: true,
|
||||||
|
handler (val) {
|
||||||
|
if (val) {
|
||||||
|
console.log('测试初始化名字', val)
|
||||||
|
if (this.multiple) {
|
||||||
|
this.selectedDepartmentName = []
|
||||||
|
// 设置输入框中的显示
|
||||||
|
setTimeout(() => {
|
||||||
|
for (const item of val.split(',')) {
|
||||||
|
this.selectTitleByValue(item, this.list)
|
||||||
|
}
|
||||||
|
this.departmentNames = this.selectedDepartmentName.join(',')
|
||||||
|
}, 500)
|
||||||
|
} else {
|
||||||
|
// 设置输入框中的显示
|
||||||
|
setTimeout(() => {
|
||||||
|
this.departmentNames = this.getTitle(val, this.list)
|
||||||
|
}, 500)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 说明传进来的是空
|
||||||
|
this.departmentNames = ''
|
||||||
|
}
|
||||||
|
return val
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
rulesObj: {
|
||||||
|
departmentId: [{ required: true, message: '请选择责任单位' }]
|
||||||
|
},
|
||||||
|
showSelectDepartment: false, // 下方选择框是否显示
|
||||||
|
selectedDepartTemp: [], // 多选选中的部门暂存
|
||||||
|
confirm: false, // 是否点击了确认
|
||||||
|
selectedDepartmentName: [], // 多选时返回的名称数组
|
||||||
|
departmentNames: '', // 责任单位名称字符串,输入框中要展示的
|
||||||
|
|
||||||
|
singleSelectedDepartTemp: undefined// 单选选中的部门暂存
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 查询传入的value在传入的数组中是否存在,存在返回title属性值
|
||||||
|
selectTitleByValue (value, arr) {
|
||||||
|
for (const item of arr) {
|
||||||
|
if (item.value === value) {
|
||||||
|
console.log(item.title)
|
||||||
|
// 说明找到了,返回item.title
|
||||||
|
// callback(item.title)
|
||||||
|
this.selectedDepartmentName.push(item.title)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
// 没有找到,如果有子树,在子树中查找
|
||||||
|
if (item.children) {
|
||||||
|
this.selectTitleByValue(value, item.children)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 循环结束还没有找到
|
||||||
|
// return title
|
||||||
|
},
|
||||||
|
// 点击选择框中的取消
|
||||||
|
selectDepartmentCancel () {
|
||||||
|
this.showSelectDepartment = false
|
||||||
|
},
|
||||||
|
// 多选责任部门点击确认
|
||||||
|
selectDepartmenthandleOk () {
|
||||||
|
// this.$emit('input',this.selectedDepartTemp)
|
||||||
|
// this.departmentNames = this.selectedDepartTemp.join(',')
|
||||||
|
// 设置列表不展示
|
||||||
|
this.showSelectDepartment = false
|
||||||
|
// 清空已选择的责任单位名称数组
|
||||||
|
this.selectedDepartmentName = []
|
||||||
|
for (const item of this.selectedDepartTemp) {
|
||||||
|
this.selectTitleByValue(item, this.list)
|
||||||
|
}
|
||||||
|
// 设置输入框中的显示
|
||||||
|
this.departmentNames = this.selectedDepartmentName.join(',')
|
||||||
|
// 设置输入框的绑定值
|
||||||
|
this.$emit('input', this.selectedDepartTemp.join(','))
|
||||||
|
},
|
||||||
|
// 点击选择,展示选择框
|
||||||
|
showPopup () {
|
||||||
|
if (this.readonly) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
console.log(this.value)
|
||||||
|
if (this.multiple) {
|
||||||
|
console.log(Boolean(this.value))
|
||||||
|
// 是多选
|
||||||
|
this.selectedDepartTemp = JSON.parse(JSON.stringify(this.value !== '' && this.value ? this.value.split(',') : []))
|
||||||
|
} else {
|
||||||
|
// 是单选
|
||||||
|
this.singleSelectedDepartTemp = this.value || undefined
|
||||||
|
}
|
||||||
|
this.showSelectDepartment = true
|
||||||
|
},
|
||||||
|
// 选择完成的回调
|
||||||
|
selected (val) {
|
||||||
|
if (this.multiple) {
|
||||||
|
// 是多选
|
||||||
|
this.selectedDepartTemp = JSON.parse(JSON.stringify(val))
|
||||||
|
} else {
|
||||||
|
// 是单选
|
||||||
|
this.singleSelectedDepartTemp = val
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 单选责任部门确认
|
||||||
|
singleSelectDepartmentHandleOk () {
|
||||||
|
// 设置输入框中的显示
|
||||||
|
this.departmentNames = this.getTitle(this.singleSelectedDepartTemp, this.list)
|
||||||
|
// 设置输入框的绑定值
|
||||||
|
this.$emit('input', this.singleSelectedDepartTemp)
|
||||||
|
// 设置列表不展示
|
||||||
|
this.showSelectDepartment = false
|
||||||
|
},
|
||||||
|
// 从传入的数组中查找传入值的title
|
||||||
|
getTitle (value, arr) {
|
||||||
|
let result = {}
|
||||||
|
arr.forEach(item => {
|
||||||
|
const loop = data => {
|
||||||
|
if (data.value === value) {
|
||||||
|
result = data
|
||||||
|
console.log(item.title)
|
||||||
|
return item.title
|
||||||
|
}
|
||||||
|
const child = data.children
|
||||||
|
if (child) {
|
||||||
|
for (let i = 0; i < child.length; i++) {
|
||||||
|
loop(child[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
loop(item)
|
||||||
|
})
|
||||||
|
return result.title
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
@import '~@assets/less/common.less';
|
||||||
|
|
||||||
|
// 解决线上滚动条不灵敏的bug
|
||||||
|
.popup-box{
|
||||||
|
height: 100%;
|
||||||
|
position: relative;
|
||||||
|
/deep/& > .list-menu {
|
||||||
|
height: calc(100% - 0.8rem);
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.operate {
|
||||||
|
padding: 0 @pad-base;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-size: 0.3rem;
|
||||||
|
font-weight: 600;
|
||||||
|
height: 0.8rem;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
width: 100%;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -7,10 +7,10 @@
|
|||||||
readonly
|
readonly
|
||||||
rows="1"
|
rows="1"
|
||||||
autosize
|
autosize
|
||||||
|
:rules="rules"
|
||||||
type="textarea"
|
type="textarea"
|
||||||
@click="handleSelect"
|
@click="handleSelect"
|
||||||
>
|
>
|
||||||
|
|
||||||
</van-field>
|
</van-field>
|
||||||
<select-user
|
<select-user
|
||||||
ref="evaluatePersonSelectedList"
|
ref="evaluatePersonSelectedList"
|
||||||
@@ -67,6 +67,12 @@ export default {
|
|||||||
type: String,
|
type: String,
|
||||||
required: false,
|
required: false,
|
||||||
default: ''
|
default: ''
|
||||||
|
},
|
||||||
|
// 校验信息
|
||||||
|
rules: {
|
||||||
|
type: [Array, null],
|
||||||
|
required: false,
|
||||||
|
default: null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
@@ -76,6 +82,12 @@ export default {
|
|||||||
handler (val) {
|
handler (val) {
|
||||||
this.selectedDataNames = val
|
this.selectedDataNames = val
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
immediate: true,
|
||||||
|
handler (val) {
|
||||||
|
console.log(val)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
|
|||||||
@@ -7,6 +7,9 @@
|
|||||||
clearable
|
clearable
|
||||||
@click="showPopup"
|
@click="showPopup"
|
||||||
v-model="showValue"
|
v-model="showValue"
|
||||||
|
rows="1"
|
||||||
|
autosize
|
||||||
|
type="textarea"
|
||||||
/>
|
/>
|
||||||
<van-popup
|
<van-popup
|
||||||
v-model="show"
|
v-model="show"
|
||||||
@@ -45,7 +48,7 @@ export default {
|
|||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
value: {
|
value: {
|
||||||
type: [Object, Array],
|
type: [Object, Array, String],
|
||||||
required: true,
|
required: true,
|
||||||
default: () => []
|
default: () => []
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -88,3 +88,17 @@ export const ProjectType = {
|
|||||||
RESPONSIBLE_DEPT_CHANGE: { text: '责任部门变更', value: '5' },
|
RESPONSIBLE_DEPT_CHANGE: { text: '责任部门变更', value: '5' },
|
||||||
MERGE: { text: '合并', value: '6' }
|
MERGE: { text: '合并', value: '6' }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 企标立项、变更流程
|
||||||
|
export const EsInitChangeNodes = new EsEnums({
|
||||||
|
mainDrafterStart: { text: '主起草人发起', value: 'sid-7120EF36-78C3-4DB0-8B49-91178F79C24B' },
|
||||||
|
contactCheck: { text: '部所联络人校对', value: 'sid-BB1FF9A5-89DF-4356-AB16-9D68B8FABC04' },
|
||||||
|
expertApproval: { text: '专家审批', value: 'sid-ABE29414-15C7-4798-B690-E53055F6CA75' },
|
||||||
|
leaderApproval: { text: '主管级领导审批', value: 'sid-A58C400F-BA13-4125-9B00-45EB45F1A559' },
|
||||||
|
leaderLeaderApproval: { text: '主管级上一级领导审批', value: 'sid-298A57B6-6658-47C0-94EB-76E3A5790258' },
|
||||||
|
standardizationApproval: { text: '标准化审批', value: 'sid-06CB29CE-E39F-4CD2-A534-18546DC8C6FB' },
|
||||||
|
newDraftUnitLeaderLeaderSend: { text: '新起草部门主管级上一级领导下发', value: 'sid-AB70F1CA-8311-4639-B3DA-204EF3332B29' },
|
||||||
|
newDraftUnitLeaderConfirm: { text: '新起草部门主管级领导确认', value: 'sid-A26EC37C-7C93-4987-9833-363C4E25EC50' },
|
||||||
|
relevantPersonnelWillSign: { text: '相关人员会签', value: 'sid-7BFD2753-B6CD-4637-8D4B-819903511925' },
|
||||||
|
mainDrafterCopy: { text: '主起草人抄送', value: 'sid-08D0381A-5C20-4708-9D73-C7EB5C51DB02' }
|
||||||
|
})
|
||||||
|
|||||||
@@ -15,11 +15,15 @@ import { ACCESS_TOKEN, USER_INFO } from '@/store/mutation-types'
|
|||||||
import './permission'
|
import './permission'
|
||||||
import './assets/font/iconfont.css'
|
import './assets/font/iconfont.css'
|
||||||
|
|
||||||
|
import { Table } from 'ant-design-vue'
|
||||||
|
import 'ant-design-vue/dist/antd.css'
|
||||||
|
|
||||||
Vue.config.productionTip = false
|
Vue.config.productionTip = false
|
||||||
|
|
||||||
Vue.use(Vant)
|
Vue.use(Vant)
|
||||||
Vue.use(VueI18n)
|
Vue.use(VueI18n)
|
||||||
Vue.prototype.$message = Toast
|
Vue.prototype.$message = Toast
|
||||||
|
Vue.use(Table)
|
||||||
|
|
||||||
const i18n = new VueI18n({
|
const i18n = new VueI18n({
|
||||||
locale: 'zh-CN',
|
locale: 'zh-CN',
|
||||||
|
|||||||
@@ -5,9 +5,8 @@ export default [
|
|||||||
component: (resolve) => require(['@/views/workCenter/enterpriseStandardInitChange/EnterpriseStandardInitChange.vue'], resolve),
|
component: (resolve) => require(['@/views/workCenter/enterpriseStandardInitChange/EnterpriseStandardInitChange.vue'], resolve),
|
||||||
meta: {
|
meta: {
|
||||||
title: '企标计划立项/变更流程',
|
title: '企标计划立项/变更流程',
|
||||||
hasTabbar: false, // 这个属性控制页面是否显示tabbar
|
|
||||||
hasNavBar: true, // 这个属性控制页面是否显示上面的导航栏
|
hasNavBar: true, // 这个属性控制页面是否显示上面的导航栏
|
||||||
leftArrow: true // 这个属性控制页面上面的导航栏 是否有返回按钮
|
hasBack: true // 这个属性控制页面上面的导航栏 是否有返回按钮
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 标准法规入库/变更流程
|
// 标准法规入库/变更流程
|
||||||
|
|||||||
+32
-1
@@ -1,11 +1,14 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="home">
|
<div class="home">
|
||||||
首页
|
首页
|
||||||
|
<van-button type="info" @click="logout">退出登录</van-button>
|
||||||
<van-button type="primary" @click="goEnterpriseStandardInitChange">跳转企标计划立项、变更流程审批</van-button>
|
<van-button type="primary" @click="goEnterpriseStandardInitChange">跳转企标计划立项、变更流程审批</van-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { Dialog } from 'vant'
|
||||||
|
import { mapActions } from 'vuex'
|
||||||
export default {
|
export default {
|
||||||
name: 'Home',
|
name: 'Home',
|
||||||
methods: {
|
methods: {
|
||||||
@@ -13,9 +16,37 @@ export default {
|
|||||||
this.$router.push({
|
this.$router.push({
|
||||||
path: '/workCenter/enterpriseStandardInitChange',
|
path: '/workCenter/enterpriseStandardInitChange',
|
||||||
query: {
|
query: {
|
||||||
processInstanceId: '392773'
|
// processInstanceId: '392773',
|
||||||
|
// taskId: '435061'
|
||||||
|
// 完成时间变更
|
||||||
|
// processInstanceId: '435062',
|
||||||
|
// taskId: '435106'
|
||||||
|
// 工作终止变更
|
||||||
|
// processInstanceId: '435107',
|
||||||
|
// taskId: '435135'
|
||||||
|
// 责任部门变更
|
||||||
|
processInstanceId: '447619',
|
||||||
|
taskId: '447680',
|
||||||
|
nodeId: 'sid-A26EC37C-7C93-4987-9833-363C4E25EC50'
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
...mapActions(['Logout']),
|
||||||
|
logout () {
|
||||||
|
const that = this
|
||||||
|
Dialog.confirm({
|
||||||
|
title: '提示',
|
||||||
|
message: '确定退出登录吗'
|
||||||
|
}).then(() => {
|
||||||
|
that.Logout().then(() => {
|
||||||
|
// let routeHistory = history.length - 2
|
||||||
|
// this.$router.go(-routeHistory)
|
||||||
|
this.$router.replace({ path: '/user/login' })
|
||||||
|
// window.location.href = window._CONFIG.domianIp + '/wechatClient/user/login'
|
||||||
|
})
|
||||||
|
}).catch(() => {
|
||||||
|
console.log('catch')
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1014
-234
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user