ludc
2023-09-13 4a2835ddadb796c69f180097b95f971dbab4687d
Source/UBCS-WEB/src/components/code-dialog-page/cloneOtherBasicSecDialog.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,248 @@
<template>
  <el-dialog
    :close-on-click-modal="false"
    :visible.sync="cloneOtherCodeRuleSettingBox"
    append-to-body
    class="avue-dialog avue-dialog--top"
    style="height: 100vh"
    @close="closeCloneOtherBasicSecDialog"
    title="克隆编码规则的基础信息"
    top="-3%"
    width="800px">
    <div>
      <el-row>
        <p
          style="margin-top: -20px;
            margin-bottom: 4px;
            font-weight: 570;
            font-size: 19px;
            color: #0e2d5f;">
          ç¼–码规则
        </p>
        <avue-crud
          ref="crudCloneCodeRuleOther"
          :data="codeRuleData"
          :option="cloneCodeRuleOption"
          :page.sync="codeRulePage"
          :table-loading="codeRuleloading"
          class="other-clone-coderule-crud"
          @row-click="codeOtherCloneRuleRowClick"
          @selection-change="selectionOtherCloneCodeRuleChange"
          @search-change="searchOtherCloneChange"
          @search-reset="searchOtherCloneReset"
          @on-load="onLoad">
          <template #radio="{row}">
            <el-radio v-model="selectOtherCodeRuleRowIndex"
                :label="row.$index">&nbsp;</el-radio>
          </template>
        </avue-crud>
      </el-row>
      <el-row style="margin-top: 10px; border-top: 1px solid #ebeef5">
        <p
          style="
            margin-top: 10px;
            margin-bottom: 4px;
            font-weight: 570;
            font-size: 19px;
            color: #0e2d5f;
          "
        >
          ç æ®µä¿¡æ¯
        </p>
        <avue-crud
          ref="crudCloneCodeBasicOther"
          :data="cloneBasicData"
          :option="cloneBasicOption"
          :table-loading="codeBasicloading"
          class="other-clone-codebasic-crud"
          @row-click="codeOtherCloneBasicRowClick"
          @selection-change="selectionOtherCloneCodeBasicChange">
        </avue-crud>
      </el-row>
    </div>
    <div slot="footer" class="dialog-footer" style="height: 50px">
      <el-button type="primary" @click="saveOtherCodeBasic" :loading="cloneSaveLoding">保 å­˜</el-button>
      <el-button @click="cloneOtherCodeRuleSettingBox = false">取 æ¶ˆ</el-button>
    </div>
  </el-dialog>
