yangys
2025-08-30 8ba602b2f08724c1b92ef1e90f89a6fa33861577
锁定加上锁定原因
已修改5个文件
177 ■■■■ 文件已修改
src/api/flow/todolist.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flow/components/TodolistLeft.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowmgr/processQuery1.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowmgr/processQuery2.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/wel/shemi.vue 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/flow/todolist.js
@@ -132,4 +132,15 @@
    method: 'post',
    data: data,
  })
}
//获取锁定原因
export const queryLockRemark = nodeId => {
  return request({
    url: '/blade-mdm/program/node/query-lock-remark',
    method: 'get',
    params: {
      id:nodeId
    },
  })
}
src/views/flow/components/TodolistLeft.vue
@@ -11,8 +11,9 @@
            <el-button type="primary" plain @click="addApp">添加文件
            </el-button>
        </div>
         <el-text type="danger"  v-if="row.variables.curedLocked === 'Y'">固化程序已加锁,请谨慎使用</el-text>
         <el-text type="danger"  v-if="row.variables.hasCuredProgram==='Y' && row.variables.isProcessEditionSame=='N' && row.variables.cureProgramUseable==undefined">已固化程序工序版次不一致,派工版次:{{row.variables.processEdition}},已固化版次:{{row.variables.curedProcessEdition}}</el-text>
         <el-text type="danger" v-if="row.variables.curedLocked === 'Y'">固化程序已锁定,请谨慎使用。锁定原因:{{ remark }}</el-text>
         <el-text type="danger" v-if="row.processDefinitionKey === 'program-unlock'">程序已锁定,锁定原因:{{ remark }}</el-text>
         <el-text type="danger" v-if="row.variables.hasCuredProgram==='Y' && row.variables.isProcessEditionSame=='N' && row.variables.cureProgramUseable==undefined">已固化程序工序版次不一致,派工版次:{{row.variables.processEdition}},已固化版次:{{row.variables.curedProcessEdition}}</el-text>
        <el-table :data="tableData" border @row-click="showContent" max-height="200" highlight-current-row>
            <!-- <el-table-column prop="machineCode" label="加工机床">
            </el-table-column> -->
@@ -83,7 +84,7 @@
</template>
<script>
import { getAppList,getFileData, getSelectedAppList, getContent, removeAtt } from '@/api/flow/todolist';
import { getAppList,getFileData, getSelectedAppList, getContent, removeAtt,queryLockRemark } from '@/api/flow/todolist';
import { exportBlob } from '@/api/common';
import { getToken } from '@/utils/auth';
import NProgress from 'nprogress';
@@ -188,11 +189,14 @@
                    // },
                ],
            },
            remark:'',//锁定原因
        }
    },
    mounted() {
        this.getAttList();
        this.getFileData();
        this.getLockRemark();//获取锁定原因
        this.onLoad(this.page);
        
    },
