ludc
2024-01-30 8e832c69b20bd34f6da9ef25324ec690d1cccbe3
Source/UBCS-WEB/src/views/ruleBasic/prefixConfig.vue
@@ -1,13 +1,335 @@
<template>
  <basic-container>
    <el-header>
      <div style="margin-bottom: 15px">
        编码规则:
        <el-select v-model="select" :filter-method="filterValue" filterable placeholder="请选择" size="small"
                   @change="selectHandler">
          <el-option v-for="(item,index) in queryReleasedList"
                     :key="item.oid"
                     :label="item.name + ' (' + item.id + ')'"
                     :value="item.oid"></el-option>
        </el-select>
      </div>
    </el-header>
    <el-main>
      <el-table
        v-loading="loading"
        :data="tableData"
        :header-cell-style="{background:'#FAFAFA',color:'#505050'}"
        border
        style="width: 100%;height:  calc(100vh - 315px)"
        @cell-click="cellClickHandler">
        <el-table-column
          align="center"
          label="1"
          prop="1"
        >
        </el-table-column>
        <el-table-column
          align="center"
          label="2"
          prop="2"
        >
        </el-table-column>
        <el-table-column
          align="center"
          label="3"
          prop="3">
        </el-table-column>
        <el-table-column
          align="center"
          label="4"
          prop="4">
        </el-table-column>
        <el-table-column
          align="center"
          label="5"
          prop="5">
        </el-table-column>
        <el-table-column
          align="center"
          label="6"
          prop="6">
        </el-table-column>
        <el-table-column
          align="center"
          label="7"
          prop="7">
        </el-table-column>
        <el-table-column
          align="center"
          label="8"
          prop="8">
        </el-table-column>
        <el-table-column
          align="center"
          label="9"
          prop="9">
        </el-table-column>
        <el-table-column
          align="center"
          label="10"
          prop="10">
        </el-table-column>
        <el-table-column
          align="center"
          label="11"
          prop="11">
        </el-table-column>
        <el-table-column
          align="center"
          label="12"
          prop="12">
        </el-table-column>
        <el-table-column
          align="center"
          label="13"
          prop="13">
        </el-table-column>
        <el-table-column
          align="center"
          label="14"
          prop="14">
        </el-table-column>
        <el-table-column
          align="center"
          label="15"
          prop="15">
        </el-table-column>
      </el-table>
    </el-main>
    <el-footer>
      <div style="width: 460px; display: flex; align-items: center;margin-top: 5px">
        <p>值:</p>
        <el-input v-model="characterValue" size="small" style="flex: 1; display: flex;">
          <template slot="prefix">
            <div style="display: flex; align-items: center;height: 100%;text-align: center;margin-left: 5px">
              <el-tag v-for="(item,index) in this.editValueList" :key="index" closable size="small"
                      @close="handleClose(item,index)">
                {{ item }}
              </el-tag>
            </div>
          </template>
        </el-input>
      </div>
    </el-footer>
    <el-dialog :visible.sync="editVisble" append-to-body title="修改可用字符" width="40%">
      <el-input v-model="characterValue" size="small"></el-input>
      <span slot="footer" class="dialog-footer">
        <el-button @click="editVisble = false">取 消</el-button>
        <el-button type="primary" @click="editSaveHandler">确 定</el-button>
  </span>
    </el-dialog>
    <div style="margin-bottom: 10px;text-align: center">
      <el-button icon="el-icon-plus" plain size="small" type="success" @click="addSaveHandler">添加</el-button>
      <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editDialog">修改</el-button>
      <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delSaveHandler">删除</el-button>
    </div>
  </basic-container>