</template>
<script>
import cloneBasicOption from "@/const/code/cloneBasicDialogOption";
import cloneCodeRuleOption from "@/const/code/cloneCodeRuleDialogOption";
import {gridCodeRule} from "@/api/code/mdmrule";
import {gridCodeBasicSec,cloneCodeBasic} from "@/api/code/codebasic";
export default {
    name: "cloneRuleDialog",
    props: {
        // å¯¹è¯æ¡†æ˜¾ç¤ºéšè—æŽ§åˆ¶
        visible: {
            type: "Boolean",
            default: false,
        },
        // è¢«å…‹éš†çš„规则oid
        quiltCloneCodeRule:{
            type: "Object",
        }
    },
    data() {
        return {
            cloneOtherCodeRuleSettingBox: this.visible,
            /*克隆编码规则对话框控制变量*/
            cloneBasicOption: cloneBasicOption,
            cloneCodeRuleOption: cloneCodeRuleOption,
            selectionOtherCloneCodeBasicList: [], // æ­¤ç•Œé¢å†…当前选中的基础码段
            selectionOtherCloneCodeRuleList: {}, // æ­¤ç•Œé¢å†…当前选中的编码规则
            selectOtherCodeRuleRowIndex: '',
            cloneOtherQuery: {}, // æŸ¥è¯¢æ¡ä»¶å¯¹è±¡
            codeRulePage: {
                pageSize: 10,
                currentPage: 1,
                total: 0,
            },
            codeRuleloading: false,
            codeRuleData: [],
            codeBasicloading: false,
            cloneBasicData: [],
            cloneSaveLoding: false,
        };
    },
    watch: {
        // ç›‘听父组件传的窗口显示隐藏的值,以及值的回填
        visible() {
            //console.log(this.visible);
            if(this.visible){
                //console.log(this.quiltCloneCodeRule);
                let conditionMap = {};
                conditionMap["conditionMap[oid_notequal]"] = this.quiltCloneCodeRule.oid.trim();
                this.cloneOtherQuery = conditionMap;
                this.onLoad(this.codeRulePage);
            }else{
                this.codeRuleData = [];
                this.cloneBasicData = [];
            }
            this.cloneOtherCodeRuleSettingBox = this.visible;
        },
        selectionOtherCloneCodeRuleList(){
            this.loadBasic(this.selectionOtherCloneCodeRuleList);
        },
    },
    methods: {
        //关闭窗口时触发
        closeCloneOtherBasicSecDialog(){
            this.$emit('update:visible',false);
        },
        /** ä»Žå…¶ä»–编码规则中克隆码段对话框-单击编码规则实现行选择*/
        codeOtherCloneRuleRowClick(row) {
            this.selectOtherCodeRuleRowIndex = row.$index
            this.selectionOtherCloneCodeRuleList = row;
            this.loadBasic(row);
        },
        /** ä»Žå…¶ä»–编码规则中克隆码段对话框-单击基础码段实现行选择*/
        codeOtherCloneBasicRowClick(row) {
            this.$refs.crudCloneCodeBasicOther.toggleSelection();
            this.selectionOtherCloneCodeBasicList = row;
            this.$refs.crudCloneCodeBasicOther.setCurrentRow(row);
            this.$refs.crudCloneCodeBasicOther.toggleRowSelection(row); //选中当前行
        },
        selectionOtherCloneCodeBasicChange(list) {
            this.selectionOtherCloneCodeBasicList = list;
            this.$refs.crudCloneCodeBasicOther.setCurrentRow(
                this.selectionOtherCloneCodeBasicList.slice(-1)[0]
            );
        },
        /** ä»Žå…¶ä»–规则克隆码段界面重置搜索功能 */
        searchOtherCloneReset() {
            let conditionMap = {};
            conditionMap["conditionMap[oid_notequal]"] = this.quiltCloneCodeRule.oid.trim();
            this.cloneOtherQuery = conditionMap;
            this.onLoad(this.codeRulePage);
        },
        /** ä»Žå…¶ä»–规则克隆码段界面搜索功能*/
        searchOtherCloneChange(params, done) {
            this.codeRulePage.currentPage = 1;
            // å¤šä¸ªconditionMap这样传参,快速查询默认采用模糊查询
            if (params) {
                Object.keys(params).forEach((key) => {
                    this.cloneOtherQuery["conditionMap" + "[" + key + "_like]"] =
                    params[key].trim();
                });
            }
            this.onLoad(this.codeRulePage,this.cloneOtherQuery);
            done();
        },
        /** ä¿å­˜ä»Žå…¶ä»–编码规则中克隆码段信息*/
        async saveOtherCodeBasic() {
            this.cloneSaveLoding = true;
            let oid = this.quiltCloneCodeRule.oid;
            let fromDialogPkCodebasic = this.selectionOtherCloneCodeBasicList;
            if (fromDialogPkCodebasic.length <= 0) {
                this.$message.warning("请选择码段数据!");
                return;
            }
            let oidArr = [];
            fromDialogPkCodebasic.forEach((ele) => {
                oidArr.push(ele.oid);
            });
            let data = {
                pkCodeRule: oid,
                oidArr: oidArr.join(","),
            };
            //console.log(data);
            await cloneCodeBasic(data).then( () => {
                this.cloneOtherCodeRuleSettingBox = false;
                this.$message({
                    type: "success",
                    message: "操作成功!",
                });
                // è°ƒç”¨çˆ¶ç»„件方法重新加载码段表
                this.$emit('refreshRuleTable',{"currentPage":1,"pageSize":10});
            },(error) => {
                window.console.log(error);
            });
            this.cloneSaveLoding = false;
        },
        /** ç‚¹å‡»è§¦å‘加载基础码段信息*/
        loadBasic(row) {
            this.codeBasicloading = true;
            // console.log(row)
            if (row != "" && row != null && row !="undefined") {
                let conditionMap = {};
                conditionMap["conditionMap[pkCodeRule]"] = row.oid.trim();
                gridCodeBasicSec(1, -1, conditionMap).then((res) => {
                    const data = res.data.data;
                    this.cloneBasicData = data.records;
                    this.codeBasicloading = false;
                });
            }else {
                this.cloneBasicData = [];
                this.codeBasicloading = false;
            }
        },
        // è§„则表格相关方法
        onLoad(page, params = {}) {
            this.codeRuleloading = true;
            gridCodeRule(page.currentPage, page.pageSize, Object.assign({},this.cloneOtherQuery, params)).then((res) => {
                // console.log(res.data);
                const data = res.data.data;
                this.codeRulePage.total = data.total;
                this.codeRuleData = data.records;
                this.codeRuleloading = false;
                if(this.codeRuleData.length > 0) {
                    this.$nextTick(() => {
                        this.selectOtherCodeRuleRowIndex = this.codeRuleData[0].$index
                        this.selectionOtherCloneCodeRuleList = this.codeRuleData[0];
                    });
                }else{
                    this.cloneBasicData = [];
                }
            });
        },
    }
};
</script>
<style>
</style>