ludc
2023-05-16 5845950aa395da1a1f56a5fff4c80358cf4b5f7f
新增引用码段下的参照配置界面,代码整合
已修改20个文件
已重命名2个文件
已添加2个文件
2133 ■■■■ 文件已修改
Source/UBCS-WEB/src/api/template/templateAttr.js 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Tree/TemplatePro.vue 495 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Tree/attrCrud.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Tree/classifyTrees.vue 453 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/referConfigDialog.vue 542 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/template/templateAttr.js 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/code/code.vue 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/Business.vue 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/classifyTree.vue 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/vue.config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/DomainVO.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/enumpack/NewAppConstantEnum.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MPJLambdaWrapperSqlKeyword.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/Map2MPJLambdaUtil.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeButtonController.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateAttrController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyTemplateAttrService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempbuttonServiceImpl.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/template/templateAttr.js
@@ -67,13 +67,32 @@
}
//主键获取分类模板属性
export const  gridCodeClassifyTemplateAttr = (oid) =>{
export const  gridCodeClassifyTemplate = (oid) =>{
  return request({
    url:'/api/ubcs-code/codeClassifyTempAttrController/gridCodeClassifyTemplateAttr',
    url:'/api/ubcs-code/codeClassifyTemplateController/gridCodeClassifyTemplate',
    method: 'get',
    params:{
      oid
    }
  })
}
//基本信息表单数据
export const  getObjectByOid = (oid) =>{
  return request({
    url:'/api/ubcs-code/codeClassify/getObjectByOid',
    method: 'get',
    params:{
      oid
    }
  })
}
//模板属性表格数据
export const  gridCodeClassifyTemplateAttr = (params) =>{
  return request({
    url:'/api/ubcs-code/codeClassifyTempAttrController/gridCodeClassifyTemplateAttr',
    method: 'get',
    params:{
     ...params
    }
  })
}
Source/UBCS-WEB/src/components/Tree/TemplatePro.vue
@@ -2,7 +2,7 @@
  <basic-container>
    <avue-tabs :option="Taboption" @change="handleChange"></avue-tabs>
    <span v-if="type.prop==='tab1'">
    <avue-crud :data="data" :option="option"></avue-crud>
      <attrCrud :ProData="ProData"></attrCrud>
    </span>
    <span v-else-if="type.prop==='tab2'">模板流程</span>
    <span v-else-if="type.prop==='tab3'">模板阶段</span>
@@ -14,6 +14,7 @@
<script>
export default {
  name: "TemplatePro.vue",
  props: ['ProData'],
  data: function () {
    return {
      type: {},
@@ -36,193 +37,339 @@
          prop: 'tab4',
        }]
      },
      data:[
        {
          EnglishNum:"测试一",
          ChinaName:"测试一",
          PropGruop:"测试一",
          Type:"测试一"
        },
        {
          EnglishNum:"测试二",
          ChinaName:"测试二",
          PropGruop:"测试二",
          Type:"测试二"
        },
        {
          EnglishNum:"测试三",
          ChinaName:"测试三",
          PropGruop:"测试三",
          Type:"测试三"
        }
      ],
      option: {
        index: true,
        border: true,
        editBtn:false,
        labelWidth:110,
        column: [
          {
            label: "属性英文编号",
            prop: "EnglishNum",
            fixed:true,
            labelWidth:110,
            width:95
          },
          {
            label: "属性中文名称",
            prop: "ChinaName",
            fixed:true,
            width:95
          },
          {
            label: "属性分组",
            prop: "PropGruop"
          },
          {
            label: "类型",
            prop: "Type"
          },
          {
            label: "列表宽度",
            prop: "ListWidth"
          },
          {
            label: "关键属性",
            prop: "KeyAttr"
          },
          {
            label: "查询属性",
            prop: "QueryPro"
          },
          {
            label: "高级查询属性",
            prop: "SeniorQueryPro",
            width:95
          },
          {
            label: "相似查询属性",
            prop: "SimilarPro",
            width:95
          },
          {
            label: "必输",
            prop: "MustLose"
          },
          {
            label: "表单显示",
            prop: "FormDIs"
          },
          {
            label: "列表显示",
            prop: "TableDis"
          },
          {
            label: "只读",
            prop: "readOnly"
          },
          {
            label: "列表排序",
            prop: "ListSort"
          },
          {
            label: "多行文本",
            prop:"LineText",
          },
          {
            label: "默认值",
            prop:"DefaultValue",
          },
          {
            label: "前缀",
            prop:"prefix",
          },
          {
            label: "后缀",
            prop:"suffix"
          },
          {
            label: "组合规则",
            prop:"ComRules"
          },
          {
            label: "验证规则",
            prop:"rules"
          },
          {
            label: "时间格式",
            prop:"TimeForm"
          },
          {
            label: "分类注入",
            prop:"claInjection"
          },
          {
            label: "分类注入",
            prop:"EnuInjection"
          },
          {
            label: "级联属性",
            prop:"CasProp"
          },
          {
            label: "参照配置",
            prop:"RefConfig"
          },
          {
            label: "级联查询属性",
            prop:"CasQueryProp"
          },
          {
            label: "选择库标识",
            prop:"SelectLib"
          },
          {
            label: "填写提示",
            prop:"FillPrompt"
          },
          {
            label: "表单显示样式",
            prop:"FormShow"
          },
          {
            label: "表单超链接",
            prop:"FormHer"
          },
          {
            label: "表格显示js",
            prop:"CrudJs"
          },
          {
            label: "长度",
            prop:"length"
          },
          {
            label: "小数精度",
            prop:"DecimalPrecis"
          },
          {
            label: "取值范围",
            prop:"ValueRange"
          },
        ]
      }
    }
  },
  created() {
    // è¿›å…¥é¡µé¢é»˜è®¤æ˜¯æ¨¡æ¿å±žæ€§
    this.type = this.Taboption.column[0];
    this.type.prop="tab1"
  },
  methods: {
    // Tab栏切换
    handleChange(column) {
      this.type = column
      this.$message.success(JSON.stringify(column))
    }
    },
  }
}
</script>
<style scoped>
<!--<template>-->
<!--  &lt;!&ndash; ä½¿ç”¨ Element UI çš„表格组件展示数据 &ndash;&gt;-->
<!--  &lt;!&ndash; å¯¹æ¯è¡Œæ•°æ®æ¸²æŸ“一个表格行组件 &ndash;&gt;-->
<!--  <el-table :data="data">-->
<!--    <el-table-column v-for="column in columns" :key="column.prop" :label="column.label">-->
<!--      <template slot-scope="scope">-->
<!--        <template v-if="isEditing(scope.$index, column.prop)">-->
<!--          &lt;!&ndash; ä½¿ç”¨è‡ªå®šä¹‰è¾“入框,绑定数据并监听 blur äº‹ä»¶ &ndash;&gt;-->
<!--          <el-input v-model="editorModel[scope.$index][column.prop]" ref="editor"-->
<!--                    @blur="onEditorBlur(scope.$index, column.prop)">-->
<!--          </el-input>-->
<!--        </template>-->
<!--        <template v-else>-->
<!--          &lt;!&ndash; å°†æ•°æ®æ¸²æŸ“为表格单元格,绑定 click äº‹ä»¶ &ndash;&gt;-->
<!--          <div @click="onCellClick(scope.$index, column.prop)"-->
<!--               :style="{cursor: 'pointer', backgroundColor: isEditing(scope.$index, column.prop) ? '#F0F0F0' : 'transparent'}">-->
<!--            {{ scope.row[column.prop] === "" ? '' : scope.row[column.prop] }}-->
<!--          </div>-->
<!--        </template>-->
<!--      </template>-->
<!--    </el-table-column>-->
<!--  </el-table>-->
<!--</template>-->
<!--<script>-->
<!--export default {-->
<!--  data() {-->
<!--    // ç»„件的数据,包括表格的数据、列定义和当前正在编辑的行和列-->
<!--    return {-->
<!--      data: [-->
<!--        { id: 1, name: '张三', age: 18, attributegroup: '男', attributeDataTypeText: '广东省深圳市' },-->
<!--        { id: 2, name: '李四', age: 20, attributegroup: '女', attributeDataTypeText: '北京市海淀区' },-->
<!--        { id: 3, name: '王五', age: 22, attributegroup: '男', attributeDataTypeText: '上海市浦东新区' },-->
<!--        { id: 4, name: '赵六', age: 24, attributegroup: '女', attributeDataTypeText: '广东省广州市' }-->
<!--      ],-->
<!--      columns: [  // å®šä¹‰è¡¨æ ¼çš„列-->
<!--        {-->
<!--          label: "属性英文编号",-->
<!--          prop: "id",-->
<!--          fixed: true,-->
<!--          cell: false,-->
<!--          labelWidth: 110,-->
<!--          width: 125,-->
<!--          sortable: true,-->
<!--        },-->
<!--        {-->
<!--          label: "属性中文名称",-->
<!--          prop: "name",-->
<!--          fixed: true,-->
<!--          cell: false,-->
<!--          width: 125,-->
<!--          sortable: true-->
<!--        },-->
<!--        {-->
<!--          label: "属性分组",-->
<!--          prop: "attributegroup",-->
<!--          cell: false,-->
<!--          sortable: true,-->
<!--          width: 125,-->
<!--        },-->
<!--        {-->
<!--          label: "类型",-->
<!--          prop: "attributeDataTypeText",-->
<!--          cell: false,-->
<!--          sortable: true,-->
<!--        },-->
<!--        {-->
<!--          label: "列表宽度",-->
<!--          prop: "attrTableWidth",-->
<!--          cell: false,-->
<!--          sortable: true,-->
<!--          width: 105,-->
<!--        },-->
<!--        {-->
<!--          label: "关键属性",-->
<!--          prop: "keyattrflag",-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "查询属性",-->
<!--          prop: "queryattrflag",-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "高级查询属性",-->
<!--          prop: "seniorqueryattrflag",-->
<!--          width: 95,-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "相似查询属性",-->
<!--          prop: "samerepeatattrflag",-->
<!--          width: 95,-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "必输",-->
<!--          prop: "requireflag",-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "表单显示",-->
<!--          prop: "formdisplayflag",-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "列表显示",-->
<!--          prop: "tabledisplayflag",-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "只读",-->
<!--          prop: "readonlyflag",-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "列表排序",-->
<!--          prop: "sortattrflag",-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "多行文本",-->
<!--          prop: "textareaflag",-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "默认值",-->
<!--          prop: "defaultvalue",-->
<!--          sortable: true,-->
<!--          cell: false,-->
<!--          width: 95,-->
<!--        },-->
<!--        {-->
<!--          label: "前缀",-->
<!--          prop: "prefixvalue",-->
<!--          sortable: true,-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "后缀",-->
<!--          prop: "suffixvalue",-->
<!--          sortable: true,-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "组合规则",-->
<!--          prop: "componentrule",-->
<!--          sortable: true,-->
<!--          cell: false,-->
<!--          width: 105,-->
<!--        },-->
<!--        {-->
<!--          label: "验证规则",-->
<!--          prop: "verifyrule",-->
<!--          sortable: true,-->
<!--          cell: false,-->
<!--          width: 105,-->
<!--        },-->
<!--        {-->
<!--          label: "时间格式",-->
<!--          prop: "codedateformat",-->
<!--          sortable: true,-->
<!--          width: 105,-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "分类注入",-->
<!--          prop: "classifyinvokelevel",-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "枚举注入",-->
<!--          prop: "enumString",-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "级联属性",-->
<!--          prop: "parentCode",-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "参照配置",-->
<!--          prop: "referConfig",-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "级联查询属性",-->
<!--          prop: "parentQueryAttr",-->
<!--          width: 105,-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "选择库标识",-->
<!--          prop: "libraryIdentification",-->
<!--          width: 105,-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "填写提示",-->
<!--          prop: "explain",-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "表单显示样式",-->
<!--          prop: "formdisplaystyle",-->
<!--          width: 105,-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "表格显示样式",-->
<!--          prop: "tabledisplaystyle",-->
<!--          width: 105,-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "表单超链接",-->
<!--          prop: "formhref",-->
<!--          width: 95,-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "表格超链接",-->
<!--          prop: "tablehref",-->
<!--          width: 95,-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "表格显示js",-->
<!--          prop: "tabledisplayjs",-->
<!--          width: 95,-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "长度",-->
<!--          prop: "controllength",-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "小数精度",-->
<!--          prop: "precisionlength",-->
<!--          cell: false,-->
<!--        },-->
<!--        {-->
<!--          label: "取值范围",-->
<!--          prop: "valuearea",-->
<!--          sortable: true,-->
<!--          cell: false,-->
<!--          width: 105,-->
<!--        },-->
<!--      ],-->
<!--      editingIndex: -1,  // å½“前正在编辑的行的索引-->
<!--      editingColumn: '',  // å½“前正在编辑的列的属性名-->
<!--      editorModel: []  // ç¼–辑框的数据,使用数组保存每个单元格的数据-->
<!--    };-->
<!--  },-->
<!--  created() {-->
<!--    // åœ¨ç»„件创建时,初始化编辑框的数据-->
<!--    this.editorModel = this.data.map(row => {-->
<!--      const editorRow = {};-->
<!--      this.columns.forEach(column => {-->
<!--        editorRow[column.prop] = row[column.prop];-->
<!--      });-->
<!--      return editorRow;-->
<!--    });-->
<!--  },-->
<!--  methods: {-->
<!--    // å•元格点击事件处理函数-->
<!--    onCellClick(rowIndex, columnProp) {-->
<!--      if (this.editingIndex >= 0 && this.editingColumn) {-->
<!--        this.onEditorBlur(this.editingIndex, this.editingColumn);-->
<!--        return;-->
<!--      }-->
<!--      const cellValue = this.data[rowIndex][columnProp];-->
<!--      if (cellValue === undefined || cellValue === null) {-->
<!--        this.data[rowIndex][columnProp] = '';-->
<!--      }-->
<!--      this.editingIndex = rowIndex;-->
<!--      this.editingColumn = columnProp;-->
<!--      this.$nextTick(() => {-->
<!--        this.$refs.editor.focus();-->
<!--      });-->
<!--    },-->
<!--    // ç¼–辑框失焦事件处理函数-->
<!--    onEditorBlur(rowIndex, columnProp) {-->
<!--      // å°†å½“前编辑框的数据保存到表格数据中-->
<!--      const editorValue = this.editorModel[rowIndex][columnProp];-->
<!--      if (editorValue === '') {-->
<!--        this.data[rowIndex][columnProp] = undefined;-->
<!--      } else {-->
<!--        this.data[rowIndex][columnProp] = editorValue;-->
<!--      }-->
<!--      this.editingIndex = -1;-->
<!--      this.editingColumn = '';-->
<!--    },-->
<!--    // åˆ¤æ–­æŒ‡å®šå•元格是否在编辑状态-->
<!--    isEditing(rowIndex, columnProp) {-->
<!--      return rowIndex === this.editingIndex && columnProp === this.editingColumn;-->
<!--    }-->
<!--  }-->
<!--};-->
<!--</script>-->
<style lang="scss" scoped>
//修改分类注入对话框公共样式
.mydialog .el-dialog__body {
  padding: 10px 20px 30px;
}
</style>
Source/UBCS-WEB/src/components/Tree/attrCrud.vue
@@ -1,8 +1,8 @@
<template>
  <avue-crud :data="data" :option="option" @sort-change="sortChange" @row-update="addUpdate"
  <avue-crud :data="ProData" :option="option" @sort-change="sortChange" @row-update="addUpdate"
             @cell-click="handleRowClick">
    <template slot="menuLeft">
      <el-button v-if="attrEditVisible == false" size="small" type="primary" @click="addVisible=true">+ æ·»åŠ </el-button>
      <el-button v-if="attrEditVisible == false" size="small" type="primary" @click="addVisible=true">+ æ·»åŠ  {{msg}}</el-button>
      <el-dialog :visible.sync="addVisible" append-to-body title="从业务类型中选择属性">
        <avue-crud :data="businessData" :option="businessOption"></avue-crud>
      </el-dialog>
