ludc
2023-12-26 a79582f0c67ddc681d2804669455ae13c64de8f9
Merge remote-tracking branch 'origin/master'
已修改22个文件
1205 ■■■■■ 文件已修改
Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Master/MasterTree.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/StatisticsComponent/ColumnarChart.vue 113 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/StatisticsComponent/lineChart.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/StatisticsComponent/mixCart.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/StatisticsComponent/pieChart.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/advanced-query/advancedQuery.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/refer/vciWebRefer.vue 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue 235 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue 321 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue 124 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/template/Business.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/const/code/codeKeyAttrRepeat.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/styles/tags.scss 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/code/codeKeyAttrRepeat.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/statistic/statisticPage.vue 141 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-codeApply/pom.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/TestIntegrateFrame.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
@@ -25,6 +25,7 @@
      <template v-for="item in slotColumnList" :slot="item.prop + ''">
        <vciWebRefer
          v-if="item.type == 'refer'" :key="item.dataKey"
          referType="master"
          :data-key="item.dataKey"
          :disabled="item.disabled"
          :display="item.display"
Source/UBCS-WEB/src/components/Master/MasterTree.vue
@@ -180,10 +180,11 @@
          List.forEach(item => {
            let columnItem = {
              label: item.title,
              prop: item.queryField,
              prop: item.field,
              // type: this.columnType[item.type],
              sortable: item.sort,
              width: item.minWidth
              width: item.minWidth,
              query: item.queryField
            };
            this.tableHeadFindData.push(Object.assign(item, columnItem))
          })
Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue
@@ -15,14 +15,24 @@
                  item.name
                }}
              </el-button>
              <span v-if="tableHeadFindData.length > 0">
              <el-select slot="prepend" v-model="keyWordFind" placeholder="请选择" size="small">
              <span v-if="tableHeadFindData.length > 0 ">
              <el-select slot="prepend" v-model="keyWordFind" placeholder="请选择" size="small" @change="searchChange">
                <el-option v-for="item in tableHeadFindData" :key="item.id" :label="item.label"
                           :value="item.prop"></el-option>
                           :value="item.query"></el-option>
              </el-select>
              <el-input v-model="WupinFindValue" placeholder="请输入关键字按回车查询"
                        size="small" style="width: 180px; margin-left: 5px; margin-top: 10px"
              <el-input v-if="!isTimeStatus" v-model="WupinFindValue"
                        placeholder="请输入关键字按回车查询" size="small" style="width: 180px; margin-left: 5px; margin-top: 10px"
                        @keyup.enter.native="tableFindInp"></el-input>
              </span>
              <span v-if="tableHeadFindData.length > 0  && isTimeStatus" class="block">
                <el-date-picker
                  v-model="dateValue"
                  placeholder="选择日期"
                  size="small"
                  style="margin-left: 5px"
                  type="date"
                  @change="dateChange">
                </el-date-picker>
              </span>
              <span v-if="tableHeadFindData.length > 0" style="margin-left: 10px">
               <p style="font-size: 13px;display: inline-block;"> 状态:</p>
@@ -191,6 +201,7 @@
import fileInHtml from "@/components/file/inHtml.vue";
import {getUserInfo} from "@/api/system/user";
import func from "@/util/func";
import moment from "moment/moment";
export default {
  components: {
@@ -255,6 +266,9 @@
  },
  data() {
    return {
      isTimeStatus: false,
      isTimeName: '',
      dateValue: "",
      //批量编辑对话框
      bulkeditvisible: false,
      LinkVisible: false,
@@ -304,7 +318,6 @@
        key: "oid",
        label: "name",
      },
      tableHeadFindDatas: [],
      applyvisible: false,
      amendvisible: false,
      addvisible: false,
@@ -427,8 +440,13 @@
          if (_index == 0) {
            this.keyWordFind = record.queryField;
          }
          ;
          // if(record.fieldType === "datetime"){
          //       this.isTimeStatus = true;
          //       console.log(this.isTimeStatus)
          //       console.log(record)
          // }
        })
        this.tableHeadFindDatas = newval;
        if (newval) {
          this.CodeArray = [];
          if (newval.find(item => item.prop === 'id')) {
@@ -1011,7 +1029,7 @@
          templateOid: this.templateOid,
          codeClassifyOid: this.codeClassifyOid,
          ...val,
          page: this.page.currentPage = 1,/** 每次点击高级查询都应该从第一页开始*/
          page: this.page.currentPage = 1, /** 每次点击高级查询都应该从第一页开始*/
          limit: this.page.pageSize
        });
        this.tableData = res.data.data;
