export default { created() { // this.getData(); }, beforeDestroy() { clearTimeout(this.loadingTimer); }, methods: { // 渲染前置处理 beforeRender(data) { if (data.entity.attachmentPath) { data.entity.attachmentPathList = [ { url: data.entity.attachmentPath, name: data.entity.attachmentPath, }, ]; } data.entity.inspect && data.entity.inspect == 0 ? (data.entity.inspect = false) : (data.entity.inspect = true); return data; }, // 渲染后置处理 afterRender(data) {}, // 提交表单的前置处理 beforeSubmit(data) { data.attachmentPathList && data.attachmentPathList.length > 0 ? (data.attachmentPath = data.attachmentPathList[0].url) : (data.attachmentPath = ""); if (data.leavePerson == 0 || data.leavePerson) { if (this.dict.staffList) { data.leavePerson = this.dict.staffList[this.form.leavePerson]; for (let key in this.dict.staffList) { if (this.dict.staffList[key] == data.leavePerson) { data.leavePersonId = Number(key); } } } } data.windowWorkmanPerformDetailList && data.windowWorkmanPerformDetailList.length > 0 ? (data.windowWorkmanPerformDetailList = data.windowWorkmanPerformDetailList.map( (v) => { v.bonusScore = Number(v.bonusScore); v.discipline = Number(v.discipline); v.specification = Number(v.specification); v.management = Number(v.management); v.efficiency = Number(v.efficiency); v.sumScore = Number(v.sumScore); return v; } )) : ""; return data; }, // 提交表单的后置处理, 会阻断默认的回退行为 afterSubmit(data) { this.$router.go(-1); }, // 开启、关闭 changePath(path) { this.pageInfo.list = path + "/list"; this.pageInfo.del = path + "/delete"; this.pageInfo.add = path + "/add"; this.pageInfo.edit = path + "/edit"; this.pageInfo.view = path + "/view"; }, // 默认拉取数据 getData() { this.loading = true; this.$get(this.urls.currUrl || this.pageInfo.currUrl, this.query) .then(({ data }) => { const res = this.beforeRender(data); //转化枚举类型字段的number值为arrays res.entity = this.util_toArrays(res.entity, this.toArrays); // 转化枚举类型字段的number值为string res.entity = this.util_toString(res.entity, this.toString); // res.entity = this.util_toDateStr(res.entity, this.toDate); this.form = Object.assign({}, this.form, res.entity); this.dict = Object.assign({}, this.dict, res.dict); this.$route.name == "window/owner/list" ? this.$post("/staff/list", { page: 1, size: -1 }).then((res) => { if (res.code == 1) { this.dict.staffList = res.data.data; this.afterRender(res); } }) : this.afterRender(res); }) .catch((error) => { this.$message.error(error.message); throw error; }) .then((data) => { clearTimeout(this.loadingTimer); this.loadingTimer = setTimeout(() => { this.loading = false; }, 300); }); }, // 提交表单 submitForm(ref) { let url = this.urls.saveUrl || this.pageInfo.saveUrl; if (url == "/staff/perform/stat/save") { url = "/perform/perpose/save"; } else if (url == "/perform/rules/attend/save") { url = "/perform/rules/category/save"; } else if (url == "/perform/staff/conf/save") { sessionStorage.getItem("type") == 1 ? (url = "/perform/dept/conf/save") : sessionStorage.getItem("type") == 2 ? (url = "/perform/staff/conf/save") : (url = "/window/owner/save"); } const el = this.$refs.form; el.validate((valid) => { if (!valid) return; this.loading = true; this.form.leaveType ? (this.form.leaveType = this.form.leaveType.toString()) : ""; this.form.inspect ? (this.form.inspect = 1) : (this.form.inspect = 0); this.$post(url, this.beforeSubmit(this.form)) .then((res) => { this.$message.success(res.msg); this.afterSubmit(res); }) .catch((error) => { this.$message.error(error.message); }) .then((data) => { clearTimeout(this.loadingTimer); this.loadingTimer = setTimeout(() => { this.loading = false; }, 200); }); }); }, // 复制一个数组或对象 util_copy(data) { return JSON.parse(JSON.stringify(data)); }, // 工具方法,把数字转化为字符串 util_toString(data, array) { //原始数据 const dataCopy = Object.assign({}, data); array.forEach((item) => { //如果相等做操作 dataCopy[item] = dataCopy[item] === undefined ? "" : dataCopy[item] + ""; }); return dataCopy; }, // 工具方法,把字符串转化为数组 util_toArrays(data, array) { const dataCopy = Object.assign({}, data); array.forEach((item) => { dataCopy[item] = dataCopy[item] === undefined ? [] : Array.isArray(dataCopy[item]) ? dataCopy[item] : dataCopy[item].split(","); }); return dataCopy; }, // 工具方法,把字符串转化为格式化日期 util_toDateStr(data, array) { const dataCopy = Object.assign({}, data); array.forEach((item) => { dataCopy[item] = dataCopy[item] === undefined ? "" : this.util_formatterDate(dataCopy[item]); }); return dataCopy; }, util_formatterDate(time) { let date = new Date(Number(time)); let Y = date.getFullYear() + "-"; let M = (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1) + "-"; let D = this.panLeft(date.getDate()) + " "; let h = this.panLeft(date.getHours()) + ":"; let m = this.panLeft(date.getMinutes()) + ":"; let s = this.panLeft(date.getSeconds()); return Y + M + D + h + m + s; }, panLeft(num) { return num < 10 ? "0" + num : num; }, // 从dict字段暴力取值,取不到则返回原值 util_formatter(key, val) { try { return this.dict[key][val]; } catch (error) { return val; } }, resetForm(refName) { setTimeout(() => { this.$nextTick(() => { if (this.$refs[refName]) { this.$refs[refName].resetFields(); } }); }, 0); }, }, computed: { pageInfo() { let currUrl = this.$route.path; let urlArray = currUrl.split("/"); let type = urlArray.pop(); urlArray.push("save"); let saveUrl = urlArray.join("/"); urlArray.pop(); urlArray.push("edit"); let editUrl = urlArray.join("/"); urlArray.pop(); urlArray.push("add"); let addUrl = urlArray.join("/"); urlArray.pop(); urlArray.push("view"); let viewUrl = urlArray.join("/"); return { type, currUrl, saveUrl, editUrl, addUrl, viewUrl, }; }, }, data() { return { loadingTimer: null, loading: false, // ajax请求状态 query: this.$route.query, // ajax请求参数 urls: {}, // 用户自定义的请求地址,内容和pageInfo等同 form: {}, // 表单数据 extendFormData: {}, // 额外的表单数据 rules: {}, // 表单验证规则 dict: {}, // 数据字典 toString: [], // 需要把number转化为string的表单字段name数组 toArrays: [], // 需要把number转化为arrays的表单字段name数组 toDate: [], // 需要把number转化为date的表单字段name数组 }; }, };