| | |
| | | </el-col> |
| | | </el-row> |
| | | </template> |
| | | <template #menu-left> |
| | | <!-- <template #menu-left> |
| | | <el-button :size="size" type="primary" @click="showAdd()">新增根节点</el-button> |
| | | </template> |
| | | </template> --> |
| | | <template #name="{ row }"> |
| | | <span>{{row.name}}</span> |
| | | <el-button :size="size" text v-if="row.nodeType != 70" icon="el-icon-setting" type="primary" placeholder="修改" @click="showEdit(row)" title="修改"></el-button> |
| | | <el-button :size="size" text icon="el-icon-delete" type="primary" @click="showDel(row)" placeholder="删除" title="删除"></el-button> |
| | | <el-button :size="size" text v-if="row.nodeType < 60" icon="el-icon-document-add" type="primary" @click="showAdd(row)" placeholder="新增子级" title="新增子级"></el-button> |
| | | <el-button :size="size" text v-if="row.nodeType == 60" icon="el-icon-upload" type="primary" @click="showUpload(row)" placeholder="文件上传" title="文件上传"></el-button> |
| | | <!-- <el-button :size="size" text v-if="row.nodeType != 70" icon="el-icon-setting" type="primary" placeholder="修改" @click="showEdit(row)" title="修改"></el-button> |
| | | <el-button :size="size" text v-if="row.nodeType != 10" icon="el-icon-delete" type="primary" @click="showDel(row)" placeholder="删除" title="删除"></el-button> |
| | | <el-button :size="size" text v-if="row.nodeType != 60 && row.nodeType != 70" icon="el-icon-document-add" type="primary" @click="showAdd(row)" placeholder="新增子级" title="新增子级"></el-button> |
| | | <el-button :size="size" text v-if="row.nodeType == 60 || row.nodeType == 50" icon="el-icon-upload" type="primary" @click="showUpload(row)" placeholder="文件上传" title="文件上传"></el-button> --> |
| | | <!-- 涉密网才有 --> |
| | | <el-button :size="size" text v-if="row.nodeType == 70 && isSM" icon="el-icon-pie-chart" type="primary" @click="upgrade(row)" placeholder="升版" title="升版"></el-button> |
| | | <!-- <el-button :size="size" text v-if="row.nodeType == 70 && isSM" icon="el-icon-pie-chart" type="primary" @click="upgrade(row)" placeholder="升版" title="升版"></el-button> --> |
| | | <!-- 工控网才有 --> |
| | | <el-button :size="size" text v-if="row.nodeType == 70 && !isSM" icon="el-icon-position" type="primary" @click="downsend(row)" placeholder="下发" title="下发"></el-button> |
| | | <!-- <el-button :size="size" text v-if="row.nodeType == 70 && !isSM" icon="el-icon-position" type="primary" @click="downsend(row)" placeholder="下发" title="下发"></el-button> --> |
| | | <!-- 替换 --> |
| | | <el-button :size="size" text v-if="row.nodeType == 60 && isSM" icon="el-icon-switch" type="primary" @click="replacement(row)" placeholder="替换" title="替换"></el-button> |
| | | <!-- <el-icon><Switch /></el-icon> --> |
| | | </template> |
| | | </avue-crud> |
| | | <!-- 新增节点 --> |
| | |
| | | <avue-form v-if="tabsType == 'tab1'" :option="tabsFormOption" v-model="tabsForm"></avue-form> |
| | | <span v-else-if="tabsType == 'tab2'">版本信息</span> |
| | | <template v-else-if="tabsType == 'tab3'"> |
| | | {{fileContent}} |
| | | <div v-html="convertToHtml(fileContent)"></div> |
| | | </template> |
| | | <template v-else-if="tabsType == 'tab4'"> |
| | | <avue-crud :addBtn="false" :option="tabsFormOption4" :data="tabsForm4" ref="crud4" @selection-change="selectionChange"> |
| | | <template #menu-left> |
| | | <el-button :size="size" type="primary" @click="comparison" :disabled="selectionList.length != 2">对比</el-button> |
| | | </template> |
| | | </avue-crud> |
| | | </template> |
| | | |
| | | <el-dialog title="升版" append-to-body v-model="upgradeModal" width="500"> |
| | | <avue-form :option="upgradeModalOption" v-model="upgradeModalForm" @submit="upgradeSubmit" @reset-change="upgradeCancel"></avue-form> |
| | | </el-dialog> |
| | | </basic-container> |
| | | <!-- 文件对比 --> |
| | | <el-drawer title="文件对比" append-to-body v-model="diffBox" size="100%" class="code-box"> |
| | | <div> |
| | | <code-diff :old-string="this.content1" :new-string="this.content2" output-format="side-by-side" :hideStat="true" :filename="codeDiffFileName1" :newFilename="codeDiffFileName2"/> |
| | | </div> |
| | | </el-drawer> |
| | | <!-- 替换 --> |
| | | <el-drawer title="替换" append-to-body v-model="todolistModel" size="100%" class="code-box"> |
| | | <div class="approve-box"> |
| | | <div class="left"> |
| | | <TodolistLeft :row="row" @selection-change="todoSelectionChange" /> |
| | | </div> |
| | | <div class="right"> |
| | | <TodolistRightTop :row="row" /> |
| | | <avue-form ref="form" :option="optionApprove" v-model="formApprove" @submit="handleSubmit" /> |
| | | </div> |
| | | </div> |
| | | </el-drawer> |
| | | </template> |
| | | |
| | | <script> |
| | | import { ElMessage } from 'element-plus'; |
| | | import TodolistLeft from './components/TodolistLeft.vue'; |
| | | import TodolistRightTop from './components/TodolistRightTop.vue'; |
| | | export default { |
| | | components: { |
| | | TodolistLeft, |
| | | TodolistRightTop |
| | | }, |
| | | data() { |
| | | let rejectText = '驳回';//+this.row.categoryName; |
| | | return { |
| | | replaceDataId: "", |
| | | formApprove: { |
| | | title: '', |
| | | comment: '', |
| | | approve: '', // 默认同意 |
| | | assignee: '' |
| | | }, |
| | | optionApprove: { |
| | | labelWidth: 100, |
| | | column: [ |
| | | { |
| | | label: '流程标题', |
| | | prop: 'title', |
| | | rules: [{ required: true, message: '请输入流程标题', trigger: 'blur' }], |
| | | }, |
| | | { |
| | | label: '发送给', |
| | | prop: 'assignee', |
| | | type: 'select', |
| | | dicUrl: `/api/blade-mdm/flow/flow-user-list?deptId=0`, |
| | | dicFlag: true, |
| | | props: { |
| | | label: 'name', |
| | | value: 'id', |
| | | }, |
| | | filterable: true, |
| | | span: 24, |
| | | disabled: false, |
| | | rules: [{ required: true, message: '请选择', trigger: 'change' }], |
| | | }, |
| | | { |
| | | label: '工序版次', |
| | | prop: 'processEdition', |
| | | type: 'input', |
| | | span: 24, |
| | | // disabled: true, |
| | | display: false,// 隐藏显示 |
| | | // rules: [{ required: true, message: '请选择下一审批用户', trigger: 'blur' }], |
| | | }, |
| | | { |
| | | label: '备注', |
| | | span: 24, |
| | | prop: 'comment', |
| | | type: 'textarea', |
| | | // rules: [{ required: true, message: '请输入审批意见', trigger: 'blur' }], |
| | | rules: [ |
| | | { |
| | | validator: (rule, value, callback) => { |
| | | console.log('-------',this.formApprove) |
| | | if (value === '' && this.formApprove.approve !== 'Y') { |
| | | callback(new Error('请输入备注')); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }, |
| | | trigger: 'blur' |
| | | } |
| | | ] |
| | | }, |
| | | ], |
| | | }, |
| | | applist: [], |
| | | row: {}, |
| | | todolistModel: false, |
| | | diffBox: false, |
| | | content1: "", |
| | | content2: "", |
| | | codeDiffFileName1: "", |
| | | codeDiffFileName2: "", |
| | | selectionList: [], |
| | | targetRow: {}, |
| | | upgradeModal: false, |
| | | file: null, |
| | |
| | | icon: 'el-icon-warning', |
| | | label: '文件内容', |
| | | prop: 'tab3' |
| | | }, { |
| | | icon: 'el-icon-warning', |
| | | label: '历史记录', |
| | | prop: 'tab4' |
| | | }] |
| | | }, |
| | | tabsFormOption: { |
| | |
| | | placeholder: " " |
| | | }, |
| | | { |
| | | label: '最后修改时间', |
| | | label: '修改时间', |
| | | prop: 'updateTime', |
| | | disabled: true, |
| | | placeholder: " " |
| | |
| | | menuPosition: "right", |
| | | column: [ |
| | | { |
| | | label: '节点类型', |
| | | label: '节点类型1', |
| | | prop: 'nodeType', |
| | | labelWidth: "120", |
| | | type: 'select', |
| | |
| | | current: 1, |
| | | total: 0, |
| | | }, |
| | | tabsFormOption4: { |
| | | rowKey: "id", |
| | | selection: true, |
| | | addBtn: false, |
| | | editBtn: false, |
| | | delBtn: false, |
| | | searchBtn: false, |
| | | emptyBtn: false, |
| | | menu: false, |
| | | column: [ |
| | | {label: '版本号',prop: 'versionNumber'}, |
| | | {label: '创建时间',prop: 'createTime'}, |
| | | {label: '创建人',prop: 'createUserName'}, |
| | | ] |
| | | }, |
| | | tabsForm4: {}, |
| | | option: { |
| | | highlightCurrentRow: true, |
| | | rowKey: "id", |
| | |
| | | menu: false, |
| | | searchBtn: false, |
| | | emptyBtn: false, |
| | | refreshBtn: false, |
| | | columnBtn: false, |
| | | searchShowBtn: false, |
| | | refreshBtn: false, |
| | | copyBtn: false, |
| | | gridBtn: false, |
| | | column: [ |
| | | { |
| | | label: '目录', |
| | |
| | | }, |
| | | { |
| | | label: '版本', |
| | | prop: 'abc' |
| | | prop: 'versionNumber', |
| | | formatter: (val, value, label) => { |
| | | if(val.nodeType == '60'){ |
| | | if(value==-1){ |
| | | return ''; |
| | | }else{ |
| | | return value; |
| | | } |
| | | }else{ |
| | | return ''; |
| | | } |
| | | } |
| | | }, |
| | | { |
| | | label: '版次', |
| | | prop: 'abc' |
| | | prop: 'processEdition', |
| | | formatter: (val, value, label) => { |
| | | if(val.nodeType == '60'){ |
| | | return value; |
| | | }else{ |
| | | return ''; |
| | | } |
| | | } |
| | | }, |
| | | { |
| | | label: '描述', |
| | |
| | | label: '设备', |
| | | prop: 'machineCode' |
| | | }, |
| | | { |
| | | label: '固化状态', |
| | | prop: 'abc' |
| | | }, |
| | | |
| | | { |
| | | label: '锁定状态', |
| | | prop: 'abc' |
| | | prop: 'isLocked', |
| | | formatter: (val, value, label) => { |
| | | if(val.nodeType == '60' || val.nodeType == '70'){ |
| | | if(value==1){ |
| | | return '已锁定'; |
| | | }else{ |
| | | return '未锁定'; |
| | | } |
| | | } |
| | | } |
| | | |
| | | }, |
| | | { |
| | | label: '流程状态', |
| | | prop: 'flowStatus', |
| | | formatter: (val, value, label) => { |
| | | if(val.nodeType != '70'){ |
| | | //非程序节点 |
| | | return ''; |
| | | }else{ |
| | | |
| | | if(value==0||value==null){ |
| | | return '未启动'; |
| | | }else if(value == 1){ |
| | | return '审批中'; |
| | | }else if(value == 2){ |
| | | return '已通过'; |
| | | }else{ |
| | | return '未定义'; |
| | | } |
| | | } |
| | | }, |
| | | formatter: (val, value, label) => { |
| | | if(val.nodeType != '60'){ |
| | | //非程序节点 |
| | | return ''; |
| | | }else{ |
| | | if(value==0||value==null){ |
| | | return '未启动'; |
| | | }else if(value == 1){ |
| | | return '审批中'; |
| | | }else if(value == 2){ |
| | | return '已通过'; |
| | | }else{ |
| | | return '未定义'; |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | label: '测试程序', |
| | |
| | | } |
| | | }, |
| | | watch: { |
| | | uploadmodalBox(old) { |
| | | //this.onLoad(); |
| | | } |
| | | |
| | | }, |
| | | methods: { |
| | | handleSubmit(form, done) { |
| | | //发起程序替换流程 |
| | | var obj = { |
| | | title: this.formApprove.title, |
| | | nodeId: this.id, |
| | | tempInstanceId: this.replaceDataId, |
| | | assignee: this.formApprove.assignee |
| | | } |
| | | axios({ |
| | | url: '/blade-mdm/flow/replace/start', |
| | | method: 'post', |
| | | data: obj |
| | | }).then( |
| | | resp => { |
| | | this.$message({ |
| | | type: 'success', |
| | | message: '操作成功!', |
| | | }); |
| | | done(); |
| | | this.todolistModel = false; |
| | | }); |
| | | // if(this.row.taskDefinitionKey === 'programmingTask') { |
| | | // // if(this.applist.length !== 1) { |
| | | // // done(); |
| | | // // return this.$message.success('请选择1个程序'); |
| | | // // } |
| | | // } |
| | | // approve({ |
| | | // ...this.formApprove, |
| | | // taskId: this.row.taskId, |
| | | // processInstanceId: this.row.processInstanceId, |
| | | // // programIds: this.row.taskDefinitionKey === 'programmingTask' ? this.applist.map(v => v.id).join(',') : '', |
| | | // }).then(res => { |
| | | // if(res.data.code !== 200) { |
| | | // this.$message.error(res.data.msg); |
| | | // done(); |
| | | // return; |
| | | // } |
| | | // this.$message.success('审批成功'); |
| | | // this.approveBox = false; |
| | | // this.onLoad(this.page, this.query); |
| | | // done(); |
| | | // }).catch(err => { |
| | | // done(); |
| | | // console.error(err); |
| | | // }); |
| | | }, |
| | | todoSelectionChange(applist) { |
| | | this.applist = applist; |
| | | }, |
| | | replacement(row) { //替换 |
| | | this.id = row.id; |
| | | this.formApprove = { |
| | | comment: '', |
| | | approve: 'Y', // 默认同 |
| | | } |
| | | //准备程序替换流程 |
| | | axios({ |
| | | url: '/blade-mdm/flow/replace/prestart', |
| | | method: 'post', |
| | | params: {nodeId: row.id} |
| | | }).then( |
| | | resp => { |
| | | this.row = row; |
| | | this.replaceDataId = resp.data.data; |
| | | this.todolistModel = true; |
| | | }); |
| | | }, |
| | | convertToHtml(text) { |
| | | return text.replace(/\r\n/g, '<br>'); |
| | | }, |
| | | removeHasChildren(treeData) { //查询时候使用,删掉hasChildren |
| | | return treeData.map(node => { |
| | | if (node.children && node.children.length > 0) { |
| | |
| | | this.tabsForm.nodeTypeName = item.dictValue; |
| | | } |
| | | }) |
| | | if(this.tabsForm.nodeType < 70) { |
| | | if(this.tabsForm.nodeType != 70) { |
| | | this.tabsOption = this.tabsOption1; |
| | | }else { |
| | | this.tabsOption = this.tabsOption2; |
| | | //获取文件list |
| | | this.getFile(row.id); |
| | | //获取历史记录 |
| | | this.getHistory(row.id); |
| | | //清空对比记录 |
| | | this.content1 = ""; |
| | | this.content2 = ""; |
| | | } |
| | | this.$nextTick(()=> { |
| | | this.tabsType = 'tab1'; |
| | |
| | | tabsHandleChange(tabs) { |
| | | this.tabsType = tabs.prop; |
| | | }, |
| | | showUpload(row) {//获取文件内容 |
| | | showUpload(row) {//获取附件内容(暂时没用) |
| | | this.fileList = []; |
| | | this.uploadmodalForm = row; |
| | | this.loading = true; |
| | |
| | | this.fileContent = res.data.data; |
| | | } |
| | | ); |
| | | }, |
| | | getHistory(id) { //查看历史记录 |
| | | this.loading = true; |
| | | axios({ |
| | | url: '/blade-mdm/program/node/history-by-nodeid', |
| | | method: 'get', |
| | | params: {id}, |
| | | }).then( |
| | | res => { |
| | | this.loading = false; |
| | | this.tabsForm4 = res.data.data; |
| | | } |
| | | ); |
| | | }, |
| | | comparison() { //对比 |
| | | this.loading = true; |
| | | axios({ |
| | | url: '/blade-mdm/program/node/compare-content', |
| | | method: 'get', |
| | | params: {id1:this.selectionList[0].id,id2:this.selectionList[1].id}, |
| | | }).then( |
| | | res => { |
| | | this.loading = false; |
| | | this.content1 = res.data.data.content1; |
| | | this.content2 = res.data.data.content2; |
| | | this.codeDiffFileName1 = this.selectionList[0].versionNumber; |
| | | this.codeDiffFileName2 = this.selectionList[1].versionNumber; |
| | | this.diffBox = true; |
| | | } |
| | | ); |
| | | }, |
| | | selectionChange(list) { |
| | | this.selectionList = list; |
| | | }, |
| | | showEdit(row,done) { |
| | | this.modalTitle = "修改"; |
| | |
| | | showAdd (row) { //新增子节点 |
| | | if(!row) { |
| | | this.modalTitle = "新增根节点"; |
| | | this.modalForm.nodeType = "10"; |
| | | this.modalForm.nodeType = this.nodeTypeList[0].dictKey; |
| | | this.modalForm.parentId = 0; |
| | | }else { |
| | | if(row.nodeType == 60) { |
| | | if(row.nodeType == 60) { //程序包 |
| | | return; |
| | | } |
| | | var defalutNodeType = ""; //下一级节点类型 |
| | | for(var i=0;i<this.nodeTypeList.length;i++) { |
| | | if(row.nodeType == this.nodeTypeList[i].dictKey) { |
| | | defalutNodeType = this.nodeTypeList[i+1].dictKey; |
| | | } |
| | | } |
| | | this.modalTitle = "新增子节点"; |
| | | this.selectedColumn.nodeType = String(Number(row.nodeType) + 10); |
| | | this.selectedColumn.nodeType = defalutNodeType; |
| | | this.selectedColumn.parentId = row.id; |
| | | this.selectedColumn.name = ""; |
| | | this.selectedColumn.id = ""; |
| | |
| | | .highlight-row:hover { |
| | | background-color: #e6f0ff !important; |
| | | } |
| | | .approve-box { |
| | | display: flex; |
| | | |
| | | &>div { |
| | | border: 1px solid #ccc; |
| | | } |
| | | |
| | | .left { |
| | | width: 400px; |
| | | } |
| | | |
| | | .right { |
| | | flex: 1; |
| | | } |
| | | } |
| | | </style> |
| | | <style> |
| | | .highlight-row { |
| | | background-color: #f0f7ff; |
| | | font-weight: bold; |
| | | } |
| | | .code-box .el-drawer__header { |
| | | margin-bottom: 0; |
| | | } |
| | | </style> |