@@ -1090,12 +1108,45 @@
      this.batchImportData.type = type
      this.batchImportData.codeClassifyOid = this.codeClassifyOid
    },
    searchChange(val) {
      this.isTimeName = val;
      this.isTimeStatus = this.tableHeadFindData.some(item => {
        if (item.fieldType === "datetime" && item.prop === val) {
          return true;
        }
        return false;
      });
      // console.log(this.isTimeStatus)
    },
    dateChange(val) {
      if (val) {
        const momentDate = moment(this.dateValue);
        const dateString = momentDate.format("yyyy-MM-DD");
        this.isLoading = true;
        try {
          TableData({
            templateOid: this.templateOid,
            codeClassifyOid: this.codeClassifyOid,
            page: this.page.currentPage,
            limit: this.page.pageSize,
            ['conditionMap[' + this.keyWordFind + ']']: dateString
          }).then(res => {
            this.tableData = res.data.data;
            this.page.total = res.data.total;
          })
        } finally {
          this.isLoading = false;
        }
      }
    },
    //输入回车搜索
    tableFindInp() {
      this.isLoading = true;
      try {
        this.conditionMap = {};
        // 存储查询条件,主要是为了点击页码时带上这个条件
        this.conditionMap["conditionMap[" + this.keyWordFind + "]"] = '*' + this.WupinFindValue + '*';
        console.log(this.conditionMap)
        TableData({
          templateOid: this.templateOid,
          codeClassifyOid: this.codeClassifyOid,
Source/UBCS-WEB/src/components/StatisticsComponent/ColumnarChart.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <v-chart id="chart" :auto-resize="true" :options="chartOptions"></v-chart>
    <div style="display: inline-block;float: right;margin-bottom: 10px;margin-right: 60px">
      <el-button size="small" type="danger" plain @click="delHandler">删除</el-button>
    </div>
  </basic-container>
</template>
@@ -9,90 +12,66 @@
import 'echarts/lib/component/tooltip'
import 'echarts/lib/component/title'
import 'echarts/lib/component/legend'
import { deleteChartId } from "@/api/statistic/chart"
export default {
  name: "ColumnarChart",
  props:{
    columnarData:{
      type:Array,
      default:[]
  props: {
    columnarData: {
      type: Array,
      default: []
    },
    chartName:{
      type:String,
    chartName: {
      type: String,
      default: ""
    },
    btmname: {
      type: String
    }
  },
  watch:{
    columnarData:{
      immediate:true,
      handler(newval,oldval){
        if(newval && newval.length > 0){
          const minValues = newval[0].map(function (_, i) {
            return Math.min.apply(
              null,
              newval.map(function (item) {
                return item[i];
              })
            );
          });
          let colors = ['#84C9E5', '#F68686'];
          const seriesData = [];
          for (let i = 0; i < newval.length; i++) {
            let curSeriesData = [];
            for (let j = 0; j < newval[i].length; j++) {
              let borderRadius = [0, 0, 0, 0];
              if (newval[i][j] === minValues[j]) {
                borderRadius = [50, 50, 0, 0];
              }
              curSeriesData.push({
                value: newval[i][j],
                itemStyle: {
                  normal: {
                    // barBorderRadius: borderRadius,  // 设置圆角
                    color: colors[i],
                  }
                },
              });
            }
            let seriesName = (i === 0 ? "总量" : "新增")
            seriesData.push({
              name: seriesName,
              type: "bar",
              stack: "总量",
              barWidth: 60,
              data: curSeriesData,
  watch: {
    columnarData: {
      immediate: true,
      handler(newval, oldval) {
        if (newval && newval.length > 0) {
          let seriesData = newval.map((data, index) => {
            let name = index === 0 ? "总量" : "新增";
            return {
              name: name,
              type: 'bar',
              data: data,
              barWidth: '40%',
              label: {
                show: true,
                position: 'top',
                formatter: function (params) {
                  return params.value === 0 ? '' : params.value; // 值为 0 不显示,其他情况显示
                }
                // formatter: function (params) {
                //   if (params.value !== 0) {
                //     return params.value;
                //   } else {
                //     return '';
                //   }
                // }
              },
              emphasis: {
                focus: "series",
              },
            });
            this.chartOptions.series=seriesData
          }
            };
          });
          this.chartOptions.series = seriesData;
        }
      }
    },
    chartName:{
      handler(newval,oldval){
        if(newval){
    chartName: {
      handler(newval, oldval) {
        if (newval) {
          this.chartOptions.title.text = newval + "数据统计"
        }
      },
      immediate:true,
      deep:true
      immediate: true,
      deep: true
    }
  },
  data() {
    return {
      chartOptions: {
        color:['#84C9E5', '#F68686'],
        color: ['#84C9E5', '#F68686'],
        title: {
          text: "",
        },
@@ -141,6 +120,16 @@
  },
  created() {
  },
  methods: {
    delHandler() {
      deleteChartId({ btmname: this.btmname, chartId: '2' }).then(res => {
        this.$message.success(this.chartName+'柱状图,删除成功!')
        this.$emit('refresh');
      }).catch(error => {
        this.$message.error(error)
      })
    }
  }
};
</script>
Source/UBCS-WEB/src/components/StatisticsComponent/lineChart.vue
@@ -1,7 +1,10 @@
<template>
  <div id="main">
  <div id="main" style="height: 460px;margin-bottom: 15px">
    <basic-container>
      <v-chart id="chart" :auto-resize="true" :options="chartOptions"></v-chart>
      <div style="display: inline-block;float: right;margin-bottom: 10px;margin-right: 60px">
        <el-button size="small" type="danger" plain @click="delHandler">删除</el-button>
      </div>
    </basic-container>
  </div>
</template>
@@ -12,6 +15,7 @@
import 'echarts/lib/component/tooltip'
import 'echarts/lib/component/title'
import 'echarts/lib/component/legend'
import {deleteChartId} from "@/api/statistic/chart"
export default {
  name: "lineChart",
@@ -23,6 +27,9 @@
    chartName: {
      type: String,
      default: ""
    },
    btmname :{
      type: String
    }
  },
  watch: {
@@ -56,7 +63,7 @@
      },
      immediate: true,
      deep: true
    }
    },
  },
  data() {
    return {
@@ -86,7 +93,15 @@
      }
    };
  },
  created() {
  methods:{
    delHandler(){
      deleteChartId({btmname:this.btmname,chartId:'0'}).then(res=>{
        this.$message.success(this.chartName+'折线图,删除成功!')
        this.$emit('refresh');
      }).catch(error=>{
        this.$message.error(error)
      })
    }
  }
};
</script>
@@ -96,4 +111,5 @@
  width: 100%;
  height: 400px;
}
</style>
Source/UBCS-WEB/src/components/StatisticsComponent/mixCart.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <v-chart id="chart" :auto-resize="true" :options="chartOptions"></v-chart>
    <div style="display: inline-block;float: right;margin-bottom: 10px;margin-right: 60px">
      <el-button size="small" type="danger" plain @click="delHandler">删除</el-button>
    </div>
  </basic-container>
</template>
@@ -10,6 +13,7 @@
import 'echarts/lib/component/tooltip'
import 'echarts/lib/component/title'
import 'echarts/lib/component/legend'
import {deleteChartId} from "@/api/statistic/chart"
export default {
  name: "stackedAreaChart",
@@ -21,6 +25,9 @@
    chartName: {
      type: String,
      default: ""
    },
    btmname :{
      type: String
    }
  },
  data() {
@@ -109,6 +116,16 @@
      immediate: true,
      deep: true
    }
  },
  methods:{
    delHandler(){
      deleteChartId({btmname:this.btmname,chartId:'3'}).then(res=>{
        this.$message.success(this.chartName+'堆叠折线图,删除成功!')
        this.$emit('refresh');
      }).catch(error=>{
        this.$message.error(error)
      })
    }
  }
};
</script>
Source/UBCS-WEB/src/components/StatisticsComponent/pieChart.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container style="width: 100%">
    <v-chart :options="chartOptions" :auto-resize="true" id="chart"></v-chart>
    <div style="display: inline-block;float: right;margin-bottom: 10px;margin-right: 60px">
      <el-button size="small" type="danger" plain @click="delHandler">删除</el-button>
    </div>
  </basic-container>
</template>
@@ -9,6 +12,7 @@
import 'echarts/lib/chart/bar' // 导入柱状图组件
import 'echarts/lib/component/tooltip'
import 'echarts/lib/component/legend'
import {deleteChartId} from "@/api/statistic/chart"
export default {
  name: "polarBarChart",
  props:{
@@ -23,6 +27,9 @@
    monthData:{
      type:Array,
      default: () => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']
    },
    btmname :{
      type: String
    }
  },
  watch:{
@@ -95,6 +102,16 @@
  },
  created(){
    this.chartOptions.color = ['#5470c6', '#91cc75', '#fac858', '#ca8622', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4'];
  },
  methods:{
    delHandler(){
      deleteChartId({btmname:this.btmname,chartId:'1'}).then(res=>{
        this.$message.success(this.chartName+'饼状图,删除成功!')
        this.$emit('refresh');
      }).catch(error=>{
        this.$message.error(error)
      })
    }
  }
}
</script>
Source/UBCS-WEB/src/components/advanced-query/advancedQuery.vue
@@ -329,7 +329,7 @@
                        condtionParam['conditionMap['+searchConditions[index].queryField+searchConditions[index].condition+']'] = searchConditions[index].fieldValue;
                    }
                }
            }
            // 查询条件没有出现重复属性,并且过滤掉了空值,就传递给父组件
            //console.log(condtionParam);
Source/UBCS-WEB/src/components/refer/vciWebRefer.vue
@@ -1,8 +1,40 @@
<template>
  <div v-if="display">
    <vciWebReferTree :key="key" :data-key="key" ref="vciWebReferTree" v-if="refertype=='tree'" @setValue="setValue" :value="value" :text="text" :title="title" :disabled="disabled" :referConfig="referConfig"></vciWebReferTree>
    <vciWebReferTable :key="key" :data-key="key" v-else-if="refertype=='table'" @setValue="setValue" :value="value" :text="text" :title="title" :disabled="disabled" :referConfig="referConfig"></vciWebReferTable>
    <vciWebReferDefalut :key="key" :data-key="key" v-else  @setValue="setValue" :value="value" :text="text" :title="title" :disabled="disabled" :referConfig="referConfig"></vciWebReferDefalut>
    <vciWebReferTree
      v-if="refertype=='tree'"
      :key="key" ref="vciWebReferTree"
      :data-key="key"
      :disabled="disabled"
      :referConfig="referConfig"
      :text="text"
      :title="title"
      :value="value"
      @setValue="setValue">
    </vciWebReferTree>
    <vciWebReferTable
      v-else-if="refertype=='table'"
      :key="key" :data-key="key"
      :disabled="disabled"
      :referConfig="referConfig"
      :referType="referType"
      :text="text"
      :title="title"
      :value="value"
      @setValue="setValue">
    </vciWebReferTable>
    <vciWebReferDefalut
      v-else
      :key="key"
      :data-key="key"
      :disabled="disabled"
      :referConfig="referConfig"
      :referType="referType"
      :text="text" :title="title"
      :value="value"
      @setValue="setValue">
    </vciWebReferDefalut>
  </div>
</template>
@@ -11,22 +43,23 @@
import vciWebReferTree from "./vciWebReferTree.vue";
import vciWebReferTable from "./vciWebReferTable.vue";
import vciWebReferDefalut from "./vciWebReferDefalut.vue";
export default {
  name: "vciWebRefer",
  props: ["referConfig","value","text","disabled","display",'key'],
  props: ["referConfig", "value", "text", "disabled", "display", 'key', 'referType'],
  components: {vciWebReferTree, vciWebReferTable, vciWebReferDefalut},
  data() {
    return {
      reterTypeLeavl:'213',
      reterTypeLeavl: '213',
      refertype: this.referConfig.options.type,
      emitData:{},
      title:'',
      display:this.display || true,
      disabled:this.disabled || false
      emitData: {},
      title: '',
      display: this.display || true,
      disabled: this.disabled || false
    };
  },
  created() {
    if (!this.referConfig.options && this.referConfig.options.isMuti==undefined) {
    if (!this.referConfig.options && this.referConfig.options.isMuti == undefined) {
      this.referConfig.options = {
        isMuti: this.referConfig.options.muti || false
      }
@@ -36,21 +69,21 @@
    var title = this.referConfig.title || '';
    title = title.replace(":", "");
    title = title ? ('为【' + title + '】选取值') : ('为【' + this.referConfig.showField + '】选取值');
    this.title=title;
    this.title = title;
  },
  methods: {
    setValue(value) {
      this.emitData = value;
    }
  },
  watch:{
  watch: {
    // 修改反馈到父组件
    emitData: {
      deep: true,
      immediate: true,
      handler(newV) {
        this.text=newV.text;
        this.value=newV.value;
        this.text = newV.text;
        this.value = newV.value;
        this.$emit("setReferValue", newV);
      }
    },
Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue
@@ -1,18 +1,19 @@
<template>
  <div>
    <el-dialog :title="title"
               v-dialogDrag append-to-body="true"
    <el-dialog v-dialogDrag
               :height="options.height|| 'auto'" :title="title"
               :visible.sync="visible"
               top="0"
               class="avue-dialog avue-dialog--top"
               :width="options.width|| '80%'"
               :height="options.height|| 'auto'">
      <avue-crud :option="option"
                 :table-loading="loading"
                 :data="data"
                 :page.sync="page"
               append-to-body="true"
               class="avue-dialog avue-dialog--top"
               top="0"
               @close="dialogClose">
      <avue-crud ref="referDefalutCrud"
                 v-model="value"
                 ref="referDefalutCrud"
                 :data="data"
                 :option="option"
                 :page.sync="page"
                 :table-loading="loading"
                 @search-change="searchChange"
                 @search-reset="searchReset"
                 @selection-change="selectionChange"
@@ -24,25 +25,27 @@
      </avue-crud>
      <div class="avue-dialog__footer">
        <div class="avue-dialog__footer--left valueInfo">{{ valueInfo }}</div>
        <el-button @click="visible=false">取 消</el-button>
        <el-button @click="setValue" type="primary">确 定</el-button>
        <el-button @click="escHandler">取 消</el-button>
        <el-button type="primary" @click="setValue">确 定</el-button>
      </div>
    </el-dialog>
    <avue-input v-model="text" :disabled="disabled" :readonly="true" :placeholder="title" @click="!disabled && (visible=true)" ></avue-input>
    <avue-input v-model="text" :disabled="disabled" :placeholder="title" :readonly="true"
                @click="!disabled && (visible=true)"></avue-input>
  </div>
</template>
<script>
import { validatenull } from "@/util/validate";
import {getList,getLazyList,getTableDefinedUrl} from "@/api/refer/table";
import {validatenull} from "@/util/validate";
import {getList, getLazyList, getTableDefinedUrl} from "@/api/refer/table";
export default {
  name: "vciWebReferDefalut",
  props:["referConfig","value","text","title","disabled"],
  props: ["referConfig", "value", "text", "title", "disabled", "referType"],
  data() {
    return {
      visible: false,
      options: this.referConfig.options||{},
      options: this.referConfig.options || {},
      isMuti: ("true" == this.referConfig.options.isMuti || this.referConfig.options.isMuti == true || this.referConfig.options.muti == true) ? true : false,
      props: {
        value: this.referConfig.valueField || this.referConfig.options.valueField || 'oid',
@@ -50,31 +53,32 @@
      },
      url: this.referConfig.options.url || '/api/ubcs-code/mdmEngineController/defaultReferDataGrid',
      method: this.referConfig.options.method || 'GET',
      tableDefinedUrl:'',//平台表格地址
      copyParam: ['referBo', 'textField', 'valueField', 'displayTable', 'whereSql',  'queryScheme'],
      tableDefinedUrl: '',//平台表格地址
      copyParam: ['referBo', 'textField', 'valueField', 'displayTable', 'whereSql', 'queryScheme'],
      query: {},
      loading: false,
      page: {
        layout: this.referType === "master" ? "total,pager,prev, next,jumper" : "total,pager,prev, next,jumper,sizes",
        pageSize: 10,
        currentPage: 1,
        total: this.referConfig.options.data?this.referConfig.options.data.length :0
        total: this.referConfig.options.data ? this.referConfig.options.data.length : 0
      },
      data:this.referConfig.options.data || [],
      data: this.referConfig.options.data || [],
      selectionList: [],
      option: {
        addBtn: false,
        columnBtn:false,
        columnBtn: false,
        //height: this.referConfig.options.height ? this.referConfig.options.height : 475,
        calcHeight: 30,
        tip: false,
        menu:false,
        menu: false,
        searchShow: true,
        searchMenuSpan: 6,
        searchLabelWidth: 90,
        border: true,
        index: true,
        selection: true,
        reserveSelection:true,
        reserveSelection: true,
        dialogClickModal: false,
        highlightCurrentRow: true,
        column: []
@@ -85,22 +89,30 @@
    this.getParams();
  },
  mounted() {
    if(this.referConfig.options.tableConfig.page){
      this.page.pageSize=this.referConfig.options.tableConfig.page.limit || this.referConfig.options.tableConfig.page.pageSize;
      this.page.currentPage=this.referConfig.options.tableConfig.page.page || this.referConfig.options.tableConfig.page.currentPage;
    }else if(!validatenull(this.referConfig.options.limit)){
      this.page.pageSize=this.referConfig.options.limit
    }else if(!validatenull(this.referConfig.options.tableConfig.limit)){
      this.page.pageSize=this.referConfig.options.tableConfig.limit
    if (this.referConfig.options.tableConfig && this.referConfig.options.tableConfig.page) {
      this.page.pageSize = this.referConfig.options.tableConfig.page.limit || this.referConfig.options.tableConfig.page.pageSize;
      this.page.currentPage = this.referConfig.options.tableConfig.page.page || this.referConfig.options.tableConfig.page.currentPage;
    } else if (!validatenull(this.referConfig.options.limit)) {
      this.page.pageSize = this.referConfig.options.limit;
    } else if (this.referConfig.options.tableConfig && !validatenull(this.referConfig.options.tableConfig.limit)) {
      this.page.pageSize = this.referConfig.options.tableConfig.limit;
    }
  },
  computed:{
    valueInfo:function (){
      return this.text ? ("已设置的值为[" + this.text + "]"): '未设置值'
  computed: {
    valueInfo: function () {
      return this.text ? ("已设置的值为[" + this.text + "]") : '未设置值'
    }
  },
  methods: {
    getParams:function () {
    escHandler() {
      this.visible = false;
      this.$refs.referDefalutCrud.refreshTable()
    },
    dialogClose() {
      this.visible = false;
      this.$refs.referDefalutCrud.refreshTable()
    },
    getParams: function () {
      var queryParams = {};
      if (this.options.extraParams) {
        queryParams = this.options.extraParams;
@@ -127,10 +139,10 @@
        queryParams['order'] = this.options.initSort.type;//方法
        queryParams['sort'] = this.options.initSort.field;//字段
      }
      if(this.options.sortField){
      if (this.options.sortField) {
        queryParams['sort'] = this.options.sortField;//字段
      }
      if(this.options.sortType){
      if (this.options.sortType) {
        queryParams['order'] = this.options.sortType;//方法
      }
      if (this.options.conditionParams) {
@@ -168,7 +180,7 @@
          sortable: true,
          width: 150,
          search: true,
          formatter:function (d){
          formatter: function (d) {
            return d.id || d.data.id
          }
        }, {
@@ -177,14 +189,14 @@
          sortable: true,
          width: 150,
          search: true,
          formatter:function (d){
          formatter: function (d) {
            return d.name || d.data.name
          }
        }, {
          prop: 'description',
          label: '描述',
          width: 250,
          formatter:function (d){
          formatter: function (d) {
            return d.description || d.data.description
          }
        }, {
@@ -193,23 +205,23 @@
          width: 60,
          hidden: (!this.controllerSecret),
          hide: (!this.controllerSecret),
          formatter:function (d){
          formatter: function (d) {
            return d.secretGradeText || d.data.secretGradeText
          }
        }];
      } else {
        this.option.column = this.options.tableConfig.cols.map(item => {
          if (item.field != 'LAY_TABLE_INDEX' && item.field != 'LAY_CHECKED') {
            let formatter=item.template || item.templet;
            if(typeof formatter == "string" && formatter !=''){
              formatter=eval("(" + formatter + ")")
            }else{
              formatter=function (d){
                if(d[item.field]!=undefined){
            let formatter = item.template || item.templet;
            if (typeof formatter == "string" && formatter != '') {
              formatter = eval("(" + formatter + ")")
            } else {
              formatter = function (d) {
                if (d[item.field] != undefined) {
                  return d[item.field]
                }else if(d.data[item.field] !=undefined){
                } else if (d.data[item.field] != undefined) {
                  return d.data[item.field]
                }else {
                } else {
                  return ''
                }
              }
@@ -218,11 +230,11 @@
              ...item,
              label: item.title,
              prop: item.field,
              formatter:formatter,
              sortable:item.sort,
              hide:item.hidden,
              search:this.options.tableConfig.queryColumns.some(qItem=>{
                return qItem.field==item.field
              formatter: formatter,
              sortable: item.sort,
              hide: item.hidden,
              search: this.options.tableConfig.queryColumns.some(qItem => {
                return qItem.field == item.field
              })
            }
          }
@@ -239,67 +251,74 @@
      }
      this.params = paramsData;
    },
    setValue(){
      if(this.selectionList.length==0){
        this.$message.warning( '没有选择数据');
    setValue() {
      if (this.selectionList.length == 0) {
        this.$message.warning('没有选择数据');
        return false;
      }else if(this.selectionList.length>1 && !this.isMuti){
        this.$message.warning( '每次只能选择一条数据');
      } else if (this.selectionList.length > 1 && !this.isMuti) {
        this.$message.warning('每次只能选择一条数据');
        return false;
      }
      var value = [];
      var text = [];
      var isMutiValue = (this.props.value.indexOf(",")>-1);
      var isMutiRaw = (this.props.label.indexOf(",")>-1);
      var _that=this
      this.selectionList.forEach((item,_index) =>{
        if(isMutiValue){
      var isMutiValue = (this.props.value.indexOf(",") > -1);
      var isMutiRaw = (this.props.label.indexOf(",") > -1);
      var _that = this
      this.selectionList.forEach((item, _index) => {
        if (isMutiValue) {
          var valueFieldArray = _that.props.value.split(",");
          valueFieldArray.forEach((_itemField,_indexField)=>{
            let itemValue=item[_itemField];
            if(itemValue==undefined || itemValue == null){
              itemValue=item['data'][_itemField]
          valueFieldArray.forEach((_itemField, _indexField) => {
            let itemValue = item[_itemField];
            if (itemValue == undefined || itemValue == null) {
              itemValue = item['data'][_itemField]
            }
            value.push( itemValue + (_that.referConfig.valueSep?_that.referConfig.valueSep:' '));
            value.push(itemValue + (_that.referConfig.valueSep ? _that.referConfig.valueSep : ' '));
          })
        }else {
          let itemValue=item[_that.props.value];
          if(itemValue==undefined || itemValue == null){
            itemValue=item['data'][_that.props.value]
        } else {
          let itemValue = item[_that.props.value];
          if (itemValue == undefined || itemValue == null) {
            itemValue = item['data'][_that.props.value]
          }
          value.push(itemValue);
        }
        if(isMutiRaw) {
        if (isMutiRaw) {
          var rawFieldArray = _that.props.label.split(",");
          rawFieldArray.forEach((_itemField,_indexField)=>{
            let itemText=item[_itemField];
            if(itemText==undefined || itemText == null){
              itemText=item['data'][_itemField]
          rawFieldArray.forEach((_itemField, _indexField) => {
            let itemText = item[_itemField];
            if (itemText == undefined || itemText == null) {
              itemText = item['data'][_itemField]
            }
            text.push(itemText + (_that.referConfig.textSep?_that.referConfig.textSep:' ')) ;
            text.push(itemText + (_that.referConfig.textSep ? _that.referConfig.textSep : ' '));
          })
        }else{
          let itemText=item[_that.props.label];
          if(itemText==undefined || itemText == null){
            itemText=item['data'][_that.props.label]
        } else {
          let itemText = item[_that.props.label];
          if (itemText == undefined || itemText == null) {
            itemText = item['data'][_that.props.label]
          }
          text.push(itemText);
        }
      })
      let mapFields =this.referConfig.fieldMap || {};
      let mapFields = this.referConfig.fieldMap || {};
      try {
        if(!validatenull(this.options.mapFields)){
          mapFields =Object.assign(this.referConfig.fieldMap,JSON.parse(this.options.mapFields)) ;
        if (!validatenull(this.options.mapFields)) {
          mapFields = Object.assign(this.referConfig.fieldMap, JSON.parse(this.options.mapFields));
        }
      }catch (e) {
      } catch (e) {
      }
      this.value=value.join(',');
      this.text=text.join(',')
      this.$emit("setValue", {field:this.referConfig.field,showField:this.referConfig.showField,value:this.value,text:this.text,rawData:this.selectionList,fieldMap:mapFields});
      this.visible=false;
      this.value = value.join(',');
      this.text = text.join(',')
      this.$emit("setValue", {
        field: this.referConfig.field,
        showField: this.referConfig.showField,
        value: this.value,
        text: this.text,
        rawData: this.selectionList,
        fieldMap: mapFields
      });
      this.visible = false;
    },
    searchReset() {
      this.query = {};
@@ -311,16 +330,16 @@
      this.onLoad(this.page);
      done();
    },
    currentChange(currentPage){
    currentChange(currentPage) {
      this.page.currentPage = currentPage;
    },
    sizeChange(pageSize){
    sizeChange(pageSize) {
      this.page.pageSize = pageSize;
    },
    rowClick (row) {
    rowClick(row) {
      this.$refs.referDefalutCrud.toggleSelection();
      this.$refs.referDefalutCrud.toggleRowSelection(row); //选中当前行
      this.selectionList=[row]
      this.selectionList = [row]
    },
    selectionChange(list) {
      if (!this.isMuti && list.length > 1) {
@@ -336,33 +355,33 @@
    refreshChange() {
      this.onLoad(this.page, this.query);
    },
    onLoad(page, params={}) {
      if(this.url){
    onLoad(page, params = {}) {
      if (this.url) {
        this.loading = true;
        var query={}
        var query = {}
        if (this.query) {
          for (var key in this.query) {
            query['conditionMap["' + key + '"]'] = this.query[key];
          }
        }
        getList(Object.assign(params,this.params,this.query, query),page.currentPage, page.pageSize, this.url, this.method).then(res => {
          let data=[]
          if(res.data.records){
        getList(Object.assign(params, this.params, this.query, query), page.currentPage, page.pageSize, this.url, this.method).then(res => {
          let data = []
          if (res.data.records) {
            data = res.data.records
            this.page.total=res.data.total ;
          }else{
            this.page.total = res.data.total;
          } else {
            data = res.data.data.records;
            this.page.total=res.data.data.total;
            this.page.total = res.data.data.total;
          }
          this.data=data.map(item => {
            item.data=item.data || {}
          this.data = data.map(item => {
            item.data = item.data || {}
            return {
              ...item
            }
          })
          this.loading = false;
          this.selectionClear();
        }).catch(error=>{
        }).catch(error => {
          this.$message.error(error);
          this.loading = false;
        });
@@ -374,7 +393,7 @@
</script>
<style scoped>
.valueInfo{
.valueInfo {
  float: left;
  border: 1px solid #E9E7E7;
  display: inline-block;
Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue
@@ -1,18 +1,19 @@
<template>
  <div>
    <el-dialog :title="title"
               v-dialogDrag append-to-body="true"
    <el-dialog v-dialogDrag
               :height="options.height|| 'auto'" :title="title"
               :visible.sync="visible"
               top="0"
               class="avue-dialog avue-dialog--top"
               :width="options.width|| '80%'"
               :height="options.height|| 'auto'">
      <avue-crud :option="option"
                 :table-loading="loading"
                 :data="data"
                 :page.sync="page"
               append-to-body="true"
               class="avue-dialog avue-dialog--top"
               top="0"
               @close="dialogClose">
      <avue-crud ref="referCrud"
                 v-model="value"
                 ref="referCrud"
                 :data="data"
                 :option="option"
                 :page.sync="page"
                 :table-loading="loading"
                 @search-change="searchChange"
                 @search-reset="searchReset"
                 @selection-change="selectionChange"
@@ -26,22 +27,24 @@
        </template>
      </avue-crud>
      <div class="avue-dialog__footer">
        <div class="avue-dialog__footer--left valueInfo">{{ valueInfo }} </div>
        <el-button @click="visible=false">取 消</el-button>
        <el-button @click="setValue" type="primary">确 定</el-button>
        <div class="avue-dialog__footer--left valueInfo">{{ valueInfo }}</div>
        <el-button @click="escHandler">取 消</el-button>
        <el-button type="primary" @click="setValue">确 定</el-button>
      </div>
    </el-dialog>
    <avue-input v-model="text" :disabled="disabled" :readonly="true" :placeholder="title" @click="!disabled && (visible=true)"></avue-input>
    <avue-input v-model="text" :disabled="disabled" :placeholder="title" :readonly="true"
                @click="!disabled && (visible=true)"></avue-input>
  </div>
</template>
<script>
import { validatenull } from "@/util/validate";
import {getList,getLazyList,getTableDefinedUrl} from "@/api/refer/table";
import {validatenull} from "@/util/validate";
import {getList, getLazyList, getTableDefinedUrl} from "@/api/refer/table";
export default {
  name: "vciWebReferTable",
  props:["referConfig","value","text","title","disabled"],
  props: ["referConfig", "value", "text", "title", "disabled", "referType"],
  data() {
    return {
      visible: false,
@@ -52,35 +55,36 @@
        label: this.referConfig.textField || this.referConfig.options.textField || "name"
      },
      url: this.referConfig.options.url || '/api/ubcs-code/mdmEngineController/defaultReferDataGrid',
      tableDefinedUrl:'',//平台表格地址
      copyParam: ['referBo', 'textField', 'valueField', 'displayTable', 'whereSql',  'queryScheme'],
      tableDefinedUrl: '',//平台表格地址
      copyParam: ['referBo', 'textField', 'valueField', 'displayTable', 'whereSql', 'queryScheme'],
      query: {},
      loading: false,
      page: {
        layout: this.referType === "master" ? "total,pager,prev, next,jumper" : "total,pager,prev, next,jumper,sizes",
        pageSize: 10,
        currentPage: 1,
        total: this.referConfig.options.data?this.referConfig.options.data.length :0
        total: this.referConfig.options.data ? this.referConfig.options.data.length : 0
      },
      data:this.referConfig.options.data || [],
      data: this.referConfig.options.data || [],
      selectionList: [],
      option: {
        addBtn: false,
        columnBtn:false,
        columnBtn: false,
        height: this.referConfig.options.height ? this.referConfig.options.height : 475,
        calcHeight: 30,
        tip: false,
        menu:false,
        menu: false,
        searchShow: true,
        searchMenuSpan: 6,
        searchLabelWidth: 90,
        border: true,
        index: true,
        selection: true,
        reserveSelection:true,
        reserveSelection: true,
        dialogClickModal: false,
        highlightCurrentRow: true,
        rowKey:'oid',
        rowParentKey:'parentSaleProduct',
        rowKey: 'oid',
        rowParentKey: 'parentSaleProduct',
        column: []
      }
    };
@@ -89,56 +93,64 @@
    this.getParams();
  },
  mounted() {
    if(this.referConfig.options.page){
      this.page.pageSize=this.referConfig.options.tableConfig.page.limit || this.referConfig.options.tableConfig.page.pageSize;
      this.page.currentPage=this.referConfig.options.tableConfig.page.page || this.referConfig.options.tableConfig.page.currentPage;
    }else if(!validatenull(this.referConfig.options.limit)){
      this.page.pageSize=this.referConfig.options.limit
    }else if(!validatenull(this.referConfig.options.tableConfig.limit)){
      this.page.pageSize=this.referConfig.options.tableConfig.limit
    if (this.referConfig.options.tableConfig && this.referConfig.options.tableConfig.page) {
      this.page.pageSize = this.referConfig.options.tableConfig.page.limit || this.referConfig.options.tableConfig.page.pageSize;
      this.page.currentPage = this.referConfig.options.tableConfig.page.page || this.referConfig.options.tableConfig.page.currentPage;
    } else if (!validatenull(this.referConfig.options.limit)) {
      this.page.pageSize = this.referConfig.options.limit;
    } else if (this.referConfig.options.tableConfig && !validatenull(this.referConfig.options.tableConfig.limit)) {
      this.page.pageSize = this.referConfig.options.tableConfig.limit;
    }
    this.$nextTick(() => {
      this.$refs.referCrud.doLayout()
    })
  },
  computed:{
    valueInfo:function (){
      return this.text ? ("已设置的值为[" + this.text + "]"): '未设置值'
  computed: {
    valueInfo: function () {
      return this.text ? ("已设置的值为[" + this.text + "]") : '未设置值'
    }
  },
  methods: {
    getParams:function (){
    escHandler() {
      this.visible = false;
      this.$refs.referDefalutCrud.refreshTable()
    },
    dialogClose() {
      this.visible = false;
      this.$refs.referDefalutCrud.refreshTable()
    },
    getParams: function () {
      var queryParams = {};
      if(this.options.extraParams){
      if (this.options.extraParams) {
        queryParams = this.options.extraParams;
      }
      if(this.options.useFormKey && this.options.formValues){
      if (this.options.useFormKey && this.options.formValues) {
        //使用表单上的字段来过滤
        queryParams['conditionMap["' + (this.options.paramForFormKey?this.options.paramForFormKey:this.options.useFormKey)  + '"]'] = this.options.formValues[this.options.useFormKey];
        queryParams['conditionMap["' + (this.options.paramForFormKey ? this.options.paramForFormKey : this.options.useFormKey) + '"]'] = this.options.formValues[this.options.useFormKey];
      }
      if(this.options.where ) {
      if (this.options.where) {
        for (var key in this.options.where) {
          queryParams['conditionMap["' + key + '"]'] = this.options.where[key];//新
        }
      }
      for(var i= 0 ; i < this.copyParam.length ; i ++){
      for (var i = 0; i < this.copyParam.length; i++) {
        queryParams[this.copyParam[i]] = this.options[this.copyParam[i]];
      }
      queryParams["isMuti"]=this.isMuti;
      queryParams.muti =this.isMuti;
      if(!queryParams['referBo']){
      queryParams["isMuti"] = this.isMuti;
      queryParams.muti = this.isMuti;
      if (!queryParams['referBo']) {
        queryParams['referBo'] = this.options['referBo'] || this.options['referType'];
      }
      queryParams['referType']= queryParams['referBo']
      queryParams['referType'] = queryParams['referBo']
      if (this.options.initSort) {
        queryParams['order'] = this.options.initSort.type;//方法
        queryParams['sort'] = this.options.initSort.field;//字段
      }
      if(this.options.sortField){
      if (this.options.sortField) {
        queryParams['sort'] = this.options.sortField;//字段
      }
      if(this.options.sortType){
      if (this.options.sortType) {
        queryParams['order'] = this.options.sortType;//方法
      }
      if (this.options.conditionParams) {
@@ -163,36 +175,40 @@
      }
      var paramsData = {};
      //为了处理单引号和双引号的
      if(queryParams){
        for (var key in queryParams){
      if (queryParams) {
        for (var key in queryParams) {
          paramsData[key.replace(/"/g, "'")] = queryParams[key];
        }
      }
      if(this.options.displayTable){
      if (this.options.displayTable) {
        //说明是使用平台的表格
        getTableDefinedUrl({btmType:(this.options.referBo||this.options.referType),code:this.options.displayTable,isMuti:this.isMuti},this.tableDefinedUrl).then(result => {
          console.log('result',result)
          if(result.success){
        getTableDefinedUrl({
          btmType: (this.options.referBo || this.options.referType),
          code: this.options.displayTable,
          isMuti: this.isMuti
        }, this.tableDefinedUrl).then(result => {
          console.log('result', result)
          if (result.success) {
            var queryScheme = result.querySchema;
            if(!validatenull(queryScheme) && validatenull(this.options.queryScheme)){
            if (!validatenull(queryScheme) && validatenull(this.options.queryScheme)) {
              this.options.queryScheme = queryScheme;
            }
            paramsData['queryScheme'] = this.options.queryScheme;
            if(result.showIndex){
            if (result.showIndex) {
              this.option.index = true;
            }
            if(result.showCheckbox){
            if (result.showCheckbox) {
              this.option.selection = true
            }
            var referColumn = "";
            if(result.columns){
              this.option.column= result.columns.map(item => {
                if(item.field.indexOf(".")>-1){
            if (result.columns) {
              this.option.column = result.columns.map(item => {
                if (item.field.indexOf(".") > -1) {
                  referColumn += item.field + ",";
                  item.field = item.field.replace(".","_");
                  item.field = item.field.replace(".", "_");
                }
                if(!validatenull(item.enumCode)) {
                if (!validatenull(item.enumCode)) {
                  //是枚举的内容
                  item.type = 'select';
                  item.dicUrl = "/api/ubcs-omd/enum/dictionary?code=" + item.enumCode;
@@ -209,12 +225,12 @@
                    trigger: "blur"
                  }];
                }
                item.formatter=function(d){
                  if(d[item.field]!=undefined){
                item.formatter = function (d) {
                  if (d[item.field] != undefined) {
                    return d[item.field]
                  }else if(d.data[item.field] !=undefined){
                  } else if (d.data[item.field] != undefined) {
                    return d.data[item.field]
                  }else {
                  } else {
                    return ''
                  }
                };
@@ -227,48 +243,48 @@
              })
            }
            paramsData['referColumn'] = referColumn;
            if(result.limit>0){
            if (result.limit > 0) {
              this.page.pageSize = result.limit;
              this.page.currentPage=1
              this.page.currentPage = 1
            }
            if(this.options.isTreeGrid){
            if (this.options.isTreeGrid) {
              //表格树加上配置
            }
            this.params=paramsData;
          }else{
            this.params = paramsData;
          } else {
            this.$message.error(result.msg);
          }
        });
      }else{
      } else {
        //说明是自定义的表格
        var tableConfig = this.options.tableConfig;
        if(!tableConfig){
          this.$message.error( '没有定义参照的表格配置');
        if (!tableConfig) {
          this.$message.error('没有定义参照的表格配置');
        }
        if(!paramsData){
        if (!paramsData) {
          paramsData = {
            currentUserReferModelKey:this.options.currentUserReferModelKey,
            currentUserReferMethodKey:this.options.currentUserReferMethodKey
            currentUserReferModelKey: this.options.currentUserReferModelKey,
            currentUserReferMethodKey: this.options.currentUserReferMethodKey
          };
        }else{
        } else {
          paramsData['currentUserReferModelKey'] = this.options.currentUserReferModelKey;
          paramsData['currentUserReferMethodKey'] = this.options.currentUserReferMethodKey;
        }
        if(this.options.tableConfig && this.options.tableConfig.cols && this.options.tableConfig.cols.length>0) {
        if (this.options.tableConfig && this.options.tableConfig.cols && this.options.tableConfig.cols.length > 0) {
          //说明传递了的
          this.option.column= this.options.tableConfig.cols.map(item => {
          this.option.column = this.options.tableConfig.cols.map(item => {
            if (item.field != 'LAY_TABLE_INDEX' && item.field != 'LAY_CHECKED') {
              let formatter=item.template || item.templet;
              if(typeof formatter == "string" && formatter !=''){
                formatter=eval("(" + formatter + ")")
              }else{
                formatter=function (d){
                  if(d[item.field]!=undefined){
              let formatter = item.template || item.templet;
              if (typeof formatter == "string" && formatter != '') {
                formatter = eval("(" + formatter + ")")
              } else {
                formatter = function (d) {
                  if (d[item.field] != undefined) {
                    return d[item.field]
                  }else if(d.data[item.field] !=undefined){
                  } else if (d.data[item.field] != undefined) {
                    return d.data[item.field]
                  }else {
                  } else {
                    return ''
                  }
                }
@@ -277,82 +293,89 @@
                ...item,
                label: item.title,
                prop: item.field,
                formatter:formatter,
                sortable:item.sort,
                hide:item.hidden,
                search: this.options.tableConfig.queryColumns.some(qItem=>{
                  return qItem.field==item.field
                formatter: formatter,
                sortable: item.sort,
                hide: item.hidden,
                search: this.options.tableConfig.queryColumns.some(qItem => {
                  return qItem.field == item.field
                })
              }
            }
          })
        }
        if(this.options.isTreeGrid){
        if (this.options.isTreeGrid) {
          //表格树加上配置
        }
      }
      this.params=paramsData;
      this.params = paramsData;
    },
    setValue(){
      if(this.selectionList.length==0){
        this.$message.warning( '没有选择数据');
    setValue() {
      if (this.selectionList.length == 0) {
        this.$message.warning('没有选择数据');
        return false;
      }else if(this.selectionList.length>1 && !this.isMuti){
        this.$message.warning( '每次只能选择一条数据');
      } else if (this.selectionList.length > 1 && !this.isMuti) {
        this.$message.warning('每次只能选择一条数据');
        return false;
      }
      var value = [];
      var text = [];
      var isMutiValue = (this.props.value.indexOf(",")>-1);
      var isMutiRaw = (this.props.label.indexOf(",")>-1);
      var _that=this
      this.selectionList.forEach((item,_index) =>{
        if(isMutiValue){
      var isMutiValue = (this.props.value.indexOf(",") > -1);
      var isMutiRaw = (this.props.label.indexOf(",") > -1);
      var _that = this
      this.selectionList.forEach((item, _index) => {
        if (isMutiValue) {
          var valueFieldArray = _that.props.value.split(",");
          valueFieldArray.forEach((_itemField,_indexField)=>{
            let itemValue=item[_itemField];
            if(itemValue==undefined || itemValue == null){
              itemValue=item['data'][_itemField]
          valueFieldArray.forEach((_itemField, _indexField) => {
            let itemValue = item[_itemField];
            if (itemValue == undefined || itemValue == null) {
              itemValue = item['data'][_itemField]
            }
            value.push( itemValue + (_that.referConfig.valueSep?_that.referConfig.valueSep:' '));
            value.push(itemValue + (_that.referConfig.valueSep ? _that.referConfig.valueSep : ' '));
          })
        }else {
          let itemValue=item[_that.props.value];
          if(itemValue==undefined || itemValue == null){
            itemValue=item['data'][_that.props.value]
        } else {
          let itemValue = item[_that.props.value];
          if (itemValue == undefined || itemValue == null) {
            itemValue = item['data'][_that.props.value]
          }
          value.push(itemValue);
        }
        if(isMutiRaw) {
        if (isMutiRaw) {
          var rawFieldArray = _that.props.label.split(",");
          rawFieldArray.forEach((_itemField,_indexField)=>{
            let itemText=item[_itemField];
            if(itemText==undefined || itemText == null){
              itemText=item['data'][_itemField]
          rawFieldArray.forEach((_itemField, _indexField) => {
            let itemText = item[_itemField];
            if (itemText == undefined || itemText == null) {
              itemText = item['data'][_itemField]
            }
            text.push(itemText + (_that.referConfig.textSep?_that.referConfig.textSep:' ')) ;
            text.push(itemText + (_that.referConfig.textSep ? _that.referConfig.textSep : ' '));
          })
        }else{
          let itemText=item[_that.props.label];
          if(itemText==undefined || itemText == null){
            itemText=item['data'][_that.props.label]
        } else {
          let itemText = item[_that.props.label];
          if (itemText == undefined || itemText == null) {
            itemText = item['data'][_that.props.label]
          }
          text.push(itemText);
        }
      })
      let mapFields =this.referConfig.fieldMap || {};
      let mapFields = this.referConfig.fieldMap || {};
      try {
        if(!validatenull(this.options.mapFields)){
          mapFields =Object.assign(this.referConfig.fieldMap,JSON.parse(this.options.mapFields)) ;
        if (!validatenull(this.options.mapFields)) {
          mapFields = Object.assign(this.referConfig.fieldMap, JSON.parse(this.options.mapFields));
        }
      }catch (e) {
      } catch (e) {
      }
      this.value=value.join(',');
      this.text=text.join(',')
      this.$emit("setValue", {field:this.referConfig.field,showField:this.referConfig.showField,value:this.value,text:this.text,rawData:this.selectionList,fieldMap:mapFields});
      this.visible=false;
      this.value = value.join(',');
      this.text = text.join(',')
      this.$emit("setValue", {
        field: this.referConfig.field,
        showField: this.referConfig.showField,
        value: this.value,
        text: this.text,
        rawData: this.selectionList,
        fieldMap: mapFields
      });
      this.visible = false;
    },
    searchReset() {
      this.query = {};
@@ -364,16 +387,16 @@
      this.onLoad(this.page);
      done();
    },
    currentChange(currentPage){
    currentChange(currentPage) {
      this.page.currentPage = currentPage;
    },
    sizeChange(pageSize){
    sizeChange(pageSize) {
      this.page.pageSize = pageSize;
    },
    rowClick (row) {
    rowClick(row) {
      this.$refs.referCrud.toggleSelection();
      this.$refs.referCrud.toggleRowSelection(row); //选中当前行
      this.selectionList=[row]
      this.selectionList = [row]
    },
    selectionChange(list) {
      if (!this.isMuti && list.length > 1) {
@@ -389,33 +412,33 @@
    refreshChange() {
      this.onLoad(this.page, this.query);
    },
    onLoad(page, params={}) {
      if(this.url){
    onLoad(page, params = {}) {
      if (this.url) {
        this.loading = true;
        var query={}
        var query = {}
        if (this.query) {
          for (var key in this.query) {
            query['conditionMap["' + key + '"]'] = this.query[key];
          }
        }
        getList(Object.assign(params,this.params,this.query, query),page.currentPage, page.pageSize, this.url).then(res => {
          let data=[]
          if(res.data.records){
        getList(Object.assign(params, this.params, this.query, query), page.currentPage, page.pageSize, this.url).then(res => {
          let data = []
          if (res.data.records) {
            data = res.data.records
            this.page.total=res.data.total ;
          }else{
            this.page.total = res.data.total;
          } else {
            data = res.data.data.records;
            this.page.total=res.data.data.total;
            this.page.total = res.data.data.total;
          }
          this.data=data.map(item => {
            item.data=item.data || {}
          this.data = data.map(item => {
            item.data = item.data || {}
            return {
              ...item
            }
          })
          this.loading = false;
          this.selectionClear();
        }).catch(error=>{
        }).catch(error => {
          this.$message.error(error);
          this.loading = false;
        });
@@ -427,7 +450,7 @@
</script>
<style scoped>
.valueInfo{
.valueInfo {
  float: left;
  border: 1px solid #E9E7E7;
  display: inline-block;
Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue
@@ -1,34 +1,44 @@
<template>
  <avue-input-tree ref="referTree" :props="props" :disabled="disabled" :lazy="lazy" :tree-load="treeLoad" :node-click="nodeClick" :checked="checked"
                   :leaf-only="referConfig.onlyLeaf" :multiple="isMuti" v-model="value" :placeholder="title" :dic="treeData"></avue-input-tree>
  <avue-input-tree ref="referTree"
                   v-model="value"
                   :checked="checked"
                   :dic="treeData"
                   :disabled="disabled"
                   :lazy="lazy"
                   :leaf-only="referConfig.onlyLeaf"
                   :multiple="isMuti"
                   :node-click="nodeClick"
                   :placeholder="title"
                   :props="props"
                   :tree-load="treeLoad"></avue-input-tree>
</template>
<script>
import {getTree,getLazyTree} from "@/api/refer/tree";
import {getTree, getLazyTree} from "@/api/refer/tree";
import {validatenull} from "@/util/validate";
export default {
  name: "vciWebReferTree",
  props:["referConfig","value","text","title","disabled"],
  props: ["referConfig", "value", "text", "title", "disabled"],
  data() {
    return {
      visible: false,
      options: this.referConfig.options,
      lazy: this.referConfig.options.loadType == 'node',
      isMuti:("true" == this.referConfig.options.isMuti || this.referConfig.options.isMuti == true || this.referConfig.options.muti == true) ? true : false,
      isMuti: ("true" == this.referConfig.options.isMuti || this.referConfig.options.isMuti == true || this.referConfig.options.muti == true) ? true : false,
      props: {
        value: 'oid',
        label: "name"
      },
      config:{
      config: {
        valueField: this.referConfig.valueField || this.referConfig.options.valueField || 'oid',
        textField:this.referConfig.textField || this.referConfig.options.textField || "name",
        textSep:this.referConfig.textSep || ' '
        textField: this.referConfig.textField || this.referConfig.options.textField || "name",
        textSep: this.referConfig.textSep || ' '
      },
      treeUrl: this.referConfig.options.url || '/api/ubcs-code/mdmEngineController/defaultReferTree',
      treeData: [],
      checkedData:[],
      currentNode:{},
      checkedData: [],
      currentNode: {},
      params: {},
      loadType: {'all': 'all', 'node': 'node'},
      copyParam: ['btmType', 'lnType', 'toBtmType', 'textField', 'valueField', 'parentFieldName', 'parentValue', 'sort', 'order', 'isDirection', 'whereSql', 'isMuti', 'queryScheme', 'isQueryAllColumn', 'queryColumn', 'split', 'loadType', 'onlyLeaf', 'onlyLeafText', 'parentUsedField']
@@ -38,44 +48,44 @@
    this.getParams();
  },
  mounted() {
    if(!this.lazy){
      if(this.options.data){//如果是固定数据的情况下
        this.treeData=this.options.data
      }else{
    if (!this.lazy) {
      if (this.options.data) {//如果是固定数据的情况下
        this.treeData = this.options.data
      } else {
        this.getTree()
      }
    }
  },
  computed:{},
  computed: {},
  methods: {
    getParams:function (){
    getParams: function () {
      var queryParams = {};
      if(this.options.extraParams){
      if (this.options.extraParams) {
        queryParams = this.options.extraParams;
      }
      for(var i= 0 ; i < this.copyParam.length ; i ++){
        if(this.copyParam[i] == "btmType") {
      for (var i = 0; i < this.copyParam.length; i++) {
        if (this.copyParam[i] == "btmType") {
          queryParams[this.copyParam[i]] = this.options['referBo'] || this.options['referType'];
        }else if(this.copyParam[i] in this.options){
        } else if (this.copyParam[i] in this.options) {
          queryParams[this.copyParam[i]] = this.options[this.copyParam[i]];
        }
      }
      queryParams['referBo'] = this.options['referBo'] || this.options['referType'];
      queryParams['referType']= queryParams['referBo']
      queryParams['selectAllLevel'] = (this.options.loadType == this.loadType.all?true:false);//true时后台会报错
      queryParams['referType'] = queryParams['referBo']
      queryParams['selectAllLevel'] = (this.options.loadType == this.loadType.all ? true : false);//true时后台会报错
      queryParams.muti =this.isMuti;
      if(queryParams.isQueryAllColumn =="true"){
      queryParams.muti = this.isMuti;
      if (queryParams.isQueryAllColumn == "true") {
        queryParams.isQueryAllColumn = true;
      }
      if(this.options.useFormKey && this.options.formValues){
      if (this.options.useFormKey && this.options.formValues) {
        //使用表单上的字段来过滤
        queryParams['conditionMap["' + (this.options.paramForFormKey?this.options.paramForFormKey:this.options.useFormKey)  + '"]'] = this.options.formValues[this.options.useFormKey];
        queryParams['conditionMap["' + (this.options.paramForFormKey ? this.options.paramForFormKey : this.options.useFormKey) + '"]'] = this.options.formValues[this.options.useFormKey];
      }
      if (!this.options.loadType) {
        this.options.loadType = this.loadType.node;
      }
      queryParams['queryAllLevel'] = this.options.loadType == this.loadType.node? false : true;//默认逐级展开
      queryParams['queryAllLevel'] = this.options.loadType == this.loadType.node ? false : true;//默认逐级展开
      queryParams['loadType'] = this.options.loadType;
      queryParams['multipleSelect'] = this.isMuti;
      queryParams['isMuti'] = queryParams['multipleSelect'];
@@ -83,10 +93,10 @@
        queryParams['order'] = this.options.initSort.type;//方法
        queryParams['sort'] = this.options.initSort.field;//字段
      }
      if(this.options.sortField){
      if (this.options.sortField) {
        queryParams['sort'] = this.options.sortField;//字段
      }
      if(this.options.sortType){
      if (this.options.sortType) {
        queryParams['order'] = this.options.sortType;//方法
      }
      if (this.options.rootParams) {
@@ -100,7 +110,7 @@
          queryParams['conditionMap["' + key + '"]'] = this.options.conditionParams[key];//新的方式
        }
      }
      if(this.options.where ) {
      if (this.options.where) {
        for (var key in this.options.where) {
          queryParams['conditionMap["' + key + '"]'] = this.options.where[key];//新
        }
@@ -125,7 +135,7 @@
          queryParams['replaceMap["' + key + '"]'] = this.options.replaceParams[key];//新的方式
        }
      }
      this.params=queryParams;
      this.params = queryParams;
    },
    getTree() {
@@ -150,24 +160,24 @@
    treeLoad: function (treeNode, resolve) {
      //逐级加载
      const parentOid = (treeNode.level === 0) ? 0 : treeNode.data.oid;
      this.params.parentOid=parentOid.indexOf('@vcitreesep@') > -1 ? parentOid.split('@vcitreesep@')[1] : parentOid;
      this.params.parentValue=this.params.parentOid;
      this.params.parentBtmName=treeNode.data.attributes.btmName || treeNode.data.attributes.btmname;
      this.params.parentBtmType=this.params.parentBtmName;
      this.params.parentOid = parentOid.indexOf('@vcitreesep@') > -1 ? parentOid.split('@vcitreesep@')[1] : parentOid;
      this.params.parentValue = this.params.parentOid;
      this.params.parentBtmName = treeNode.data.attributes.btmName || treeNode.data.attributes.btmname;
      this.params.parentBtmType = this.params.parentBtmName;
      if (this.options.rootParams && treeNode.level !== 0) {
        for (var key in this.options.rootParams) {
          delete this.params[key]
        }
      }
      getLazyTree(this.params,this.treeUrl).then(res => {
      getLazyTree(this.params, this.treeUrl).then(res => {
        resolve(res.data.data.map(item => {
          if(!item.attributes){
            item.attributes={
              data:{}
          if (!item.attributes) {
            item.attributes = {
              data: {}
            }
          }else{
            item.attributes.data=item.attributes.data || {}
          } else {
            item.attributes.data = item.attributes.data || {}
          }
          return {
            ...item,
@@ -176,39 +186,39 @@
        }))
      });
    },
    nodeClick(data, node, nodeComp){
      if(!this.isMuti) {
        this.setValue({checkedNodes:[data]})
    nodeClick(data, node, nodeComp) {
      if (!this.isMuti) {
        this.setValue({checkedNodes: [data]})
      }
    },
    checked(checkedNode, checkedData) {
      this.setValue(checkedData)
    },
    setValue:function (checkedData){
      this.checkedData=checkedData
    setValue: function (checkedData) {
      this.checkedData = checkedData
      var value = [];
      var text = [];
      const textSep =this.config.textSep;
      for(var j =0;j<checkedData.checkedNodes.length;j++){
        const item=checkedData.checkedNodes[j];
        var v=this.config.valueField.indexOf("attribute.")>=0?(item.attributes[this.config.valueField.replace("attribute.","")] || item.attributes.data[this.config.valueField.replace("attribute.","")]):(item.attributes[this.config.valueField] || item[this.config.valueField] || item.attributes.data[this.config.valueField])
      const textSep = this.config.textSep;
      for (var j = 0; j < checkedData.checkedNodes.length; j++) {
        const item = checkedData.checkedNodes[j];
        var v = this.config.valueField.indexOf("attribute.") >= 0 ? (item.attributes[this.config.valueField.replace("attribute.", "")] || item.attributes.data[this.config.valueField.replace("attribute.", "")]) : (item.attributes[this.config.valueField] || item[this.config.valueField] || item.attributes.data[this.config.valueField])
        value.push(v);
        var tempRaw = [];
        var textFieldArray = this.config.textField.split(",");
        for (var i = 0; i < textFieldArray.length; i++) {//显示的字段可能有多个
          if (!validatenull(textFieldArray[i])) {
            var t=textFieldArray[i].indexOf("attribute.")>=0?(item.attributes[textFieldArray[i].replace("attribute.","")] ||item.attributes.data[textFieldArray[i].replace("attribute.","")]):(item.attributes[textFieldArray[i]] || item[textFieldArray[i]] || item.attributes.data[textFieldArray[i]])
            var t = textFieldArray[i].indexOf("attribute.") >= 0 ? (item.attributes[textFieldArray[i].replace("attribute.", "")] || item.attributes.data[textFieldArray[i].replace("attribute.", "")]) : (item.attributes[textFieldArray[i]] || item[textFieldArray[i]] || item.attributes.data[textFieldArray[i]])
            tempRaw.push(t);
          }
        }
        text.push(tempRaw.join(textSep));
      }
      let mapFields =this.referConfig.fieldMap || {};
      let mapFields = this.referConfig.fieldMap || {};
      try {
        if(!validatenull(this.options.mapFields)){
          mapFields =Object.assign(this.referConfig.fieldMap,JSON.parse(this.options.mapFields)) ;
        if (!validatenull(this.options.mapFields)) {
          mapFields = Object.assign(this.referConfig.fieldMap, JSON.parse(this.options.mapFields));
        }
      }catch (e) {
      } catch (e) {
      }
      this.value = value.join(',');
@@ -218,9 +228,9 @@
        showField: this.referConfig.showField,
        value: this.value,
        text: this.text || '',
        isTreeMuti:this.isMuti,
        isTreeMuti: this.isMuti,
        rawData: checkedData.checkedNodes,
        fieldMap:mapFields
        fieldMap: mapFields
      });
    }
  }
Source/UBCS-WEB/src/components/template/Business.vue
@@ -202,4 +202,4 @@
            margin: 15px 0 16px;
        }
    }
</style>
</style>
Source/UBCS-WEB/src/const/code/codeKeyAttrRepeat.js
@@ -329,5 +329,14 @@
        trigger: "blur"
      }],
    },
    {
      required: true,
      label: '混淆字符转换',
      prop:'confound',
      labelWidth : 110,
      search: false,
      formslot:true,
      display:true
    }
  ]
}
Source/UBCS-WEB/src/styles/tags.scss
@@ -1,7 +1,7 @@
.avue-tags {
    user-select: none;
    user-select: none;
    position: relative;
    padding: 0 10px;
    margin-bottom: 10px;
@@ -89,4 +89,4 @@
        padding: 1px 0 0 15px;
        box-sizing: border-box;
    }
}
}
Source/UBCS-WEB/src/views/code/codeKeyAttrRepeat.vue
@@ -27,6 +27,9 @@
                   @click="handleDelete">删 除
        </el-button>
      </template>
      <template slot-scope="scope" slot="confoundForm">
        <el-input placeholder="请输入混淆字符以逗号隔开" v-model="confoundValue"></el-input>
      </template>
    </avue-crud>
  </basic-container>
</template>
@@ -49,7 +52,8 @@
        },
        selectionList: [],
        option: option,
        data: []
        data: [],
        confoundValue:''
      };
    },
    computed: {
Source/UBCS-WEB/src/views/statistic/statisticPage.vue
@@ -1,13 +1,13 @@
<template>
  <!--  新增右侧按钮-->
  <div>
  <div v-loading="loading">
    <div style=" display: flex; justify-content: flex-end;">
      <el-button plain type="primary" @click="addHandler">配置</el-button>
    </div>
    <!--新增对话框-->
    <el-dialog :visible.sync="addVisible" append-to-body class="avue-dialog avue-dialog--top" title="配置数据统计分析"
               top="-50px">
      <el-table ref="table" :data="tableData" border style="width: 100%" @selection-change="selectChange">
      <el-table ref="table" :data="tableData" border style="width: 100%" @selection-change="selectChange" @row-click="rowHandlerClick">
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column align="center" label="主数据库名" prop="menuName" width="300"></el-table-column>
        <el-table-column align="center" label="类型" prop="codeType">
@@ -28,23 +28,32 @@
      <lineChart
        v-for="(item,index) in lineList"
        :key="index"
        :btmname="item.btmname"
        :chartName="item.menuName"
        :lineData="item.menuData"></lineChart>
        :lineData="item.menuData"
        @refresh="getEcharts">
      </lineChart>
      <pieChart
        v-for="(item,index) in pieList"
        :key="index"
        :btmname="item.btmname"
        :chartName="item.menuName"
        :pieData="item.menuData"></pieChart>
        :pieData="item.menuData"
        @refresh="getEcharts"></pieChart>
      <ColumnarChart
        v-for="(item,index) in columnarList"
        :key="index"
        :btmname="item.btmname"
        :chartName="item.menuName"
        :columnarData="item.menuData"></ColumnarChart>
        :columnarData="item.menuData"
        @refresh="getEcharts"></ColumnarChart>
      <mixCart
        v-for="(item,index) in mixList"
        :key="index"
        :btmname="item.btmname"
        :chartName="item.menuName"
        :mixData="item.menuData"></mixCart>
        :mixData="item.menuData"
        @refresh="getEcharts"></mixCart>
    </div>
  </div>
</template>
@@ -67,6 +76,7 @@
  name: "statisticPage",
  data() {
    return {
      loading: false,
      selectValue: '',
      selectList: [
        {
@@ -95,15 +105,16 @@
      columnarList: [],
      mixList: [],
      selectData: [],
      tableData: []
      tableData: [],
      ResponseData: {}
    }
  },
  created() {
    this.getMasterList();
    this.loading = true;
  },
  mounted() {
    this.getEcharts();
    // deleteChartId({btmname:'zxssaac',chartId:'3'}).then(res=>{
    //   console.log('res',res)
    // })
    this.getMasterList();
  },
  methods: {
    getMasterList() {
@@ -114,25 +125,92 @@
        this.$message.error(error)
      })
    },
    getEcharts() {
      getBtmAndChart().then(firstResponse => {
        console.log('btm', firstResponse)
    //列表数据
    async getEcharts() {
      try {
        const firstResponse = await getBtmAndChart();
        const btmNames = Object.keys(firstResponse.data.data).join(',');
        const firstData = firstResponse.data.data;
        Object.keys(firstData).forEach((item,index) => {
          let firstIndex = firstData[item].split(',');
          console.log('firstIndex',firstIndex);
        });
        if (btmNames) {
          getStatisticAnalysis({btmNames}).then(secondResponse => {
            console.log('getStatisticAnalysis', secondResponse)
          })
        const btmValue = Object.values(firstResponse.data.data);
        if (!btmNames) {
          this.lineList = [];
          this.pieList = [];
          this.columnarList = [];
          this.mixList = [];
          this.loading = false;
          return;
        }
      })
        const typeList = {
          '0': 'lineList',
          '1': 'pieList',
          '2': 'columnarList',
          '3': 'mixList'
        };
        await this.handleStatisticAnalysis(btmNames, firstResponse);
        this.loading = false;
      } catch (error) {
        this.loading = false;
        console.error('Error:', error);
      }
    },
    async handleStatisticAnalysis(btmNames, firstResponse) {
      const secondResponse = await getStatisticAnalysis({btmNames});
      const secondData = secondResponse.data.data;
      const typeList = {
        "0": "lineList",
        "1": "pieList",
        "2": "columnarList",
        "3": "mixList"
      };
      this.lineList = [];
      this.pieList = [];
      this.columnarList = [];
      this.mixList = [];
      const firstData = firstResponse.data.data;
      //Object.keys导致对象顺序不一致,使用sort排序与后端返回格式一致
      Object.keys(firstData).sort().forEach((key, index) => {
        if (firstData[key]) {
          const indexes = firstData[key].split(',');
          for (const indexSec of indexes) {
            const listType = typeList[indexSec];
            const list = secondData.map(record => {
              return {
                menuData: record.menuData,
                menuName: record.menuName,
                btmname: key
              };
            });
            this.$nextTick(() => {
              list.forEach((i, j) => {
                if (index === j) {
                  this[listType].push(i);
                }
              });
            });
          }
        }
      });
    },
    //新增
    addHandler() {
      this.addVisible = true;
      // let checkedrow = []
      // this.tableData.forEach(item => {
      //   // item.codeType = [];
      //   Object.keys(this.ResponseData.data.data).forEach(k => {
      //     if (item.code === k) {
      //       Object.values(this.ResponseData.data.data).forEach(v => {
      //         // item.codeType.push(v);
      //         checkedrow.push(item)
      //       })
      //     }
      //   })
      // })
      // this.$nextTick(() => {
      //   checkedrow.forEach(row => {
      //     // console.log(row)
      //     this.$refs.table.toggleRowSelection(row, true) // 回显
      //   })
      // })
    },
    //取消
    escHandler() {
@@ -144,12 +222,12 @@
        this.$message.warning('请至少选择一条数据!');
        return;
      }
      let codeStatus = this.selectData.every(key => key.codeType)
      let codeStatus = this.selectData.every(key => key.codeType.length > 0);
      if (!codeStatus) {
        this.$message.warning("请检查已勾选数据类型是否为空!");
        return;
      }
      const newArray = this.selectData.map(item => {
        return {
          btmname: item.code,
@@ -157,9 +235,10 @@
        }
      })
      saveStatisticAnalysis(newArray).then(res => {
        this.menuList = res.data.data;
        this.nextSave();
        // this.menuList = res.data.data;
        this.getEcharts();
        this.$message.success('保存成功')
        this.addVisible = false;
      }).catch(error => {
        this.$message.error(error)
      });
@@ -179,8 +258,6 @@
        const dataKey = typeList[item.codeType];
        if (dataKey) {
          this[dataKey].push(item);
          this[dataKey].forEach(res => {
          })
          hasValidData = true;
        }
      });
@@ -194,6 +271,10 @@
    selectChange(selection) {
      this.selectData = selection;
    },
    rowHandlerClick(row){
      this.selectData = row;
      this.$refs.table.toggleRowSelection(row);
    }
  }
}
Source/UBCS/ubcs-codeApply/pom.xml
@@ -8,6 +8,18 @@
        <version>3.0.1.RELEASE</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <properties>
        <vciplt.version>2022.RELEASE</vciplt.version>
        <old.spring.version>3.2.0.RELEASE</old.spring.version>
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/TestIntegrateFrame.java
@@ -4,13 +4,32 @@
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class TestIntegrateFrame {
    public static JButton apply = new JButton();
    public static JTextField text = new JTextField();
    public static void main(String[] args) {
        List<Integer> list=new ArrayList<>();
        list.add(1);
        list.add(5);
        list.add(6);
        list.add(3);
        list.add(2);
        list.add(4);
        List<Integer> classifyVOS =list.stream().sorted(((o1, o2) -> o2.compareTo(o1))).collect(Collectors.toList());
        int level=1;
        int tt=1;
        if (classifyVOS.size() >= level && level > 0) {
            tt = classifyVOS.get(level - 1);
        }
        final JFrame j = new JFrame();
        j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel p = new JPanel();
@@ -26,6 +45,10 @@
        apply.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                Map<String, String> map = new HashMap<String, String>();
//                map.put("原材料替换件", "YUANCAILIAOTIHUANJIAN");
//                map.put("原材料部件", "1");
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -1191,6 +1191,7 @@
                if(i>nowmonth){
                    monthCount.add(0);
                    month.add(0);
                    continue;
                }
                //当前月份之前之和
                Integer count = 0;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -2740,7 +2740,7 @@
        //cboOidMap.put("id", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(codeDataMap.keySet().toArray(new String[0])) + ")");
        String tableName ="";
        try {
            R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId());
            R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(codeClassifyVO.getBtmTypeId());
            if(!r.isSuccess()) {
                throw new Throwable(r.getMsg());
            }
@@ -2838,7 +2838,17 @@
                cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription());
                cbo.setName(orderDTO.getName());
                try {
                    cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription());
                    //主要处理大小写问题,将data里面的数据的key都转为小写
                    HashMap<String,String> lowerData = new HashMap<>();
                    Iterator<Map.Entry<String, String>> iterator = cbo.getData().entrySet().iterator();
                    while (iterator.hasNext()){
                        Map.Entry<String, String> next = iterator.next();
                        lowerData.put(next.getKey().toLowerCase(Locale.ROOT),next.getValue());
                    }
                    cbo.getData().clear();
                    cbo.getData().putAll(lowerData);
                    cbo.setAttributeValueWithNoCheck("description", (StringUtil.isNotBlank(orderDTO.getData()
                        .get("description")) ? orderDTO.getData().get("description") : orderDTO.getDescription() ));
                //    cbo.setAttributeValue("name", orderDTO.getName());
                    //  if(finalIsProcess){//在流程中不允许更改
                    //     errorMap.put(code,errorMap.getOrDefault(code, errorMap.getOrDefault(code,"")+";数据"+code+"在流程中,不允许更改!"));
@@ -2901,7 +2911,7 @@
                    List<CodeAllCode>newCodeAllCodeList= codeAllCodeService.selectByWrapper(Wrappers.<CodeAllCode>query().lambda().eq(CodeAllCode::getCreateCodeOid, cbo.getOid()));
                    if (!CollectionUtils.isEmpty(newCodeAllCodeList)) {
                        CodeAllCode codeCbo = codeAllCodeList.get(0);
                        CodeAllCode codeCbo = newCodeAllCodeList.get(0);
                        log.info("codeCbos code:" + codeCbo.getId());
                        codeCbo.setLcStatus(status);
                        codeAllCodeList.add(codeCbo);
@@ -2939,7 +2949,7 @@
                engineService.updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmTypeId(),updateList);
                codeAllCodeService.saveOrUpdateBatch(codeAllCodeList);
                if(deleteList.size()>0) {
                    commonsMapper.deleteByTaleAndOid(tableName, VciBaseUtil.array2String(deleteList.toArray(new String[]{})));
                    commonsMapper.deleteByTaleAndOid(tableName, VciBaseUtil.toInSql(deleteList.toArray(new String[]{})));
                }
                //是否调用集团接口申请接口
                if(isCodeOrGroupCode){
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -368,7 +368,7 @@
                            xmlResultDataObjectDetailDO.setCode("");
                            xmlResultDataObjectDetailDO.setId(applyDataVO.getId());
                            xmlResultDataObjectDetailDO.setErrorid(objerrorCode);
                            xmlResultDataObjectDetailDO.setMsg("编码申请失败:" + e.getMessage());
                            xmlResultDataObjectDetailDO.setMsg("编码维护失败:" + e.getMessage());
                            resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
                        });
                    }else{
@@ -377,7 +377,7 @@
                        xmlResultDataObjectDetailDO.setCode("");
                        xmlResultDataObjectDetailDO.setId("");
                        xmlResultDataObjectDetailDO.setErrorid(objerrorCode);
                        xmlResultDataObjectDetailDO.setMsg("编码申请失败:" + e.getMessage());
                        xmlResultDataObjectDetailDO.setMsg("编码维护失败:" + e.getMessage());
                        resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
                    }
                    e.printStackTrace();