@@ -207,6 +211,20 @@
                }
            })
        },
        getLockRemark () {
            //获取锁定原因
            let nodeId = this.row.variables.nodeId;
            if(!nodeId){
                nodeId = this.row.variables.curedNodeId;
            }
            queryLockRemark(nodeId).then(res => {
                if (res.data.code == 200) {
                    this.remark = res.data.data || '';
                } else {
                    this.remark = '';
                }
            })
        },
        diffFile(index, row) {
            console.log(row)
            axios({
src/views/flowmgr/processQuery1.vue
@@ -149,7 +149,7 @@
                    {
                        label: '流程名称',
                        prop: '',
                        width: 80,
                        width: 85,
                        render: ({ row }) => {
                            return h('p',
                                {
@@ -162,7 +162,7 @@
                    {
                        label: '批次号',
                        prop: 'variables.craftEdition',
                        width: 80,
                        width: 70,
                        render: ({ row }) => {
                            return h('span', {}, row?.variables?.craftEdition || '');
                        }
@@ -336,6 +336,7 @@
                    {
                        label: '批次号',
                        prop: 'variables.craftEdition',
                        render: ({ row }) => {
                            return h('p',{'class': 'margin0'}, row?.variables?.craftEdition || '');
                        }
src/views/flowmgr/processQuery2.vue
@@ -12,9 +12,7 @@
            @selection-change="selectionChange">
            
            <template #menu-left>
                <!-- <el-button type="primary" plain @click="exportWebSite">导出回传涉密网</el-button>
                -->
            </template>
            <template #menu="scope">
                <el-button type="primary" text size="default" @click.stop="customView(scope.row, scope.index, 0)">查看
@@ -22,6 +20,9 @@
               <el-button type="primary" text size="default" v-if="scope.row.processDefinitionKey === 'dispatch'"
                    @click.stop="handleApproveTable(scope.row, scope.index)">审批表
                </el-button>
                 <!--
                  v-if="scope.row.processDefinitionKey === 'program-cure'"
                -->
                <el-button type="primary" text size="default" v-if="scope.row.processDefinitionKey === 'program-cure'"
                    @click.stop="handleConfirmTable(scope.row, scope.index)">确认表
                </el-button>
src/views/wel/shemi.vue
@@ -58,10 +58,10 @@
            icon="el-icon-switch" type="primary" @click="replacement(row)" placeholder="替换" title="替换"></el-button>
          <el-button :size="size" text
            v-if="permission.lock_button && row.nodeType == 60 && row.parentIds.indexOf('0,2') > -1 && row.isLocked != 1"
            icon="el-icon-lock" type="primary" @click="locked(row, true)" placeholder="锁定" title="锁定"></el-button>
            icon="el-icon-lock" type="primary" @click="showLockDlg(row)" placeholder="锁定" title="锁定"></el-button>
          <el-button :size="size" text
            v-if="permission.lock_button && row.nodeType == 60 && row.parentIds.indexOf('0,2') > -1 && row.isLocked == 1"
            icon="el-icon-unlock" type="primary" @click="locked(row, false)" placeholder="解锁" title="解锁"></el-button>
            icon="el-icon-unlock" type="primary" @click="startUnlock(row)" placeholder="解锁" title="解锁"></el-button>
        </template>
      </avue-crud>
    </div>
@@ -109,24 +109,16 @@
      </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 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" icon="el-icon-pie-chart" type="primary" @click="upgrade(row)" placeholder="升版" title="升版"></el-button> -->
          <!-- 工控网才有 -->
          <!-- <el-button :size="size" text v-if="row.nodeType == 70" icon="el-icon-position" type="primary" @click="downsend(row)" placeholder="下发" title="下发"></el-button> -->
          <!-- 替换  v-if="permission.auto_dispatch"-->
          <el-button :size="size" text v-if="row.nodeType == 60 && row.parentIds.indexOf('0,1,') > -1"
            icon="el-icon-switch" type="primary" @click="replacement(row)" placeholder="替换" title="替换"></el-button>
          <el-button :size="size" text
            v-if="permission.lock_button && row.nodeType == 60 && row.parentIds.indexOf('0,2') > -1 && row.isLocked != 1"
            icon="el-icon-lock" type="primary" @click="locked(row, true)" placeholder="锁定" title="锁定"></el-button>
            icon="el-icon-lock" type="primary" @click="showLockDlg(row)" placeholder="锁定" title="锁定"></el-button>
          <el-button :size="size" text
            v-if="permission.lock_button && row.nodeType == 60 && row.parentIds.indexOf('0,2') > -1 && row.isLocked == 1"
            icon="el-icon-unlock" type="primary" @click="locked(row, false)" placeholder="解锁" title="解锁"></el-button>
            icon="el-icon-unlock" type="primary" @click="startUnlock(row)" placeholder="解锁" title="解锁"></el-button>
        </template>
      </avue-crud>
    </div>
@@ -145,6 +137,12 @@
        </template>
      </avue-form>
    </el-dialog>
    <!-- 锁定对话框 -->
    <el-dialog title="程序锁定" append-to-body v-model="lockBox">
      <avue-form :option="lockOption" v-model="lockForm" @submit="lockSubmit" @reset-change="lockCancel" />
    </el-dialog>
    <avue-tabs :option="tabsOption" @change="tabsHandleChange" style="margin-top: 30px;" v-if="isShowTabs"></avue-tabs>
    <avue-form v-if="tabsType == 'tab1'" :option="tabsFormOption" v-model="tabsForm"></avue-form>
    <!--<span v-else-if="tabsType == 'tab2'">版本信息</span>-->
@@ -439,6 +437,32 @@
      },
      modalBox: false,
      modalTitle: "",
      lockOption: {
        submitText: "锁定",
        emptyText: "取消",
        menuPosition: "right",
        column: [
          {
            label: '程序包名',
            prop: 'name',
            disabled:true,
            labelWidth: "120",
          },
          {
            label: '锁定原因',
            prop: 'remark',
            type: "textarea",
            labelWidth: "120",
            span: 24,
            rules: [{ required: true, message: '必填', trigger: 'blur' }],
          }
        ]
      },
      lockForm: {},
      lockBox: false,
      id: "",
      parentId: 1,
      loading: true,
@@ -509,22 +533,7 @@
                return '';
              }
            }
          },/*
          {
            label: '版次',
            prop: 'processEdition',
            formatter: (val, value, label) => {
                if(val.nodeType == '60'){
                    return value;
                }else{
                    return '';
                }
            }
          },
          {
            label: '描述',
            prop: 'abc'
          },*/
          {
            label: '类型',
            prop: 'nodeTypeName'
@@ -567,11 +576,7 @@
                }
              }
            },
          },/*
          {
            label: '测试程序',
            prop: 'abc'
          },*/
          },
          {
            label: '创建人',
            prop: 'createUserName',
@@ -765,22 +770,55 @@
        this.drawingNoList = [];
      }
    },
    locked(row, isLockP) {
      //row.isLocked == isLock
      var isLock = row.isLocked == 1;
      console.log('isLock', isLock)
      this.$confirm(`是否${isLock ? '解锁' : '锁定'}`, {
    showLockDlg(row){
      this.lockForm = row;
     //this.lockForm.name = row.name;
     // this.lockForm.id = row.id;
      this.lockForm.remark = '';
      this.lockBox = true;
    },
    lockCancel() {
      this.lockBox = false;
      this.lockForm = {};
    },
    lockSubmit() {
      //锁定提交
      this.$confirm('是否锁定', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
      }).then(() => {
        axios({
          url: isLock ? '/blade-mdm/flow/lock/start-unlock' : '/blade-mdm/program/node/lock',
          url: '/blade-mdm/program/node/lock',
          method: 'post',
          params: { id: row.id, nodeId: row.id }
          params: this.lockForm
        }).then(res => {
          if (res.data.code == 200) {
            this.$message({ type: 'success', message: '操作成功!' });
            this.addLocalTreeNode(this.lockForm.parentId);
            this.lockBox = false;
          } else {
            this.$message({ type: 'success', message: res.data.msg });
          }
        });
      }).catch(action => {
        console.log('cancel')
      });
    },
    startUnlock(row) {
      //启动解锁流程
      this.$confirm(`是否解锁`, {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
      }).then(() => {
        axios({
          url: '/blade-mdm/flow/lock/start-unlock',
          method: 'post',
          params: {nodeId: row.id }
        }).then(res => {
          if (res.data.code == 200) {
            this.$message({ type: 'success', message: '解锁流程已启动!' });
            this.addLocalTreeNode(row.parentId);
          } else {
            this.$message({ type: 'success', message: res.data.msg });
@@ -843,6 +881,18 @@
    todoSelectionChange(applist) {
      this.applist = applist;
    },
    showReplaceDlg(row) {  //替换对话框
      if (row.nodeType == 60) { //程序包
        return;
      }
      //111
      this.modalTitle = "新增子节点";
      this.selectedColumn.parentId = row.id;
      this.modalForm = this.selectedColumn;
      this.modalBox = true;
    },
    replacement(row) {  //替换
      this.id = row.id;
      this.formApprove = {