<template>
  <basic-page-edit :desc="desc" :dataId="getDataId()" :options="pageOptions">

  </basic-page-edit>
</template>

<script>
import BASE_URL from '@/services/mes/api.js';
const settings = require('../../basic/settings.js');

export default {

  i18n: require('./i18n'),
  components: {},
  props: {
    pageMode: {
      type: String,
      default: "edit"
    },
    dataId: {
    }
  },

  data() {

    return {
      pageOptions: {}
    };
  },

  computed: {
    desc() {
      return this.$t('editPageDesc')
    }
  },


  created() {

    this.optionsInit();
    this.dataInit();

  },
  // 函数
  methods: {



    optionsInit() {


      let date = new Date();
      let year = date.getFullYear();
      let month = (date.getMonth() + 1).toString().padStart(2, '0');
      let day = date.getDate().toString().padStart(2, '0');
      let dateString = `${year}-${month}-${day}`;
      // 页面数据变量
      var pageData = {
        // 当前项目名称
        currentConfigName: "",
        // 当前项目ID
        currentBeid: 0,

        addPageUrl: "/MesStaff/MesStaffAdd",
        editPageUrl: "/MesStaff/MesStaffUpdate/",
        listPageUrl: "/MesStaff/MesStaffList",

        uploadDefaultImg: null,
        detailDataFieldName: "mes_staff",

        actions: {
          // =============================== 接口地址 自动生成 Start ===============================
          MesStaffList: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/list`, // 员工列表
          MesStaffDetail: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/detail`, // 员工详情
          MesStaffCreate: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/create`, // 创建员工
          MesStaffUpdate: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/update`, // 更新员工
          MesStaffDelete: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/detele`, // 删除员工
          MesStaffBatchDelete: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/batchDelete`, // 批量删除员工
          MesStaffBatchUpdate: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/batchUpdate`, // 批量更新员工
          MesStaffBatchCreate: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/batchCreate`, // 批量创建员工
          MesStaffExportExcel: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/export/excel`, // 导出员工数据到EXCEL
          MesStaffImportExcel: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/import/excel`, // 批量导入EXCEL员工数据
          MesStaffOpen: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/open`, // 打开员工
          MesStaffClose: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/close`, // 关闭员工
          StaffWagesList: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/wages/list`, // 员工工资方案列表
          StaffWagesDetail: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/wages/detail`, // 员工工资方案详情
          StaffWagesCreate: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/wages/create`, // 创建员工工资方案
          StaffWagesUpdate: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/wages/update`, // 更新员工工资方案
          StaffWagesDelete: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/wages/detele`, // 删除员工工资方案
          StaffWagesBatchDelete: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/wages/batchDelete`, // 批量删除员工工资方案
          StaffWagesBatchUpdate: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/wages/batchUpdate`, // 批量更新员工工资方案
          StaffWagesBatchCreate: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/wages/batchCreate`, // 批量创建员工工资方案
          StaffWagesExportExcel: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/wages/export/excel`, // 导出员工工资方案数据到EXCEL
          StaffWagesImportExcel: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/wages/import/excel`, // 批量导入EXCEL员工工资方案数据
          StaffTypeList: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/type/list`, // 员工类型列表
          StaffTypeDetail: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/type/detail`, // 员工类型详情
          StaffTypeCreate: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/type/create`, // 创建员工类型
          StaffTypeUpdate: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/type/update`, // 更新员工类型
          StaffTypeDelete: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/type/detele`, // 删除员工类型
          StaffTypeBatchDelete: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/type/batchDelete`, // 批量删除员工类型
          StaffTypeBatchUpdate: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/type/batchUpdate`, // 批量更新员工类型
          StaffTypeBatchCreate: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/type/batchCreate`, // 批量创建员工类型
          StaffTypeExportExcel: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/type/export/excel`, // 导出员工类型数据到EXCEL
          StaffTypeImportExcel: `${BASE_URL.BASE_URL}/MesStaff/v1/staff/type/import/excel`, // 批量导入EXCEL员工类型数据
          MesStaffPrintTemplateList: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/print/template/list`, // 员工打印模板列表
          MesStaffPrintTemplateDetail: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/print/template/detail`, // 员工打印模板详情
          MesStaffPrintTemplateCreate: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/print/template/create`, // 创建员工打印模板
          MesStaffPrintTemplateUpdate: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/print/template/update`, // 更新员工打印模板
          MesStaffPrintTemplateDelete: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/print/template/detele`, // 删除员工打印模板
          MesStaffPrintTemplateBatchDelete: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/print/template/batchDelete`, // 批量删除员工打印模板
          MesStaffPrintTemplateBatchUpdate: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/print/template/batchUpdate`, // 批量更新员工打印模板
          MesStaffPrintTemplateBatchCreate: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/print/template/batchCreate`, // 批量创建员工打印模板
          MesStaffPrintTemplateExportExcel: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/print/template/export/excel`, // 导出员工打印模板数据到EXCEL
          MesStaffPrintTemplateImportExcel: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/print/template/import/excel`, // 批量导入EXCEL员工打印模板数据

          // =============================== 接口地址 自动生成 End ===============================
        },

        keyName: 'id',
        // 是否编辑模式
        isEdit: false,
        // 表单数据
        formOptions: {
          data: {
            // =============================== 表单数据 自动生成 Start ===============================

            id: 0,
            name: "",
            code: "",
            phone: "",
            email: "",
            password: "",
            salt: "",
            nickname: "",
            avatar: "",
            openid: "",
            unionid: "",
            session_key: "",
            department_id: 0,
            process_id: 0,
            process_scheme_id: 0,
            entry_date: dateString,
            departure_date: "",
            is_piecework: 0,
            remark: "",
            status: 1,
            create_uid: 0,
            update_uid: 0,
            create_time: new Date(2100, 1, 1).getTime() / 10000,
            update_time: new Date(2100, 1, 1).getTime() / 10000,

            // =============================== 表单数据 自动生成 End ===============================
          },
          // 标题宽度
          titleWidth: 100,
          // 标题对齐方式
          titleAlign: 'right',

          // 表单校验规则
          rules: {
            // =============================== 表单校验 自动生成 Start ===============================

            name: [
              { required: true, message: '请输入员工姓名' }
            ],
            code: [
              { required: true, message: '请输入工号' }
            ]

            // =============================== 表单校验 自动生成 End ===============================
          },
          // 表单项
          items: [
            // =============================== 表单项 自动生成 Start ===============================

            {
              title: '左侧',
              span: 19,
              children: [
                { field: 'name', title: '员工姓名', span: 12, itemRender: { name: '$input' } },
                { field: 'code', title: '员工工号', span: 12, itemRender: { name: '$input' } },

                {
                  title: '部门', span: 12,
                  field: 'base_department',
                  dataRule: {
                    fromField: "id",
                    saveField: "department_id" // 如果表单项存储的是对象，将从fromField中取得值保存到saveField
                  },
                  itemRender: {
                    name: 'MkFormDataSelector', props: {
                      params: {
                        dataType: "object",
                        valueField: "id",
                        textField: "name",
                        listdataFieldName: 'BaseDepartment',
                        dataUrl: `${BASE_URL.BASE_URL}/BaseDepartment/v1/base/department/list`
                      }
                    }
                  }
                },
                { field: 'phone', title: '员工电话', span: 12, itemRender: { name: '$input' } },
                { field: 'email', title: '员工邮箱', span: 12, itemRender: { name: '$input' } },
                //{ field: 'password', title: '员工密码', span: 12, itemRender: { name: '$input' } },
                { field: 'salt', title: '员工盐', span: 12, itemRender: { name: '$input' } },
                { field: 'nickname', title: '员工昵称', span: 12, itemRender: { name: '$input' } },

                { field: 'entry_date', dataRule: { type: "timestamp" }, title: '入职日期', span: 12, itemRender: { name: '$input', props: { type: "date" } } },

                { field: 'departure_date', dataRule: { type: "timestamp" }, title: '离职日期', span: 12, itemRender: { name: '$input', props: { type: "date" } } },

                { field: 'is_piecework', title: '是否计件', span: 12, itemRender: { name: '$select', props: { options: settings.options_yesorno } } },

                { field: 'status', title: '状态', span: 12, itemRender: { name: '$select', props: { options: settings.options_status_staff } } },
                { field: 'remark', title: '备注', span: 24, itemRender: { name: '$input' } },

              ]
            },
            {
              title: '右侧',
              span: 5,
              children: [
                { field: 'avatar', span: 12, itemRender: { name: 'MkFormCropper' } },
              ]
            },



            // =============================== 表单项 自动生成 End ===============================
          ]
        },
        // 新增模式表单项
        addModeItems: [

        ],


      };

      pageData.actions.get = pageData.actions.MesStaffDetail;
      pageData.actions.create = pageData.actions.MesStaffCreate;
      pageData.actions.update = pageData.actions.MesStaffUpdate;
      // 合并表单数据及配置
      pageData.formOptions = Object.assign({}, this.$mk.config.defaults.formOptions, pageData.formOptions);

      this.pageOptions = pageData;
    },

    dataInit() {
      // 获取路由的id参数
      let dataId = this.getDataId();
      // 如果有id参数，说明是编辑模式
      if (dataId) {
        const json = `{"id":${dataId}}`;
        this.$mk.post({
          url: this.pageOptions.actions.get,
          loading: "加载中...",
          data: json,
          config: {
            headers: {
              'Content-Type': 'application/json'
            }
          }
        }).then(a => {

          let detailDataFieldName = this.pageOptions.detailDataFieldName;

          if (a.data[detailDataFieldName].entry_date > 0) {
            a.data[detailDataFieldName].entry_date = new Date(a.data[detailDataFieldName].entry_date * 1000);
          }
          if (a.data[detailDataFieldName].departure_date > 0) {
            a.data[detailDataFieldName].departure_date = new Date(a.data[detailDataFieldName].departure_date * 1000);
          }
          if (a.data[detailDataFieldName].create_time > 0) {
            a.data[detailDataFieldName].create_time = new Date(a.data[detailDataFieldName].create_time * 1000);
          }
          if (a.data[detailDataFieldName].update_time > 0) {
            a.data[detailDataFieldName].update_time = new Date(a.data[detailDataFieldName].update_time * 1000);
          }

          this.pageOptions.formOptions.data = a.data[detailDataFieldName];

          this.$forceUpdate()
        }).catch((a) => {
          this.$mk.error(a.data.msg);
        });

        this.pageOptions.isEdit = true;

        this.$forceUpdate()
      } else {
        // 如果没有id参数，说明是新增模式
        this.addModeItems.forEach(item => {
          this.pageOptions.formOptions.items.push(item);
        })

      }
    },

    // 获取路由的id参数
    getDataId() {
      let dataId = this.dataId;
      if (this.$route.params.id) {
        dataId = this.$route.params.id;
      }
      if (!dataId) {
        dataId = 0;
      }
      return dataId;
    }
  },
  // 监听属性
  watch: {

  }
};

</script>
 