田源
2023-12-07 580f505f445e8cd9341fef695af1aea8ce4afaea
Source/UBCS-WEB/src/views/ruleBasic/usableCharacter.vue
@@ -4,7 +4,8 @@
    <el-header>
      <div style="margin-bottom: 15px">
        编码规则:
        <el-select v-model="select" filterable  :filter-method="filterValue" placeholder="请选择" size="small" @click="selectHandler">
        <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"
@@ -14,178 +15,141 @@
    </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 - 320px)"
        @cell-click="cellClickHandler">
        <el-table-column
          align="center"
          label="1"
          prop="aa"
        >
        </el-table-column>
        <el-table-column
          align="center"
          label="2"
          prop="b"
        >
        </el-table-column>
        <el-table-column
          align="center"
          label="3"
          prop="c">
        </el-table-column>
        <el-table-column
          align="center"
          label="4"
          prop="d">
        </el-table-column>
        <el-table-column
          align="center"
          label="5"
          prop="e">
        </el-table-column>
        <el-table-column
          align="center"
          label="6"
          prop="f">
        </el-table-column>
        <el-table-column
          align="center"
          label="7"
          prop="g">
        </el-table-column>
        <el-table-column
          align="center"
          label="8"
          prop="h">
        </el-table-column>
        <el-table-column
          align="center"
          label="9"
          prop="i">
        </el-table-column>
        <el-table-column
          align="center"
          label="10"
          prop="j">
        </el-table-column>
        <el-table-column
          align="center"
          label="11"
          prop="k">
        </el-table-column>
        <el-table-column
          align="center"
          label="12"
          prop="l">
        </el-table-column>
        <el-table-column
          align="center"
          label="13"
          prop="m">
        </el-table-column>
        <el-table-column
          align="center"
          label="14"
          prop="n">
        </el-table-column>
        <el-table-column
          align="center"
          label="15"
          prop="o">
        </el-table-column>
        <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: 260px; display: flex; align-items: center;margin-top: 5px">
      <div style="width: 460px; display: flex; align-items: center;margin-top: 5px">
        <p>值:</p>
        <el-input v-model="characterValue" size="small" style="flex: 1;"></el-input>
        <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">添加</el-button>
      <el-button icon="el-icon-edit" plain size="small" type="primary">修改</el-button>
      <el-button icon="el-icon-delete" plain size="small" type="danger">删除</el-button>
      <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} from "@/api/code/codeCharcter"
import {getList, addSave, editSave, deleteSave} from "@/api/code/codeCharcter"
import {gridCodeRule} from "@/api/code/codeCharcter"
export default {
  name: "usableCharacter",
  data() {
    return {
      loading: false,
      editValueList: [],
      //下拉框数组
      queryReleasedList:[],
      queryReleasedList: [],
      //下拉框初始数据数组
      characterReleasedList: [],
      characterValue: "",
      tableData: [
        {
          aa: 'a1',
          b: 'b1',
          c: 'c1',
          d: 'd1',
          e: 'e1',
          f: 'f1',
          g: 'b1',
          h: 'c1',
          i: 'd1',
          j: 'e1',
          k: 'f1',
          l: 'a1',
          m: 'b1',
          n: 'c1',
          o: 'd1',
        },
        {
          aa: 'a2',
          b: 'b2',
          c: 'c2',
          d: 'd2',
          e: 'e2',
          f: 'f2'
        },
      ],
      characterEditOldValue: "",
      tableData: [],
      select: "",
      selectValue: "",
      editVisble: false
    }
  },
  watch:{
    select:{
      handler(newV){
  watch: {
    select: {
      handler(newV) {
        // console.log(newV)
      }
    }
  },
  created() {
    getList({codeRuleId:"1717377846655193088",chartType:"charset",chartValue:"标准规则"}).then(res=>{
      console.log(res)
    })
    this.getCodeRule()
    this.getCodeRule();
  },
  methods: {
    cellClickHandler(row, column) {
      console.log(row)
      console.log(column)
      console.log(row[column.property])
      this.characterValue = row[column.property]
    editDialog() {
      if (this.editValueList.length > 1) {
        this.$message.warning('只能选择一条数据!');
        return;
      }
      if (this.editValueList.length === 0) {
        this.$message.warning('请选择一条数据!');
        return;
      }
      this.editVisble = true;
    },
    getCodeRule() {
      //编码规则已发布数据源
      gridCodeRule({["conditionMap" + "[lcStatus_like]"]: "Released"}).then(res => {
    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]);
      }
      // else if (this.editValueList.some(value => value.trim() === '')) {
      //   this.$message.warning('请检查字符集是否有空值!');
      // }
    },
    async getCodeRule() {
      try {
        // 编码规则已发布数据源
        const res = await gridCodeRule({["conditionMap" + "[lcStatus_like]"]: "Released"});
        this.characterReleasedList = res.data.data.records;
        this.queryReleasedList = this.characterReleasedList;
        this.select = this.characterReleasedList[0].name;
      })
        this.select = this.characterReleasedList[0].oid;
        this.loading = true;
        const res2 = await getList({codeRuleId: this.select, chartType: "charset", chartValue: this.characterValue});
        this.tableData = res2.data.data;
        this.loading = false;
      } catch (error) {
        this.$message.warning(error)
      }
    },
    //编码规则下拉框搜索
    filterValue(query) {
      console.log(query)
      if (query !== "") {
        this.queryReleasedList = this.characterReleasedList.filter(item => {
          return item.name.includes(query.toString());
@@ -194,8 +158,116 @@
        this.queryReleasedList = this.characterReleasedList;
      }
    },
    selectHandler(val){
      console.log(1)
    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: "charset", 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: "charset",
        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: "charset",
        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: "charset",
        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('删除失败');
      });
    }
  }
}