Source/UBCS-WEB/src/api/template/templateAttr.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Source/UBCS-WEB/src/components/Theme/ThemeClassifyTreeform.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Source/UBCS-WEB/src/components/Theme/ThemeTemplatePro.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Source/UBCS-WEB/src/views/modeling/originalAdd.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Source/UBCS-WEB/vue.config.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllDmMapperProcessor.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Source/UBCS-WEB/src/api/template/templateAttr.js
@@ -216,6 +216,7 @@ return request({ url:'/api/ubcs-code/codeClassify/exportClassify', method: 'get', responseType: 'blob', params:{ ...params } Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
@@ -14,7 +14,7 @@ </el-button-group> <el-button-group> <!-- 保存--> <el-button v-if="(!checkStatus|| crudLCStatus=='Editing') && editOpenFlag" size="small" type="success" plain @click="addsHandler" icon="el-icon-check">保存</el-button> <el-button v-if="(!checkStatus|| crudLCStatus=='Editing') && editOpenFlag" size="small" type="success" plain @click.prevent="addsHandler" icon="el-icon-check">保存</el-button> <!-- 预览排序--> <el-button size="small" @click="orderHandle" icon="el-icon-arrow-down">预览排序</el-button> <!-- 删除--> @@ -166,11 +166,11 @@ </div> </el-dialog> <!-- 属性分组--> <el-dialog :visible.sync="attrVisible" append-to-body style="width: 800px; left:30vw;top: 10vh ;" <el-dialog :visible.sync="attrVisible" append-to-body :before-close="attrModel=''" style="width: 800px; left:30vw;top: 10vh ;" title="输入分组的名称"> <el-form ref="form" label-width="70px"> <el-form-item label="属性分组"> <el-input v-model="attrModel"></el-input> <el-input v-model="attrModel" autofocus></el-input> </el-form-item> <div style="display: flex;justify-content: flex-end"> <el-button size="small" type="primary" @click="attrHandle">提交</el-button> @@ -218,7 +218,7 @@ </el-dialog> <!-- 全屏编辑--> <el-dialog :visible.sync="attrEditVisible" append-to-body fullscreen="true" :before-close="escEdit" > <attrCrud :ProData="this.ProData" :attrFlagChiledren="this.attrFlag" :editStyleFlag="editStyleFlag" :editOpenFlag="editOpenFlag" :crudArrayFlag="this.crudArrayFlag"></attrCrud> <attrCrud :ProData="this.ProData" :attrFlagChiledren="this.attrFlag" @editCloseChildren="editClose" :editStyleFlag="editStyleFlag" :editOpenFlag="editOpenFlag" :crudArrayFlag="this.crudArrayFlag"></attrCrud> </el-dialog> <!-- 组合规则--> <formula-editor :systemVariableTableData="systemVariableTableData" @@ -1677,15 +1677,16 @@ this.attrRow = row; }, //保存 addsHandler() { addsHandler(event) { batchAddSave(JSON.parse(JSON.stringify(this.ProData))).then(res => { this.$message.success('保存成功') this.editOpenFlag=false this.editOpenFlag=false; // 调用父组件修改按钮状态 this.$emit('editCloseChildren') }).catch(()=>{ this.$message.warning('保存失败,请查看控制台输出!') }) }, //表格行编辑 handleCellClicks(row, column) { if(this.editOpenFlag){ @@ -1705,6 +1706,7 @@ } // this.$refs.referConfigFormDialog.onloadAttrData(); }else if(column.property == 'classifyInvokeText'){ this.injectVisible=true; if (this.CurrentCell.classifyInvokeAttr != '') { this.injectOption = { classifyInvokeAttr: this.CurrentCell.classifyInvokeAttr, @@ -1741,6 +1743,9 @@ this.rulesVisible=true; }else if(column.property == 'attributeGroup'){ this.attrVisible = true; if(this.CurrentCell.attributeGroup !== ''){ this.attrModel=this.CurrentCell.attributeGroup } } } }, @@ -1889,6 +1894,7 @@ this.$set(this.attrSelectList[0],'classifyInvokeText',data) } this.injectHandleReset() if(this.injectOption.classifyInvokeLevel !== 'min'){ this.injectOption.classifyInvokeLevel=this.injectOption.classifyNumber; }else { @@ -1995,6 +2001,10 @@ editOpen(){ this.editOpenFlag=true; }, //定义一个关闭编辑的方法供子组件使用 editClose(){ this.editOpenFlag=false; }, //批量设置switch batchSetFlag(value){ this.attrSelectList.forEach(item=>{ Source/UBCS-WEB/src/components/Theme/ThemeClassifyTreeform.vue
@@ -334,6 +334,11 @@ } }, watch:{ TreeFlag:{ handler(newval,oldval){ console.log(newval) } } }, created() { }, Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue
@@ -24,7 +24,7 @@ </div> </div> <!-- 树节点添加对话框--> <el-dialog :title="this.TreeFlag ? '添加分类' :'添加主题库'" :visible.sync="TreeAddFormVisible" append-to-body <el-dialog :title="this.TreeFlag ? '添加分类' :'添加主题库'" :visible.sync="TreeAddFormVisible" v-loading="AddLoading" append-to-body style="width: 1700px;margin: auto"> <el-form :model="TreeAddform" :rules="rules"> <el-form-item :label="this.TreeFlag ? '分类编号:' :'主题库编号:'" label-width="150px" style="display: inline-block" prop="id"> @@ -33,7 +33,7 @@ <el-form-item :label="this.TreeFlag ? '分类名称:' :'主题库名称:'" label-width="110px" style="display: inline-block" prop="name"> <el-input v-model="TreeAddform.name" autocomplete="off" style="width: 170px"></el-input> </el-form-item> <el-form-item label="存储的业务类型:" label-width="150px" v-if="TreeFlagCode==false" prop="btmTypeName"> <el-form-item label="存储的业务类型:" label-width="150px" v-if="TreeFlagCode" prop="btmTypeName"> <el-input v-model="TreeAddform.btmTypeName" autocomplete="off" style="width: 585px" @focus="btmFoucus"></el-input> </el-form-item> <el-form-item label="描述:" label-width="150px"> @@ -350,6 +350,9 @@ inject: ["crudTreeData"], data() { return { AddLoading:false, // 定义一个变量来保存树请求的数量 requestCount:0, //导入状态框 ThemeImportVisible:false, selectRow:'', @@ -656,6 +659,13 @@ showEditBtn:false, } }, watch:{ TreeFlagCode:{ handler(newval,oldval){ console.log('TreeFlagCode',newval) } } }, //tab栏默认是表格 mounted() { this.type = this.tabOption.column[0]; @@ -730,9 +740,6 @@ created() { }, watch:{ }, methods: { /** 导入 */ ImportExcel(){ @@ -742,7 +749,7 @@ ExportExcel(){ if(this.nodeClickList){ exportClassify({oid:this.nodeClickList.oid}).then(res=>{ func.downloadFileByBlob(res); func.downloadFileByBlobHandler(res); }) }else { this.$message.warning('请先选择要导出的主题库分类') @@ -996,11 +1003,23 @@ } }, //树节点添加按钮 TreeAdd() { this.TreeAddFormVisible = true; // 判断当前是否有点击子项 if (this.nodeClickList !== "") { this.TreeFlag = true async TreeAdd() { const loading = this.$loading({ lock: true, text: 'Loading', spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.3)' }); try { if (this.nodeClickList !== "") { this.TreeFlag = true; } await new Promise(resolve => setTimeout(resolve, 500)); this.TreeAddFormVisible = true; loading.close(); } catch (error) { this.$message.error(error); loading.close(); } }, //树节点添加事件 @@ -1173,72 +1192,61 @@ }, //树点击事件 async nodeClick(data) { //定义一个模板属性id,数据是模板管理表格里面的oid if(data.parentId == ""){ this.TreeFlagCode=true; console.log(data); if (data.parentId === "") { this.TreeFlagCode = true; }else { this.TreeFlagCode =false; } this.nodeClickList = data this.selectRow=0; this.nodeClickList = data; this.selectRow = 0; try { await TreeObjcet(data.oid).then(res => { this.FlagObj = res.data.data }).catch(res => { this.$message.error(res) }) //模板管理表格数据 await gridCodeClassifyTemplate({'conditionMap[codeclassifyoid]': data.oid}).then(res => { this.Formlist = res.data.data.filter(item => { if (item.codeclassifyoid != "") { this.codeClassifyOid = item.codeclassifyoid return item.codeclassifyoid == this.nodeClickList.oid } }) if(this.Formlist.length >= 1){ this.crudLCStatus=this.Formlist[this.selectRow].lcStatus; this.crudArray.push(this.Formlist[this.selectRow]); this.crudOid=this.Formlist[this.selectRow].oid; this.gridCode() }else { this.ProData = []; this.requestCount += 1; const [res1, res2, res3] = await Promise.all([ TreeObjcet(data.oid), gridCodeClassifyTemplate({ 'conditionMap[codeclassifyoid]': data.oid }), getObjectByOid(data.oid) ]); this.FlagObj = res1.data.data; this.Formlist = res2.data.data.filter(item => { if (item.codeclassifyoid != "") { this.codeClassifyOid = item.codeclassifyoid; return item.codeclassifyoid == this.nodeClickList.oid; } }).catch(res => { this.$message.error(res) }) // 基本信息表单数据 await getObjectByOid(this.nodeClickList.oid).then(res => { this.TreeList = res.data.data; }).catch(res => { this.$message.error(res) }) }); if (this.Formlist.length >= 1) { this.crudLCStatus = this.Formlist[this.selectRow].lcStatus; this.crudArray.push(this.Formlist[this.selectRow]); this.crudOid = this.Formlist[this.selectRow].oid; await this.gridCode(); } else { this.ProData = []; } this.TreeList = res3.data.data; } catch (error) { this.$message.error(error) this.$message.error(error); } }, gridCode(){ gridCodeClassifyTemplateAttr({'conditionMap[classifyTemplateOid]': this.Formlist[this.selectRow].oid,limit:-1}).then(res => { this.ProData = res.data.data; //分类注入数据格式 this.ProData = res.data.data.map((item) => { //如果分类注入classifyInvokeAttr为空说明是初始状态 if(item.classifyInvokeAttr !== ''){ if (!item.hasOwnProperty('classifyInvokeText')) { // 检查classifyInvokeText属性是否存在 item = { ...item, classifyInvokeText: { "注入类型": item.classifyInvokeAttr, "注入类型名称": item.classifyInvokeAttrName, "层级设置": item.classifyInvokeLevel, "是否可修改": item.classifyInvokeEditFlag } async gridCode() { try { const res = await gridCodeClassifyTemplateAttr({ 'conditionMap[classifyTemplateOid]': this.Formlist[this.selectRow].oid, limit: -1 }); this.ProData = res.data.data.map(item => { if (item.classifyInvokeAttr !== '') { if (!item.hasOwnProperty('classifyInvokeText')) { item.classifyInvokeText = { '注入类型': item.classifyInvokeAttr, '注入类型名称': item.classifyInvokeAttrName, '层级设置': item.classifyInvokeLevel, '是否可修改': item.classifyInvokeEditFlag }; } } return item; }); }).catch(res => { this.$message.error(res) }) } catch (error) { this.$message.error(error); } }, treeClick(e) { console.log(e); @@ -1423,6 +1431,8 @@ this.Formlist = res.data.data.filter(item => { return item.codeclassifyoid == this.nodeClickList.oid }) this.crudLCStatus=this.Formlist[this.selectRow].lcStatus; this.crudArray.push(this.Formlist[this.selectRow]); gridCodeClassifyTemplateAttr({'conditionMap[classifyTemplateOid]': res.data.data[this.selectRow].oid,limit:-1}).then(res => { this.ProData = res.data.data; //分类注入数据格式 Source/UBCS-WEB/src/components/Theme/ThemeTemplatePro.vue
@@ -13,6 +13,7 @@ </span> </basic-container> </template> <script> Source/UBCS-WEB/src/views/modeling/originalAdd.vue
@@ -6,7 +6,7 @@ <el-form ref="form" :model="attribute" show-message="true" inline size="medium" label-suffix=":" class="attributeForm" :rules="rules" @resetFields="resetAttributeForm" status-icon="true"> <el-form-item label="属性编号" label-width="100px" prop="id"> <el-input v-model="attribute.id" maxlength="15" show-word-limit type="text"></el-input> <el-input v-model="attribute.id" maxlength="30" show-word-limit type="text"></el-input> </el-form-item> <el-form-item label="属性名称" label-width="100px" prop="name"> <el-input v-model="attribute.name"></el-input> @@ -153,7 +153,7 @@ id: [ { required: true, message: '请输入属性编号', trigger: 'blur' }, { pattern: /^[A-Za-z]+$/, message: '属性编号只能为英文', trigger: 'blur' }, { min: 2, max: 15, message: '长度在2到15个字符', trigger: 'blur' } { min: 2, max: 30, message: '长度在2到30个字符', trigger: 'blur' } ], name: [ { required: true, message: '请输入属性名称', trigger: 'blur' } @@ -382,9 +382,9 @@ this.btmRefer.btmPage.total = res.data.data.total; }) } if (this.attribute.referTypeKey == 'linkType') { } // if (this.attribute.referTypeKey == 'linkType') { // // } }, // 枚举类型输入框获得焦点时的事件 openEnumConfig() { Source/UBCS-WEB/vue.config.js
@@ -26,10 +26,11 @@ proxy: { '/api': { //本地服务接口地址 target: 'http://localhost:37000', // target: 'http://localhost:37000', // target: 'http://192.168.1.51:37000', // target: 'http://dev.vci-tech.com:37000', target: 'http://dev.vci-tech.com:37000', // target: 'http://192.168.1.104:37000', // target: 'http://192.168.0.103:37000', // target: 'http://192.168.1.63:37000', // target: 'http://192.168.3.7:37000', //远程演示服务地址,可用于直接启动项目 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -3672,7 +3672,48 @@ } else { if (StringUtils.isNotBlank(referConfigVO.getParentFieldName()) && StringUtils.isNotBlank(queryObject.getParentOid())) { queryObject.getConditionMap().put(referConfigVO.getParentFieldName(), queryObject.getParentOid()); } //查询全部的信息 String parentOidSql = ""; if (StringUtils.isNotBlank(referConfigVO.getParentValue())) { String temp = referConfigVO.getParentValue(); if (temp.startsWith(QueryOptionConstant.IN)) { temp = temp.substring((QueryOptionConstant.IN).length()).trim(); parentOidSql = " in " + "('" + queryObject.getParentOid() + "')"; } else if (temp.startsWith(QueryOptionConstant.NOTIN)) { parentOidSql = " not in " + "('" + queryObject.getParentOid() + "')"; } else if (temp.startsWith(QueryOptionConstant.NOTEQUAL)) { temp = temp.substring((QueryOptionConstant.NOTEQUAL).length()).trim(); parentOidSql = QueryOptionConstant.NOTEQUAL + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); } else if (temp.startsWith(QueryOptionConstant.MORETHAN)) { temp = temp.substring((QueryOptionConstant.MORETHAN).length()).trim(); parentOidSql = QueryOptionConstant.MORETHAN + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); } else if (temp.startsWith(QueryOptionConstant.MORE)) { temp = temp.substring((QueryOptionConstant.MORE).length()).trim(); parentOidSql = QueryOptionConstant.MORE + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); } else if (temp.startsWith(QueryOptionConstant.LESSTHAN)) { temp = temp.substring((QueryOptionConstant.LESSTHAN).length()).trim(); parentOidSql = QueryOptionConstant.LESSTHAN + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); } else if (temp.startsWith(QueryOptionConstant.LESS)) { temp = temp.substring((QueryOptionConstant.LESS).length()).trim(); parentOidSql = QueryOptionConstant.LESS + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); } else if (temp.startsWith(QueryOptionConstant.ISNOTNULL)) { parentOidSql = " is not null"; } else if (temp.startsWith(QueryOptionConstant.ISNULL)) { parentOidSql = " is null"; } else if (temp.contains("*")) { parentOidSql = " like " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'").replace("*", "%"); } else { parentOidSql = " = " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); } } //查询全部的信息 queryObject.getConditionMap().put("oid", QueryOptionConstant.IN + "(select oid from " + getTableName(referConfigVO.getReferType()) + " START WITH " + referConfigVO.getParentFieldName() + " " + parentOidSql + " CONNECT BY PRIOR " + oidFieldName + " = " + referConfigVO.getParentFieldName() + ")"); } } LambdaQueryWrapper<CodeClassify> lqw = new LambdaQueryWrapper<>(); String sql = queryObject.getConditionMap().get("oid").substring(3); Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllDmMapperProcessor.java
@@ -42,6 +42,7 @@ FIELD_MAP.put(VciFieldTypeEnum.VTFilePath, new DdlFieldMappingAttrBO("TEXT", null, null, true, null)); FIELD_MAP.put(VciFieldTypeEnum.VTClob, new DdlFieldMappingAttrBO("CLOB", 100, null, true, null)); FIELD_MAP.put(VciFieldTypeEnum.VTString, new DdlFieldMappingAttrBO("VARCHAR", 255, null, true, null)); FIELD_MAP.put(VciFieldTypeEnum.VTString, new DdlFieldMappingAttrBO("VARCHAR2", 255, null, true, null)); } public DllDmMapperProcessor() {