<template>
  <template-page
    v-if="pageShow"
    ref="pageRef"
    :get-list="getList"
    :exportList="exportList"
    :table-attributes="tableAttributes"
    :table-events="tableEvents"
    :options-evens-group="optionsEvensGroup"
    :moreParameters="moreParameters"
    :column-parsing="columnParsing"
    :operation="operation()"
    key="pageType"
  >
    <div class="cartographer_big">
      <el-dialog
        title="支付商户"
        width="100%"
        :modal="false"
        :visible.sync="formDialog"
        :before-close="handleClose"
      >
        <zj-page-container>
          <zj-page-fill>
            <div style="box-sizing: border-box; padding: 20px 20px 0 20px">
              <zj-form-container
                ref="formRef"
                :form-data="formData"
                :form-attributes="{ size: 'mini' }"
              >
                <zj-form-module
                  title="支付商户"
                  label-width="140px"
                  :form-data="formData"
                  :form-items="formItems"
                >
                </zj-form-module>
              </zj-form-container>
            </div>
          </zj-page-fill>
          <div
            style="
              text-align: right;
              box-sizing: border-box;
              padding: 16px 20px;
            "
          >
            <el-button size="mini" @click="handleClose">取消</el-button>
            <el-button
              v-if="!xiangqing"
              size="mini"
              type="primary"
              @click="save"
              >保存</el-button
            >
          </div>
        </zj-page-container>
      </el-dialog>
    </div>
  </template-page>
</template>

<script>
import TemplatePage from "@/components/template/template-page-1.vue";
import import_mixin from "@/components/template/import_mixin.js";
import operation_mixin from "@/components/template/operation_mixin.js";
import {
  adminCompanyMchList,
  adminCompanyListExport,
  adminCompanyAdd,
  adminCompanyEdit,
  adminCompanyDetail,
} from "@/api/payingMerchant.js";
import { required } from "@/components/template/rules_verify.js";
export default {
  components: { TemplatePage },
  mixins: [import_mixin, operation_mixin],
  data() {
    return {
      pageType: "list",
      pageShow: true,
      // 表格属性
      tableAttributes: {
        // 启用勾选列
        selectColumn: false,
      },
      // 表格事件
      tableEvents: {
        "selection-change": this.selectionChange,
      },
      // 勾选选中行
      recordSelected: [],
      /** 表单变量 */
      formDialog: false,
      formData: {
        appId: "",
        companyName: "",
        companyWechatId: "",
        del: "",
        mchId: "",
        mchKey: "",
        orderPrefix: "",
        remark: "",
        status: "",
        subAppId: "",
        subMchId: "",
        subSecret: "",
      },
      xiangqing: false,
    };
  },
  computed: {
    // 事件组合
    optionsEvensGroup() {
      return [
        [
          [
            this.optionsEvensAuth("add", {
              click: this.openForm,
            }),
          ],
        ],
      ];
    },
    // 更多参数
    moreParameters() {
      return [];
    },
    formItems() {
      return [
        {
          isShow: true,
          name: "el-input",
          md: 6,
          attributes: {
            disabled: this.xiangqing,
            rows: 3,
            placeholder: "请输入",
          },
          formItemAttributes: {
            label: "电子商户名称",
            prop: "companyName",
            rules: [...required],
          },
        },
        {
          isShow: true,
          name: "el-input",
          md: 6,
          attributes: {
            disabled: this.xiangqing,
            rows: 3,
            placeholder: "请输入",
          },
          formItemAttributes: {
            label: "appid ",
            prop: "appId",
            rules: [...required],
          },
        },
        {
          isShow: true,
          name: "el-input",
          md: 6,
          attributes: {
            disabled: this.xiangqing,
            rows: 3,
            placeholder: "请输入",
          },
          formItemAttributes: {
            label: "子商户应用appid",
            prop: "subAppId",
          },
        },
        {
          isShow: true,
          name: "el-input",
          md: 6,
          attributes: {
            disabled: this.xiangqing,
            rows: 3,
            placeholder: "请输入",
          },
          formItemAttributes: {
            label: "mchid",
            prop: "mchId",
            rules: [...required],
          },
        },
        {
          isShow: true,
          name: "el-input",
          md: 6,
          attributes: {
            disabled: this.xiangqing,
            rows: 3,
            placeholder: "请输入",
          },
          formItemAttributes: {
            label: "子商户mchid",
            prop: "subMchId",
          },
        },
        {
          isShow: true,
          name: "el-input",
          md: 6,
          attributes: {
            disabled: this.xiangqing,
            rows: 3,
            placeholder: "请输入",
          },
          formItemAttributes: {
            label: "key",
            prop: "mchKey",
            rules: [...required],
          },
        },
        {
          md: 6,
          isShow: true,
          name: "el-radio",
          options: [
            { label: "启用", value: true },
            { label: "禁用", value: false },
          ],
          attributes: {
            disabled: this.xiangqing,
          },
          formItemAttributes: {
            label: "状态",
            prop: "status",
            rules: [...required],
          },
        },
        {
          isShow: true,
          name: "el-input",
          md: 24,
          attributes: {
            disabled: this.xiangqing,
            type: "textarea",
            rows: 3,
            placeholder: "请输入",
          },
          formItemAttributes: {
            label: "支付说明",
            prop: "remark",
          },
        },
      ];
    },
  },
  methods: {
    // 列表请求函数
    getList: adminCompanyMchList,
    // 列表导出函数
    exportList: adminCompanyListExport,
    // 表格列解析渲染数据更改
    columnParsing(item, defaultData) {
      return defaultData;
    },
    // 监听勾选变化
    selectionChange(data) {
      this.recordSelected = data;
    },
    // 打开创建弹窗
    openForm() {
      this.formDialog = true;
    },
    // 打开详情弹窗
    openDetailForm(row) {
      Promise.all([adminCompanyDetail({ id: row.companyWechatId })]).then(
        ([res1]) => {
          this.formData = { ...res1.data };
          this.formDialog = true;
        }
      );
    },
    handleClose() {
      this.$refs?.formRef?.resetFields();
      this.$data.formData = this.$options.data().formData;
      this.formDialog = false;
      this.xiangqing = false;
    },
    // 操作按钮
    operation() {
      return this.operationBtn({
        edit: {
          click: ({ row, index, column }) => {
            this.openDetailForm(row);
          },
        },
        details: {
          click: ({ row, index, column }) => {
            Promise.all([adminCompanyDetail({ id: row.companyWechatId })]).then(
              ([res1]) => {
                this.formData = { ...res1.data };
                this.formDialog = true;
                this.xiangqing = true;
              }
            );
          },
        },
      });
    },
    // 保存
    save() {
      this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
        if (valid) {
          (this.formData?.companyWechatId ? adminCompanyEdit : adminCompanyAdd)(
            this.formData
          ).then((res) => {
            this.$message({
              type: "success",
              message: "保存成功",
            });
            this.handleClose();
            this.$refs.pageRef.refreshList();
          });
        }
      });
    },
  },
};
</script>

<style lang="scss" scoped></style>
