| | |
| | | export default { |
| | | data() { |
| | | var that = this; |
| | | var aurl = "/blade-system/dept/lazy-list"; |
| | | return { |
| | | machineTitle: "新增", |
| | | isAdd: true, |
| | |
| | | label: 'deptName', |
| | | value: 'id' |
| | | }, |
| | | dicUrl: `/blade-system/dept/lazy-list` |
| | | dicUrl: aurl |
| | | }, |
| | | { |
| | | label: '生产商', |
| | |
| | | * @Author: 李喆(开发组) lzhe@yxqiche.com |
| | | * @Date: 2025-05-28 12:03:55 |
| | | * @LastEditors: 李喆(开发组) lzhe@yxqiche.com |
| | | * @LastEditTime: 2025-06-13 14:50:38 |
| | | * @LastEditTime: 2025-07-10 12:16:15 |
| | | * @FilePath: /mdmweb/src/views/flowmgr/taskassign.vue |
| | | * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE |
| | | --> |
| | |
| | | }, |
| | | { |
| | | label: '图号版次', |
| | | prop: 'drawingNoEdition', |
| | | prop: 'partNoEdition', |
| | | type: 'input', |
| | | span: 12, |
| | | dataType: 'string', |
| | |
| | | @refresh-change="refreshChange" |
| | | @on-load="onLoad" |
| | | @tree-load="treeLoad" |
| | | @row-del="rowDel" |
| | | @row-save="rowSave" |
| | | @row-update="rowUpdate" |
| | | @row-click="rowClick" |
| | | > |
| | | <template #menu-left> |
| | |
| | | <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 == 60" 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-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> |
| | | </template> |
| | | </avue-crud> |
| | |
| | | <avue-form :option="modalOption" v-model="modalForm" @submit="modalSubmit" @reset-change="modalCancel"/> |
| | | </el-dialog> |
| | | <el-dialog title="上传文件" append-to-body v-model="uploadmodalBox"> |
| | | <avue-form :option="uploadmodalOption" v-model="uploadmodalForm" @submit="uploadmodalSubmit" @reset-change="uploadmodalCancel" :upload-before="uploadBefore" :upload-after="uploadAfter" ref="uploadRef"></avue-form> |
| | | <avue-form :option="uploadmodalOption" v-model="uploadmodalForm" @submit="uploadmodalSubmit" @reset-change="uploadmodalCancel" :upload-before="uploadBefore" :upload-after="uploadAfter"> |
| | | <template #fileList="{}" slot-scope="{ value }"> |
| | | <div v-for="(file, index) in fileList" :key="index" v-if="fileList.length != 0"> |
| | | {{ file.name }} |
| | | </div> |
| | | <div v-else>没有上传文件</div> |
| | | </template> |
| | | </avue-form> |
| | | </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> |
| | | <template v-else-if="tabsType == 'tab3'"> |
| | | {{fileContent}} |
| | | <!-- <div v-for="item in fileList" v-if="fileList.length > 0" class="fileListStyle"> |
| | | <span>{{item.name}}</span> |
| | | <span class="delFile" @click="delFile(item)">X</span> |
| | | </div> --> |
| | | </template> |
| | | <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}} |
| | | </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> |
| | | </template> |
| | | |
| | |
| | | export default { |
| | | data() { |
| | | return { |
| | | upgradeModal: false, |
| | | file: null, |
| | | fileContent: "", |
| | | isSM: false, //是否是涉密网 ,工控网5个,涉密网4个 |
| | |
| | | nodeTypeList: [], |
| | | fileList: [], |
| | | tabsType: "tab1", |
| | | upgradeModalForm: {}, |
| | | upgradeModalOption: { |
| | | emptyText: "取消", |
| | | menuPosition: "right", |
| | | column: [{ |
| | | label: '工序版次', |
| | | prop: 'processEdition', |
| | | labelWidth: "80", |
| | | span: 22 |
| | | }] |
| | | }, |
| | | tabsOption: {}, |
| | | tabsOption1: { |
| | | column: [{ |
| | |
| | | { |
| | | label: '节点类型', |
| | | prop: 'nodeType', |
| | | labelWidth: "120", |
| | | type: 'select', |
| | | dicUrl: '/blade-system/dict-biz/dictionary?code=nc_node_type', |
| | | props: { |
| | |
| | | { |
| | | label: '设备(机床)', |
| | | prop: 'machineCode', |
| | | labelWidth: "120", |
| | | type: 'select', |
| | | dicUrl: '/blade-mdm/machine/page', |
| | | props: { |
| | |
| | | }, |
| | | { |
| | | label: '节点名称', |
| | | prop: 'name' |
| | | prop: 'name', |
| | | labelWidth: "120", |
| | | }, |
| | | { |
| | | label: '节点描述', |
| | | prop: 'description', |
| | | labelWidth: "120", |
| | | hide: true |
| | | }, |
| | | { |
| | | label: '备注', |
| | | prop: 'remark', |
| | | type: "textarea", |
| | | labelWidth: "120", |
| | | span: 24 |
| | | } |
| | | ] |
| | |
| | | { |
| | | label: '节点类型', |
| | | prop: 'nodeType', |
| | | labelWidth: "120", |
| | | type: 'select', |
| | | dicUrl: '/blade-system/dict-biz/dictionary?code=nc_node_type', |
| | | props: { |
| | |
| | | { |
| | | label: '设备编号', |
| | | prop: 'machineCode', |
| | | labelWidth: "120", |
| | | type: 'select', |
| | | dicUrl: '/blade-mdm/machine/page', |
| | | props: { |
| | |
| | | }, |
| | | { |
| | | label: '零组件号/图号', |
| | | prop: 'drawingNo' |
| | | prop: 'drawingNo', |
| | | labelWidth: "120" |
| | | }, |
| | | { |
| | | label: '工序', |
| | | prop: 'processName' |
| | | prop: 'processName', |
| | | labelWidth: "120" |
| | | }, |
| | | { |
| | | label: '工序版本', |
| | | prop: 'processEdition' |
| | | prop: 'processEdition', |
| | | labelWidth: "120" |
| | | }, |
| | | { |
| | | label: '节点分类', |
| | | prop: 'category', |
| | | labelWidth: "120", |
| | | type: 'select', |
| | | dicUrl: '/blade-system/dict-biz/dictionary?code=node_file_type', |
| | | props: { |
| | |
| | | { |
| | | label: '选择文件', |
| | | prop: 'uploadFile', |
| | | labelWidth: "120", |
| | | type: 'upload', |
| | | data: {nodeId: this.id}, |
| | | action: "", |
| | |
| | | action: "/blade-mdm/program/ncfile/upload" |
| | | }, |
| | | { |
| | | label: '文件列表', |
| | | prop: 'fileList', |
| | | labelWidth: "120" |
| | | }, |
| | | { |
| | | label: '备注', |
| | | prop: 'remark', |
| | | type: "textarea", |
| | | labelWidth: "120", |
| | | span: 24 |
| | | } |
| | | ] |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | downsend(row) { //下发 |
| | | // this.loading = true; |
| | | // axios({ |
| | | // url: '/program/ncfile/send-to-machine-by-nodeid', |
| | | // method: 'get', |
| | | // params: {nodeId:id}, |
| | | // }).then( |
| | | // res => { |
| | | |
| | | // } |
| | | // ); |
| | | }, |
| | | upgrade(row) { //升级 |
| | | this.loading = true; |
| | | var obj = {id: row.id} |
| | | upgradeSubmit(row,done) { //升版 |
| | | axios({ |
| | | url: '/blade-mdm/program/ncfile/upgrade-process-edition', |
| | | method: 'post', |
| | | data: obj, |
| | | params: {bindNcNodeId:row.id,newProcessEdition: row.processEdition}, |
| | | }).then( |
| | | resp => { |
| | | this.$message.success('升级成功'); |
| | | res => { |
| | | done(); |
| | | this.upgradeModal = false; |
| | | this.$message.success('操作成功'); |
| | | this.addLocalTreeNode(row.parentId); |
| | | } |
| | | ); |
| | | }, |
| | | upgradeCancel() { |
| | | this.upgradeModal = false; |
| | | }, |
| | | downsend(row) { //下发 |
| | | this.loading = true; |
| | | axios({ |
| | | url: '/blade-mdm/program/ncfile/send-to-machine-by-nodeid', |
| | | method: 'get', |
| | | params: {nodeId:id}, |
| | | }).then( |
| | | res => { |
| | | this.loading = false; |
| | | this.$message.success('操作成功'); |
| | | } |
| | | ); |
| | | }, |
| | | upgrade(row) { //升版 |
| | | this.upgradeModalForm = {...row}; |
| | | this.upgradeModal = true; |
| | | }, |
| | | delFile(item) { |
| | | this.loading = true; |
| | |
| | | ); |
| | | }, |
| | | uploadBefore(file,done,loading,column) { |
| | | //done(); |
| | | this.file = file; |
| | | this.fileList.push(file); |
| | | //done(); 放开就上传了 |
| | | return false; |
| | | }, |
| | | uploadAfter() { |
| | | }, |
| | | uploadmodalSubmit(row,done) { |
| | | uploadmodalSubmit(row,done) { //上传提交接口 |
| | | if(this.file == null) { |
| | | this.$message.error('请上传文件'); |
| | | return; |
| | |
| | | res => { |
| | | this.loading = false; |
| | | this.uploadmodalBox = false; |
| | | this.addLocalTreeNode(row.parentId); //重新加载下一级 |
| | | this.addLocalTreeNode(row.id); //重新加载下一级 |
| | | done(); |
| | | } |
| | | ); |
| | |
| | | tabsHandleChange(tabs) { |
| | | this.tabsType = tabs.prop; |
| | | }, |
| | | showUpload(row) { |
| | | showUpload(row) {//获取文件内容 |
| | | this.fileList = []; |
| | | this.uploadmodalForm = row; |
| | | this.uploadmodalBox = true; |
| | | this.loading = true; |
| | | var obj = {parentId: row.id} |
| | | axios({ |
| | | url: '/blade-mdm/program/node/lazy-list', |
| | | method: 'get', |
| | | params: obj, |
| | | }).then( |
| | | res => { |
| | | this.loading = false; |
| | | this.fileList = res.data.data; |
| | | this.uploadmodalBox = true; |
| | | } |
| | | ); |
| | | }, |
| | | getFile(id) { //查看文件内容 |
| | | this.loading = true; |
| | |
| | | this.fileContent = res.data.data; |
| | | } |
| | | ); |
| | | }, |
| | | rowDel(row, index, done) { |
| | | done(row); |
| | | }, |
| | | rowSave (row, done) { |
| | | done(row); |
| | | }, |
| | | rowUpdate (row, index, done) { |
| | | done(row); |
| | | }, |
| | | showEdit(row,done) { |
| | | this.modalTitle = "修改"; |
| | |
| | | }).then( |
| | | res => { |
| | | this.loading = false; |
| | | this.$refs.crud.rowDel(row); |
| | | this.addLocalTreeNode(row.parentId); |
| | | } |
| | | ); |
| | | }) |
| | |
| | | this.modalBox = false; |
| | | // 修改,更新本地数据 |
| | | if (this.modalTitle === "修改") { |
| | | this.updateLocalTreeNode(this.modalForm); |
| | | this.addLocalTreeNode(row.parentId); |
| | | }else { |
| | | // 如果是新增操作,可能需要重新加载数据 |
| | | //this.$refs.crud.refreshTable(); |
| | |
| | | }).then( |
| | | res => { |
| | | var children = res.data.data || []; |
| | | this.updateParentNodeChildren(parentId, children); |
| | | if(parentId == 0) { |
| | | this.data = [...children]; |
| | | }else { |
| | | this.$refs.crud.$refs.table.store.states.lazyTreeNodeMap.value[parentId] = [...children]; |
| | | } |
| | | this.loading = false; |
| | | } |
| | | ); |
| | | }, |
| | | updateParentNodeChildren(parentId, newChildren) { //新增的方法 |
| | | const updateTree = (nodes) => { |
| | | for (let i = 0; i < nodes.length; i++) { |
| | | if (nodes[i].id === parentId) { |
| | | // 更新节点数据 |
| | | nodes[i].children = [...newChildren]; |
| | | this.data = [...this.data]; // 替换顶层引用 |
| | | return true; |
| | | } |
| | | if (Array.isArray(nodes[i].children) && nodes[i].children.length > 0) { |
| | | if (updateTree(nodes[i].children)) { |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | return false; |
| | | }; |
| | | updateTree(this.data); |
| | | // this.upData = JSON.parse(JSON.stringify(this.data)); |
| | | // this.data = []; |
| | | // 强制刷新 |
| | | this.$nextTick(() => { |
| | | this.$refs.crud?.refreshTable(); |
| | | // this.data = this.upData; |
| | | // this.option.defaultExpandAll = true; |
| | | }); |
| | | // setTimeout(()=> { |
| | | // this.data = this.upData; |
| | | // this.option.defaultExpandAll = true; |
| | | // console.log(this.data,222) |
| | | // },3000) |
| | | }, |
| | | updateLocalTreeNode(nodeData) { //修改的方法 |
| | | const updateNode = (nodes) => { |
| | | for (let i = 0; i < nodes.length; i++) { |
| | | if (nodes[i].id === nodeData.id) { |
| | | // 更新节点数据 |
| | | Object.assign(nodes[i], nodeData); |
| | | return true; |
| | | } |
| | | if (Array.isArray(nodes[i].children) && nodes[i].children.length > 0) { |
| | | if (updateNode(nodes[i].children)) { |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | return false; |
| | | }; |
| | | updateNode(this.data); |
| | | }, |
| | | modalCancel() { |
| | | this.modalBox = false; |
| | |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | .el-form-item__label { |
| | | width: 120px!important; |
| | | } |
| | | .delFile { |
| | | color: red; |
| | | margin-left: 12px; |