@@ -176,9 +176,9 @@
<script>
export default {
  name: "attrCrud .vue",
  props: ['ProData'],
  data() {
    return {
      CascadeVisible: false,
      attrEditVisible: false,
      // çº§è”单选
@@ -753,6 +753,7 @@
  },
  mounted() {
    console.log(this.attrEditVisible)
    console.log(this.ProData)
  },
  methods: {
    addsHandler(){
@@ -760,6 +761,7 @@
    },
    // screenEdit(){
    //   debugger
    //   this.attrEditVisible=true;
    // },
    // outEdit(){
Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue
@@ -1,6 +1,5 @@
<template>
  <avue-form v-model="TreeNewForm" :option="option" @submit="submit">
  </avue-form>
</template>
@@ -18,24 +17,56 @@
      option: {
        column: [
          {
            label: '姓名',
            label: '主题库/分类编号',
            prop: 'btmtypeid',
            labelWidth:128,
            readonly: true,
            rules: [{
              required: true,
              message: "主题库/分类编号",
              trigger: "blur"
            }]
          },
          {
            label: '主题库/分类名称',
            prop: 'name',
            readonly: true,
            labelWidth:128,
            rules: [{
              required: true,
              message: "请输入姓名",
              message: "主题库/分类名称",
              trigger: "blur"
            }]
          }, {
            label: '性别',
            prop: 'sex',
          },
          {
            label:"描述",
            prop:"description"
          },
          {
            label: '存储的业务类型',
            prop: 'btmtypename',
            labelWidth:128,
            readonly: true,
            rules: [{
              required: true,
              message: "请输入性别",
              message: "存储的业务类型",
              trigger: "blur"
            }]
          }
          },
          {
            label:"编码规则",
            prop:"coderuleoidName"
          },
          {
            label:"忽略大小写查重",
            prop:"codekeyattrrepeatoidName",
            labelWidth:128,
          },
          {
            label:"相似查询规则",
            prop:"codeResembleRuleOidName",
            labelWidth:100,
          },
        ]
      },
      FormList: {}
Source/UBCS-WEB/src/components/Tree/classifyTrees.vue
@@ -2,44 +2,164 @@
  <el-container>
<!--    å·¦ä¾§èœå•-->
    <el-aside >
      <basic-container>
        <avue-tree ref="tree" v-model="form" :data="Treedata" :option="Treeoption" @node-click=" nodeClick"
                   @del="rowDel" @save="rowSave" @check-change="checkChange"  style="height: 754px"  >
      <basic-container style="height: 85vh; max-height: 155vh; overflow-y: scroll;">
        <div>
          <div style="display: flex;justify-content: space-around">
            <el-button plain size="small" type="primary" @click="TreeAdd">添加</el-button>
            <el-button plain size="small" type="primary" @click="TreeEdit">修改</el-button>
            <el-button plain size="small" type="primary" @click="TreeDel">删除</el-button>
            <el-button plain size="small" type="primary" @click="Enable">启用</el-button>
          </div>
          <div style="display: flex;justify-content: space-around;margin-top: 5px;margin-bottom: 5px">
            <el-button plain size="small" type="primary" @click="Deactivate">停用</el-button>
            <el-button plain size="small" type="primary" @click="ExportExcel">导出</el-button>
            <el-button plain size="small" type="primary" @click="ImportExcel">导入</el-button>
            <el-button plain size="small" type="primary" @click="flushed">刷新</el-button>
          </div>
        </div>
        <!--        æ ‘节点添加对话框-->
        <el-dialog :title="this.TreeFlag ? '添加分类' :'添加主题库'" :visible.sync="TreeAddFormVisible" append-to-body
                   style="width: 1700px;margin: auto">
          <el-form :model="TreeAddform">
            <el-form-item :label="this.TreeFlag ? '分类编号:' :'主题库编号:'" label-width="150px" style="display: inline-block">
              <el-input v-model="TreeAddform.id" autocomplete="off" style="width: 170px"></el-input>
            </el-form-item>
            <el-form-item :label="this.TreeFlag ? '分类名称:' :'主题库名称:'" label-width="100px" style="display: inline-block">
              <el-input v-model="TreeAddform.name" autocomplete="off" style="width: 170px"></el-input>
            </el-form-item>
            <el-form-item label="描述:" label-width="150px">
              <el-input v-model="TreeAddform.description" autocomplete="off" style="width: 585px"></el-input>
            </el-form-item>
            <el-form-item v-show="this.TreeFlag==false" label="存储的业务类型:" label-width="150px">
              <el-input v-model="TreeAddform.btmtypename" autocomplete="off" style="width: 585px"></el-input>
            </el-form-item>
            <el-form-item label="编码规则:" label-width="150px">
              <el-input v-model="TreeAddform.coderuleoidName" autocomplete="off" style="width: 585px"></el-input>
            </el-form-item>
            <el-form-item label="关键属性查询规则:" label-width="150px">
              <el-input v-model="TreeAddform.codekeyattrrepeatoidName" autocomplete="off"
                        style="width: 585px"></el-input>
            </el-form-item>
            <el-form-item label="相似查询规则:" label-width="150px">
              <el-input v-model="TreeAddform.codeResembleRuleOidName" autocomplete="off"
                        style="width: 585px"></el-input>
            </el-form-item>
          </el-form>
          <div slot="footer" class="dialog-footer">
            <el-button @click="TreeAddFormVisible = false">取 æ¶ˆ</el-button>
            <el-button type="primary" @click="TreeAddHandler">ç¡® å®š</el-button>
          </div>
        </el-dialog>
        <!--        ä¿®æ”¹å¯¹è¯æ¡†-->
        <el-dialog :visible.sync="TreeEditFormVisible" append-to-body title="修改分类">
          <classifyTreeform ref="childForm" :TreeNewForm="TreeList" :nodeList="nodeList"></classifyTreeform>
        </el-dialog>
        <avue-tree ref="tree" v-model="TreeAvueform" v-loading="loading" :data="Treedata" :defaultExpandAll="false"
                   :option="Treeoption"
                   style="height: 80.5vh;padding-top: 5px;padding-bottom: 30px"
                   @node-click=" nodeClick"
                   @check-change="checkChange"
        >
        </avue-tree>
      </basic-container>
    </el-aside>
    <el-main>
      <basic-container>
      <basic-container style="height: 85vh; max-height: 155vh; ">
<!--        å³ä¾§è¡¨æ ¼-->
        <avue-tabs :option="tabOption" @change="handleChange"></avue-tabs>
        <span v-if="type.prop==='tab1'">
            <avue-crud v-model="crudForm" :data="this.Formlist" :option="this.crudTreeOption" style="height: 700px"></avue-crud>
          <basic-container>
               <avue-crud v-model="crudForm" :data="this.Formlist" :option="this.crudTreeOption" v-loading="FormLoing"
               >
            <template slot="menuLeft">
              <el-button plain size="small" type="primary">查询</el-button>
              <el-button plain size="small" type="primary" @click="TemRefresh">刷新</el-button>
              <el-button plain size="small" type="primary">从其它模板克隆</el-button>
              <div style="display: inline-block"> <el-input v-model="FindText" placeholder="请输入关键字按回车查询"
                                                            size="small"
                                                            @keyup.enter.native="EnterFind"></el-input></div>
            </template>
          </avue-crud>
          </basic-container>
    <templatePro :ProData="this.ProData"></templatePro>
        </span>
        <span v-else-if="type.prop==='tab2'">
<!--          å¦‚果是表格加表单就再次引入这个classifyTreeform组件,里面是表单的内容,没用就删除掉。把上面tab栏也删除了-->
          <classifyTreeform  ref="childForm" :nodeList="nodeList" :TreeNewForm="TreeList"></classifyTreeform>
          <template-pro></template-pro>
           <classifyTreeform ref="childForm" :TreeNewForm="TreeList" :nodeList="nodeList"></classifyTreeform>
        </span>
      </basic-container>
    </el-main>
  </el-container>
</template>
<script>
//这里声明一些菜单组件用法:首先布局分为左侧菜单右侧表格,可能会有右侧Tab栏加表单的情况。所以另外引入了一个右侧表单的组件"classifyTreeform"。
//首先父组件调用子组件菜单,通过provide传递参数。有Treeoption左侧树新增表单项 Treedata左侧树节点配置项 crudTreeOption右侧表格配置项 crudTreeData右侧表格显示内容
//其中表格的配置项直接父传子传递过来就行,直接:option=传递的参数名,里面数据显示的内容因为是和左侧联动的,所以重新一个Formlist,通过点击树节点下标来动态渲染右侧表格,下面方法都有具体注释
//然后再说右侧的表单,专门定义了一个组件,通过父传子再把表单数据TreeList传递过去,传递前在10deCLi1ck方法里面便了处理也是一个联动的效果,表单的配置项在哪个子组件或者父组件写都可以。
import {
  getAtrrList,
  TreeSave,
  TreeDel,
  TreeCheckDel,
  TreeObjcet,
  TreeEnable,
  TreeDeactivate,
  importClassify,
  gridCodeClassifyTemplate,
  getObjectByOid,
  gridCodeClassifyTemplateAttr
} from "@/api/template/templateAttr";
export default {
  name: "classifyTrees.vue",
  //使用inject接收参数
  //Treeoption左侧树新增表单项 Treedata左侧树节点配置项 crudTreeOption右侧表格配置项 crudTreeData右侧表格显示内容
  //Treeform右侧表单配置项
  inject: ['crudTreeOption',"crudTreeData", "Treedata", "Treeoption"],
  inject: ['crudTreeOption', "crudTreeData"],
  data() {
    return {
      ProData: [],
      FindText: "",
      fileList: [],
      FlagObj: {},
      //修改对话框
      TreeEditFormVisible: false,
      //添加对话框
      TreeAddFormVisible: false,
      //当前点击项
      nodeClickList: "",
      //分类和主题库状态
      TreeFlag: false,
      //树加载
      loading: false,
      FormLoing:false,
      TreeAddform: {
        id: "",
        name: "",
        description: "",
        //相似查询规则
        codeResembleRuleOidName: "",
        //关键属性查询规则
        codekeyattrrepeatoidName: "",
        //编码规则
        coderuleoidName: "",
        //存储的业务类型
        btmtypename: ""
      },
      //avue-tree数据,暂时没有作用,里面功能用element写了,只用avue的一个树组件不用内置表单了。
      TreeAvueform: {},
      Treedata: [],
      Treeoption: {
        addBtn: false,
        editBtn: false,
        delBtn: false,
        defaultExpandAll: false,
        menu: false,
        // //这个是多选
        // multiple: true,
      },
      crudForm: "",
      form: {},
      //动态切换处理过的表格数据
      Formlist: [],
      //tab状态
@@ -70,41 +190,119 @@
        }
      ],
      //传递给子组件动态渲染的数据
      TreeList:{}
      TreeList: {},
      //定义一个模板属性id,数据是模板管理表格里面的oid
    }
  },
  //tab栏默认是表格
  mounted() {
    this.type = this.tabOption.column[0];
    this.getAttr();
  },
  methods: {
    nodeClick(data) {
      //点击左侧树右侧动态的方法
      this.Formlist = this.crudTreeData[data.value].column
      this.nodeList=data.value
      this.TreeList = this.Treeform.find(item => {
        return item.value == data.value
    //分类树数据处理
    getAttr() {
      getAtrrList().then(res => {
        this.Treedata = res.data;
        this.Treedata.forEach(() => {
          for (let i = 0; i < this.Treedata.length; i++) {
            this.Treedata[i].value = i;
          }
        })
        //调用修改属性名方法
        this.ModifyProperties(this.Treedata, 'text', 'label');
      }).catch(res => {
        this.$message.error(res)
      })
    },
    //定义一个修改对象属性名的方法
    ModifyProperties(obj, oldName, newName) {
      for (let key in obj) {
        if (key === oldName) {
          obj[newName] = obj[key];
          delete obj[key];
        }
        if (typeof obj[key] === 'object') {
          this.ModifyProperties(obj[key], oldName, newName);
        }
      }
    },
    //树节点添加按钮
    TreeAdd() {
      this.TreeAddFormVisible = true;
      // åˆ¤æ–­å½“前是否有点击子项
      if (this.nodeClickList !== "") {
        this.TreeFlag = true
      }
    },
    //树节点添加事件
    TreeAddHandler() {
      const data = this.TreeAddform
      this.$set(data, "parentCodeClassifyOid", this.nodeClickList.oid)
      TreeSave(data).then(() => {
        this.$message({
          type: 'success',
          message: '添加成功!'
      });
      console.log(data)
        this.getAttr();
        this.TreeAddFormVisible = false
        this.TreeAddform = ""
      }).catch(res => {
        this.$message({
          type: 'warning',
          message: res
        });
      })
    },
    //tab栏切换
    handleChange(column) {
      this.type = column
    },
    // å·¦æ ‘多选
    checkChange(val) {
      console.log(val)
    },
    //删除
    rowDel(row, index, done) {
      console.log(row)
      this.$confirm('此操作将永久删除, æ˜¯å¦ç»§ç»­?', '提示', {
    //树节点删除按钮
    TreeDel() {
      this.$confirm('是否删除当前选择的分类,将会把子分类一并删除,如果存在编码数据将不能被删除,是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
        type: 'warning',
        customClass: 'my-messagebox',
      }).then(() => {
        this.$message.success('删除成功')
        done();
        TreeCheckDel(this.nodeClickList).then(res => {
          if (res.data.data) {
            TreeDel(this.nodeClickList).then(() => {
              this.$message({
                type: 'success',
                message: '删除成功!'
              });
              this.getAttr();
            }).catch(res => {
              this.$message({
                type: 'warning',
                message: res
              });
            })
          } else {
            this.$confirm('当前数据包含有下级数据,要删除的话会和下级数据一起删除,你确认继续?', '提示', {
              confirmButtonText: '确定',
              cancelButtonText: '取消',
              type: 'warning',
              customClass: 'my-messageboxs',
            }).then(() => {
              TreeDel(this.nodeClickList).then(() => {
                this.$message({
                  type: 'success',
                  message: '删除成功!'
                });
                this.getAttr();
              }).catch(res => {
                this.$message({
                  type: 'warning',
                  message: res
                });
              })
            }).catch(() => {
              this.$message({
                type: 'info',
                message: '已取消删除'
              });
            });
          }
        })
      }).catch(() => {
        this.$message({
          type: 'info',
@@ -112,25 +310,182 @@
        });
      });
    },
    //添加
    rowSave(node,data,done,loading) {
      this.$message.success('新增回调')
      // this.form.id = new Date().getTime();
      // this.form.value=new Date().getTime();
      // this.form.children=[];
      console.log(this.form)
      // console.log("Type",node,data,done,loading)
      // console.log(node,"node")
      // console.log("data",data)
      // console.log("done",done)
      // console.log("loading",loading)
      done();
    //修改回填
    TreeEdit() {
      if (this.nodeClickList == "") {
        this.$message({
          type: 'warning',
          message: '请先从树上选择一条数据!'
        });
      } else {
        this.TreeEditFormVisible = true
      }
    },
    //树刷新
    flushed() {
      this.loading = true
      this.getAttr()
      setTimeout(() => {
        this.loading = false;
        this.nodeClickList = ""
      }, 600);
    },
    //启用和停用都先判断状态
    //启用
    Enable() {
      if (this.FlagObj.lcStatus == "Enabled") {
        this.$message({
          type: 'warning',
          message: '当前分类不是停用状态'
        });
      } else {
        this.$confirm('是否将子分类一并启用?', '提示', {
          confirmButtonText: '是',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          TreeEnable(this.nodeClickList).then((res) => {
            this.$message({
              type: 'success',
              message: '启用成功!'
            });
            this.getAttr()
          })
        }).catch(() => {
          this.$message({
            type: 'info',
            message: '已取消启用'
          });
        });
      }
    },
    //停用
    Deactivate() {
      if (this.FlagObj.lcStatus === "Disabled") {
        this.$message({
          type: 'warning',
          message: '当前分类不是启用状态!'
        });
      } else {
        this.$confirm('是否停用当前分类,停用后,子分类也将不能被使用,是否继续?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          TreeDeactivate(this.nodeClickList).then((res) => {
            this.$message({
              type: 'success',
              message: '停用成功!'
            });
            this.nodeClickList['flag'] = true;
            this.getAttr()
          })
        }).catch(() => {
          this.$message({
            type: 'info',
            message: '已取消停用'
          });
        });
      }
    },
    async nodeClick(data) {
      //定义一个模板属性id,数据是模板管理表格里面的oid
      this.nodeClickList = data
      console.log(data.oid)
      try {
        await TreeObjcet(data.oid).then(res => {
          this.FlagObj = res.data.data
        }).catch(res => {
          this.$message.error(res)
        })
        //模板管理表格数据
        await gridCodeClassifyTemplate(data.oid).then(res => {
          this.Formlist = res.data.data.filter(item => {
          if(item.codeclassifyoid != ""){
            return  item.codeclassifyoid == this.nodeClickList.oid
          }
          })
          console.log("formlist", this.Formlist)
          gridCodeClassifyTemplateAttr({'conditionMap[classifyTemplateOid]': this.Formlist[0].oid}).then(res => {
            this.ProData = res.data.data
            console.log(this.ProData)
          }).catch(res => {
            this.$message.error(res)
          })
        }).catch(res => {
              console.log(res)
        })
        //  åŸºæœ¬ä¿¡æ¯è¡¨å•数据
        await getObjectByOid(this.nodeClickList.oid).then(res => {
          this.TreeList = res.data.data
          // eslint-disable-next-line no-const-assig
        }).catch(res => {
          this.$message.error(res)
        })
      } catch (error) {
        console.log(error)
      }
    },
    //tab栏切换
    handleChange(column) {
      this.type = column
    },
    //模板管理表格查询
    EnterFind() {
      console.log(this.Formlist)
      if (this.FindText == "") {
        gridCodeClassifyTemplate().then(res => {
          this.Formlist = res.data.data
        })
      } else {
        gridCodeClassifyTemplate().then(res => {
            this.Formlist = res.data.data.filter(item => {
                  return item.name.includes(this.FindText)
              }
            )
          }
        )
      }
    },
    TemRefresh(){
      this.FormLoing=true
      if(this.nodeClickList.oid != ""){
        gridCodeClassifyTemplate(this.nodeClickList.oid).then(res=>{
          this.Formlist = res.data.data.filter(item => {
            return  item.codeclassifyoid == this.nodeClickList.oid
          })
        })
      }else {
        this.FormLoing=true
      }
      setTimeout(() => {
        this.FormLoing=false
      }, 600);
    },
    // å·¦æ ‘多选
    checkChange(val) {
      console.log(val)
    },
  }
}
</script>
<style lang="scss">
<style lang="scss" scoped>
.el-form {
  display: flex;
  flex-wrap: wrap; /* è®¾ç½®å¯æ¢è¡Œï¼Œä»¥ä¾¿åœ¨å°å±å¹•设备上使用多行布局 */
}
.el-form-item {
  flex: 1; /* è®¾ç½®å…ƒç´ å æ®1份空间 */
  margin-right: 1rem; /* è®¾ç½®å…ƒç´ ä¹‹é—´çš„间距 */
}
.my-messagebox {
  width: 700px;
}
.my-messageboxs {
  width: 500px;
}
</style>
Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue
@@ -46,6 +46,7 @@
        <el-col :span="10">
          <el-card
            class="box-card formula-box-card"
            data-v-49729759
            style="height: 35vh;">
            <div slot="header" class="clearfix">
              <span style="font-size: medium">运算符</span>
@@ -669,9 +670,9 @@
};
</script>
  
<style>
<style scoped>
  .formula-box-card > .el-card__body {
  .formula-box-card >>> .el-card__body {
    padding: 0px;
    height: 85%;
    width: 100%;
Source/UBCS-WEB/src/components/code-dialog-page/referConfigDialog.vue
@@ -6,15 +6,30 @@
      :visible.sync="isShowReferConfig"
      width="90%"
      @close="recoveryDataAndForm('initData')"
      style="height: 110vh; margin-top: -13vh; overflow-y: hidden">
        <div style="width: 100%; overflow-y: auto; height: 70vh">
      style="height: 115vh; margin-top: -14vh; overflow-y: hidden">
        <el-tabs v-model="activeName" @tab-click="handleClick">
            <el-tab-pane label="自定义参照配置" name="first">
                <div style="width: 100%; overflow-y: auto; height: 65vh">
            <el-row>
                <avue-form :option="formOption" v-model="form"></avue-form>
                        <avue-form ref="form" :option="formOption" v-model="form" class="referTypeForm">
                            <template>
                                <el-input
                                    ref="referType"
                                    placeholder="请选择 å‚照的业务类型"
                                    prefix-icon="el-icon-search"
                                    readonly="true"
                                    v-model="form.referType"
                                    @focus="openAttrSelectOrGetValue('referType')">
                                    <i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('referType')" style="margin-right: 5px;cursor: pointer;"></i>
                                </el-input>
                            </template>
                        </avue-form>
            </el-row>
            <el-row v-show="form.referWindowType==0 || form.referWindowType==3">
                    <el-row v-show="form.type=='default' || form.type=='grid'">
                <avue-crud
                    ref="crudAttr"
                    :option="attrOption" 
                            @cell-click="clicktest"
                    :data="attrData">
                    <!-- è¡¨æ ¼å†…操作按钮 -->
                    <template slot="menu" slot-scope="scope">
@@ -23,7 +38,7 @@
                            icon="el-icon-search"
                            plain
                            @click="scope.row.isquery=!scope.row.isquery">
                            {{scope.row.isquery ? "快速查询":"取消快速查询"}}
                                    {{scope.row.isquery ? "取消快速查询":"快速查询"}}
                        </el-button>
                        <el-button type="text"
                            size="small"
@@ -68,6 +83,27 @@
                </avue-crud>
            </el-row>
        </div>
            </el-tab-pane>
            <el-tab-pane label="直接选取参照配置" name="second">
                <div style="width: 100%; overflow-y: auto; height: 65vh">
                    <avue-crud
                        :option="optionSelectReferConfig"
                        :table-loading="selectReferConfigLoading"
                        :data="selectReferConfigData"
                        :page.sync="selectReferConfigPage"
                        ref="selectReferConfigCrud"
                        @row-click="codeRuleRowClick"
                        @search-change="searchChange"
                        @search-reset="searchReset"
                        @selection-change="selectionChange"
                        @current-change="currentChange"
                        @size-change="sizeChange"
                        @refresh-change="refreshChange"
                        @on-load="onLoad">
                    </avue-crud>
                </div>
            </el-tab-pane>
        </el-tabs>
        <div slot="footer" class="dialog-footer">
            <el-button type="primary" @click="selectedListReferConfig">ç¡® å®š</el-button>
            <el-button @click="recoveryDataAndForm('initForm')">清空内容</el-button>
@@ -88,14 +124,33 @@
        },
        data() {
            return {
                activeName: 'first', //当前活动的tabs
                labelWidth: '150',   // æ ‡é¢˜å®½åº¦
                isShowReferConfig: false,  // å¯¹è¯æ¡†æ˜¾ç¤ºéšè—æŽ§åˆ¶
                // è¡¨å•对象
                form: {
                    text: '',
                    text1: '',
                    text2: '',
                    referWindowType: 0, //参照窗口类型
                    referType: '',
                    textField: 'name',
                    valueField: 'oid',
                    type: 'default', //参照窗口类型
                    url: '',
                    backPath: '',
                    method: 'GET',
                    height: '',
                    useFormKey: '',
                    paramForFormKey: '',
                    isMuti: false,
                    mapFields: '',
                    // limit: '15',
                    // sortField: '',
                    // sortType: 'asc',
                    // referContent: '',
                    // displayTable: '',
                    // parentFieldName: '',
                    // parentUsedField: 'oid',
                    // parentValue: '',
                    // loadType: 'all',
                    // onlyLeaf: false,
                },
                attrData: [
                    {
@@ -211,12 +266,96 @@
                            prop: "value",
                        }
                    ]
                },
                optionSelectReferConfig: {
                    height:'auto',
                    tip: false,
                    addBtn: false,
                    editBtn: false,
                    //searchShow: false,
                    searchMenuSpan: 6,
                    border: false,
                    index: true,
                    viewBtn: false,
                    delBtn: false,
                    //selection: false,
                    //disablePage: false,
                    //refreshBtn: false,
                    //columnBtn: false,
                    dialogClickModal: false,
                    highlightCurrentRow: true,
                    column: [
                        {
                            label: "列字段(*)",
                            prop: "field",
                        },{
                            label: "列名(*)",
                            prop: "title",
                        },{
                            label: "字段类型(*)",
                            prop: "fieldTypeText",
                        },{
                            label: "列表可排序",
                            prop: "sort",
                        },{
                            label: "排序字段",
                            prop: "sortField",
                        },{
                            label: "字段宽度",
                            prop: "width",
                        },{
                            label: "列固定位置",
                            prop: "fixedText",
                        },{
                            label: "js显示代码",
                            prop: "templet",
                        },
                    ]
                },
                selectReferConfigLoading: false,
                selectReferConfigData: [
                    {
                        field: 'id',
                        title: '编号',
                        fieldType: 'text',
                        fieldTypeText: '文本框',
                        sort: "true",
                        sortField: 'id',
                        width: '150',
                        isquery: true,
                    },{
                        field: 'name',
                        title: '名称',
                        fieldType: 'text',
                        fieldTypeText: '文本框',
                        sort: "true",
                        sortField: 'name',
                        width: '180',
                        isquery: true,
                }
                ],
                selectReferConfigPage: {
                    pageSize: 10,
                    currentPage: 1,
                    total: 0
                },
                selectReferConfigQuery: {},
            };
        },
        // è¡¨å•界面显示内容配置
        computed: {
            formOption() {
                /** æ£€éªŒæ˜¯å¦ä¸ºæ•°å­— */
                let validateNumber = "";
                validateNumber = (rule, value,callback) => {
                    if(/[^\d]/g.test(value)){
                        callback(new Error('窗口显示的高度必须为数值类型'));
                    }else {
                        callback();
                    }
                };
                return {
                    submitBtn: false,
                    emptyBtn: false,
@@ -225,11 +364,27 @@
                    column: [
                        {
                            label: '参照的业务类型',
                            prop: 'text1',
                            prop: 'referType',
                            span: 7,
                            type: 'table',
                            tip: '参照数据查询的业务类型。',
                            tipPlacement: 'right',
                            type: 'input',
                            rules: [{
                                required: true,
                                message: "(参照的业务类型)必填项不能为空",
                                trigger: "blur",
                            }],
                            children: {
                                border: true,
                                height: '200px',
                                tip: false,
                                //searchShow: false,
                                index: true,
                                selection: true,
                                //refreshBtn: false,
                                //columnBtn: false,
                                dialogClickModal: false,
                                highlightCurrentRow: true,
                                column: [{
                                    label: '业务类型编号',
                                    width: 120,
@@ -249,17 +404,60 @@
                                    prop: 'description'
                                }],
                            },
                            rules: [{
                                required: true,
                                message: "(参照的业务类型)必填项不能为空",
                                trigger: "blur",
                            }],
                            // formatter: (row) => {
                            //     console.log(row.name);
                            //     if (!row.name)
                            //         return ''
                            //     return row.name;
                            // },
                            // onLoad: ({ page, value, data }, callback) => {
                            //     console.log(page);
                            //     console.log(value);
                            //     console.log(data);
                            //     //首次加载去查询对应的值
                            //     if (value) {
                            //         console.log(111+"======="+ value);
                            //         this.$message.success('首次查询' + value)
                            //         callback({
                            //             id: 't1',
                            //             name: 'test1',
                            //             description: 'test1',
                            //         })
                            //         return;
                            //     }
                            //     if (data) {
                            //         console.log(111+"======="+ data);
                            //         this.$message.success('搜索查询参数' + JSON.stringify(data))
                            //     }
                            //     if (page) {
                            //         console.log(111+"======="+ page);
                            //         this.$message.success('分页参数' + JSON.stringify(page))
                            //     }
                            //     //分页查询信息
                            //     callback({
                            //         total: 2,
                            //         data: [{
                            //             id: 't2',
                            //             name: 'test2',
                            //             description: 'test2',
                            //         }, {
                            //             id: 't3',
                            //             name: 'test3',
                            //             description: 'test3',
                            //         }]
                            //     })
                            // },
                            // props: {
                            //     label: 'name',
                            //     value: 'id',
                            // }
                        },{
                            label: '显示的属性',
                            prop: 'text2',
                            tip: '选择数据后,显示到字段上的信息所属的属性,一般都是name,如果是多个属性使用逗号分割,如id,name',
                            prop: 'textField',
                            tip: '选择数据后,显示到字段上的信息所属的属性,一般都是name,如果是多个属性使用逗号分割,如id,name。',
                            tipPlacement: 'right',
                            span: 7,
                            value: 'name',
                            rules: [{
                                required: true,
                                message: "(显示的属性)必填项不能为空",
@@ -267,8 +465,9 @@
                            }],
                        },{
                            label: '存储值的属性',
                            prop: 'text2',
                            prop: 'valueField',
                            tip: '选择数据后,保存到数据库里的属性,一般都是oid或者id,如果是多个属性使用逗号分割,如oid ,id',
                            value: 'oid',
                            tipPlacement: 'right',
                            span: 7,
                            rules: [{
@@ -278,101 +477,158 @@
                            }],
                        },{
                            label: '参照窗口类型',
                            prop: 'referWindowType',
                            //tip: '我是一个左边提示语',
                            //tipPlacement: 'left',
                            prop: 'type',
                            tip: 'default:默认的参照窗口样式; stand:UI上下文配置的方式; classify:分类+档案的显示; è‡ªå®šä¹‰çš„参照直接写js的组件路径;tree:树形展示;grid:列表展示',
                            tipPlacement: 'right',
                            span: 7,
                            value: 'default',
                            type: 'select',
                            dicData: [{
                                label: '默认样式',
                                value: 0
                                value: 'default'
                            }, {
                                label: '平台配置',
                                value: 1
                                value: 'stand'
                            }, {
                                label: '树形',
                                value: 2
                                value: 'tree'
                            }, {
                                label: '列表',
                                value: 3
                                value: 'grid'
                            }, {
                                label: '部门树',
                                value: 4
                                value: 'refer/OrgDepartmentRefer'
                            }, {
                                label: '部门列表',
                                value: 5
                                value: 'refer/OrgDepartmentGridRefers'
                            }, {
                                label: '用户',
                                value: 6
                                value: 'refer/SmUserRefer'
                            }, {
                                label: '用户列表',
                                value: 7
                                value: 'refer/SmUserGridRefer'
                            }, {
                                label: '角色列表',
                                value: 8
                                value: 'refer/SmRoleRefer'
                            }, {
                                label: '职务',
                                value: 9
                                value: 'refer/OrgDutyRefer'
                            }, {
                                label: '工种',
                                value: 10
                                value: 'refer/SmWorkTypeRefer'
                            }, {
                                label: '流程模板',
                                value: 11
                                value: 'refer/WfProcessTemplateRefer'
                            }],
                            rules: [{
                                required: true,
                                message: "(参照窗口类型)必填项不能为空",
                                trigger: "blur",
                            }],
                            change: ({ value, column }) => {
                                // å¤åŽŸè¡¨å•,因为其他分组中如果存在值,在切换时,会保留输入的字段值所以需要还原
                                let oldForm = this.form;
                                this.form = {};  // è¡¨å•对象赋空
                                this.form.referType = oldForm.referType
                                this.form.textField = oldForm.textField
                                this.form.valueField = oldForm.valueField
                                this.form.type = oldForm.type //参照窗口类型
                                this.form.url =  oldForm.url
                                this.form.backPath =  oldForm.backPath
                                this.form.method =  oldForm.method
                                this.form.height =  oldForm.height
                                this.form.useFormKey =  oldForm.useFormKey
                                this.form.paramForFormKey =  oldForm.paramForFormKey
                                this.form.isMuti =  oldForm.isMuti
                                this.form.mapFields =  oldForm.mapFields
                                let addFrom = {};  //根据类型需要添加的不同属性
                                if(value == 'stand'){
                                    addFrom = {
                                        referContent: '',
                                        displayTable: '',
                                    }
                                } else if(value == 'default' || value == 'grid'){
                                    addFrom = {
                                        limit: '15',
                                        sortField: '',
                                        sortType: 'asc',
                                    }
                                } else if(value == 'tree'){
                                    addFrom = {
                                        parentFieldName: '',
                                        parentUsedField: 'oid',
                                        parentValue: '',
                                        loadType: 'all',
                                        onlyLeaf: false,
                                        sortField: '',
                                        sortType: 'asc',
                                    }
                                }
                                // åˆå¹¶ä¸¤ä¸ªè¡¨å•
                                this.form = Object.assign(addFrom,this.form);
                                //console.log(this.form);
                            },
                        },{
                            label: '自定义的后台路径',
                            prop: 'text2',
                            tip: '通常为空;如果是列表,后台必须返回DataGrid,如果是树,后台必须返回List',
                            prop: 'url',
                            tip: '通常为空;如果是列表,后台必须返回DataGrid,如果是树,后台必须返回List<Tree>',
                            tipPlacement: 'right',
                            span: 7,
                        },{
                            label: '服务的地址',
                            prop: 'text2',
                            prop: 'backPath',
                            tip: '通常为空,在支持微服务或者分布式部署的时候才配置',
                            tipPlacement: 'right',
                            span: 7,
                        },{
                            label: '请求后台的协议方式',
                            prop: 'text2',
                            //tip: '',
                            //tipPlacement: 'right',
                            prop: 'method',
                            tip: 'HTTP的协议方式,支持POST,PUT,GET,一般都是GET',
                            tipPlacement: 'right',
                            span: 7,
                            value: 'GET',
                            type: 'select',
                            dicData: [{
                                label:'GET',value: "GET"
                            },{
                                label:'PUT',value: "PUT"
                            },
                            {
                                label:'POST',value: "POST"
                            }],
                        },{
                            label: '窗口显示的高度',
                            prop: 'text2',
                            prop: 'height',
                            tip: '默认空着,设置后表示强制显示这样的高度',
                            tipPlacement: 'right',
                            span: 7,
                            rules:[{
                                validator: validateNumber,
                                message: "窗口显示的高度必须为数值类型",
                                trigger: "blur",
                            }]
                        },{
                            label: '过滤(级联)属性',
                            prop: 'text2',
                            prop: 'useFormKey',
                            tip: '获取表单上的其他属性的属性的值来过滤,或者使用某个属性来级联选择',
                            tipPlacement: 'right',
                            span: 7,
                        },{
                            label: '过滤属性请求参数',
                            prop: 'text2',
                            prop: 'paramForFormKey',
                            tip: '使用过滤属性时,发送给后台的请求参数',
                            tipPlacement: 'right',
                            span: 7,
                        },{
                            label: '是否多选',
                            type: 'switch',
                            prop: 'text2',
                            //tip: '',
                            //tipPlacement: 'right',
                            prop: 'isMuti',
                            value: false,
                            span: 7,
                            row: true,
                        },{
                            label: '映射其他属性',
                            prop: 'text2',
                            prop: 'mapFields',
                            tip: '选择数据后,将选择的数据拷贝到表单里的其他属性,书写格式为{当前表单上的属性:选择数据里的属性,XXXXx:yyyy}',
                            tipPlacement: 'right',
                            span: 18,
@@ -381,23 +637,26 @@
                    // å˜åŠ¨çš„è¡¨å•åŒºåŸŸ
                    group: [
                        {   
                            display: this.form.referWindowType==0||this.form.referWindowType==3,
                            display: this.form.type=='default'||this.form.type=='grid',
                            icon: 'el-icon-info',
                            label: this.form.referWindowType==0 ? '默认参照的配置(下方列表)':'列表参照的配置(下方列表)',
                            label: this.form.type=='default' ? '默认参照的配置(下方列表)':'列表参照的配置(下方列表)',
                            collapse: true,
                            prop: 'group1',
                            prop: 'groupDdefaultOrGrid',
                            column: [
                                {
                                    label: '每页显示条数',
                                    prop: 'text1',
                                    prop: 'limit',
                                    span: 7,
                                    tip: '分页时每页显示的数量,不分页填-1',
                                    //value: 15,
                                    tipPlacement: 'right',
                                },{
                                    label: '排序字段',
                                    prop: 'text1',
                                    prop: 'sortField',
                                    span: 7,
                                    type: 'table',
                                    tip: '查询数据时的排序字段',
                                    tipPlacement: 'right',
                                    children: {
                                        border: true,
                                        column: [{
@@ -423,10 +682,18 @@
                                            prop: 'attrType'
                                        }],
                                    },
                                    // è¿™å„¿éœ€è¦æ·»åŠ ä¸šåŠ¡ç±»åž‹æŽ¥å£
                                },{
                                    label: '排序类型',
                                    prop: 'text1',
                                    prop: 'sortType',
                                    span: 7,
                                    dicData: [{
                                        label: '升序', value: 'asc'
                                    }, {
                                        label: '降序', value: 'desc'
                                    }],
                                    //value: 'asc',
                                    type: 'select',
                                    tip: '查询数据时的排序类型',
                                    tipPlacement: 'right',
@@ -434,93 +701,80 @@
                            ]
                        },
                        {   
                            display: this.form.referWindowType==1,
                            display: this.form.type=='stand',
                            icon: 'el-icon-info',
                            label: 'stand(平台配置)参照',
                            collapse: true,
                            prop: 'group2',
                            prop: 'groupStand',
                            column: [
                                {
                                    label: '参考的UI上下文',
                                    prop: 'text1',
                                    prop: 'referContent',
                                    span: 7,
                                    tip: '只有参照窗口类型是stand时才必须设置,且在stand类型下才能生效',
                                    tipPlacement: 'right',
                                },
                                {
                                    label: '平台的表格编号',
                                    prop: 'text1',
                                    prop: 'displayTable',
                                    span: 7,
                                    tip: '与参照的UI上下文互斥,只有参照窗口类型是stand时才必须设置,且在stand类型下才能生效',
                                    tipPlacement: 'right',
                                    type: 'table',
                                    children: {
                                        border: true,
                                        column: [{
                                            label: '属性英文编号',
                                            width: 120,
                                            search: true,
                                            searchSpan: 8,
                                            searchLabelWidth: 100,
                                            prop: 'id'
                                        },{
                                            label: '属性中文名称',
                                            search: true,
                                            searchSpan: 8,
                                            searchLabelWidth: 100,
                                            prop: 'name'
                                        },{
                                            label: '属性长度',
                                            search: false,
                                            prop: 'attrLength'
                                        },{
                                            label: '属性类型',
                                            search: false,
                                            prop: 'attrType'
                                        }],
                                    },
                                },
                            ]
                        },
                        {   
                            display: this.form.referWindowType==2,
                            display: this.form.type=='tree',
                            icon: 'el-icon-info',
                            label: '树形参照信息',
                            collapse: true,
                            prop: 'group3',
                            prop: 'groupTree',
                            labelWidth: '158',
                            column: [
                                {
                                    label: '树形的上级树形',
                                    prop: 'text1',
                                    label: '树形的上级属性',
                                    prop: 'parentFieldName',
                                    span: 7,
                                    tip: '树形展示的时候,上下级关系查找的属性。',
                                    tipPlacement: 'right',
                                    rules: [{
                                        required: true,
                                        message: "(树形的上级属性)必填项不能为空",
                                        trigger: "blur",
                                    }],
                                },{
                                    label: '上级属性值对应属性',
                                    prop: 'text1',
                                    prop: 'parentUsedField',
                                    span: 7,
                                    tip: '上级属性存储的值,是上级数据的什么属性。一般都是oid。',
                                    value: 'oid',
                                    tipPlacement: 'right',
                                },{
                                    label: '根节点的值',
                                    prop: 'text1',
                                    prop: 'parentValue',
                                    span: 7,
                                    tip: '树形展示的时候,上级的值。',
                                    tipPlacement: 'right',
                                },{
                                    label: '树加载方式',
                                    prop: 'text1',
                                    prop: 'loadType',
                                    span: 7,
                                    value: 'all',
                                    dicData: [{
                                        label: '全部', value: 'all'
                                    }, {
                                        label: '逐级加载', value: 'node'
                                    }],
                                    type: 'select',
                                },{
                                    label: '是否只能选择叶子节点',
                                    prop: 'text1',
                                    prop: 'onlyLeaf',
                                    span: 7,
                                    value: false,
                                    type: 'switch',
                                },{
                                    label: '排序字段',
                                    prop: 'text1',
                                    prop: 'sortField',
                                    span: 7,
                                    type: 'table',
                                    children: {
@@ -548,11 +802,18 @@
                                            prop: 'attrType'
                                        }],
                                    },
                                    // è¿™å„¿éœ€è¦æ·»åŠ ä¸šåŠ¡ç±»åž‹æŽ¥å£è¯·æ±‚å®žçŽ°å¼¹çª—ç•Œé¢è¡¨æ ¼æ¸²æŸ“
                                },{
                                    label: '排序类型',
                                    prop: 'text1',
                                    prop: 'sortType',
                                    span: 7,
                                    type: 'select',
                                    value: 'asc',
                                    dicData: [{
                                        label: '升序', value: 'asc'
                                    }, {
                                        label: '降序', value: 'desc'
                                    }],
                                },
                            ]
                        },
@@ -561,10 +822,40 @@
            },
        },
        methods: {
            clicktest(cell){
                //cell.$cellEdit = true;
            },
            // åˆ‡æ¢å½“前活动的tabs
            handleClick(tab, event) {
                if(tab.index=='0'){
                    this.onloadAttrData();
                }else{
                    this.onloadselectReferConfigData();
                }
            },
            // é€‰æ‹©å®Œå‚照配置之后点击保存按钮触发
            selectedListReferConfig(){
                console.log(this.option);
                console.log(this.form.referWindowType);
                //表单验证
                this.$refs.form.validate((valid, done, msg) => {
                    if (valid) {
                        let submitForm = this.filterForm();
                        //console.log(submitForm);
                        //转换成JSON字符串进行父组件回显
                        let submitFormJson = JSON.stringify(submitForm);
                        //console.log(submitFormJson);
                        this.$emit('echoReferConfig', submitFormJson) // è§¦å‘update:data将子组件值传递给父组件
                        //this.isShowReferConfig = false;
                        done()
                    } else {
                        for(let attr in msg) {
                            //console.log(msg[attr][0].message);
                            this.$message.warning(msg[attr][0].message);
                            break;
                        }
                        return false;
                    }
                })
            },
            /** å…¶å®žé€‰å–属性表格的默认数据不需要加载,
             ä½†æ˜¯å¼¹çª—打开会有表格错行问题所以需要在这调用doLayout方法*/
@@ -584,7 +875,12 @@
            // è¯¥ç•Œé¢çš„æ•°æ®è¿›è¡Œåˆå§‹åŒ–复原
            recoveryDataAndForm(condition){
                if(condition=='initForm'){
                    let currentType = this.form.type;
                    this.form = this.$options.data().form;
                    this.form.type = currentType;
                    console.log(this.form);
                    // this.form.referContent = '';
                    // this.form.displayTable = '';
                    return;
                }
                Object.assign(this.$data,this.$options.data());         
@@ -594,9 +890,65 @@
                if(condition=='addSearchCondition'){
                    console.log('this is open addSearchCondition');
                }else {
                    if(this.form.referType == '' || this.form.referType == null){
                        this.$message.warning("请输入参照的业务类型")
                        return;
                    }
                    console.log('this is open selectAttr');
                }
            },
            // æäº¤è¡¨å•之前过滤掉空或不需要的表单数据
            filterForm(){
                const oldForm = this.form;
                let submittDefaultForm = [
                    'referType',
                    'textField',
                    'valueField',
                    'type', //参照窗口类型
                    'url',
                    'backPath',
                    'method',
                    'height',
                    'useFormKey',
                    'paramForFormKey',
                    'isMuti',
                    'mapFields',
                ];
                let addArray = [];
                let newForm ={};
                // æ ¹æ®ä¸åŒç±»åž‹è¿‡æ»¤å‡ºä¸åŒçš„的表单属性
                if(oldForm.type == 'stand'){
                    addArray = ['referContent', 'displayTable'];
                } else if(oldForm.type == 'default' || oldForm.type == 'grid'){
                    addArray = ['limit', 'sortField', 'sortType'];
                } else if(oldForm.type == 'tree'){
                    addArray = [
                        "parentFieldName",
                        'parentUsedField',
                        'parentValue',
                        'loadType',
                        'onlyLeaf',
                        'sortField',
                        'sortType'
                    ];
            }
                submittDefaultForm = submittDefaultForm.concat(addArray);
                submittDefaultForm.forEach(item=>{
                    //console.log(item);
                    if(item == 'isMuti' || item == 'onlyLeaf' || oldForm[item] != '' || oldForm[item] != ''){
                      newForm = Object.assign(newForm,{[item]:oldForm[item]});
                    }
                });
                // console.log(newForm);
                return newForm;
            },
            onloadselectReferConfigData(){
                this.$nextTick(() => {
                    this.$refs.selectReferConfigCrud.doLayout()
                })
            },
        }
    };
</script>
Source/UBCS-WEB/src/template/templateAttr.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
import request from "@/router/axios";
//获取树形组件数据
export const getAtrrList = () => {
  return request({
    url: '/api/ubcs-code/codeClassify/treeCodeClassify',
    method: 'get',
  })
}
//树节点添加
export const  TreeSave = (data) =>{
  return request({
    url:'/api/ubcs-code/codeClassify/save',
    method: 'post',
    data:data
  })
}
//检查是否可以删除
export const  TreeCheckDel = (data) =>{
  return request({
    url:'/api/ubcs-code/codeClassify/checkIsCanDelete',
    method: 'post',
    data:data
  })
}
//删除
export const  TreeDel = (data) =>{
  return request({
    url:'/api/ubcs-code/codeClassify/deleteData',
    method: 'Delete',
    data:data
  })
}
//暂时有问题
export const  TreeObjcet = (oid) =>{
  return request({
    url:'/api/ubcs-code/codeClassify/getObjectByOid',
    method: 'get',
    params:{
      oid
    }
  })
}
//启用
export const  TreeEnable = (data) =>{
  return request({
    url:'/api/ubcs-code/codeClassify/enableData',
    method: 'post',
    data:data
  })
}
//停用
export const  TreeDeactivate = (data) =>{
  return request({
    url:'/api/ubcs-code/codeClassify/disableData',
    method: 'post',
    data:data
  })
}
export const  importClassify = (data) =>{
  return request({
    url:'/api/ubcs-code/codeClassify/importClassify',
    method: 'post',
    data:data
  })
}
//主键获取分类模板属性
export const  gridCodeClassifyTemplate = (oid) =>{
  return request({
    url:'/api/ubcs-code/codeClassifyTemplateController/gridCodeClassifyTemplate',
    method: 'get',
    params:{
      oid
    }
  })
}
//基本信息表单数据
export const  getObjectByOid = (oid) =>{
  return request({
    url:'/api/ubcs-code/codeClassify/getObjectByOid',
    method: 'get',
    params:{
      oid
    }
  })
}
//模板属性表格数据
export const  gridCodeClassifyTemplateAttr = (params) =>{
  return request({
    url:'/api/ubcs-code/codeClassifyTempAttrController/gridCodeClassifyTemplateAttr',
    method: 'get',
    params:{
     ...params
    }
  })
}
Source/UBCS-WEB/src/views/code/code.vue
@@ -645,7 +645,7 @@
        </el-form>
      </div>
      <!-- ç¬¬ä¸€å±‚对话框的按钮和,线条 -->
      <el-divider direction="horizontal"></el-divider>
      <el-divider class="horizontal-line" direction="horizontal"></el-divider>
      <div slot="footer" class="dialog-footer">
        <el-button @click="addBasicCodeSettingBox = false" v-show="showbtn">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="saveOrEditBasicCode" v-show="showbtn">保 å­˜</el-button>
@@ -664,7 +664,7 @@
              <div class="box">
                <el-scrollbar style="height: auto; border-bottom-right-radius:8px ">
                  <basic-container>
                    <div class="abox">
                    <div class="treeBox">
                      <avue-tree :data="attrClassifyTreeData" :option="treeOption" @node-click="nodeClick"/>
                    </div>
                  </basic-container>
@@ -694,7 +694,6 @@
          <el-button @click="isShowSelectAttrOption = false">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="selectedListClassifyLinkAttr">ç¡® å®š</el-button>
        </div>
      </el-dialog>
      <!-- ç¬¬äºŒå±‚对话框,属性码段,公式编辑框对话框组件 -->
@@ -1116,7 +1115,7 @@
          this.form.getValueClass = content;
        },
        /* å‚照配置,子组件填完参照配置之后内容回显时调用 */
        /* å¼•用码段参照配置,子组件填完参照配置之后内容回显时调用 */
        echoReferConfig(content){
          this.form.referConfig = content;
        },
@@ -2399,7 +2398,7 @@
          }else if(condition === 'referBtmId'){
            this.form.referBtmId = '';
          }else if(condition === 'referConfig'){
            this.form.referBtmId = '';
            this.form.referConfig = '';
          }
        },
        // è¡¥ä½æ—¶çš„字符,实现可输可选
@@ -2566,7 +2565,7 @@
</script>
<style scope>
<style>
  .code-rule-crud > .avue-crud__search ,.code-basic-crud > .avue-crud__search {
    margin-bottom: -15px;
@@ -2612,14 +2611,14 @@
    padding: 1px 6px;
  }
  .el-divider--horizontal {
  .horizontal-line {
    /* margin-top: 19px !important; */
    margin-bottom: -20px !important;
    width: 100%;
    height: 2px;
  }
  .el-card__body > .abox {
  .el-card__body > .treeBox {
    height: 50vh;
  }
@@ -2631,11 +2630,11 @@
    width:60px;
  }
  .el-input-number {
  .left > .el-form-item > .el-form-item__content > .el-input-number {
    width: 120px;
  }
  .el-input-number >.el-input > .el-input__inner {
  .left > .el-form-item > .el-form-item__content > .el-input-number > .el-input > .el-input__inner {
    width:120px;
  } 
  
@@ -2662,7 +2661,7 @@
    justify-content: space-around;
  }
  .el-divider--vertical {
  .add-basicsec-form > .el-divider--vertical {
    width: 2px;
    height: 72%;
    margin: 0 auto;
Source/UBCS-WEB/src/views/modeling/Business.vue
@@ -26,28 +26,28 @@
            <el-descriptions class="margin-top" :column="3" :size="size" border>
              <el-descriptions-item>
                <template slot="label">
                  <i :class="icons.key"></i>
                  <i class="el-icon-finished"></i>
                  è‹±æ–‡åç§°
                </template>
                {{ obj.id }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  <i :class="icons.name"></i>
                  <i class="el-icon-info"></i>
                  ä¸­æ–‡åç§°
                </template>
                {{ obj.name }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  <i :class="icons.tableName"></i>
                  <i class="el-icon-date"></i>
                  æ•°æ®åº“表名
                </template>
                {{ obj.tableName }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  <i :class="icons.domain"></i>
                  <i class="el-icon-folder-opened"></i>
                  æ‰€å±žé¢†åŸŸ
                </template>
                  <el-tag size="small">
@@ -70,21 +70,21 @@
          </el-descriptions-item> -->
              <el-descriptions-item>
                <template slot="label">
                  <i :class="icons.revisionRule"></i>
                  <i class="el-icon-s-check"></i>
                  ç‰ˆæœ¬è§„则
                </template>
                {{ obj.versionRule }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  <i :class="icons.lifeCycle"></i>
                  <i class="el-icon-refresh-right"></i>
                  ç”Ÿå‘½å‘¨æœŸ
                </template>
                {{ obj.lifeCycleId }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  <i :class="icons.view"></i>
                  <i class="el-icon-view"></i>
                  è§†å›¾
                </template>
               <el-tag size="small">
@@ -100,7 +100,7 @@
          </el-descriptions-item> -->
              <el-descriptions-item>
                <template slot="label">
                  <i :class="icons.desc"></i>
                  <i class="el-icon-chat-line-square"></i>
                  æè¿°
                </template>
                {{ obj.description }}
@@ -125,14 +125,21 @@
          </el-select>
          <avue-crud class="businessCrud" v-model="ref.form" :option="ref.option" :data="ref.data" @selection-change="selectionChange">
          </avue-crud>
<<<<<<< Updated upstream
          <div slot="footer" class="dialog-footer">
                <el-button @click="dialoghandeltrue">确定</el-button>
                <el-button @click="dialoghandelfalse">取消</el-button>
            </div>
=======
          <span slot="footer" class="dialog-footer">
            <el-button @click="dialoghandelfalse">取 æ¶ˆ</el-button>
            <el-button type="primary" @click="dialoghandeltrue">ç¡® å®š</el-button>
          </span>
>>>>>>> Stashed changes
        </el-dialog>
      </el-container>
    </el-container>
    <business-add ref="btmAdd" :btmType="addOption.btmType" :domainOption="domainOptions" :icons="icons" @refreshTable="initTreeOnLoad">
    <business-add ref="btmAdd" :btmType="addOption.btmType" :domainOption="domainOptions">
  </business-add>
  </el-container>
</template>
@@ -172,8 +179,6 @@
        border: true,
        height: 466,
        editBtn: false,
        index: true,
        rowKey:'oid',
        addBtn: false,
        menu: false,
        highlightCurrentRow: true,
@@ -209,16 +214,6 @@
      },
      domain: null,
      domainOptions: [],
      icons:{
        key: 'el-icon-finished',
        name: 'el-icon-info',
        tableName: 'el-icon-date',
        domain: 'el-icon-folder-opened',
        revisionRule: 'el-icon-s-check',
        lifeCycle: 'el-icon-refresh-right',
        view: 'el-icon-view',
        desc: 'el-icon-chat-line-square'
      },
      ref: {
        // ä»Žè¡¨ä¸­é€‰æ‹©dialog状态
        visible: false,
@@ -229,7 +224,7 @@
          headerAlign: 'center',
          border: true,
          index: true,
          rowKey: 'oid',
          rowKey: 'id',
          tabs: true,
          addBtn: false,
          menu: false,
@@ -262,13 +257,36 @@
  },
  methods: {
    nodeClick(data) {
      if(data.oid){
        getDetail(data.oid).then(res => {
          this.obj = res.data.data;
        })
      }
    },
    //  åŸºæœ¬ä¿¡æ¯æ·»åŠ 
    basicSave(row, done, loading) {
      add(Object.assign({
        createUser: this.userInfo.name
      }, row)).then(() => {
        this.$message.success('新增成功')
        done();
        this.getList();
      }).catch(() => {
        loading()
      })
    },
    //属性添加
    loadSave(row, done, loading) {
      add(Object.assign({
        createUser: this.userInfo.name
      }, row)).then(() => {
        this.$message.success('新增成功')
        done();
        this.getList();
      }).catch(() => {
        loading()
      })
    },
    selectFromTable() {
      console.log('获取');
      this.ref.visible = true;
    },
    refOnLoad(domain) {
@@ -323,10 +341,8 @@
  border-radius: 10px;
}
.businessCrud > .el-card:nth-of-type(2) > .el-card__body > .avue-crud__menu{
.businessCrud > .el-card > .el-card__body > .avue-crud_menu{
        display: none !important;
}
.attributeCrud > .el-card:nth-of-type(2) > .el-card__body > .avue-crud__menu{
        display: none !important;
}
</style>
Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
@@ -4,7 +4,7 @@
    :visible.sync="showSubmitDialog"
    append-to-body
    @close="closeSubmitDialog"
    width="74%"
    width="70%"
    >
        <el-form ref="form" :model="btmType" show-message="true" inline size="medium" label-suffix=":" class="btmTypeForm">
                
@@ -107,28 +107,19 @@
        },
        domainOption:{
            type: Array
        },
        icons: {
            type: Array
        }
    },
    data() {
        return {
            form: {},
            showSubmitDialog : false,
            page: {
                currentPage: 1,
                pageSize:10
            },
            option: {
                height: "330px",
                selection: true,
                headerAlign: 'center',
                border: true,
                index: true,
                rowKey: 'oid',
                addBtn: false,
                refreshBtn: false,
                columnBtn:false,
                rowKey: 'id',
                tabs: true,
                menu: false,
                highlightCurrentRow: true,
@@ -136,7 +127,7 @@
                    {
                        label: '英文名称',
                        prop: 'id',
                        align: 'left'
                        align: 'center'
                    }, {
                        label: '中文名称',
                        prop: 'name',
@@ -233,7 +224,7 @@
        }
    },
    created() {
        console.log('123');
    },
    methods: {
        closeSubmitDialog(){
Source/UBCS-WEB/src/views/modeling/classifyTree.vue
@@ -5,58 +5,36 @@
</template>
<script>
export default {
  name: "classifyTree.vue",
  //使用provide传递给子组件
  //父传子有问题,暂时没解决,用provide代替父传子,子传父还是用$emit传递,注意!!!其他组件不能使用同样的类名否则会报错。
  provide() {
    return {
      Treeoption: {
        multiple: true,
        formslot: true,
        defaultExpandAll: true,
        formOption: {
          labelWidth: 100,
          column: [{
            label: '自定义项',
            prop: 'label'
          }],
        }
      },
      Treedata: [
        {
          value: 0,
          label: '一级部门',
          children: [
            {
              value: 1,
              label: '一级部门1',
            }, {
              value: 2,
              label: '一级部门2',
            }
          ]
        }, {
          value: 3,
          label: '二级部门',
          children: [
            {
              value: 4,
              label: '二级部门1',
            }, {
              value: 5,
              label: '二级部门2',
            }
          ]
        }
      ],
      crudTreeOption: {
        index: true,
        border: true,
        column: [
          {
            label: "测试1",
            prop: "cash"
            label: "模板编号",
            prop: "id"
          },
          {
            label:"模板名称",
            prop:"name"
          },
          {
            label: "模板描述",
            prop:"description"
          },
          {
            label:"版本号",
            prop:"revisionSeq"
          },
          {
            label:"状态",
            prop:"lcStatusText"
          }
        ]
      },
@@ -85,12 +63,49 @@
          ]
        }
      ],
      arr : [
        {
          name: 'Alice',
          age: 30,
          children: [
            {
              name: 'Bob',
              age: 5,
              toys: [
                {
                  name: 'ball',
                  color: 'red'
                },
                {
                  name: 'doll',
                  color: 'blue'
                }
              ]
            },
            {
              name: 'Charlie',
              age: 3,
              toys: [
                {
                  name: 'car',
                  color: 'green'
                },
                {
                  name: 'train',
                  color: 'yellow'
                }
              ]
            }
          ]
        },]
    }
  },
  created() {
  },
  methods: {}
  methods: {
  }
}
</script>
Source/UBCS-WEB/vue.config.js
@@ -26,8 +26,8 @@
    proxy: {
      '/api': {
        //本地服务接口地址
        //target: 'http://localhost:37000',
        target: 'http://192.168.3.7:37000',
        target: 'http://localhost:37000',
        //target: 'http://192.168.3.7:37000',
        //target: 'http://dev.vci-tech.com:37000',
        //远程演示服务地址,可用于直接启动项目
        //target: 'https://saber.bladex.vip/api',
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java
@@ -41,7 +41,7 @@
     * nacos dev åœ°å€
     */
    //String NACOS_DEV_ADDR = "dev.vci-tech.com:38848";
    String NACOS_DEV_ADDR = "192.168.93.196:38848";
    String NACOS_DEV_ADDR = "192.168.93.201:38848";
    /**
     * nacos prod åœ°å€
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/DomainVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.vci.ubcs.omd.vo;
import lombok.Data;
import java.io.Serializable;
/**
 * Description: é¢†åŸŸçš„æ˜¾ç¤ºå¯¹è±¡
 *
 * @author LiHang
 * @date 2023/5/15
 */
@Data
public class DomainVO implements Serializable {
    private static final long serialVersionUID = -2954895662615860362L;
    private String value;
    private String label;
}
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/enumpack/NewAppConstantEnum.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/NewAppConstantEnum.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.vci.ubcs.code.enumpack;
package com.vci.ubcs.starter.enumpack;
import org.springblade.core.launch.constant.AppConstant;
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MPJLambdaWrapperSqlKeyword.java
@@ -78,6 +78,51 @@
        }
    }
    public static void buildConditionByMapString(Map<String, String> query, MPJLambdaWrapper<?> qw) {
        if (!Func.isEmpty(query)) {
            query.forEach((k, v) -> {
                if (!Func.hasEmpty(new Object[]{k, v}) && !k.endsWith("_ignore")) {
                    if (k.endsWith("_equal")) {
                        qw.eq(getColumn(k, "_equal"), v);
                    } else if (k.endsWith("_notequal")) {
                        qw.ne(getColumn(k, "_notequal"), v);
                    } else if (k.endsWith("_likeleft")) {
                        qw.likeLeft(getColumn(k, "_likeleft"), v);
                    } else if (k.endsWith("_likeright")) {
                        qw.likeRight(getColumn(k, "_likeright"), v);
                    } else if (k.endsWith("_notlike")) {
                        qw.notLike(getColumn(k, "_notlike"), v);
                    } else if (k.endsWith("_ge")) {
                        qw.ge(getColumn(k, "_ge"), v);
                    } else if (k.endsWith("_le")) {
                        qw.le(getColumn(k, "_le"), v);
                    } else if (k.endsWith("_gt")) {
                        qw.gt(getColumn(k, "_gt"), v);
                    } else if (k.endsWith("_lt")) {
                        qw.lt(getColumn(k, "_lt"), v);
                    } else if (k.endsWith("_datege")) {
                        qw.ge(getColumn(k, "_datege"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss"));
                    } else if (k.endsWith("_dategt")) {
                        qw.gt(getColumn(k, "_dategt"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss"));
                    } else if (k.endsWith("_dateequal")) {
                        qw.eq(getColumn(k, "_dateequal"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss"));
                    } else if (k.endsWith("_datele")) {
                        qw.le(getColumn(k, "_datele"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss"));
                    } else if (k.endsWith("_datelt")) {
                        qw.lt(getColumn(k, "_datelt"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss"));
                    } else if (k.endsWith("_null")) {
                        qw.isNull(getColumn(k, "_null"));
                    } else if (k.endsWith("_notnull")) {
                        qw.isNotNull(getColumn(k, "_notnull"));
                    } else {
                        qw.like(getColumn(k, "_like"), v);
                    }
                }
            });
        }
    }
    private static String getColumn(String column, String keyword) {
        return StringUtil.humpToUnderline(StringUtil.removeSuffix(column, keyword));
    }
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/Map2MPJLambdaUtil.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/Map2MPLLambdaUtil.java ÐÞ¸Ä
@@ -1,12 +1,10 @@
package com.vci.ubcs.starter.util;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.springblade.core.mp.support.Query;
import org.springblade.core.mp.support.SqlKeyword;
import org.springblade.core.tool.support.Kv;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
@@ -14,9 +12,9 @@
import java.util.Map;
public class Map2MPLLambdaUtil {
public class Map2MPJLambdaUtil {
    public Map2MPLLambdaUtil() {
    public Map2MPJLambdaUtil() {
    }
    public static <T> IPage<T> getPage(Query query) {
@@ -52,6 +50,11 @@
        return getMPJLambdaWrapper(query, exclude, clazz);
    }
    public static <T> MPJLambdaWrapper<T> getMPJLambdaWrapperByMapString(Map<String, String> query, Class<T> clazz) {
        Kv exclude = Kv.create().set("Blade-Auth", "Blade-Auth").set("current", "current").set("size", "size").set("ascs", "ascs").set("descs", "descs");
        return getMPJLambdaWrapperByMapString(query, exclude, clazz);
    }
    /**
     * map转换为MPJLambdaWrapper
     * @param query
@@ -70,5 +73,15 @@
        return qw;
    }
    public static <T> MPJLambdaWrapper<T> getMPJLambdaWrapperByMapString(Map<String, String> query, Map<String, Object> exclude, Class<T> clazz) {
        exclude.forEach((k, v) -> {
            query.remove(k);
        });
        MPJLambdaWrapper<T> qw = new MPJLambdaWrapper();
        qw.setEntity(BeanUtil.newInstance(clazz));
        MPJLambdaWrapperSqlKeyword.buildConditionByMapString(query, qw);
        return qw;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeButtonController.java
@@ -58,6 +58,84 @@
    private final ICodeButtonService codeButtonService;
    CodeButtonMapper codeButtonMapper;
    /**
     * æ¨¡æ¿æ‰©å±•æ±  è¯¦æƒ…
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入codebutton")
    public R<CodeButtonVO> detail(CodeButton codebutton) {
        CodeButton detail = codeButtonMapper.selectOne(Condition.getQueryWrapper(codebutton));
        return R.data(CodeButtonWrapper.build().entityVO(detail));
    }
    /**
     * æ¨¡æ¿æ‰©å±•æ±  åˆ†é¡µ
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入codebutton")
    public R<IPage<CodeButtonVO>> list(CodeButton codebutton, Query query) {
        IPage<CodeButton> pages = codeButtonMapper.selectPage(Condition.getPage(query), Condition.getQueryWrapper(codebutton));
        return R.data(CodeButtonWrapper.build().pageVO(pages));
    }
    /**
     * æ¨¡æ¿æ‰©å±•æ±  è‡ªå®šä¹‰åˆ†é¡µ
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入codebutton")
    public R<IPage<CodeButtonVO>> page(CodeButtonVO codebutton, Query query) {
        IPage<CodeButtonVO> pages = codeButtonService.selectcodebuttonPage(Condition.getPage(query), codebutton);
        return R.data(pages);
    }
    /**
     * æ¨¡æ¿æ‰©å±•æ±  æ–°å¢ž
     */
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增", notes = "传入codebutton")
    public R save(@Valid @RequestBody CodeButton codebutton) {
        return R.status(SqlHelper.retBool(codeButtonMapper.insert(codebutton)));
    }
    /**
     * æ¨¡æ¿æ‰©å±•æ±  ä¿®æ”¹
     */
    @PostMapping("/update")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "修改", notes = "传入codebutton")
    public R update(@Valid @RequestBody CodeButton codebutton) {
        return R.status(SqlHelper.retBool(codeButtonMapper.updateById(codebutton)));
    }
    /**
     * æ¨¡æ¿æ‰©å±•æ±  æ–°å¢žæˆ–修改
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入codebutton")
    public R submit(@Valid @RequestBody CodeButton codebutton) {
        if(codebutton.getOid() != null){
            return R.status(SqlHelper.retBool(codeButtonMapper.updateById(codebutton)));
        }
        return R.status(SqlHelper.retBool(codeButtonMapper.insert(codebutton)));
    }
    /**
     * æ¨¡æ¿æ‰©å±•æ±  åˆ é™¤
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "逻辑删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
//        return codebuttonService.deleteCodeButton(ids);
        return R.status(SqlHelper.retBool(codeButtonMapper.deleteBatchIds(Func.toStrList(ids))));
    }
    /**
     * ä¸»æ•°æ®ä¸­çš„æŒ‰é’®æ‰©å±•列表
     * @param baseQueryObject åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateAttrController.java
@@ -219,7 +219,7 @@
     * @return ä¸»é¢˜åº“分类的模板属性显示对象列表,生效的内容
     */
    @GetMapping("/refDataGrid")
    public DataGrid<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(BaseQueryObject baseQueryObject){
    public IPage<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(BaseQueryObject baseQueryObject){
        if(baseQueryObject == null){
            baseQueryObject = new BaseQueryObject();
        }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyTemplateAttrService.java
@@ -34,7 +34,6 @@
     */
    IPage<CodeClassifyTemplateAttrVO> gridCodeClassifyTemplateAttr(MPJLambdaWrapper<CodeClassifyTemplateAttr> mpjLambdaWrapper , PageHelper pageHelper) throws VciBaseException;
    /**
     * æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param  codeClassifyTemplateAttrDO æ•°æ®å¯¹è±¡
@@ -42,7 +41,6 @@
     * @throws VciBaseException æ‹·è´å±žæ€§å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    CodeClassifyTemplateAttrVO codeClassifyTemplateAttrDO2VO(CodeClassifyTemplateAttr codeClassifyTemplateAttrDO) throws VciBaseException;
    /**
     * è‡ªå®šä¹‰åˆ†é¡µ
@@ -81,7 +79,6 @@
     * @return æ‰§è¡Œç»“æžœ
     */
    DataGrid<CodeClassifyTemplateAttrVO> gridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper);
    /**
     * å¢žåŠ ä¸»é¢˜åº“åˆ†ç±»çš„æ¨¡æ¿å±žæ€§
@@ -126,7 +123,7 @@
     * @param pageHelper åˆ†é¡µå’ŒæŽ’序
     * @return ä¸»é¢˜åº“分类的模板属性显示对象列表,生效的内容
     */
    DataGrid<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper);
    IPage<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper);
    /**
     * æŸ¥è¯¢è¿™ä¸ªæ¨¡æ¿ï¼Œä¸šåŠ¡ç±»åž‹ä¸‹çš„æ‰€æœ‰æœªé€‰æ‹©çš„å±žæ€§
@@ -134,6 +131,7 @@
     * @return
     */
    DataGrid<CodeOsbtmtypeattributeVO> codeClassifyTemplateAttrByBtm(BaseQueryObject baseQueryObject);
    /**
     * æŸ¥è¯¢è¿™ä¸ªæ¨¡æ¿ï¼Œä¸šåŠ¡ç±»åž‹ä¸‹å·²é€‰æ‹©çš„å±žæ€§
     * @param baseQueryObject
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -44,7 +44,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.cache.utils.CacheUtil;
import com.vci.ubcs.core.log.exception.ServiceException;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
@@ -25,6 +25,8 @@
import com.vci.ubcs.starter.util.PatternUtil;
import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
import com.vci.ubcs.starter.web.pagemodel.*;
import com.vci.ubcs.starter.util.Map2MPJLambdaUtil;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.VciDateUtil;
@@ -65,6 +67,7 @@
//    CodeClstempattrMapper codeClstempattrMapper;
    //    @Resource
//    ICodeTempphaseService codeTempphaseService;
    @Resource
    IDictBizClient iDictBizClient;
    @Resource
@@ -112,20 +115,20 @@
        return voList;
    }
//    /**
//     * å‚照主题库分类的模板属性列表
//     * @param conditionMap æŸ¥è¯¢æ¡ä»¶
//     * @param pageHelper åˆ†é¡µå’ŒæŽ’序
//     * @return ä¸»é¢˜åº“分类的模板属性显示对象列表,生效的内容
//     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
//     */
//    @Override
//    public IPage<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, Object> conditionMap, PageHelper pageHelper) throws VciBaseException{
//        if(conditionMap == null){
//            conditionMap = new HashMap<String, Object>();
//        }
//        return gridCodeClassifyTemplateAttr(Map2MPLLambdaUtil.getMPJLambdaWrapper(conditionMap, CodeClassifyTemplateAttr.class),pageHelper);
//    }
    /**
     * å‚照主题库分类的模板属性列表
     * @param conditionMap æŸ¥è¯¢æ¡ä»¶
     * @param pageHelper åˆ†é¡µå’ŒæŽ’序
     * @return ä¸»é¢˜åº“分类的模板属性显示对象列表,生效的内容
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public IPage<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
        if(conditionMap == null){
            conditionMap = new HashMap<String, String>();
        }
        return gridCodeClassifyTemplateAttr(Map2MPJLambdaUtil.getMPJLambdaWrapperByMapString(conditionMap, CodeClassifyTemplateAttr.class),pageHelper);
    }
    @Override
    public IPage<CodeClassifyTemplateAttrVO> selectCodeClstempattrPage(IPage<CodeClassifyTemplateAttrVO> page, CodeClassifyTemplateAttrVO CodeClstempattr) {
@@ -270,7 +273,7 @@
     */
    @Override
    public DataGrid<CodeClassifyTemplateAttrVO> gridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper) {
        DataGrid<CodeClassifyTemplateAttrVO> dataGrid=new DataGrid<CodeClassifyTemplateAttrVO>();
        DataGrid<CodeClassifyTemplateAttrVO> dataGrid=new DataGrid<>();
        //没有传递参数,就不执行查询逻辑
        if(conditionMap.size()==0){
            dataGrid.setData(new ArrayList<>());
@@ -328,7 +331,6 @@
        baseMapper.insert(codeClassifyTemplateAttrDO);
        return codeClassifyTemplateAttrDO2VO(codeClassifyTemplateAttrDO);
    }
    /**
     * æ‰¹é‡æ·»åŠ 
@@ -527,7 +529,6 @@
        }
    }
    /**
     * ä¿®æ”¹ä¸»é¢˜åº“分类的模板属性
     * @param codeClassifyTemplateAttrDTO ä¸»é¢˜åº“分类的模板属性数据传输对象
@@ -688,13 +689,13 @@
     * @return ä¸»é¢˜åº“分类的模板属性显示对象列表,生效的内容
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public DataGrid<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
        if(conditionMap == null){
            conditionMap = new HashMap<String, String>();
        }
        return gridCodeClassifyTemplateAttr(conditionMap,pageHelper);
    }
//    @Override
//    public DataGrid<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
//        if(conditionMap == null){
//            conditionMap = new HashMap<String, String>();
//        }
//        return gridCodeClassifyTemplateAttr(conditionMap,pageHelper);
//    }
    /**
     * æŸ¥è¯¢è¿™ä¸ªæ¨¡æ¿ï¼Œä¸šåŠ¡ç±»åž‹ä¸‹çš„æ‰€æœ‰æœªé€‰æ‹©çš„å±žæ€§
@@ -786,8 +787,6 @@
        return dataGrid;
    }
    /**
     * æŸ¥è¯¢è¿™ä¸ªæ¨¡æ¿ï¼Œä¸šåŠ¡ç±»åž‹ä¸‹å·²é€‰æ‹©çš„å±žæ€§
     * @param baseQueryObject
@@ -845,7 +844,6 @@
        dataGrid.setTotal(boAttrss.size());
        return dataGrid;
    }
    /**
     * åŒæ­¥åˆ°å…¶ä»–模板
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempbuttonServiceImpl.java
@@ -17,8 +17,6 @@
package com.vci.ubcs.code.service.impl;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -26,7 +24,6 @@
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.CodeClassifyTemplateButtonDTO;
import com.vci.ubcs.code.dto.CodeClassifyValueDTO;
import com.vci.ubcs.code.entity.*;
import com.vci.ubcs.code.enumpack.CodeButtonUseEnum;
import com.vci.ubcs.code.mapper.CodeClassifyTemplateButtonMapper;
@@ -35,29 +32,23 @@
import com.vci.ubcs.code.vo.pagemodel.CodeButtonVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateButtonVO;
import com.vci.ubcs.code.wrapper.CodeTempbuttonWrapper;
import com.vci.ubcs.common.utils.PageDO2PageVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.util.Map2MPLLambdaUtil;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.util.Map2MPJLambdaUtil;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import com.vci.ubcs.starter.web.util.BeanUtil;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.WebUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.util.*;
import java.util.stream.Collectors;
@@ -294,7 +285,7 @@
        CodeClassifyTemplateButton codeClassifyTemplateButton = new CodeClassifyTemplateButton();
        BeanMap beanMap = BeanMap.create(codeClassifyTemplateButton);
        beanMap.putAll(conditionMap);
        MPJLambdaWrapper<CodeClassifyTemplateButton> mpjLambdaWrapper = Map2MPLLambdaUtil.getMPJLambdaWrapper(codeClassifyTemplateButton)
        MPJLambdaWrapper<CodeClassifyTemplateButton> mpjLambdaWrapper = Map2MPJLambdaUtil.getMPJLambdaWrapper(codeClassifyTemplateButton)
            .selectAll(CodeClassifyTemplateButton.class)
            .selectAs(CodeButton::getName, CodeClassifyTemplateButton::getClassifyButtonOidName)
            .selectAs(CodeButton::getId, CodeClassifyTemplateButton::getClassifyButtonId)