Merge remote-tracking branch 'origin/dev_20231013_ZC' into dev_20230829_change

# Conflicts:
#	src/pages/home2/components/todoList/index.vue
#	src/pages/processCenter/pages/components/ProcessMixin.vue
#	src/pages/processCenter/pages/processDetail/index.vue
#	src/pages/processCenter/pages/processList/tabComponents/newProcess/index.vue
#	src/pages/processCenter/pages/processList/tabComponents/processCenter/index.vue
#	src/pages/processCenter/pages/processList/tabComponents/taskDraft/index.vue
#	src/router/index.js
This commit is contained in:
zyn
2023-10-31 14:10:22 +08:00
30 changed files with 6156 additions and 171 deletions
+8 -1
View File
@@ -49,7 +49,14 @@ export function inboundLiaisonDetail (data) {
params: data
})
}
// 联络人分配FO详情查询
export function queryZchgxxmscTaskDetail (data) {
return axios({
url: '/api/lawss/activiti/queryZchgxxmscTaskDetail',
method: 'get',
params: data
})
}
// 流程保存
export function saveTask (data) {
return axios({
+10 -10
View File
@@ -443,16 +443,16 @@
// path: '/DynamicInformations',
// menuId: '3C87BSHJUF'
// },
// // {
// // title: '流程分类管理',
// // path: '/processClassificationManage',
// // menuId: 'N323F2UB9FTUV5SD3GTD'
// // },
// // {
// // title: '流程管理',
// // path: '/processManage',
// // menuId: 'K5KXSS3X9CF7CS8AMFJ5'
// // },
{
title: '流程分类管理',
path: '/processClassificationManage',
// menuId: 'N323F2UB9FTUV5SD3GTD'
},
{
title: '流程管理',
path: '/processManage',
// menuId: 'K5KXSS3X9CF7CS8AMFJ5'
},
// {
// title: 'SVPPS',
// path: '/svpps',
+160 -135
View File
@@ -1,12 +1,13 @@
<template>
<div class="roleTree">
<el-drawer
:title="isTitle"
:visible.sync="visible"
:wrapperClosable="false"
@close="handleTreeDrawerCancel"
append-to-body
size="460px">
:title="isTitle"
v-if="visible"
:visible.sync="visible"
:wrapperClosable="false"
@close="handleTreeDrawerCancel"
append-to-body
size="460px">
<el-form
ref="attributeEO"
class="label-input-form"
@@ -15,16 +16,16 @@
>
<el-form-item class="form-item-disabled" style="margin: 10px;">
<el-input
v-model="filterText"
placeholder="请输入姓名"
@keyup.enter.native="searchChange"
v-model="filterText"
placeholder="请输入姓名"
@keyup.enter.native="searchChange"
></el-input>
</el-form-item>
<el-form-item class="form-item-disabled" style="margin-top: 10px;">
<el-button size="medium " type="primary" @click="searchChange">
查询
</el-button>
</el-form-item>
<el-form-item class="form-item-disabled" style="margin-top: 10px;">
<el-button size="medium " type="primary" @click="searchChange">
查询
</el-button>
</el-form-item>
</el-form>
<div class="divTree">
<!-- 当前tree展示全部人员 -->
@@ -72,7 +73,7 @@
ref="tree"
:lazy="false"
:key="treeKey"
>
>
<span class="custom-tree-node" slot-scope="{ node, data }">
<span :class="node.disabled ? 'is-show' : 'is-leaf-none'"></span>
<span> {{ node.label }} </span>
@@ -90,13 +91,19 @@
closable>
{{tag.name}}
</el-tag>
<el-tag v-show="delList.length > 0 && !checkBox" type="danger" closable size="mini" @close="handleCloseAll()">全部删除</el-tag>
<el-tag v-show="delList.length > 0 && !checkBox" type="danger" closable size="mini"
@close="handleCloseAll()">全部删除
</el-tag>
</div>
</div>
<div id="roleFormButton" class="demo-drawer-footer">
<el-button class="common-button-primary" size="mini" icon="el-icon-check" type="primary" :loading="subLoading" @click="saveUserInfo">确定</el-button>
<el-button class="common-button-primary" size="mini" icon="el-icon-check" type="primary"
:loading="subLoading" @click="saveUserInfo">确定
</el-button>
<el-button class="common-button-default" size="mini" icon="el-icon-close" :loading="subLoading" @click="handleTreeDrawerCancel">取消</el-button>
<el-button class="common-button-default" size="mini" icon="el-icon-close" :loading="subLoading"
@click="handleTreeDrawerCancel">取消
</el-button>
</div>
<loading style="z-index: 2099;" :loading="treeLoading">导入中...</loading>
</el-drawer>
@@ -104,15 +111,16 @@
</template>
<script>
function debounce(func, wait = 500){
function debounce(func, wait = 500) {
let timeout;
return function(event){
return function (event) {
clearTimeout(timeout)
timeout = setTimeout(()=>{
timeout = setTimeout(() => {
func.call(this, event)
},wait)
}, wait)
}
}
export default {
name: "roleTree",
props: {
@@ -134,13 +142,13 @@
}
},
type: {
type: Number,
default: 0
type: Number,
default: 0
}
},
data () {
data() {
return {
treeKey:1,
treeKey: 1,
defaultKey: [],//默认展开的节点的 key 的数组
visible: false,
selectList: [],
@@ -161,13 +169,13 @@
}
},
methods: {
nameJoinAccount(treeData1){
treeData1.forEach(item=>{
if(item.account) item.name = `${item.name}(${item.account})`
if(item.children) this.nameJoinAccount(item.children)
})
},
handleClose (tag) {
nameJoinAccount(treeData1) {
treeData1.forEach(item => {
if (item.account) item.name = `${item.name}(${item.account})`
if (item.children) this.nameJoinAccount(item.children)
})
},
handleClose(tag) {
let arr = []
for (let a = 0; a < this.delList.length; a++) {
if (tag.id === this.delList[a].id) {
@@ -189,7 +197,7 @@
}
}
},
handleCloseAll () {
handleCloseAll() {
this.$msgbox({
title: '提示',
message: '是否删除当前选中人员',
@@ -209,41 +217,41 @@
}
)
},
searchChange(){
// 查询
if (this.filterText.length) {
this.open1 = false // 显示第二个tree
this.treeLoading = true
this.defaultKey = []
this.$http.get('SarInstitution/institution/getNextTwo', {
userName: this.filterText
}, {}, res => {
this.treeData1 = res
this.treeData1.forEach(item => {
this.defaultKey.push(item.id)
})
this.nameJoinAccount(this.treeData1)
this.treeLoading = false
})
// this.treeKey++
searchChange() {
// 查询
if (this.filterText.length) {
this.open1 = false // 显示第二个tree
this.treeLoading = true
this.defaultKey = []
this.$http.get('SarInstitution/institution/getNextTwo', {
userName: this.filterText
}, {}, res => {
this.treeData1 = res
this.treeData1.forEach(item => {
this.defaultKey.push(item.id)
})
this.nameJoinAccount(this.treeData1)
this.treeLoading = false
})
// this.treeKey++
// this.$http.get('SarInstitution/institution/institutionAndUser', {
// userName: this.filterText
// }, {}, res => {
// this.treeData1 = res.data
// this.treeData1.forEach(item => {
// this.defaultKey.push(item.id)
// })
// console.log(1);
// this.getChildren()
// this.treeLoading = false
// })
} else {
this.open1 = true
}
},
changeInput:debounce(function (val) {
// this.$http.get('SarInstitution/institution/institutionAndUser', {
// userName: this.filterText
// }, {}, res => {
// this.treeData1 = res.data
// this.treeData1.forEach(item => {
// this.defaultKey.push(item.id)
// })
// console.log(1);
// this.getChildren()
// this.treeLoading = false
// })
} else {
this.open1 = true
}
},
changeInput: debounce(function (val) {
if (val.length) {
this.open1 = false
this.treeLoading = true
@@ -257,28 +265,7 @@
this.open1 = true
}
}),
checkChange2 (row, type, c) {
if (this.checkBox) {
} else {
if (type) {
this.nodeList2.push(row.id)
this.delList.push(row)
} else {
for (let a = 0; a < this.nodeList2.length; a ++) {
if (row.id === this.nodeList2[a]) {
this.nodeList2.splice(a, 1)
}
}
for (let b = 0; b < this.delList.length; b++) {
if (row.id === this.delList[b].id) {
this.delList.splice(b, 1)
}
}
}
}
},
checkChange (row, type, c) {
//节点选中状态发生变化时的回调(传递给 data 属性的数组中该节点所对应的对象、节点本身是否被选中、节点的子树中是否有被选中的节点)
checkChange2(row, type, c) {
if (this.checkBox) {
} else {
if (type) {
@@ -298,14 +285,35 @@
}
}
},
handleTreeDrawerCancel () {
checkChange(row, type, c) {
//节点选中状态发生变化时的回调(传递给 data 属性的数组中该节点所对应的对象、节点本身是否被选中、节点的子树中是否有被选中的节点)
if (this.checkBox) {
} else {
if (type) {
this.nodeList2.push(row.id)
this.delList.push(row)
} else {
for (let a = 0; a < this.nodeList2.length; a++) {
if (row.id === this.nodeList2[a]) {
this.nodeList2.splice(a, 1)
}
}
for (let b = 0; b < this.delList.length; b++) {
if (row.id === this.delList[b].id) {
this.delList.splice(b, 1)
}
}
}
}
},
handleTreeDrawerCancel() {
this.filterText = ''
this.open1 = true
this.visible = false
},
saveUserInfo () {
if(this.roleList.length === 0){
this.roleList.push({id:"",name:""});
saveUserInfo() {
if (this.roleList.length === 0) {
this.roleList.push({id: "", name: ""});
}
if (this.checkBox) {
this.$emit('checkedRole', this.roleList)
@@ -342,9 +350,9 @@
}
this.open1 = true
},
drawerCheck (data) {
//当复选框被点击的时候触发
//共两个参数,依次为:传递给 data 属性的数组中该节点所对应的对象、树目前的选中状态对象,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性
drawerCheck(data) {
//当复选框被点击的时候触发
//共两个参数,依次为:传递给 data 属性的数组中该节点所对应的对象、树目前的选中状态对象,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性
if (this.checkBox) { // 单选
// 单选判断
let getlist = this.$refs.tree.getCheckedNodes()
@@ -361,31 +369,31 @@
this.delList = [data]
}
} else { // 多选
if (this.roleList.length === 0) {
this.roleList.push(data)
} else {
let delFlag = true
this.roleList.forEach((item, index) => {
if (item.id === data.id) {
this.roleList.splice(index, 1)
delFlag = false
}
})
if (delFlag) {
this.roleList.push(data)
if (this.roleList.length === 0) {
this.roleList.push(data)
} else {
let delFlag = true
this.roleList.forEach((item, index) => {
if (item.id === data.id) {
this.roleList.splice(index, 1)
delFlag = false
}
})
if (delFlag) {
this.roleList.push(data)
}
}
}
// this.roleList = this.$refs.tree.getCheckedNodes().concat(this.$refs.tree.getHalfCheckedNodes())
// this.roleList = this.$refs.tree.getCheckedNodes().concat(this.$refs.tree.getHalfCheckedNodes())
}
},
loadNode(node, resolve) {
//加载子树数据的方法,仅当 lazy 属性为true 时生效
//加载子树数据的方法,仅当 lazy 属性为true 时生效
if (node.level === 0) {
return resolve(this.treeData);
}
this.getChildren(node, resolve)
},
getChildren (node, resolve) {
getChildren(node, resolve) {
this.$http.get('SarInstitution/institution/getNext', {
institutionId: node.key,
userName: this.filterText
@@ -393,16 +401,16 @@
resolve(res)
})
},
getTree () {
getTree() {
this.treeLoading = true
this.$http.get('SarInstitution/institution/getFirstInstitution', {}, {}, res=> {
this.$http.get('SarInstitution/institution/getFirstInstitution', {}, {}, res => {
this.treeData = res
this.treeLoading = false
})
}
},
watch: {
isVisible (val) {
isVisible(val) {
this.visible = val
if (val) {
this.nodeList2 = this.nodeList
@@ -434,7 +442,7 @@
this.$emit('update:isVisible', val)
}
},
mounted () {
mounted() {
this.getTree()
}
}
@@ -445,12 +453,15 @@
overflow: auto;
height: calc(~'100% - 300px');
}
.divDel {
border-top: 1px solid #000;
height: 300px;
.divDel_title {
margin: 10px;
}
.divDel_box {
height: 266px;
padding: 0px 0 10px;
@@ -458,50 +469,59 @@
flex-wrap: wrap;
overflow: auto;
margin: 10px;
align-content: flex-start;
align-content: flex-start;
span {
margin: 0px 5px 5px 0;
}
}
}
/deep/ .icon-tree {
margin: 0 5px 0 10px;
position: relative;
background: url('~@/assets/images/shangqi/img/tree-add.png');
background-size: 100% 100%;
}
/deep/.el-tree-node__content {
margin: 0 5px 0 10px;
position: relative;
background: url('~@/assets/images/shangqi/img/tree-add.png');
background-size: 100% 100%;
}
/deep/ .el-tree-node__content {
padding-left: 0px !important;
}
/deep/ .is-leaf{
background-image:none;
background-size:100% 100%;
/deep/ .is-leaf {
background-image: none;
background-size: 100% 100%;
}
/deep/ .is-leaf-none{
/deep/ .is-leaf-none {
position: relative;
display: inline-block;
width: 15px;
height: 15px;
background:url('~@/assets/images/shangqi/img/personnel.png');
background-size:100% 100%;
background: url('~@/assets/images/shangqi/img/personnel.png');
background-size: 100% 100%;
}
/deep/ .is-show{
/deep/ .is-show {
position: relative;
display: inline-block;
width: 15px;
height: 15px;
background:url('~@/assets/images/shangqi/img/mechanism.png');
background-size:100% 100%;
background: url('~@/assets/images/shangqi/img/mechanism.png');
background-size: 100% 100%;
}
/deep/.tree-line{
/deep/ .tree-line {
.el-tree-node {
position: relative;
padding-left: 0px; // 缩进量
line-height: 30px;
}
.el-tree-node__children {
padding-left: 16px; // 缩进量
}
// 竖线
.el-tree-node::before {
content: "";
@@ -513,10 +533,12 @@
border-width: 1px;
border-left: 1px dashed #858990e0;
}
// 当前层最后一个节点的竖线高度固定
.el-tree-node:last-child::before {
height: 38px; // 可以自己调节到合适数值
}
// 横线
.el-tree-node::after {
content: "";
@@ -528,18 +550,21 @@
border-width: 1px;
border-top: 1px dashed #858990e0;
}
// 去掉最顶层的虚线,放最下面样式才不会被上面的覆盖了
& > .el-tree-node::after {
border-top: none;
}
& > .el-tree-node::before {
border-left: none;
}
// 展开关闭的icon
.el-tree-node__expand-icon{
.el-tree-node__expand-icon {
font-size: 16px;
// 叶子节点(无子节点)
&.is-leaf{
&.is-leaf {
color: transparent;
// display: none; // 也可以去掉
}
@@ -34,15 +34,15 @@
<!--</table-tools-bar>-->
<div class="content">
<!--<div class="action-bar">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- class="common-button-primary add-button"-->
<!-- round-->
<!-- @click="addRow"-->
<!-- v-btn-permission="'XBRKH5BP5K'"-->
<!-- ><i class="el-icon-plus"></i>新增</el-button>-->
<!--</div>-->
<div class="action-bar">
<!-- v-btn-permission="'XBRKH5BP5K'"-->
<el-button
type="primary"
class="common-button-primary add-button"
round
@click="addRow"
><i class="el-icon-plus"></i>新增</el-button>
</div>
<loading :loading="tableDataLoading">{{$t('m.dataProcessing')}}</loading>
<el-table
border
@@ -85,7 +85,8 @@
<el-dropdown trigger="click" @command="handleCommand">
<i class="iconfont">&#xe61e;</i>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-btn-permission="'VTY972T56Q'" :command="[scope.row, '编辑']">{{$t('m.edit')}}</el-dropdown-item>
<!-- v-btn-permission="'VTY972T56Q'"-->
<el-dropdown-item :command="[scope.row, '编辑']">{{$t('m.edit')}}</el-dropdown-item>
<!--<el-dropdown-item v-btn-permission="'UCDDYPWEFT'" :command="[scope.row, '删除']">{{$t('m.delete')}}</el-dropdown-item>-->
</el-dropdown-menu>
</el-dropdown>
@@ -35,12 +35,12 @@
<div class="content">
<div class="action-bar">
<!-- v-btn-permission="'XBRKH5BP5K'"-->
<el-button
type="primary"
class="common-button-primary add-button"
round
@click="addRow"
v-btn-permission="'XBRKH5BP5K'"
><i class="el-icon-plus"></i>新增</el-button>
</div>
<loading :loading="tableDataLoading">{{$t('m.dataProcessing')}}</loading>
@@ -77,8 +77,10 @@
<el-dropdown trigger="click" @command="handleCommand">
<i class="iconfont">&#xe61e;</i>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-btn-permission="'VTY972T56Q'" :command="[scope.row, '编辑']">{{$t('m.edit')}}</el-dropdown-item>
<el-dropdown-item v-btn-permission="'UCDDYPWEFT'" :command="[scope.row, '删除']">{{$t('m.delete')}}</el-dropdown-item>
<!-- v-btn-permission="'VTY972T56Q'"-->
<el-dropdown-item :command="[scope.row, '编辑']">{{$t('m.edit')}}</el-dropdown-item>
<!-- v-btn-permission="'UCDDYPWEFT'"-->
<el-dropdown-item :command="[scope.row, '删除']">{{$t('m.delete')}}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
@@ -163,7 +163,8 @@ export default {
prcId: row.prcId,
prcNum: row.prcNum,
prcName: row.prcName,
prcType: row.prcType
prcType: row.prcType,
taskDefinitionKey: row.taskDefinitionKey
}
const params = {}
let name = ''
@@ -648,7 +649,13 @@ export default {
case '重新起草':
params.type = 'step1_1'
break
}
case '33':
name = 'policyConsultation'
break
case '34':
name = 'policyComplianceReview'
break
}
break
}
this.$router.push({ name, query, params })
@@ -115,6 +115,15 @@
:loading="submitLoading"
v-if="showOver2"
>驳回</el-button>
<el-button
type="danger"
size="small"
class="common-button-danger"
icon="el-icon-close"
@click="rejectClick"
:loading="rejectLoading"
v-if="showReject"
>驳回</el-button>
<el-button
type="primary"
size="mini"
@@ -351,6 +360,14 @@ export default {
type: Boolean,
default: false
},
rejectLoading:{
type: Boolean,
default: false
},
showReject:{
type: Boolean,
default: false
},
backBTNTexts: {
type: String
},
@@ -372,6 +389,9 @@ export default {
}
},
methods: {
rejectClick(){
this.$emit('reject')
},
handleOver() {
this.$emit('over')
},
@@ -132,6 +132,14 @@ export default {
label: "政策法规资料入库流程",
value: "32"
},
{
label: "政策征求意见流程",
value: "33"
},
{
label: '重点认证标准/政策合规性项目审查流程',
value: "34"
}
],
formDisableFlag: false,
pickerOptions: {
@@ -0,0 +1,118 @@
<template>
<el-dialog width='400px' :visible.sync="fileMadel" :title="title">
<el-upload
v-if="fileMadel"
multiple
class="upload-demo"
drag
:action="fileUrl"
ref="importfile"
name="file"
:before-upload="beginImportFile"
:on-success="importFileSuccess"
:on-remove="importFileRemove"
:show-file-list="true"
:file-list="fileList"
>
<div style="padding: 20px 0">
<i class="el-icon-upload" style="color: #3399ff"></i>
<p>点击或拖拽上传文件</p>
</div>
</el-upload>
</el-dialog>
</template>
<script>
export default {
name: "processFile",
props: {
title: {
type: String,
default: '上传文件'
},
fileMax_M: {
type: Number,
default: 0
},
accept: {
type: String,
default: '*'
}
},
data() {
return {
fileMadel: false,
fileUrl: 'api/att/attFile/uploadNew',
fileList: [],
}
},
methods: {
getFile(fileList) {
this.fileList = fileList || []
this.fileMadel = true
},
beginImportFile(file) {
var filename = file.name
var index1 = filename.lastIndexOf('.')
var index2 = filename.length
var fileSuffix = filename.substring(index1, index2)
fileSuffix = fileSuffix.toLowerCase()
if (this.fileMax_M > 0) {
if (file.size / 1024 / 1024 > this.fileMax_M) {
this.$message({
message: '文件' + file.name + '大小不超过' + this.fileMax_M + 'M',
type: 'warning'
})
return false
}
}
if (this.accept == '*') {
} else {
if (this.accept.includes(fileSuffix)) {
return true
} else {
this.$message.error('文件' + file.name + '格式不正确,请上传' + this.accept + '文件')
return false
}
}
return true
},
// 导入标准数据成功后执行
importFileSuccess(response, file, fileList) {
if (response.ok) {
let templateFileList = []
let list = []
fileList.forEach(item => {
let data = item.response ? item.response.data : item
templateFileList.push(data)
list.push(data.id)
})
let templateFileId = list.join(',')
this.$emit('uploadSuccess', templateFileList, templateFileId)
this.$message({
// showClose: true,
message: response.message,
type: 'success'
})
} else {
this.$message.error('程序异常,上传失败')
}
},
importFileRemove(file, fileList) {
let list = []
let templateFileList = []
fileList.forEach(item => {
templateFileList.push(item)
list.push(item.name)
})
let templateFileName = list.join(',')
this.$emit('uploadSuccess', templateFileList, templateFileName)
},
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,460 @@
<template>
<div>
<el-drawer
:title="multipleTableTitle"
:visible.sync="multipleTableItemDialog"
size="700px"
custom-class="demo-drawer"
>
<div class="demo-drawer-content">
<div class="content">
<div class="standard-table-search">
<el-row :gutter="24">
<el-col :span="24">
<el-form :model="multipleTableItemForm" inline class="label-input-form"
:rules="multipleTableItemFormRules" label-width="180px"
ref="multipleTableItemRef">
<el-form-item prop="business" label="业务名称"
class="add-form-item">
<el-input v-model="multipleTableItemForm.business"
placeholder="请输入业务名称"/>
</el-form-item>
<el-form-item prop="platform" label="平台名称"
class="add-form-item">
<el-input v-model="multipleTableItemForm.platform"
placeholder="请输入平台名称"/>
</el-form-item>
<el-form-item prop="project" label="项目"
class="add-form-item">
<el-input v-model="multipleTableItemForm.project"
placeholder="请输入项目"/>
</el-form-item>
<el-form-item prop="projectDescription" label="项目描述"
class="add-form-item">
<el-input v-model="multipleTableItemForm.projectDescription"
placeholder="请输入项目描述"/>
</el-form-item>
<el-form-item prop="currentNode" label="当前节点"
class="add-form-item">
<el-input v-model="multipleTableItemForm.currentNode"
placeholder="请输入当前节点"/>
</el-form-item>
<el-form-item v-for="(item, index) in infoTableDatas"
:prop="'infoTableData' + index"
class="add-form-item">
<span slot="label" :title="item.lawName">{{ item.lawName }} </span>
<el-input v-model="multipleTableItemForm.infoTableData['infoTableData' + index]"
placeholder="请输入"/>
</el-form-item>
<el-form-item prop="gZeroDate" label="G0"
class="add-form-item">
<el-date-picker
v-model="multipleTableItemForm.gZeroDate"
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item prop="gOneDate" label="G1"
class="add-form-item">
<el-date-picker
v-model="multipleTableItemForm.gOneDate"
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item prop="gTwoDate" label="G2"
class="add-form-item">
<el-date-picker
v-model="multipleTableItemForm.gTwoDate"
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item prop="gThreeDate" label="G3"
class="add-form-item">
<el-date-picker
v-model="multipleTableItemForm.gThreeDate"
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item prop="gFourDate" label="G4"
class="add-form-item">
<el-date-picker
v-model="multipleTableItemForm.gFourDate"
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item prop="gFiveDate" label="G5"
class="add-form-item">
<el-date-picker
v-model="multipleTableItemForm.gFiveDate"
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item prop="gSixDate" label="G6"
class="add-form-item">
<el-date-picker
v-model="multipleTableItemForm.gSixDate"
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item prop="gSevenDate" label="G7"
class="add-form-item">
<el-date-picker
v-model="multipleTableItemForm.gSevenDate"
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item prop="gEightDate" label="G8"
class="add-form-item">
<el-date-picker
v-model="multipleTableItemForm.gEightDate"
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item prop="gNineDate" label="G9"
class="add-form-item">
<el-date-picker
v-model="multipleTableItemForm.gNineDate"
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item prop="gTenDate" label="G10"
class="add-form-item">
<el-date-picker
v-model="multipleTableItemForm.gTenDate"
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item prop="gElevenDate" label="G11"
class="add-form-item">
<el-date-picker
v-model="multipleTableItemForm.gElevenDate"
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item prop="gTwelveDate" label="G12"
class="add-form-item">
<el-date-picker
v-model="multipleTableItemForm.gTwelveDate"
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item prop="gThirteenDate" label="G13"
class="add-form-item">
<el-date-picker
v-model="multipleTableItemForm.gThirteenDate"
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item prop="conceptualState" label="概念状态"
class="add-form-item">
<el-input v-model="multipleTableItemForm.conceptualState"
placeholder="请输入概念状态"/>
</el-form-item>
<el-form-item prop="conceptPlanReleaseTime" label="概念计划下发时间"
class="add-form-item">
<el-date-picker
v-model="multipleTableItemForm.conceptPlanReleaseTime"
type="date"
placeholder="请选择概念计划下发时间"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item prop="conceptRevisionPlan" label="概念修订计划"
class="add-form-item">
<el-input v-model="multipleTableItemForm.conceptRevisionPlan"
placeholder="请输入概念修订计划"/>
</el-form-item>
<el-form-item prop="additionalNotes" label="其他说明"
class="add-form-item">
<el-input v-model="multipleTableItemForm.additionalNotes"
placeholder="请输入其他说明"/>
</el-form-item>
</el-form>
</el-col>
</el-row>
</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>
</div>
</template>
<script>
export default {
name: "addModel",
data() {
return {
multipleTableTitle: '',
multipleTableItemDialog: false,
multipleTableItemForm: {
infoTableData: {},
},
infoTableDatas: [],
multipleTableItemFormRules: {
business: [
{
required: true,
message: '请输入业务名称',
trigger: 'blur'
}
],
platform: [
{
required: true,
message: '请输入平台',
trigger: 'blur'
}
],
project: [
{
required: true,
message: '请输入项目',
trigger: 'blur'
}
],
projectDescription: [
{
required: false,
message: '请输入项目描述',
trigger: 'blur'
}
],
currentNode: [
{
required: false,
message: '请输入当前节点',
trigger: 'blur'
}
],
gZeroDate: [
{
required: true,
message: '请选择时间',
trigger: 'change'
}
],
gOneDate: [
{
required: true,
message: '请选择时间',
trigger: 'change'
}
],
gTwoDate: [
{
required: true,
message: '请选择时间',
trigger: 'change'
}
],
gThreeDate: [
{
required: true,
message: '请选择时间',
trigger: 'change'
}
],
gFourDate: [
{
required: true,
message: '请选择时间',
trigger: 'change'
}
],
gFiveDate: [
{
required: true,
message: '请选择时间',
trigger: 'change'
}
],
gSixDate: [
{
required: true,
message: '请选择时间',
trigger: 'change'
}
],
gSevenDate: [
{
required: true,
message: '请选择时间',
trigger: 'change'
}
],
gEightDate: [
{
required: true,
message: '请选择时间',
trigger: 'change'
}
],
gNineDate: [
{
required: true,
message: '请选择时间',
trigger: 'change'
}
],
gTenDate: [
{
required: true,
message: '请选择时间',
trigger: 'change'
}
],
gElevenDate: [
{
required: true,
message: '请选择时间',
trigger: 'change'
}
],
gTwelveDate: [
{
required: true,
message: '请选择时间',
trigger: 'change'
}
],
gThirteenDate: [
{
required: true,
message: '请选择时间',
trigger: 'change'
}
],
conceptualState: [
{
required: true,
message: '请输入概念状态',
trigger: 'blur'
}
],
conceptPlanReleaseTime: [
{
required: true,
message: '请选择概念计划下发时间',
trigger: 'change'
}
],
conceptRevisionPlan: [
{
required: true,
message: '请输入概念修订计划',
trigger: 'blur'
}
],
additionalNotes: [
{
required: false,
message: '请输入其他说明',
trigger: 'blur'
}
]
},
isSubmit: false,
}
},
methods: {
add(list) {
this.multipleTableItemDialog = true
this.infoTableDatas = JSON.parse(JSON.stringify(list))
this.multipleTableTitle = '新增'
this.multipleTableItemForm = {
infoTableData: {},
}
this.multipleTableItemForm = {...this.multipleTableItemForm}
this.$nextTick(() => {
this.$refs['multipleTableItemRef'].clearValidate()
})
},
edit(row, list) {
this.multipleTableItemDialog = true
this.multipleTableTitle = '编辑'
this.infoTableDatas = JSON.parse(JSON.stringify(list))
this.$nextTick(() => {
this.multipleTableItemForm = JSON.parse(JSON.stringify(row))
if (!this.multipleTableItemForm.infoTableData) {
this.multipleTableItemForm.infoTableData = {}
}
this.multipleTableItemForm = {...this.multipleTableItemForm}
this.$refs['multipleTableItemRef'].clearValidate()
})
},
cancel() {
this.multipleTableItemDialog = false
},
submit() {
this.$refs['multipleTableItemRef'].validate((valid) => {
if (valid) {
let timestamp = new Date().getTime();
let multipleTableItemForm = JSON.parse(JSON.stringify(this.multipleTableItemForm))
if (!multipleTableItemForm.dataId && !multipleTableItemForm.id) {
multipleTableItemForm.dataId = timestamp
}
this.isSubmit = true
this.$emit('addModelForm', multipleTableItemForm)
this.multipleTableItemDialog = false
this.$nextTick(() => {
this.isSubmit = false
})
}
})
}
}
}
</script>
<style 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>
@@ -0,0 +1,86 @@
<template>
<el-table
height="100%"
ref="selection"
:data="histortData"
tooltip-effect="dark"
style="width: 100%"
border
row-key="id"
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}">
<el-table-column
prop="name"
label="任务步骤"
align="center"
>
</el-table-column>
<el-table-column
prop="assignee"
label="任务受理人"
align="center"
>
</el-table-column>
<el-table-column
prop="createTime"
label="创建时间"
align="center">
<template slot-scope="scope">
<span>{{ scope.row.createTime ? $moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') : '' }}</span>
</template>
</el-table-column>
<el-table-column
prop="endTime"
label="完成时间"
align="center">
<template slot-scope="scope">
<span>{{ scope.row.endTime ? $moment(scope.row.endTime).format('YYYY-MM-DD HH:mm:ss') : '' }}</span>
</template>
</el-table-column>
<el-table-column
prop="comment"
label="流程信息"
align="center">
<template slot-scope="scope">
<span>{{ scope.row.commentText }}</span>
</template>
</el-table-column>
<el-table-column
prop="completeFlag"
label="状态"
align="center">
<template slot-scope="scope">
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
</template>
</el-table-column>
</el-table>
</template>
<script>
export default {
name: "approvalHistory",
data() {
return {
histortData: [],
}
},
mounted() {
if (this.$route.query.prcNum) {
this.getHistoryData()
}
},
methods: {
getHistoryData() {
this.$http.get('lawss/activiti/get_list_by_instance', {
prcNum: this.$route.query.prcNum,
}, {}, res => {
this.histortData = res || []
}, e => {
})
},
},
}
</script>
<style scoped>
</style>
@@ -0,0 +1,234 @@
<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="resourceAccordwithCircumstance" label="资源符合情况"
class="add-form-item">
<el-input v-model="multipleTableItemForm.resourceAccordwithCircumstance"
placeholder="请输入资源符合情况"/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="devPlan" label="开发计划"
class="add-form-item">
<el-input v-model="multipleTableItemForm.devPlan"
placeholder="请输入开发计划"/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="sopDate" label="SOP时间"
class="add-form-item">
<el-date-picker
v-model="multipleTableItemForm.sopDate"
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="finishCircumstance" label="完成情况"
style="width: 100%; margin-right:10px" class="add-form-item">
<el-input v-model="multipleTableItemForm.finishCircumstance"
placeholder="请输入完成情况"/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="sopDateSolutions"
style="width: 100%;" class="add-form-item">
<span slot="label" title="SOP时间超过法规时限的空档期的业务应对方案">
SOP时间超过法规时限的空档期的业务应对方案
</span>
<el-input v-model="multipleTableItemForm.sopDateSolutions"
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"
}
],
resourceAccordwithCircumstance: [
{
type: "string",
max: 200,
message: "资源符合情况不能超过200个字符",
trigger: "blur"
}
],
devPlan: [
{
type: "string",
max: 200,
message: "开发计划不能超过200个字符",
trigger: "blur"
}
],
finishCircumstance: [
{
type: "string",
max: 200,
message: "完成情况不能超过200个字符",
trigger: "blur"
}
],
sopDateSolutions: [
{
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>
@@ -0,0 +1,155 @@
<template>
<div style="margin-top: 10px">
<el-table
:data="infoTableDatas"
ref="multipleTable"
tooltip-effect="dark"
border
style="width: 100%;"
height="500"
:header-cell-style="{background: '#E8E8E8', color: '#333333', fontSize: '16px',
fontWeight: 'bold', height: '48px'}">
<el-table-column
type="selection"
width="55"
align="center">
</el-table-column>
<el-table-column
prop="lawCode"
label="标准编号/政策编号"
show-overflow-tooltip
align="center"
width="180"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="lawName"
label="标准名称/政策名称"
min-width="180"
align="center"
>
</el-table-column>
<el-table-column
prop="productType"
show-overflow-tooltip
width="120"
align="center"
label="产品类型">
</el-table-column>
<el-table-column
prop="implTime"
align="center"
show-overflow-tooltip
width="170"
label="实施日期">
</el-table-column>
<el-table-column
prop="implRequire"
show-overflow-tooltip
align="center"
width="180"
label="实施要求">
</el-table-column>
<el-table-column
prop="resourceAccordwithCircumstance"
show-overflow-tooltip
align="center"
width="180"
label="资源符合情况">
</el-table-column>
<el-table-column
prop="devPlan"
align="center"
show-overflow-tooltip
width="180"
label="开发计划">
</el-table-column>
<el-table-column
prop="sopDate"
align="center"
show-overflow-tooltip
width="170"
label="SOP时间">
</el-table-column>
<el-table-column
prop="finishCircumstance"
align="center"
width="180"
show-overflow-tooltip
label="完成情况">
</el-table-column>
<el-table-column
prop="sopDateSolutions"
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">
<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: [],
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]
},
editModel(row, index) {
this.selectNum = index
this.$refs.businessDivisionEditRef.edit(JSON.parse(JSON.stringify(row)))
},
}
}
</script>
<style scoped>
.scopeText {
color: #66b1ff;
cursor: pointer;
}
</style>
@@ -0,0 +1,436 @@
<template>
<div style="margin-top: 10px">
<div class="tableTitle">
<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>
</div>
<div class="table-wrap">
<el-table
@selection-change="selectChange"
:data="infoTableDatas"
ref="multipleTable"
tooltip-effect="dark"
border
style="width: 100%; flex: auto;"
class="drag-table"
height="500px"
:header-cell-style="{background: '#E8E8E8', color: '#333333', fontSize: '16px',
fontWeight: 'bold', height: '48px'}">
<el-table-column
type="selection"
width="55"
align="center">
</el-table-column>
<el-table-column
label="标准编号/政策编号"
show-overflow-tooltip
prop="lawCode"
align="center"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="lawName"
label="标准名称/政策名称"
align="center"
>
</el-table-column>
<el-table-column
prop="productType"
width="200px"
align="center"
show-overflow-tooltip
label="产品类型">
</el-table-column>
<el-table-column
prop="implTime"
align="center"
show-overflow-tooltip
width="160px"
label="实施日期">
</el-table-column>
<el-table-column
prop="implRequire"
align="center"
width="200px"
show-overflow-tooltip
label="实施要求">
</el-table-column>
</el-table>
</div>
<el-drawer ref="standard"
title="查询结果"
size="1000px"
:visible.sync="standardDrawer"
direction="rtl"
:before-close="handleReviseDrawerClose">
<div class="standard-content">
<div class="content">
<div class="standard-table-search">
<el-form :model="standardSearchForm" inline class="label-input-form search-area">
<el-form-item label="标准编号/政策编号" style="margin-right:10px" prop="lawsNumber"
class="search-item">
<el-input v-model="standardSearchForm.lawCode"
clearable placeholder="根据编号查找"
:maxlength="100"
@keyup.enter.native="getDomesticStandardTable"/>
</el-form-item>
<el-form-item label="标准名称/政策名称" style="margin-right:10px" prop="lawsName"
class="search-item">
<el-input v-model="standardSearchForm.lawName"
placeholder="根据名称查找"
clearable
:maxlength="100"></el-input>
</el-form-item>
<el-form-item label="产品类型" style="margin-right:10px" prop="productType" class="search-item">
<el-select v-model="standardSearchForm.productType" filterable
clearable>
<el-option
v-for="item in productTypeOptions"
placeholder="请选择"
:key="item.value"
:value="item.value"
:label="item.label"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button size="mini"
type="primary"
class="common-button-primary"
@click="getDomesticStandardTable">
查询
</el-button>
<el-button class="common-button-default"
size="mini"
@click="handleResetSearch">
清空
</el-button>
</el-form-item>
</el-form>
</div>
<div class="standard-table-wrap">
<el-table
ref="reviseDrawerTable"
:data="standardData"
tooltip-effect="dark"
style="width: 100%;"
height="calc(100vh - 240px)"
border
class="drag-table"
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}"
@selection-change="standSelectChange">
<el-table-column
type="selection"
width="55"
align="center">
</el-table-column>
<el-table-column
prop="lawCode"
width="200"
show-overflow-tooltip
label="标准编号/政策编号"
align="center">
</el-table-column>
<el-table-column
prop="lawName"
show-overflow-tooltip
label="标准名称/政策名称"
align="center"
width="220px"
>
</el-table-column>
<el-table-column
prop="productType"
label="产品类型"
show-overflow-tooltip
align="center">
</el-table-column>
<el-table-column
prop="implTime"
label="实施时间"
show-overflow-tooltip
width="150"
align="center">
</el-table-column>
<el-table-column
prop="implRequire"
label="实施要求"
show-overflow-tooltip
align="center">
</el-table-column>
<el-table-column label="操作" align="center" width="80">
<template slot-scope="scope">
<el-button class="opera-btn"
size="mini"
type="primary"
@click="handlePreview(scope.row)">查看
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<pagination
:page="page"
:total="total"
@pageChange="handleStandardPageChange"
@pageSizeChange="handleStandardPageSizeChange"></pagination>
<loading :loading="loadSarStandard">数据获取中</loading>
</div>
</div>
<div class="demo-drawer-footer">
<el-button round
class="common-button-primary"
icon="el-icon-check"
type="primary"
@click="handleProcessStandardNext(2)">带入
</el-button>
<el-button round
class="common-button-default"
icon="el-icon-close"
@click="handleProcessStandardNext(3)">取消
</el-button>
</div>
</el-drawer>
</div>
</template>
<script>
export default {
name: "fetchList",
data() {
return {
infoTableDatas: [],
standardDrawer: false,
standardSearchForm: {},
page: 1,
pageSize: this.$store.getters.userInfo.configContent,
total: 0,
loadSarStandard: false,
standardData: [],
selectedList: [],
standardCheckedList: [],
productTypeOptions: [
{
label: '树形结构',
value: 'TREE'
},
{
label: '下拉选项',
value: 'SEL_OPTION'
}
],
deleteSelectedList: [],
taskKey: this.$route.query.taskDefinitionKey,
}
},
computed:{
showTableButton() {
if (this.$route.query.operate && this.$route.query.operate == 'view') {
return false
}
if (!this.taskKey || this.taskKey == 'PolicyComplianceProgramReviewProcessKey1' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey3') {
return true
}
return false
},
},
methods: {
getData(row) {
this.infoTableDatas = row
this.infoTableDatas = [...this.infoTableDatas]
},
submit(callback) {
if (this.infoTableDatas && this.infoTableDatas.length > 0) {
callback && callback()
} else {
this.$message.warning('请至少添加一条数据')
}
},
// 点击查看
handlePreview(item) {
let routeUrl = this.$router.resolve({
name: 'OtherLawsStandDetails',
params: {
id: item.id,
pageType: 'LAWS_STAND'
}
})
window.open(routeUrl.href, '_blank')
},
selectChange(data) {
this.deleteSelectedList = []
for (let i = 0; i < data.length; i++) {
this.deleteSelectedList.push(data[i].id)
}
},
handleSearchStandard() {
this.standardDrawer = true
this.handleResetSearch()
},
handleReviseDrawerClose(done) {
done()
},
handleResetSearch() {
this.page = 1
this.standardSearchForm = {}
this.getDomesticStandardTable()
},
handleStandardPageChange(page) {
this.page = page
this.getDomesticStandardTable()
},
handleStandardPageSizeChange(pageSize) {
this.page = 1
this.pageSize = this.$store.getters.userInfo.configContent
this.getDomesticStandardTable()
},
getDomesticStandardTable() {
this.loadSarStandard = true
let query = {
standType: 'INLAND',
...this.standardSearchForm,
page: this.page,
pageSize: this.pageSize
}
this.$http.get('sarIssueTrack/issueTrack', query, {_this: this}, res => {
this.loadSarStandard = false
if (res.ok) {
this.standardData = res.data.records
this.total = res.data.total
}
}, e => {
this.loadSarStandard = false
})
},
standSelectChange(data) {
this.selectedList = []
for (let i = 0; i < data.length; i++) {
this.selectedList.push(data[i].id)
}
this.standardCheckedList = data
},
handleProcessStandardNext(status) {
switch (status) {
case 2:
if (this.standardCheckedList && this.standardCheckedList.length >= 1) {
let exits = [];
this.standardCheckedList.map(item => {
let newStand = false;
for (let itemKey of this.infoTableDatas) {
if (item.id == itemKey.id) {
newStand = true;
break;
}
}
if (newStand) {
this.$message.warning("请勿重复添加数据");
} else {
this.infoTableDatas.push(item);
exits.push(item.id);
}
})
this.standardDrawer = false
} else {
this.$message.warning('请选择要带入的数据')
}
break
// 取消
case 3:
this.selectedList = []
this.standardCheckedList = []
this.standardDrawer = false
break
}
},
handleDeleteStandard() {
this.$confirm('是否删除该数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
//拿出deleteSelectedList里的每一个元素
this.deleteSelectedList.map(item => {
let index;
index = this.infoTableDatas.findIndex(items => {
//返回infoTableDatas里id和deleteSelectedList的id相同的元素对应的位置
return items.id === item;
});
//如果符合条件,就删除(==-1是没有符合条件的意思)
if (index > -1) {
this.infoTableDatas.splice(index, 1);
}
});
this.selectList = [];
this.$message({
type: 'success',
message: '删除成功!'
});
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
});
});
},
}
}
</script>
<style lang="less" scoped>
.standard-content {
height: 100%;
padding: 10px 0 0;
.content {
height: 100%;
display: flex;
flex-direction: column;
padding: 0 10px;
.standard-table-wrap {
flex: auto;
overflow-y: auto;
}
.pagination {
position: static;
/deep/ .pagination-slot {
padding: 0;
}
}
.search-area {
display: flex;
justify-content: left;
background: #FFF;
padding: 10px 10px 0;
}
}
}
.demo-drawer-footer {
height: 70px !important;
}
.tableTitle {
margin-bottom: 10px;
height: 30px;
line-height: 30px;
position: relative;
font-size: 13px;
font-weight: bold;
.tableButton {
position: absolute;
right: 0;
top: 0;
}
}
</style>
@@ -0,0 +1,336 @@
<template>
<div class="block" style="padding-top: 20px;">
<el-timeline>
<el-form
ref="Form"
:model="roleForm"
:rules="roleFormRules"
class="label-input-form myForm">
<el-timeline-item timestamp="发起流程" placement="top" :color="roleForm.prcCreateUser ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="prcCreateUserName" style="margin-bottom: 0">
<h4>起草</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.prcCreateUser"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.prcCreateUserName"
placeholder="流程发起人"
disabled></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="审核" placement="top"
:color="roleForm.responseDockerId ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="shr1UserNames" style="margin-bottom: 0">
<h4>审核</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.shr1UserIds"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.shr1UserNames" readonly
placeholder="选择审核人"
@click.native="choicePeoPle('shr1UserIds', '选择审核人', roleForm.shr1UserIds,false)"></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="审定" placement="top"
:color="roleForm.sdr1UserIds ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="sdr1UserNames" style="margin-bottom: 0">
<h4>审定</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.sdr1UserIds"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.sdr1UserNames" readonly
placeholder="选择审定人"
@click.native="choicePeoPle('sdr1UserIds', '选择审定人', roleForm.sdr1UserIds,false)"></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="批准" placement="top"
:color="roleForm.pzr1UserId ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="pzr1UserName" style="margin-bottom: 0">
<h4>批准</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.pzr1UserId"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.pzr1UserName" readonly
placeholder="选择批准人"
@click.native="choicePeoPle('pzr1UserId', '选择批准人', roleForm.pzr1UserId,true)"></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="责任对接人分配任务" placement="top"
:color="roleForm.djrUserIds ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="djrUserNames" style="margin-bottom: 0">
<h4>责任对接人分配任务</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.djrUserIds"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.djrUserNames" readonly
placeholder="责任对接人分配任务"
@click.native="choicePeoPle('djrUserIds', '责任对接人分配任务', roleForm.djrUserIds,false)"></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="管理员" placement="top"
:color="roleForm.glyUserId ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="glyUserName" style="margin-bottom: 0">
<h4>管理员</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.glyUserId"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.glyUserName" readonly
placeholder="管理员"
@click.native="choicePeoPle('glyUserId', '管理员', roleForm.glyUserId,true)"></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="审核" placement="top"
:color="roleForm.shr2UserIds ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="shr2UserNames" style="margin-bottom: 0">
<h4>审核</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.shr2UserIds"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.shr2UserNames" readonly
placeholder="审核"
@click.native="choicePeoPle('shr2UserIds', '审核', roleForm.shr2UserIds,false)"></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="审定" placement="top"
:color="roleForm.sdr2UserIds ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="sdr2UserNames" style="margin-bottom: 0">
<h4>审定</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.sdr2UserIds"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.sdr2UserNames" readonly
placeholder="审定"
@click.native="choicePeoPle('sdr2UserIds', '审定', roleForm.sdr2UserIds,false)"></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="批准" placement="top"
:color="roleForm.pzr2UserId ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="pzr2UserName" style="margin-bottom: 0">
<h4>批准</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.pzr2UserId"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.pzr2UserName" readonly
placeholder="批准"
@click.native="choicePeoPle('pzr2UserId', '批准', roleForm.pzr2UserId,true)"></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="抄送" placement="top"
:color="roleForm.csrUserIds ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="csrUserNames" style="margin-bottom: 0">
<h4>抄送</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.csrUserIds"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.csrUserNames" readonly
placeholder="抄送"
@click.native="choicePeoPle('csrUserIds', '抄送', roleForm.csrUserIds,false)"></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
</el-form>
</el-timeline>
<Role-tree :is-title="drawerTitle"
:is-visible.sync="modalshowflag"
@checkedRole="checkedRole"
:nodeList="nodeList"
:checkBox="checkBox"
></Role-tree>
</div>
</template>
<script>
export default {
name: "personnelInformation",
data() {
return {
roleForm: {},
// 角色验证
roleFormRules: {
shr1UserNames: [
{required: true, message: "请选择审核人", trigger: "change"}
],
sdr1UserNames: [
{required: true, message: "请选择审定人", trigger: "change"}
],
pzr1UserName: [
{required: true, message: "请选择批准人", trigger: "change"}
],
djrUserNames: [
{required: true, message: "请选择责任对接人分配任务", trigger: "change"}
],
glyUserName: [
{required: true, message: "请选择管理员", trigger: "change"}
],
shr2UserNames: [
{required: true, message: "请选择审核人", trigger: "change"}
],
sdr2UserNames: [
{required: true, message: "请选择审定人", trigger: "change"}
],
pzr2UserName: [
{required: true, message: "请选择批准人", trigger: "change"}
],
csrUserNames: [
{required: true, message: "请选择抄送人", trigger: "change"}
],
},
disabledXX: false,
drawerTitle: '',
nodeList: [],
modalshowflag: false,
checkBox: false,
}
},
mounted() {
this.disabledXX = false
if (this.$route.query.operate && this.$route.query.operate == 'view') {
this.disabledXX = true
}
this.roleForm.prcCreateUser = this.$store.getters.userInfo.userId
this.roleForm.prcCreateUserName = this.$store.getters.userInfo.userName
this.roleForm = {...this.roleForm}
},
methods: {
//选择人
choicePeoPle(type, title, id, isTrue) {
this.nodeList = [];
let ids = id ? id.split(',') : []
this.nodeList = ids;
this.type = type;
this.drawerTitle = title;
this.checkBox = isTrue
this.modalshowflag = true;
},
//选择人
checkedRole(data) {
console.log(data);
let ids = []
let names = []
if (data && data.length > 0) {
for (let i = 0; i < data.length; i++) {
ids.push(data[i].id)
names.push(data[i].name)
}
}
if (this.type === "shr1UserIds") {
this.roleForm.shr1UserIds = ids.join(',')
this.roleForm.shr1UserNames = names.join(',');
} else if (this.type === "sdr1UserIds") {
this.roleForm.sdr1UserIds = ids.join(',');
this.roleForm.sdr1UserNames = names.join(',');
} else if (this.type === "pzr1UserId") {
this.roleForm.pzr1UserId = ids.join(',');
this.roleForm.pzr1UserName = names.join(',');
} else if (this.type === "djrUserIds") {
this.roleForm.djrUserIds = ids.join(',');
this.roleForm.djrUserNames = names.join(',');
} else if (this.type === "glyUserId") {
this.roleForm.glyUserId = ids.join(',');
this.roleForm.glyUserName = names.join(',');
} else if (this.type === "shr2UserIds") {
this.roleForm.shr2UserIds = ids.join(',');
this.roleForm.shr2UserNames = names.join(',');
} else if (this.type === "sdr2UserIds") {
this.roleForm.sdr2UserIds = ids.join(',');
this.roleForm.sdr2UserNames = names.join(',');
} else if (this.type === "pzr2UserId") {
this.roleForm.pzr2UserId = ids.join(',');
this.roleForm.pzr2UserName = names.join(',');
} else if (this.type === "csrUserIds") {
this.roleForm.csrUserIds = ids.join(',');
this.roleForm.csrUserNames = names.join(',');
}
this.roleForm = {...this.roleForm}
this.modalshowflag = false;
},
submit(callback) {
this.$refs['Form'].validate((valid) => {
if (valid) {
callback && callback(this.roleForm)
} else {
return this.$message.warning('请完善人员信息')
}
})
},
save(callback) {
callback && callback(this.roleForm)
},
getData(item) {
let row = item ? JSON.parse(JSON.stringify(item)) : {}
this.roleForm = {
djrUserIds: row.djrUserIds,
djrUserNames: row.djrUserNames,
glyUserId: row.glyUserId,
glyUserName: row.glyUserName,
pzr1UserId: row.pzr1UserId,
pzr1UserName: row.pzr1UserName,
pzr2UserId: row.pzr2UserId,
pzr2UserName: row.pzr2UserName,
sdr1UserIds: row.sdr1UserIds,
sdr1UserNames: row.sdr1UserNames,
sdr2UserIds: row.sdr2UserIds,
sdr2UserNames: row.sdr2UserNames,
shr1UserIds: row.shr1UserIds,
shr1UserNames: row.shr1UserNames,
shr2UserIds: row.shr2UserIds,
shr2UserNames: row.shr2UserNames,
prcCreateUser: row.prcCreateUser,
prcCreateUserName: row.prcCreateUserName,
csrUserIds: row.csrUserIds,
csrUserNames: row.csrUserNames
}
this.roleForm = {...this.roleForm}
},
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,404 @@
<template>
<div style="margin-top: 10px">
<div class="table-button" v-if="showInput" style="float: right; margin-bottom: 10px;">
<el-button size="mini" @click="committeeAdd">
新增
</el-button>
<el-button size="mini" @click="committeeDel">
批量删除
</el-button>
</div>
<el-table
ref="multipleTable"
tooltip-effect="dark"
:data="multipleTableData"
border
height="500px"
@selection-change="selectChange"
:header-cell-style="{background: '#E8E8E8', color: '#333333', fontSize: '16px',
fontWeight: 'bold', height: '48px'}">
<el-table-column
type="selection"
width="55"
align="center">
</el-table-column>
<el-table-column
type="index"
label="序号"
width="55"
align="center">
</el-table-column>
<el-table-column
label="业务"
show-overflow-tooltip
align="center"
prop="business"
width="150"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="platform"
label="平台"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="project"
label="项目"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="projectDescription"
label="项目描述"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="currentNode"
label="当前节点"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
v-for="(item, index) in infoTableDatas"
show-overflow-tooltip
:prop="'infoTableData.infoTableData' + index"
:label="item.lawName"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="gZeroDate"
label="G0"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="gOneDate"
label="G1"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="gTwoDate"
label="G2"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="gThreeDate"
label="G3"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="gFourDate"
label="G4"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="gFiveDate"
label="G5"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="gSixDate"
label="G6"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="gSevenDate"
label="G7"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="gEightDate"
label="G8"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="gNineDate"
label="G9"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="gTenDate"
label="G10"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="gElevenDate"
label="G11"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="gTwelveDate"
label="G12"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="gThirteenDate"
label="G13"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="conceptualState"
label="概念状态"
min-width="150"
align="center"
>
</el-table-column>
<el-table-column
prop="conceptPlanReleaseTime"
align="center"
width="150"
show-overflow-tooltip
label="概念计划下发时间">
</el-table-column>
<el-table-column
prop="conceptRevisionPlan"
align="center"
show-overflow-tooltip
width="150"
label="概念修订计划">
</el-table-column>
<el-table-column
prop="additionalNotes"
align="center"
show-overflow-tooltip
width="400"
label="其他说明">
</el-table-column>
<el-table-column
align="center"
v-if="showInput"
width="100"
fixed="right"
label="操作">
<template slot-scope="scope">
<div @click.stop style="display: inline-block">
<el-dropdown trigger="click" @command="handleCommand">
<i class="iconfont">&#xe61e;</i>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="[scope.row, scope.$index, '编辑']">编辑
</el-dropdown-item>
<el-dropdown-item :command="[scope.row, scope.$index,'删除']">删除
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</template>
</el-table-column>
</el-table>
<addModel ref="addModelRef" :infoTableDatas="infoTableDatas" @addModelForm="addModelForm"/>
</div>
</template>
<script>
import addModel from "./addModel";
export default {
name: "productPlanningList",
components: {
addModel
},
data() {
return {
multipleTableData: [],
infoTableDatas: [],
deleteList: [],
addOrEdit: '',
editNum: 0,
selectList: [],
taskKey: this.$route.query.taskDefinitionKey,
}
},
computed: {
showInput() {
if (this.taskKey == 'PolicyComplianceProgramReviewProcessKey8' ||
this.taskKey == 'PolicyComplianceProgramReviewProcessKey9') {
return true
}
return false
},
},
methods: {
selectChange(row) {
this.selectList = row
},
handleCommand(command) {
switch (command[2]) {
case "编辑":
this.addOrEdit = 'edit'
this.editNum = command[1]
this.$refs.addModelRef.edit(command[0], this.infoTableDatas)
break;
case "删除":
this.deleteSarAccess(command[1], command[0]);
break;
}
},
deleteSarAccess(num, row) {
this.$confirm('确认删除数据?', '提示', {
confirmButtonText: '确定',
confirmButtonClass: 'common-button-primary',
cancelButtonText: '取消',
type: 'warning',
roundButton: false
}).then(() => {
if (row.id) {
this.deleteList.push(row.id)
}
this.multipleTableData.splice(num, 1)
this.multipleTableData = [...this.multipleTableData]
}).catch(() => {
// 取消删除,清空选择
// this.$refs.multipleTable.clearSelection()
})
},
addModelForm(row) {
if (this.addOrEdit == 'add') {
this.multipleTableData.push(row)
} else if (this.addOrEdit == 'edit') {
this.multipleTableData[this.editNum] = row
this.multipleTableData = [...this.multipleTableData]
}
},
committeeAdd() {
this.addOrEdit = 'add'
this.$refs.addModelRef.add(this.infoTableDatas)
},
committeeDel() {
if (this.selectList && this.selectList.length > 0) {
this.$confirm('确认删除这些数据?', '提示', {
confirmButtonText: '确定',
confirmButtonClass: 'common-button-primary',
cancelButtonText: '取消',
type: 'warning',
roundButton: false
}).then(() => {
this.selectList.forEach(val => {
if (val.id) {
this.deleteList.push(val.id)
}
this.multipleTableData = this.multipleTableData.filter(res => {
if (res.id) {
return res.id != val.id
} else {
return res.dataId != val.dataId
}
})
})
this.multipleTableData = [...this.multipleTableData]
}).catch(() => {
// 取消删除,清空选择
this.$refs.selection.clearSelection()
})
} else {
this.$message.warning('请选择至少一条数据')
}
},
getData(row) {
this.infoTableDatas = row.infoTableDatas || []
this.infoTableDatas = [...this.infoTableDatas]
this.multipleTableData = row.cpghbDataList || []
if (this.multipleTableData && this.multipleTableData.length > 0) {
this.multipleTableData.forEach(res => {
if (res.infoTableData) {
res.infoTableData = JSON.parse(res.infoTableData)
}
res.gZeroDate = this.$moment(res.gZeroDate).format('YYYY-MM-DD')
res.gOneDate = this.$moment(res.gOneDate).format('YYYY-MM-DD')
res.gTwoDate = this.$moment(res.gTwoDate).format('YYYY-MM-DD')
res.gThreeDate = this.$moment(res.gThreeDate).format('YYYY-MM-DD')
res.gFourDate = this.$moment(res.gFourDate).format('YYYY-MM-DD')
res.gFiveDate = this.$moment(res.gFiveDate).format('YYYY-MM-DD')
res.gSixDate = this.$moment(res.gSixDate).format('YYYY-MM-DD')
res.gSevenDate = this.$moment(res.gSevenDate).format('YYYY-MM-DD')
res.gEightDate = this.$moment(res.gEightDate).format('YYYY-MM-DD')
res.gNineDate = this.$moment(res.gNineDate).format('YYYY-MM-DD')
res.gTenDate = this.$moment(res.gTenDate).format('YYYY-MM-DD')
res.gElevenDate = this.$moment(res.gElevenDate).format('YYYY-MM-DD')
res.gTwelveDate = this.$moment(res.gTwelveDate).format('YYYY-MM-DD')
res.gThirteenDate = this.$moment(res.gThirteenDate).format('YYYY-MM-DD')
res.conceptPlanReleaseTime = this.$moment(res.conceptPlanReleaseTime).format('YYYY-MM-DD')
})
}
console.log(this.multipleTableData);
this.multipleTableData = [...this.multipleTableData]
},
submit(callback) {
if (this.multipleTableData && this.multipleTableData.length > 0) {
let multipleTableItemForm = JSON.parse(JSON.stringify(this.multipleTableData))
for (let i = 0; i < multipleTableItemForm.length > 0; i++) {
multipleTableItemForm[i].infoTableData = JSON.stringify(multipleTableItemForm[i].infoTableData)
}
callback && callback(multipleTableItemForm, this.deleteList.join(','))
} else {
this.$message.warning('请至少添加一条数据')
}
},
save(callback) {
let multipleTableItemForm = JSON.parse(JSON.stringify(this.multipleTableData))
for (let i = 0; i < multipleTableItemForm.length > 0; i++) {
multipleTableItemForm[i].infoTableData = JSON.stringify(multipleTableItemForm[i].infoTableData)
}
callback && callback(multipleTableItemForm, this.deleteList.join(','))
},
}
}
</script>
<style scoped>
</style>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,295 @@
<template>
<div>
<el-drawer
:title="modalshowtitle"
:visible.sync="modalshowflag"
:wrapperClosable="false"
size="800px"
@close="resetForm"
ref="standard"
append-to-body
>
<!-- 新增样式 -->
<div class="demo-drawer-content">
<el-form
ref="sarStandardsInfoForm"
:model="sarStandardsInfoEO"
:rules="sarStandardsInfoRules"
class="label-input-form"
>
<el-form-item label="章节编号" prop="chapterNumber" label-width="150px" class="add-form-item">
<el-input v-model.trim="sarStandardsInfoEO.chapterNumber"
placeholder="请输入章节编号"
clearable></el-input>
</el-form-item>
<el-form-item label="章节条目" prop="chapterEntries" label-width="150px" class="add-form-item">
<el-input v-model.trim="sarStandardsInfoEO.chapterEntries"
placeholder="请输入章节条目"
clearable></el-input>
</el-form-item>
<el-form-item label="修改前" prop="modifyBefore" label-width="150px" class="add-form-item">
<el-input v-model.trim="sarStandardsInfoEO.modifyBefore"
placeholder="请输入修改前"
clearable></el-input>
</el-form-item>
<el-form-item label="修改后" prop="modifyAfter" label-width="150px" class="add-form-item">
<el-input v-model.trim="sarStandardsInfoEO.modifyAfter"
placeholder="请输入修改后"
clearable></el-input>
</el-form-item>
<el-form-item label="修改理由" prop="modifyReason" label-width="150px" class="add-form-item">
<el-input v-model.trim="sarStandardsInfoEO.modifyReason"
placeholder="请输入修改理由"
clearable></el-input>
</el-form-item>
<el-form-item label="原因" prop="cause" label-width="150px" class="add-form-item">
<el-input v-model.trim="sarStandardsInfoEO.cause"
placeholder="请输入原因"
clearable></el-input>
</el-form-item>
<el-form-item label="附件"
label-width="150px"
class="add-form-item">
<el-input
disabled
style="display: none;"
v-model="sarStandardsInfoEO.annexFileId"
clearable
></el-input>
<div v-if="sarStandardsInfoEO.annexFileList && sarStandardsInfoEO.annexFileList.length > 0">
<div v-for="(item, index) in sarStandardsInfoEO.annexFileList" :key="index"
style="margin-right: 5px;padding-left: 10px">
<div class="fileClass">
<span @click="handlePreview(item)">{{ item.name }}</span>
<el-button size="small"
@click="clickButtonToUpload(item)"
icon="el-icon-download"
style="height: 32px; margin-left: 5px;"
></el-button>
</div>
</div>
</div>
<div>
<el-button type="primary"
class="common-button-primary"
@click="fileUpload('annexFileList','annexFileId','.zip,.docx,.doc,.xls,.xlsx',200)"
size="mini">
点击上传
</el-button>
</div>
</el-form-item>
<el-form-item label="处理意见"
v-if="isHandlingSuggestion"
prop="handlingOpinions" label-width="150px" class="add-form-item">
<el-input v-model.trim="sarStandardsInfoEO.handlingOpinions"
placeholder="请输入处理意见"
clearable></el-input>
</el-form-item>
<el-form-item label="处理原因" prop="handlingCause"
v-if="isHandlingSuggestion"
label-width="150px" class="add-form-item">
<el-input v-model.trim="sarStandardsInfoEO.handlingCause"
placeholder="请输入处理原因"
clearable></el-input>
</el-form-item>
</el-form>
</div>
<div class="demo-drawer-footer">
<el-button size="mini" class="common-button-primary" icon="el-icon-check" type="primary"
@click="saveOrUpdateStands" :loading="isSubmit">提交
</el-button>
<el-button size="mini" class="common-button-default" icon="el-icon-close" @click="resetForm">取消
</el-button>
</div>
</el-drawer>
<processFile
ref="processFileRef"
:accept="accept"
:fileMax_M="fileMax_M"
@uploadSuccess="uploadSuccess"/>
</div>
</template>
<script>
import processFile from "../../../components/processFile";
export default {
name: "addModel",
components: {
processFile
},
data() {
return {
modalshowflag: false,
modalshowtitle: '添加',
isSubmit: false,
sarStandardsInfoEO: {},
sarStandardsInfoRules: {
chapterNumber: [
{
type: "string",
max: 200,
message: "章节编号不能超过200个字符",
trigger: "blur"
}
],
chapterEntries: [
{
type: "string",
max: 200,
message: "章节条目不能超过200个字符",
trigger: "blur"
}
],
modifyBefore: [
{
type: "string",
max: 200,
message: "修改前不能超过200个字符",
trigger: "blur"
}
],
modifyAfter: [
{
type: "string",
max: 200,
message: "修改后不能超过200个字符",
trigger: "blur"
}
],
modifyReason: [
{
type: "string",
max: 200,
message: "修改理由不能超过200个字符",
trigger: "blur"
}
],
handlingOpinions: [
{
type: "string",
max: 200,
message: "处理意见不能超过200个字符",
trigger: "blur"
}
],
handlingCause: [
{
type: "string",
max: 200,
message: "处理原因不能超过200个字符",
trigger: "blur"
}
],
cause: [
{
type: "string",
max: 200,
message: "原因不能超过200个字符",
trigger: "blur"
}
],
},
fileListName: '',
fileName: '',
accept: '',
fileMax_M: 0,
taskKey: this.$route.query.taskDefinitionKey,
}
},
computed: {
isHandlingSuggestion() {
if (this.taskKey == 'PolicySolicitOpinionProcessKey12') {
return true
}
return false
},
},
methods: {
handlePreview(file) {
let attId = ""
if (file && file.id) {
attId = file.id
} else {
attId = file.response.data.id
}
this.$preview(attId)
},
clickButtonToUpload(file) {
const attId = file.attId
if (attId) {
window.location.href = '/api/att/attFile/downloadFileForSarNew?fileId=' + attId
} else {
this.$message.warning('文件不存在,下载失败')
}
},
fileUpload(fileListName, fileName, accept, fileMax_M) {
this.fileListName = fileListName
this.fileName = fileName
this.accept = accept
this.fileMax_M = fileMax_M
this.$refs.processFileRef.getFile(this.sarStandardsInfoEO[this.fileListName])
},
uploadSuccess(fileList, fileId) {
this.sarStandardsInfoEO[this.fileListName] = fileList
this.sarStandardsInfoEO[this.fileName] = fileId
this.sarStandardsInfoEO = {...this.sarStandardsInfoEO}
},
add() {
this.modalshowflag = true
this.sarStandardsInfoEO = {}
},
edit(row) {
this.modalshowflag = true
this.sarStandardsInfoEO = JSON.parse(JSON.stringify(row))
},
resetForm() {
this.modalshowflag = false
},
saveOrUpdateStands() {
this.$refs['sarStandardsInfoForm'].validate((valid) => {
if (valid) {
if (!this.sarStandardsInfoEO.chapterNumber && !this.sarStandardsInfoEO.chapterEntries
&& !this.sarStandardsInfoEO.modifyBefore && !this.sarStandardsInfoEO.modifyAfter
&& !this.sarStandardsInfoEO.modifyReason && !this.sarStandardsInfoEO.annexFileId
&& !this.sarStandardsInfoEO.cause && !this.sarStandardsInfoEO.handlingOpinions
&& !this.sarStandardsInfoEO.handlingCause) {
this.$message.warning('请至少填写一条数据,不能都为空')
return
}
let timestamp = new Date().getTime();
if (!this.sarStandardsInfoEO.dataId && !this.sarStandardsInfoEO.id) {
this.sarStandardsInfoEO.dataId = timestamp
}
this.isSubmit = true
this.$emit('addModelForm', this.sarStandardsInfoEO)
this.modalshowflag = false
this.$nextTick(() => {
this.isSubmit = false
})
}
})
},
}
}
</script>
<style lang="less" scoped>
@import '~@/assets/styles/mixins';
@import '~@/assets/styles/style';
.demo-drawer-content {
.drawer-content {
height: calc(~'100% - 52px - 56px');
flex: auto;
display: flex;
flex-direction: column;
}
}
::v-deep .demo-drawer-footer {
height: 60px !important;
}
</style>
@@ -0,0 +1,86 @@
<template>
<el-table
height="100%"
ref="selection"
:data="histortData"
tooltip-effect="dark"
style="width: 100%"
border
row-key="id"
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}">
<el-table-column
prop="name"
label="任务步骤"
align="center"
>
</el-table-column>
<el-table-column
prop="assignee"
label="任务受理人"
align="center"
>
</el-table-column>
<el-table-column
prop="createTime"
label="创建时间"
align="center">
<template slot-scope="scope">
<span>{{ scope.row.createTime ? $moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') : '' }}</span>
</template>
</el-table-column>
<el-table-column
prop="endTime"
label="完成时间"
align="center">
<template slot-scope="scope">
<span>{{ scope.row.endTime ? $moment(scope.row.endTime).format('YYYY-MM-DD HH:mm:ss') : '' }}</span>
</template>
</el-table-column>
<el-table-column
prop="comment"
label="流程信息"
align="center">
<template slot-scope="scope">
<span>{{ scope.row.commentText }}</span>
</template>
</el-table-column>
<el-table-column
prop="completeFlag"
label="状态"
align="center">
<template slot-scope="scope">
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
</template>
</el-table-column>
</el-table>
</template>
<script>
export default {
name: "approvalHistory",
data() {
return {
histortData: [],
}
},
mounted() {
if (this.$route.query.prcNum) {
this.getHistoryData()
}
},
methods: {
getHistoryData() {
this.$http.get('lawss/activiti/get_list_by_instance', {
prcNum: this.$route.query.prcNum,
}, {}, res => {
this.histortData = res || []
}, e => {
})
},
},
}
</script>
<style scoped>
</style>
@@ -0,0 +1,75 @@
<template>
<el-dialog width='400px'
:visible.sync="fileMadel"
:title="title">
<div v-for="(item, index) in fileList" :key="index"
style="margin-right: 5px;padding-left: 10px;margin-bottom: 6px">
<div class="fileClass">
<span @click="handlePreview(item)">{{ item.name || item.oldFileName }}</span>
<el-button size="small"
@click="clickButtonToUpload(item)"
icon="el-icon-download"
class="fileButton"
></el-button>
</div>
</div>
</el-dialog>
</template>
<script>
export default {
name: "fileViewModel",
props: {
title: {
type: String,
default: '查看文件'
}
},
data() {
return {
fileMadel: false,
fileList: [],
}
},
methods: {
getData(row) {
this.fileList = row
this.fileMadel = true
},
handlePreview(file) {
let attId = ""
if (file && file.id) {
attId = file.id
} else {
attId = file.response.data.id
}
this.$preview(attId)
},
clickButtonToUpload(file) {
const attId = file.attId
if (attId) {
window.location.href = '/api/att/attFile/downloadFileForSarNew?fileId=' + attId
} else {
this.$message.warning('文件不存在,下载失败')
}
},
}
}
</script>
<style scoped>
.fileClass span {
cursor: pointer;
}
.fileClass span:hover {
color: #00a0e9;
}
.fileButton {
height: 22px;
margin-left: 5px;
line-height: 22px;
padding: 0 15px;
}
</style>
@@ -0,0 +1,333 @@
<template>
<div class="block" style="padding-top: 20px;">
<el-timeline>
<el-form
ref="Form"
:model="roleForm"
:rules="roleFormRules"
class="label-input-form myForm">
<el-timeline-item timestamp="发起流程" placement="top" :color="roleForm.prcCreateUser ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="prcCreateUserName" style="margin-bottom: 0">
<h4>起草</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.prcCreateUser"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.prcCreateUserName" placeholder="流程发起人"
disabled></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="审核" placement="top"
:color="roleForm.responseDockerId ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="shr1UserNames" style="margin-bottom: 0">
<h4>审核</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.shr1UserIds"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.shr1UserNames" readonly
placeholder="选择审核人"
@click.native="choicePeoPle('shr1UserIds', '选择审核人', roleForm.shr1UserIds,false)"></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="审定" placement="top"
:color="roleForm.sdr1UserIds ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="sdr1UserNames" style="margin-bottom: 0">
<h4>审定</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.sdr1UserIds"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.sdr1UserNames" readonly
placeholder="选择审定人"
@click.native="choicePeoPle('sdr1UserIds', '选择审定人', roleForm.sdr1UserIds,false)"></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="批准" placement="top"
:color="roleForm.pzr1UserId ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="pzr1UserName" style="margin-bottom: 0">
<h4>批准</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.pzr1UserId"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.pzr1UserName" readonly
placeholder="选择批准人"
@click.native="choicePeoPle('pzr1UserId', '选择批准人', roleForm.pzr1UserId,true)"></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="责任对接人分配任务" placement="top"
:color="roleForm.djrUserIds ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="djrUserNames" style="margin-bottom: 0">
<h4>责任对接人分配任务</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.djrUserIds"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.djrUserNames" readonly
placeholder="责任对接人分配任务"
@click.native="choicePeoPle('djrUserIds', '责任对接人分配任务', roleForm.djrUserIds,false)"></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="管理员" placement="top"
:color="roleForm.glyUserId ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="glyUserName" style="margin-bottom: 0">
<h4>管理员</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.glyUserId"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.glyUserName" readonly
placeholder="管理员"
@click.native="choicePeoPle('glyUserId', '管理员', roleForm.glyUserId,true)"></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="审核" placement="top"
:color="roleForm.shr2UserIds ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="shr2UserNames" style="margin-bottom: 0">
<h4>审核</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.shr2UserIds"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.shr2UserNames" readonly
placeholder="审核"
@click.native="choicePeoPle('shr2UserIds', '审核', roleForm.shr2UserIds,false)"></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="审定" placement="top"
:color="roleForm.sdr2UserIds ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="sdr2UserNames" style="margin-bottom: 0">
<h4>审定</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.sdr2UserIds"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.sdr2UserNames" readonly
placeholder="审定"
@click.native="choicePeoPle('sdr2UserIds', '审定', roleForm.sdr2UserIds,false)"></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="批准" placement="top"
:color="roleForm.pzr2UserId ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="pzr2UserName" style="margin-bottom: 0">
<h4>批准</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.pzr2UserId"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.pzr2UserName" readonly
placeholder="批准"
@click.native="choicePeoPle('pzr2UserId', '批准', roleForm.pzr2UserId,true)"></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="抄送" placement="top"
:color="roleForm.csrUserIds ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="csrUserNames" style="margin-bottom: 0">
<h4>抄送</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.csrUserIds"
style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.csrUserNames" readonly
placeholder="抄送"
@click.native="choicePeoPle('csrUserIds', '抄送', roleForm.csrUserIds,false)"></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
</el-form>
</el-timeline>
<Role-tree :is-title="drawerTitle"
:is-visible.sync="modalshowflag"
@checkedRole="checkedRole"
:nodeList="nodeList"
:checkBox="checkBox"
></Role-tree>
</div>
</template>
<script>
export default {
name: "personnelInformation",
data() {
return {
roleForm: {},
// 角色验证
roleFormRules: {
shr1UserNames: [
{required: true, message: "请选择审核人", trigger: "change"}
],
sdr1UserNames: [
{required: true, message: "请选择审定人", trigger: "change"}
],
pzr1UserName: [
{required: true, message: "请选择批准人", trigger: "change"}
],
djrUserNames: [
{required: true, message: "请选择责任对接人分配任务", trigger: "change"}
],
glyUserName: [
{required: true, message: "请选择管理员", trigger: "change"}
],
shr2UserNames: [
{required: true, message: "请选择审核人", trigger: "change"}
],
sdr2UserNames: [
{required: true, message: "请选择审定人", trigger: "change"}
],
pzr2UserName: [
{required: true, message: "请选择批准人", trigger: "change"}
],
csrUserNames: [
{required: true, message: "请选择抄送人", trigger: "change"}
],
},
disabledXX: false,
drawerTitle: '',
nodeList: [],
modalshowflag: false,
checkBox: false,
}
},
mounted() {
this.disabledXX = false
if (this.$route.query.operate && this.$route.query.operate == 'view') {
this.disabledXX = true
}
this.roleForm.prcCreateUser = this.$store.getters.userInfo.userId
this.roleForm.prcCreateUserName = this.$store.getters.userInfo.userName
this.roleForm = {...this.roleForm}
},
methods: {
//选择人
choicePeoPle(type, title, id, isTrue) {
this.nodeList = [];
let ids = id ? id.split(',') : []
this.nodeList = ids;
this.type = type;
this.drawerTitle = title;
this.checkBox = isTrue
console.log(this.nodeList);
this.modalshowflag = true;
},
//选择人
checkedRole(data) {
console.log(data);
let ids = []
let names = []
if (data && data.length > 0) {
for (let i = 0; i < data.length; i++) {
ids.push(data[i].id)
names.push(data[i].name)
}
}
if (this.type === "shr1UserIds") {
this.roleForm.shr1UserIds = ids.join(',')
this.roleForm.shr1UserNames = names.join(',');
} else if (this.type === "sdr1UserIds") {
this.roleForm.sdr1UserIds = ids.join(',');
this.roleForm.sdr1UserNames = names.join(',');
} else if (this.type === "pzr1UserId") {
this.roleForm.pzr1UserId = ids.join(',');
this.roleForm.pzr1UserName = names.join(',');
} else if (this.type === "djrUserIds") {
this.roleForm.djrUserIds = ids.join(',');
this.roleForm.djrUserNames = names.join(',');
} else if (this.type === "glyUserId") {
this.roleForm.glyUserId = ids.join(',');
this.roleForm.glyUserName = names.join(',');
} else if (this.type === "shr2UserIds") {
this.roleForm.shr2UserIds = ids.join(',');
this.roleForm.shr2UserNames = names.join(',');
} else if (this.type === "sdr2UserIds") {
this.roleForm.sdr2UserIds = ids.join(',');
this.roleForm.sdr2UserNames = names.join(',');
} else if (this.type === "pzr2UserId") {
this.roleForm.pzr2UserId = ids.join(',');
this.roleForm.pzr2UserName = names.join(',');
} else if (this.type === "csrUserIds") {
this.roleForm.csrUserIds = ids.join(',');
this.roleForm.csrUserNames = names.join(',');
}
this.roleForm = {...this.roleForm}
this.modalshowflag = false;
},
submit(callback) {
this.$refs['Form'].validate((valid) => {
if (valid) {
callback && callback(this.roleForm)
} else {
return this.$message.warning('请完善人员信息')
}
})
},
getData(item) {
let row = item ? JSON.parse(JSON.stringify(item)) : {}
this.roleForm = {
djrUserIds: row.djrUserIds,
djrUserNames: row.djrUserNames,
glyUserId: row.glyUserId,
glyUserName: row.glyUserName,
pzr1UserId: row.pzr1UserId,
pzr1UserName: row.pzr1UserName,
pzr2UserId: row.pzr2UserId,
pzr2UserName: row.pzr2UserName,
sdr1UserIds: row.sdr1UserIds,
sdr1UserNames: row.sdr1UserNames,
sdr2UserIds: row.sdr2UserIds,
sdr2UserNames: row.sdr2UserNames,
shr1UserIds: row.shr1UserIds,
shr1UserNames: row.shr1UserNames,
shr2UserIds: row.shr2UserIds,
shr2UserNames: row.shr2UserNames,
prcCreateUser: row.prcCreateUser,
prcCreateUserName: row.prcCreateUserName,
csrUserIds:row.csrUserIds,
csrUserNames:row.csrUserNames
}
this.roleForm = {...this.roleForm}
},
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,313 @@
<template>
<el-drawer ref="standard"
title="征求意见政策"
size="1000px"
:visible.sync="standardDrawer"
direction="rtl"
:before-close="handleReviseDrawerClose">
<div class="standard-content">
<div class="content">
<div class="standard-table-search">
<el-form :model="standardSearchForm" inline class="label-input-form search-area">
<el-form-item label="政策编号" style="margin-right:10px" prop="lawsNumber" class="search-item">
<el-input :disabled="disabledXX"
v-model="standardSearchForm.lawsNumber"
clearable placeholder="根据编号查找"
:maxlength="100"
@keyup.enter.native="handleSearchStandard"/>
</el-form-item>
<el-form-item label="政策名称" style="margin-right:10px" prop="lawsName" class="search-item">
<el-input :disabled="disabledXX"
v-model="standardSearchForm.lawsName"
placeholder="请输入政策名称"
clearable
:maxlength="100"></el-input>
</el-form-item>
<el-form-item>
<el-button :disabled="disabledXX"
size="mini"
type="primary"
class="common-button-primary"
@click="handleSearchStandard">
查询
</el-button>
<el-button :disabled="disabledXX"
size="mini"
class="common-button-default"
@click="handleResetSearch">
清空
</el-button>
</el-form-item>
</el-form>
</div>
<div class="standard-table-wrap">
<el-table
ref="reviseDrawerTable"
:data="tableData.standardData"
tooltip-effect="dark"
style="width: 100%;"
height="calc(100vh - 220px)"
border
class="drag-table"
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}"
@selection-change="standSelectChange">
<el-table-column
type="selection"
width="55"
align="center">
</el-table-column>
<el-table-column
type="index"
label="序号"
width="80"
align="center"
></el-table-column>
<el-table-column
label="政策编号"
align="center"
>
<template slot-scope="scope">
<a @click="handlePreview(scope.row)" style="color: #409eff;cursor: pointer">{{
scope.row.lawsNumber }}</a>
</template>
</el-table-column>
<el-table-column
prop="lawsName"
label="政策名称"
align="center">
<template slot-scope="scope">
<a @click="handlePreview(scope.row)" class="table-jump">{{ scope.row.lawsName }}</a>
</template>
</el-table-column>
<el-table-column
prop="issueTime"
label="发布日期"
align="center">
<template slot-scope="scope">{{ scope.row.issueTime ?
$moment(scope.row.issueTime).format('YYYY-MM-DD') : '' }}
</template>
</el-table-column>
<el-table-column
prop="textStatus"
label="政策状态"
align="center">
<template slot-scope="scope">
<span>{{ scope.row.standStatusShow }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="80">
<template slot-scope="scope">
<el-button :disabled="disabledXX"
class="opera-btn"
size="mini"
type="primary"
@click="handlePreview(scope.row)">查看
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<pagination
:page="standardSearchForm.page"
:total="standardSearchForm.total"
@pageChange="handleStandardPageChange"
@pageSizeChange="handleStandardPageSizeChange"></pagination>
<loading :loading="loadSarStandard">数据获取中</loading>
</div>
</div>
<div class="demo-drawer-footer">
<!-- <el-button :disabled="disabledXX" -->
<!-- round-->
<!-- class="common-button-primary"-->
<!-- icon="el-icon-check"-->
<!-- type="primary"-->
<!-- @click="handleProcessStandardNext(1)">新增-->
<!-- </el-button>-->
<el-button :disabled="disabledXX"
round
class="common-button-primary"
icon="el-icon-check"
type="primary"
@click="handleProcessStandardNext(2)">带入
</el-button>
<el-button :disabled="disabledXX"
round
class="common-button-default"
icon="el-icon-close"
@click="handleProcessStandardNext(3)">取消
</el-button>
</div>
<loading :loading="dataLoading">正在加载数据</loading>
</el-drawer>
</template>
<script>
export default {
name: "policySolicitingOpinions",
data() {
return {
standardDrawer: false,
standardSearchForm: {
page: 1,
pageSize: this.$store.getters.userInfo.configContent,
},
tableData: {
// 标准表格数据
standardData: [],
// 任务分解单数据
taskTableData: []
},
tableHeight: {
standardTableHeight: null
},
standardCheckedList: [],
disabledXX: false,
dataLoading: false,
loadSarStandard:false,
}
},
methods: {
handleReviseDrawerClose(done) {
done()
},
handleSearchStandard() {
this.standardDrawer = true
this.$nextTick(() => {
// 动态设置表格高度
this.tableHeight.standardTableHeight = $('.standard-table-wrap').height()
window.onresize = () => {
this.tableHeight.standardTableHeight = $('.standard-table-wrap').height()
}
})
this.getDomesticStandardTable()
},
getDomesticStandardTable() {
this.loadSarStandard = true
let query = {
standType: 'INLAND',
...this.standardSearchForm
}
this.$http.get('lawss/sarLawsInfo/page', query, {}, res => {
this.loadSarStandard = false
if (res.ok) {
this.tableData.standardData = res.data.list
this.standardSearchForm.total = res.data.count
}
}, e => {
this.loadSarStandard = false
})
},
standSelectChange(data) {
this.standardCheckedList = data
},
// 点击查看
handlePreview(item) {
let routeUrl = this.$router.resolve({
name: 'OtherLawsStandDetails',
params: {
id: item.id,
pageType: 'LAWS_STAND'
}
})
window.open(routeUrl.href, '_blank')
},
handleStandardPageChange(page) {
this.standardSearchForm.page = page
this.handleSearchStandard()
},
handleStandardPageSizeChange(pageSize) {
this.standardSearchForm.pageSize = pageSize
this.handleSearchStandard()
},
//清空搜索条件
handleResetSearch() {
this.standardSearchForm = {
page: 1,
pageSize: this.$store.getters.userInfo.configContent,
}
setTimeout(() => {
this.handleSearchStandard()
}, 100)
},
filterObj(obj) {
if (obj && obj !== '') {
if (obj instanceof Array) {
return obj;
} else {
return obj.split(",")
}
}
return "";
},
handleProcessStandardNext(status) {
switch (status) {
// 带入
case 2:
if (!this.standardCheckedList.length) {
this.$message.warning('请至少选择一条政策信息进行带入')
} else if (this.standardCheckedList.length > 1) {
this.$message.warning('您只能选择一条政策信息进行带入')
} else {
this.dataLoading = true
this.$http.get('lawss/sarLawsInfo/getStandInfoUpdateById', {id: this.standardCheckedList[0].id}, {
_this: this
}, res => {
if (res && res.data) {
const bringData = res.data
this.standardDrawer = false
const json = Object.assign(bringData, bringData.attrInfoMap);
this.$emit('policySolicitingOpinionsForm', json)
this.dataLoading = false
}
})
}
break
// 取消
case 3:
this.standardCheckedList = []
this.standardDrawer = false
break
}
},
},
}
</script>
<style lang="less" scoped>
.demo-drawer-footer {
height: 70px !important;
}
.standard-content {
height: 100%;
padding: 10px 0 0;
.content {
height: 100%;
display: flex;
flex-direction: column;
padding: 0 10px;
.standard-table-wrap {
flex: auto;
overflow-y: auto;
}
.pagination {
position: static;
/deep/ .pagination-slot {
padding: 0;
}
}
.search-area {
display: flex;
justify-content: left;
background: #FFF;
padding: 10px 10px 0;
}
}
}
</style>
@@ -0,0 +1,410 @@
<template>
<div>
<ProcessTitle>
<template slot="title">征求意见列表</template>
</ProcessTitle>
<div class="action-bar">
<el-button
type="primary"
class="common-button-primary add-button"
@click="addModel"
v-if="isNodeDisplay"
><i class="el-icon-plus"></i>新增
</el-button>
<el-button
class="common-button-primary add-button"
@click="batchDeleteModel"
v-if="isNodeDisplay"
><i class="iconfont">&#xe61b;</i>批量删除
</el-button>
<el-button
type="primary"
v-if="isGenerateSummary"
class="common-button-primary add-button"
@click="generateSummary"
>生成汇总单
</el-button>
<el-button
type="primary"
v-if="isGenerateSummary"
class="common-button-primary add-button"
@click="generateReportComments"
>生成上报意见
</el-button>
<el-button
type="primary"
v-if="isExport"
class="common-button-primary add-button"
@click="exportModel"
>导出
</el-button>
</div>
<el-table
height="500"
ref="selection"
:data="histortData"
tooltip-effect="dark"
style="width: 100%;margin-bottom: 20px"
border
row-key="id"
@selection-change="selectChange"
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}">
<el-table-column
type="selection"
width="55"
v-if="showSelection"
align="center">
</el-table-column>
<el-table-column
type="index"
label="序号"
width="80"
align="center"
>
</el-table-column>
<el-table-column
prop="chapterNumber"
label="章节编号"
show-overflow-tooltip
align="center"
>
</el-table-column>
<el-table-column
prop="chapterEntries"
label="章节条目"
show-overflow-tooltip
align="center">
</el-table-column>
<el-table-column
prop="modifyBefore"
label="修改前"
show-overflow-tooltip
align="center">
</el-table-column>
<el-table-column
prop="modifyAfter"
label="修改后"
show-overflow-tooltip
align="center">
</el-table-column>
<el-table-column
prop="modifyReason"
label="修改理由"
show-overflow-tooltip
align="center">
</el-table-column>
<el-table-column
prop="cause"
label="原因"
show-overflow-tooltip
align="center">
</el-table-column>
<el-table-column
prop="completeFlag"
label="附件"
align="center">
<template slot-scope="scope">
<a v-if="scope.row.annexFileId" @click="fileClick(scope.row.annexFileList)"
class="textClass">查看文件</a>
<span v-else>--</span>
</template>
</el-table-column>
<el-table-column
v-if="isPersonInCharge"
prop="createUserName"
label="责任人"
show-overflow-tooltip
align="center">
</el-table-column>
<el-table-column
v-if="isCompleteFlag"
prop="createUserDeptName"
label="提出部门"
show-overflow-tooltip
align="center">
</el-table-column>
<el-table-column
v-if="isCompleteFlag"
prop="createUserName"
label="提出人"
show-overflow-tooltip
align="center">
</el-table-column>
<el-table-column
v-if="isCompleteFlag"
prop="handlingOpinions"
label="处理意见"
show-overflow-tooltip
align="center">
</el-table-column>
<el-table-column
prop="handlingCause"
label="处理原因"
v-if="isCompleteFlag"
show-overflow-tooltip
align="center">
</el-table-column>
<el-table-column
label="操作"
width="70"
v-if="isOperate"
align="center">
<template slot-scope="scope">
<div @click.stop style="display: inline-block">
<el-dropdown trigger="click" @command="handleCommand">
<i class="iconfont">&#xe61e;</i>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="[scope.row, scope.$index, '编辑']">编辑
</el-dropdown-item>
<el-dropdown-item v-if="taskKey != 'PolicySolicitOpinionProcessKey12'"
:command="[scope.row, scope.$index,'删除']">删除
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</template>
</el-table-column>
</el-table>
<addModel ref="addModelRef" @addModelForm="addModelForm"/>
<fileViewModel ref="fileViewModelRef"/>
</div>
</template>
<script>
import ProcessTitle from "../../../components/ProcessTitle";
import fileViewModel from "./fileViewModel";
import addModel from "./addModel";
export default {
name: "solicitationList",
components: {
ProcessTitle,
addModel,
fileViewModel
},
data() {
return {
histortData: [],
addOrEdit: 'add',
editNum: 0,
selectList: [],
deleteList: [],
taskKey: this.$route.query.taskDefinitionKey,//流程节点key
}
},
computed: {
isNodeDisplay() {//是否展示新增和批量删除
if (this.$route.query.operate && this.$route.query.operate == 'view') {
return false
}
if (this.taskKey == 'PolicySolicitOpinionProcessKey8' ||
this.taskKey == 'PolicySolicitOpinionProcessKey9') {
return true
}
return false
},
isGenerateSummary() {//是否展示生成汇总单和生成上报意见
if (this.$route.query.operate && this.$route.query.operate == 'view') {
return false
}
if (this.taskKey == 'PolicySolicitOpinionProcessKey13' ||
this.taskKey == 'PolicySolicitOpinionProcessKey14' ||
this.taskKey == 'PolicySolicitOpinionProcessKey15') {
return true
}
return false
},
isExport() {//是否展示导出
if (this.$route.query.operate && this.$route.query.operate == 'view') {
return false
}
if (this.taskKey == 'PolicySolicitOpinionProcessKey12') {
return true
}
return false
},
isPersonInCharge() {
//是否展示责任人
if (this.taskKey == 'PolicySolicitOpinionProcessKey9' ||
this.taskKey == 'PolicySolicitOpinionProcessKey10' ||
this.taskKey == 'PolicySolicitOpinionProcessKey11') {
return true
}
return false
},
isCompleteFlag() {//是否展示提出部门、提出人、处理意见、原因
if (this.taskKey == 'PolicySolicitOpinionProcessKey12' ||
this.taskKey == 'PolicySolicitOpinionProcessKey13' ||
this.taskKey == 'PolicySolicitOpinionProcessKey14' ||
this.taskKey == 'PolicySolicitOpinionProcessKey15' ||
this.taskKey == 'PolicySolicitOpinionProcessKey16') {
return true
}
return false
},
isOperate() {//是否展示操作列
if (this.$route.query.operate && this.$route.query.operate == 'view') {
return false
}
if (this.taskKey == 'PolicySolicitOpinionProcessKey8' ||
this.taskKey == 'PolicySolicitOpinionProcessKey9' ||
this.taskKey == 'PolicySolicitOpinionProcessKey12') {
return true
}
return false
},
showSelection() {//是否展示选择
if (this.$route.query.operate && this.$route.query.operate == 'view') {
return false
}
if (this.taskKey == 'PolicySolicitOpinionProcessKey8' ||
this.taskKey == 'PolicySolicitOpinionProcessKey9') {
return true
}
return false
},
},
mounted() {
this.getData()
},
methods: {
getData() {
let query = {
taskDefinitionKey: this.$route.query.taskDefinitionKey,
prcId: this.$route.query.prcId
}
this.$http.get('/lawss/activiti/queryPolicitOpinionEOList', query, {_this: this}, res => {
if (res.ok) {
this.histortData = res.data || []
} else {
this.histortData = []
}
})
},
generateSummary() {
window.location.href = 'api/lawss/activiti/exportPolicitOpinionEOListExcel?taskDefinitionKey='
+ this.$route.query.taskDefinitionKey + '&prcId=' + this.$route.query.prcId + '&currentUserId=' +
this.$store.getters.userInfo.userId
},
generateReportComments() {
window.location.href = 'api/lawss/activiti/exportPolicitOpinionEOListExcel?taskDefinitionKey='
+ this.$route.query.taskDefinitionKey + '&prcId=' + this.$route.query.prcId + '&currentUserId=' +
this.$store.getters.userInfo.userId
},
exportModel() {
window.location.href = 'api/lawss/activiti/exportPolicitOpinionEOListExcel?taskDefinitionKey='
+ this.$route.query.taskDefinitionKey + '&prcId=' + this.$route.query.prcId + '&currentUserId=' +
this.$store.getters.userInfo.userId
},
addModel() {
this.addOrEdit = 'add'
this.$refs.addModelRef.add()
},
selectChange(row) {
this.selectList = row
},
batchDeleteModel() {
if (this.selectList && this.selectList.length > 0) {
this.$confirm('确认删除这些数据?', '提示', {
confirmButtonText: '确定',
confirmButtonClass: 'common-button-primary',
cancelButtonText: '取消',
type: 'warning',
roundButton: false
}).then(() => {
this.selectList.forEach(val => {
if (val.id) {
this.deleteList.push(val.id)
}
this.histortData = this.histortData.filter(res => {
if (res.id) {
return res.id != val.id
} else {
return res.dataId != val.dataId
}
})
})
this.histortData = [...this.histortData]
}).catch(() => {
// 取消删除,清空选择
this.$refs.selection.clearSelection()
})
} else {
this.$message.warning('请选择至少一条数据')
}
},
handleCommand(command) {
switch (command[2]) {
case "编辑":
this.addOrEdit = 'edit'
this.editNum = command[1]
this.$refs.addModelRef.edit(command[0])
break;
case "删除":
this.deleteSarAccess(command[1], command[0]);
break;
}
},
deleteSarAccess(num, row) {
this.$confirm('确认删除数据?', '提示', {
confirmButtonText: '确定',
confirmButtonClass: 'common-button-primary',
cancelButtonText: '取消',
type: 'warning',
roundButton: false
}).then(() => {
if (row.id) {
this.deleteList.push(row.id)
}
this.histortData.splice(num, 1)
this.histortData = [...this.histortData]
}).catch(() => {
// 取消删除,清空选择
// this.$refs.multipleTable.clearSelection()
})
},
addModelForm(row) {
if (this.addOrEdit == 'add') {
this.histortData.push(row)
} else if (this.addOrEdit == 'edit') {
this.histortData[this.editNum] = row
this.histortData = [...this.histortData]
}
},
fileClick(list) {
if (list && list.length > 0) {
this.$refs.fileViewModelRef.getData(list)
} else {
this.$message.warning('没有可查看的文件')
}
},
submit(callback) {
if (this.histortData && this.histortData.length > 0) {
callback && callback(this.histortData, this.deleteList.join(','))
} else {
this.$message.warning('请至少添加一条数据')
}
},
save(callback) {
callback && callback(this.histortData, this.deleteList.join(','))
},
},
}
</script>
<style scoped>
.add-button {
font-size: 12px;
padding: 9px 15px;
height: auto;
}
.textClass {
color: #66b1ff;
margin-right: 8px;
cursor: pointer;
}
</style>
File diff suppressed because it is too large Load Diff
@@ -275,7 +275,45 @@ export default {
this.toProcessDetail('qbzxdjhgkStep1-1',row)
}else if(prcType === '26'){
//企标制修订计划立项 1
this.toProcessDetail('qbzxdlxStep1-1',row)
this.toProcessDetail('qbzxdlxStep1-1', row)
} else if (prcType === '33') {
let data = []
this.detailData.forEach(res => {
if (res.taskDefinitionKey == 'PolicySolicitOpinionProcessKey11') {
data.push(res)
}
})
this.$router.push({
path: '/policyConsultation',
query: {
taskIds: data[0].id,
prcNum: data[0].prcNum,
prcName: data[0].prcName,
prcType: data[0].prcType,
prcId: data[0].processInstanceId,
taskDefinitionKey: data[0].taskDefinitionKey,
operate: 'view',
}
})
} else if (prcType === '34') {
let data = []
this.detailData.forEach(res => {
if (res.taskDefinitionKey == 'PolicyComplianceProgramReviewProcessKey11') {
data.push(res)
}
})
this.$router.push({
path: '/policyComplianceReview',
query: {
taskIds: data[0].id,
prcNum: data[0].prcNum,
prcName: data[0].prcName,
prcType: data[0].prcType,
prcId: data[0].processInstanceId,
taskDefinitionKey: data[0].taskDefinitionKey,
operate: 'view',
}
})
}
}
},
@@ -406,6 +444,32 @@ export default {
// 政策法规资料入库流程
const params = { type: 'step1' }
this.toProcessDetailForParams('policyRegulatoryMaterials', row, params)
} else if (prcType === '33') {
this.$router.push({
path: '/policyConsultation',
query: {
taskIds: row.id,
prcNum: row.prcNum,
prcId: row.processInstanceId,
prcName: row.prcName,
prcType: row.prcType,
taskDefinitionKey: row.taskDefinitionKey,
operate: 'view',
}
})
} else if (prcType === '34') {
this.$router.push({
path: '/policyComplianceReview',
query: {
taskIds: row.id,
prcNum: row.prcNum,
prcName: row.prcName,
prcType: row.prcType,
prcId: row.processInstanceId,
taskDefinitionKey: row.taskDefinitionKey,
operate: 'view',
}
})
}
} else {
this.$message.warning('当前流程未全部办理完成,无法查看')
@@ -547,13 +547,13 @@ export default {
case '12':
// 政策征求意见流程
this.$router.push({
name: 'zczqyjStep1'
path: 'policyConsultation'
})
break
case '13':
// 重点认证标准/政策合规性项目审查流程
this.$router.push({
name: 'zdrzbzORzchgxxmscStep1'
path: 'policyComplianceReview'
})
break
case '17':
@@ -2363,6 +2363,32 @@ export default {
})
}
break
case '33':
this.$router.push({
path: 'policyConsultation',
query: {
taskIds: row.taskIds,
prcId: row.prcId,
prcNum: row.prcNum,
prcName: row.prcName,
prcType: row.prcType,
taskDefinitionKey: row.taskDefinitionKey
}
})
break
case '34':
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']),
@@ -1003,6 +1003,23 @@ export default {
}
})
break
case '33':
this.$router.push({
path: 'policyConsultation',
query: {
bpnId: id
}
})
break
case '34':
this.$router.push({
path: 'policyComplianceReview',
query: {
bpnId: id
}
})
break
}
},
...mapMutations(['setProcess', 'setHandleInfo']),
+18
View File
@@ -514,6 +514,15 @@ const routes = [
}
},
{
path: '/policyConsultation',
name: 'policyConsultation',
component: () => import('@/pages/processCenter/pages/creatProcess/policyConsultation/index.vue'),
meta: {
requireAuth: true,
title: '政策征求意见流程'
}
},
{
path: '/zczqyjStep1',
name: 'zczqyjStep1',
component: () => import('@/pages/processCenter/pages/creatProcess/zczqyj/step1.vue'),
@@ -603,6 +612,15 @@ const routes = [
}
},
{
path: '/policyComplianceReview',
name: 'policyComplianceReview',
component: () => import('@/pages/processCenter/pages/creatProcess/policyComplianceReview/index.vue'),
meta: {
requireAuth: true,
title: '重点认证标准/政策合规性项目审查流程'
}
},
{
path: '/zdrzbzORzchgxxmscStep1',
name: 'zdrzbzORzchgxxmscStep1',
component: () => import('@/pages/processCenter/pages/creatProcess/zdrzbzORzchgxxmsc/step1.vue'),
+7 -7
View File
@@ -11,20 +11,20 @@
// const devIp = '10.10.10.46'
// const devInterfacePORT = '4202'
// // const devIp = '10.0.3.10'
const devIp = 'localhost'
const devIp = '10.0.3.11'
const devInterfacePORT = '10086'
// const devIp = '62.234.136.153'
// const devInterfacePORT = '8033'
// 配置 idm 认证
const ssoLogin = 'http://sso.foton.com.cn/oauth2.0/authorize?client_id=app_slrs&response_type=code&redirect_uri='
const ssoLogin = 'http://localhost:9090/#/'
// 配置 前端服务
const devWebUrl = 'http://62.234.136.153:8038/#/'
const devWebUrl = 'http://localhost:9090/#/'
// webLoginType : idm (线上统一登录) 、 webLoginType: dev (测试环境登录)
const webLoginType = 'dev'
// 配置onlyOffice 前端服务
// const onlyOfficeUrl = 'http://127.0.0.1:8080'
const onlyOfficeUrl = 'http://10.10.10.46:8889'
const onlyOfficeUrl = 'http://127.0.0.1:8080'
// const onlyOfficeUrl = 'http://10.10.10.46:8889'
// 云端端口号
const DEV_CLOUD_RES_INTERFACE_PORT = '7777'
@@ -50,8 +50,8 @@ const processPort = '17210'
// 生产环境配置
// const prodIp = '39.98.140.126'
// const prodInterfacePORT = '4201'
// const prodIp = '10.10.10.46'
// const prodInterfacePORT = '4202'
const prodIp = '10.10.10.46'
const prodInterfacePORT = '4202'
// const prodIp = 'slrs.foton.com.cn'
// const prodInterfacePORT = ''