/*
 * @Author: zwq
 * @Date: 2022-08-24 11:19:43
 * @LastEditors: zwq
 * @LastEditTime: 2024-04-10 15:46:19
 * @Description:
 */
import { listData } from "@/api/system/dict/data"; //数据字典接口
export default {
  data() {
    /* eslint-disable */
    return {
      urlOptions: {
        createURL: '', //新增接口
        updateURL: '', //编辑提交接口
        infoURL: '', //编辑时获取单条数据接口
        codeURL: '', //获取code接口(返回结果为dataForm.code字段)
        optionArrUrl: [], //需要获取下拉框的方法数组
        optionArr: {}, //需要获取下拉框的方法数组的返回结果
        dictNameList: [], //数据字典name数组
        dictArr: {}, //需要获取数据字典的方法数组的返回结果
      },
      visible: false,
      setData: false, // 是否需要【编辑时获取单条数据接口】返回的数据操作
    }
  },
  created() {
  },
  activated() {
  },
  methods: {
    init(id) {
      this.dataForm.id = id || null;
      this.visible = true;
      if (this.urlOptions.optionArrUrl.length > 0) {
        this.getArr()
      }
      if (this.urlOptions.dictNameList.length > 0) {
        this.getDict()
      }
      this.$nextTick(() => {
        this.$refs["dataForm"].resetFields();
        if (this.dataForm.id) {
          this.urlOptions.infoURL(id).then(response => {
            this.dataForm = response.data;
            if (this.setData) {
              this.setDataForm()
            }
          });
        } else {
          if (this.urlOptions.codeURL) {
            this.getCode()
          }
				}
      });
    },
    /** 获取code */
		getCode() {
			this.urlOptions.codeURL()
				.then(({ data: res }) => {
					this.dataForm.code = res;
				})
				.catch(() => {});
		},
    /** 获取下拉框数组 */
    getArr() {
      const params = {
        pageSize: 100,
        pageNo: 1,
      }
      this.urlOptions.optionArrUrl.forEach((item, index) => {
        item(params).then(({ data: res }) => {
          this.$set(this.urlOptions.optionArr, `arr${index}`, res.list)
        })
          .catch(() => {
          });
      });
    },
    /** 查询字典数据列表 */
    getDict() {
      this.urlOptions.dictNameList.forEach((item,index)=>{
        const queryParams = {
          pageNo: 1,
          pageSize: 99,
          dictType: item,
        }
        listData(queryParams).then(response => {
          this.$set(this.urlOptions.dictArr, `dict${index}`, response.data.list)
        });
      })
    },
    // 表单提交
    dataFormSubmit() {
      this.$refs["dataForm"].validate((valid) => {
        if (!valid) {
          return false;
        }
        // 修改的提交
        if (this.dataForm.id) {
          this.urlOptions.updateURL(this.dataForm).then(response => {
            this.$modal.msgSuccess("修改成功");
            this.visible = false;
            this.$emit("refreshDataList");
          });
          return;
        }
        // 添加的提交
        this.urlOptions.createURL(this.dataForm).then(response => {
          this.$modal.msgSuccess("新增成功");
          this.visible = false;
          this.$emit("refreshDataList");
        });
      });
    },
    /** 清空form */
    formClear() {
      if (this.$refs.dataForm!==undefined) {
          this.$refs.dataForm.resetFields();
      }
    }
  }
}