<template>
  <div class="eibs-tab">
    <!-- ======-左=======-->
    <c-col :span="24" class="col-left">
      <c-col :span="12">
        <el-form-item label="业务类型">
          <c-select v-model="model.bustyp" placeholder="请选择业务类型" dbCode="BUSTXT" sort="SRT" :isShowKeyAndLabel="true"
            :isCache="false" style="width: 100%" >
          </c-select>
        </el-form-item>
      </c-col>
      
      <c-col :span="12">
        <el-form-item label="交易码">
          <c-select v-model="model.inifrm" placeholder="请选择交易码" dbCode="ATPTXT" sort="SRT" :isShowKeyAndLabel="true"
            :isCache="false" style="width: 100%" >
          </c-select>
        </el-form-item>
      </c-col>
    </c-col>

    <c-col :span="24">
      <span style="float: left">
        <el-button size="small" ref="busbtnInsertBtn" type="primary" v-if="isShowAddBtn" @click="toBbabusbtn">新增</el-button>
      </span>
      <span style="float: right">
        <el-button size="small" @click="handleReset">重置</el-button>
        <el-button type="primary" icon="el-icon-search" size="small" :loading="searchLoading" @click="onSearch()">查询
        </el-button>
      </span>
    </c-col>

    <c-col :span="24">
      <c-paging-table :data="btnData" :columns="busbtnColumns" :pageNumber="model.pageNumber" :pageSize="model.pageSize"
        :total="model.total" v-on:queryFunc="queryFunc" :border="true">
        <c-table-column fixed="right" prop="op" label="操作" width="240px">
          <template slot-scope="{ scope }">
            <c-button style="margin-left: 5px" size="small" ref="busbtnDisplayBtn" type="info"
              @click="busbtnDisplay(scope.row)">详情
            </c-button>
            <c-button style="margin-left: 5px" size="small" v-if="isShowUpdBtn" ref="busbtnUpdateBtn" type="primary"
              @click="busbtnEdit(scope.row)">修改
            </c-button>
            <c-button style="margin-left: 5px" size="small" v-if="isShowDelBtn" ref="busbtnDeleteBtn" type="danger"
              @click="busbtnDelete(scope.row)">删除</c-button>
          </template>
        </c-table-column>
      </c-paging-table>
    </c-col>

    <el-dialog :title="dialogNam[busbtntyp]" :visible.sync="dialogAdd" :modal-append-to-body="false"
      :close-on-click-modal="false" width="70%" destroy-on-close>
      <el-form ref="modelForm" :model="form" label-suffix=":" :rules="rules" :disabled="isDisabled">
        <c-col :span="12">
           <c-col :span="24">
            <el-form-item label="业务类型" prop="bustyp" :label-width="formLabelWidth">
              <c-select v-model="form.bustyp" placeholder="请选择业务类型" dbCode="BUSTXT" :isShowKeyAndLabel="true"
                :isCache="false" sort="SRT">
              </c-select>
            </el-form-item>
          </c-col>
          <c-col :span="24">
            <el-form-item label="交易码" :label-width="formLabelWidth" prop="inifrm">
              <c-input v-model="form.inifrm" style="width: 100%" placeholder="请输入交易码" 
                ></c-input>
            </el-form-item>
          </c-col>
          <c-col :span="24">
            <el-form-item label="交易名称" :label-width="formLabelWidth" prop="btnnam">
              <c-input v-model="form.btnnam" placeholder="请输入交易名称" >
              </c-input>
            </el-form-item>
          </c-col>
        </c-col>
        <c-col :span="12">
          <c-col :span="24">
            <el-form-item label="是否主流程" :label-width="formLabelWidth" prop="isMain">
              <c-select v-model="form.isMain" dbCode="CXMFLG" placeholder="请选择是否主流程业务"></c-select>
            </el-form-item>
          </c-col>
           <c-col :span="24">
            <el-form-item label="是否显示" :label-width="formLabelWidth" prop="isShow">
              <c-select v-model="form.isShow" dbCode="CXMFLG" placeholder="请选择是否显示"></c-select>
            </el-form-item>
          </c-col>
          <c-col :span="24">
            <el-form-item label="排序号" :label-width="formLabelWidth" prop="sort">
              <c-input type="number" v-model="form.sort" placeholder="请输入排序号" ></c-input>
            </el-form-item>
          </c-col>
        </c-col>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="commitAdd" v-if="busbtntyp == 'add'">提 交</el-button>
        <el-button type="primary" @click="commitEdit" v-if="busbtntyp == 'edit'">提 交</el-button>
        <el-button @click="dialogAdd = false">返 回</el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
  import Utils from "~/utils";
  import {
    queryByPage,
    deleteById,
    busbtnInfo,
    add,
    edit,
    queryCod
  } from "~/service/manage/busbtn.js";
  import Busbtn, {
    Pattern
  } from "./Busbtn.js";

  import commonFunctions from "~/mixin/commonFunctions.js";

  export default {
    mixins: [commonFunctions],
    name: "",
    props: ["model"],
    inject: [],
    data() {
      return {
        rules: Pattern,
        btnData: [
          // {
          //   bustyp:'LI',
          //   inifrm:'LITOPN',
          //   btnnam:'进口信用证开立',
          //   isMain:'Y',
          //   isShow:'Y',
          //   sort: 1
          // }
        ],
        busbtnColumns: [
          {
            label: '业务类型',
            prop: 'bustyp',
            width: 'auto'
          },
          {
            label: '交易码',
            prop: 'inifrm',
            width: 'auto'
          },
          {
            label: '交易名称',
            prop: 'btnnam',
            width: 'auto'
          },
          {
            label: '是否主流程',
            prop: 'isMain',
            width: 'auto'
          },
          {
            label: '是否显示',
            prop: 'isShow',
            width: 'auto'
          },
          {
            label: '排序',
            prop: 'sort',
            width: 'auto'
          },
        ],
        dialogNam: {
          'add': '交易码信息--新增',
          'edit': '交易码信息--编辑',
          'info': '交易码信息--查看',
        },
        isDisabled: false,
        isShowUpdBtn: false,
        isShowDelBtn: false,
        isShowAddBtn: false,
        isShowDisplayBtn: false,
        searchLoading: false,
        dialogAdd: false,
        form: new Busbtn().data,
        busbtntyp: "",
        formLabelWidth: "150px",
        startDatePicker: this.beginDate(),
        endDatePicker: this.processDate(),
      };
    },
    activated() {
      const {
        update
      } = this.$route.params
      if (update) {
        this.onSearch();
      }
    },
    created() {
      this.onInfbusbtnSearch();
    },
    mounted() {
      this.getHiddenButtonVue();
    },
    methods: {
      getHiddenButtonVue() {
        const loading = this.loading();
        this.$buttonControlService.hiddenBtnList()
          .then((res) => {
            // 【xq】按钮
            let hasDisplay = res.some((item) => {
              return item.ITEMID === 'busbtnDisplayBtn';
            })
            if (hasDisplay) {
              this.isShowDisplayBtn = false;
            } else {
              this.isShowDisplayBtn = true;
            }

            // 【新增】按钮
            let hasInsert = res.some((item) => {
              return item.ITEMID === 'busbtnInsertBtn';
            })
            if (hasInsert) {
              this.isShowAddBtn = false;
            } else {
              this.isShowAddBtn = true;
            }
            // 【修改】按钮
            let hasUpdate = res.some((item) => {
              return item.ITEMID === 'busbtnUpdateBtn';
            })
            if (hasUpdate) {
              this.isShowUpdBtn = false;
            } else {
              this.isShowUpdBtn = true;
            }
            // 【删除】按钮
            let hasDelete = res.some((item) => {
              return item.ITEMID === 'busbtnDeleteBtn';
            })
            if (hasDelete) {
              this.isShowDelBtn = false;
            } else {
              this.isShowDelBtn = true;
            }
            loading.close();
          })
      },
      changeNewCur() {
        if (this.form.seq != '-1') {
          this.form.newbusbtn = '';
        }
      },
      beginDate() {
        const self = this
        return {
          disabledDate(time) {
            if (self.form.enddat) { //如果结束时间不为空,则小于结束时间
              return new Date(self.form.enddat).getTime() < time.getTime()
            } else {
              // return time.getTime() > Date.now()//开始时间不选时,结束时间最大值小于等于当天
            }
          }
        }
      },
      processDate() {
        const self = this
        return {
          disabledDate(time) {
            if (self.form.begdat) { //如果开始时间不为空,则结束时间大于开始时间
              return new Date(self.form.begdat).getTime() > time.getTime()
            } else {
              // return time.getTime() > Date.now()//开始时间不选时,结束时间最大值小于等于当天
            }
          }
        }
      },
      toBbabusbtn() {
        this.dialogAdd = true;
        this.isDisabled = false;
        this.busbtntyp = "add";
        this.form = new Busbtn().data;
      },
      async handleReset() {
        this.model.cod = ""
        this.model.busbtnnam = ""
      },
      onSearch() {
        this.model.pageSize = PageSize;
        this.model.pageNumber = 1;
        this.onInfbusbtnSearch();
      },
      onInfbusbtnSearch() {
        this.searchLoading = true;
        delete this.model.isModify;
        delete this.model.modifySet;
        queryByPage(this.model).then(res => {
          if (res.respCode == SUCCESS) {
            const list = res.data.list
            this.btnData = list
            this.model.pageNumber = res.data.pageNumber
            this.model.pageSize = res.data.pageSize
            this.model.total = res.data.total
            this.searchLoading = false;
          } else {
            this.searchLoading = false;
            this.$notify.error("查询失败");
          }
        })
      },
      commitAdd() {
        this.$refs.modelForm.validate((validated) => {
          if (validated) {
            delete this.form.isModify;
            delete this.form.modifySet;
            add(this.form).then((res) => {
                      if (res.errorCode == "AAAAAA" || res.respCode == "AAAAAA") {
                        this.$notify.success("新增成功!");
                        this.dialogAdd = false;
                        //此方法为了刷新dbCode列表数据
                        // this.$refs.selectCur.init();
                        this.onInfbusbtnSearch();
                      } else {
                        this.$notify.error(res.respMsg);
                      }
                    })
                    }
                  });
               },

      commitEdit() {
        this.$refs.modelForm.validate((validated) => {
          if (validated) {
            delete this.form.isModify;
            delete this.form.modifySet;
            edit(this.form)
              .then((res) => {
                if (res.errorCode == "AAAAAA" || res.respCode == "AAAAAA") {
                  this.$notify.success("保存成功!");
                  this.dialogAdd = false;
                  // this.$refs.selectCur.init();
                  this.onInfbusbtnSearch();
                } else {
                  this.$notify.error(res.respMsg);
                }
              })
          } else {
            this.$notify.error({
              title: '失败',
              message: '请检查必输项!'
            });
          }
        });
      },
      queryFunc(pageNumber, pageSize) {
        this.model.pageNumber = pageNumber
        this.model.pageSize = pageSize
        this.onInfbusbtnSearch()
      },
      onChange() {
        this.form.cod = this.form.cod.trim()
        if (this.form.cod != "") {
          delete this.form.isModify;
          delete this.form.modifySet;
          queryCod(this.form).then((res) => {
            if (res.respCode == "AAAAAA") {
              if (res.data) {
                this.$notify.error("币种代码已存在,请修改")
              }
            } else {
              this.$notify.error("检验唯一性失败")
            }
          });
        }
      },
      onChange2() {
        this.form.busbtnnam = this.form.busbtnnam.trim()
      },
      busbtnDisplay(row) {
        busbtnInfo(row).then((res) => {
          if (res.respCode == SUCCESS) {
            if (res.data.id) {
              this.form = res.data;
              this.isDisabled = true;
              this.busbtntyp = "info";
              this.dialogAdd = true;
            }
          } else {
            this.$notify.error("交易码查询失败")
          }
        });
      },
      busbtnEdit(row) {
        busbtnInfo(row).then((res) => {
          if (res.respCode == SUCCESS) {
            if (res.data.id) {
              this.isDisabled = false;
              this.form = res.data;
              this.busbtntyp = "edit";
              this.dialogAdd = true;
            }
          } else {
            this.$notify.error("币种不存在")
          }
        });
      },
      busbtnDelete(row) {
        this.$confirm("是否确认删除?", "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning",
          })
          .then(() => {
            deleteById(row)
              .then((res) => {
                if (res.errorCode == "AAAAAA" || res.respCode == "AAAAAA") {
                  this.$notify.success("删除成功!");
                  // this.$refs.selectCur.init();
                  this.onInfbusbtnSearch();
                } else {
                  this.$notify.error("删除失败!");
                }
              })
          })
          .catch(() => {
            this.$message({
              type: "info",
              message: "已取消删除",
            });
          });
      },
    },
  };
</script>

<style scoped>
  .table-button-item-list {
    padding: 0;
    margin: 0;
  }

  .table-button-item-list li {
    list-style: none;
    padding: 5px 0;
    text-align: center;
    color: #606266;
    busbtnsor: pointer;
  }
</style>