</template>
<script>
import {getList, addSave, editSave, deleteSave} from "@/api/code/codeCharcter"
import {gridCodeRule} from "@/api/code/mdmrule"
export default {
name: "prefixConfig"
  name: "usableCharacter",
  data() {
    return {
      loading: false,
      editValueList: [],
      //下拉框数组
      queryReleasedList: [],
      //下拉框初始数据数组
      characterReleasedList: [],
      characterValue: "",
      characterEditOldValue: "",
      tableData: [],
      select: "",
      selectValue: "",
      editVisble: false
    }
  },
  watch: {
    select: {
      handler(newV) {
        // console.log(newV)
      }
    }
  },
  created() {
    this.getCodeRule();
  },
  methods: {
    editDialog(){
      if(this.editValueList.length > 1){
        this.$message.warning('只能选择一条数据!');
        return;
      }
      if(this.editValueList.length === 0){
        this.$message.warning('请选择一条数据!');
        return;
      }
      this.editVisble = true;
    },
    handleClose(tag, index) {
      this.$delete(this.editValueList, index);
      if (this.editValueList.length === 0) {
        this.characterValue = "";
        return;
      }
    },
    cellClickHandler(row, column) {
      this.characterValue = row[column.property];
      this.characterEditOldValue = row[column.property];
      if (this.editValueList.includes(row[column.property])) {
        this.$message.warning('请检查字符集是否有重复!')
      } else if (row[column.property] === undefined || row[column.property] === null) {
        this.$message.warning('请检查字符集是否有空值!');
      } else {
        this.editValueList.push(row[column.property]);
      }
    },
    async getCodeRule() {
      try {
        // 编码规则已发布(TODO:2024/1/22改:按照需求应该是都查询)数据源
        const res = await gridCodeRule(1,-1);
        this.characterReleasedList = res.data.data.records;
        this.queryReleasedList = this.characterReleasedList;
        this.select = this.characterReleasedList[0].oid;
        this.loading = true;
        const res2 = await getList({codeRuleId: this.select, chartType: "prefix", chartValue: this.characterValue});
        this.tableData = res2.data.data;
        this.loading = false;
      } catch (error) {
        this.$message.warning(error)
      }
    },
    //编码规则下拉框搜索
    filterValue(query) {
      if (query !== "") {
        this.queryReleasedList = this.characterReleasedList.filter(item => {
          return item.name.includes(query.toString());
        });
      } else {
        this.queryReleasedList = this.characterReleasedList;
      }
    },
    selectHandler(val) {
      this.selectValue = val;
      this.characterValue = ""
      this.getTableData()
    },
    getTableData() {
      this.loading = true;
      // const targetObject = this.characterReleasedList.find(obj => obj.oid === this.selectValue);
      // const chartValue = targetObject.name;
      getList({codeRuleId: this.select, chartType: "prefix", chartValue: this.characterValue}).then(res => {
        // console.log(res.data.data);
        this.tableData = res.data.data;
        this.loading = false;
      });
    },
    addSaveHandler() {
      if (!this.characterValue) {
        this.$message.warning('请填写要添加的值!');
        return; // 判断输入值
      }
      if (this.editValueList.length != 0) {
        this.$message.warning('请先取消已选择的值!');
        return; // 判断输入值
      }
      const targetObject = this.characterReleasedList.find(obj => obj.oid === this.select);
      if (!targetObject) {
        return; // 查找对应typeText
      }
      const codeRuleCharacterVO = {
        codeRuleId: this.select,
        chartType: "prefix",
        chartValue: this.characterValue,
        chartTypeText: targetObject.name
      };
      addSave(codeRuleCharacterVO)
        .then(res => {
          this.$message.success(res.data.msg);
          this.characterValue = "";
          this.getTableData();
        }).catch(error => {
        this.$message.error('添加失败');
      });
    },
    editSaveHandler() {
      if (this.characterEditOldValue === "") {
        this.$message.warning('请选择修改的值!');
        return; // 判断选择值
      }
      if (this.characterValue === "") {
        this.$message.warning('请填写要修改的值!');
        return; // 判断输入值
      }
      const targetObject = this.characterReleasedList.find(obj => obj.oid === this.select);
      if (!targetObject) {
        return; // 查找对应typeText
      }
      const codeRuleCharacterVO = {
        codeRuleId: this.select,
        chartType: "prefix",
        chartValue: this.characterValue,
        oldChartValue: this.characterEditOldValue,
        chartTypeText: targetObject.name
      };
      editSave(codeRuleCharacterVO)
        .then(res => {
          this.$message.success(res.data.msg);
          this.characterValue = "";
          this.editVisble = false;
          this.editValueList = [];
          this.getTableData();
        }).catch(error => {
        this.$message.error('修改失败');
      });
    },
    delSaveHandler() {
      //判断选择数据characterEditOldValue
      if (this.characterEditOldValue === "" || this.characterValue === "") {
        this.$message.warning('请选择要删除的值');
        return;
      }
      const targetObject = this.characterReleasedList.find(obj => obj.oid === this.select);
      if (!targetObject) {
        return; // 查找对应typeText
      }
      const value = this.editValueList.join("");
      const codeRuleCharacterVO = {
        codeRuleId: this.select,
        chartType: "prefix",
        chartValue: value,
        chartTypeText: targetObject.name
      };
      deleteSave(codeRuleCharacterVO)
        .then(res => {
          this.$message.success(res.data.msg);
          this.editValueList = [];
          this.characterValue = "";
          this.getTableData();
        }).catch(error => {
        this.$message.error('删除失败');
      });
    }
  }
}
</script>
<style scoped>
<style lang="scss" scoped>
.el-header {
  padding: 0;
}
</style>