module.exports = function(inputName,compoenntName) { return `<template> <el-dialog :title="title" :center="true" align="left" top="5vh" width="1040px" @close="closeModel" :close-on-click-modal="false" :visible.sync="showModelThis" v-loading="loading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.8)" > <el-card> <el-row :gutter="10"> <el-col :span="24"> <el-form :model="ruleForm" status-icon :rules="rulesThis" ref="ruleForm" label-width="110px" class="demo-ruleForm" > <el-form-item label="登录名" prop="loginName" v-if="id === 'add' || isDetail" > <el-input v-model="ruleForm.loginName" :disabled="isDetail" ></el-input> </el-form-item> <el-form-item label="姓名" prop="fullName"> <el-input v-model="ruleForm.fullName" :disabled="isDetail" ></el-input> </el-form-item> <el-form-item label="手机号" prop="tel"> <el-input v-model="ruleForm.tel" :disabled="isDetail"></el-input> </el-form-item> <el-form-item label="密码" prop="password" v-if="id === 'add'"> <el-input type="password" placeholder="密码" :maxlength="20" v-model="ruleForm.password" ></el-input> </el-form-item> <el-form-item label="确认密码" prop="password2" v-if="id === 'add'"> <el-input type="password" placeholder="再次输入密码" :maxlength="20" v-model="ruleForm.password2" ></el-input> </el-form-item> </el-form> </el-col> <el-col :span="24" style="text-align: right;"> <el-button type="primary" @click="submitForm" v-if="!isDetail" >保 存 </el-button> <el-button @click="showModelThis = false">{{ isDetail ? "关 闭" : "取 消" }}</el-button> </el-col> </el-row> </el-card> </el-dialog> </template> <script> import asyncRequest from "@/apis/service/${inputName}"; import resToken from "@/mixins/resToken"; import { isnumber, isMobile, validEmail, isAlphanumeric, isChinese, isEmoticon, validAlphabets, } from "@/utils/validate"; export default { name: '${compoenntName}', props: ["showModel", "id", "isDetail","sitem"], mixins: [resToken], data() { const validateusername = (rule, value, callback) => { if (value === "") { callback(new Error("账号不能为空!")); } else { if (value.length < 6 || value.length > 18) { callback(new Error("账号规则为6~18位数字与字母组合!")); } else { if (isnumber(value)) { callback(new Error("账号规则为6~18位数字与字母组合!")); } else if (validAlphabets(value)) { callback(new Error("账号规则为6~18位数字与字母组合!")); } else if (!isAlphanumeric(value)) { callback(new Error("账号规则为6~18位数字与字母组合!")); } else { callback(); } } } }; const validatename = (rule, value, callback) => { if (value === "") { callback(new Error("真实姓名不能为空!")); } else { if (value.length < 2 || value.length > 12) { callback(new Error("真实姓名规则为2~12位汉字!")); } else { if (!isChinese(value)) { console.log(9999); callback(new Error("真实姓名规则为2~12位汉字!")); } else if (isEmoticon(value)) { console.log(2345); callback(new Error("真实姓名规则为2~12位汉字!")); } else { callback(); } } } }; const validatemobile = (rule, value, callback) => { if (value === "") { callback(new Error("手机号不能为空!")); } else { if (!isMobile(value)) { callback(new Error("手机号格式不正确!")); } else { callback(); } } }; const validateEmail = (rule, value, callback) => { if (value === "") { callback(); } else { if (!validEmail(value)) { callback(new Error("邮箱格式不正确!")); } else { callback(); } } }; return { loading: false, title: "添加账号", showModelThis: this.showModel, ruleForm: { username: "", // 账号 name: "", // 真实姓名 mobile: "", email: "", role_id: "", status: "1", item: [], }, rulesThis: this.rules, rules: { name: [ { required: true, validator: validatename, trigger: "blur", }, ], username: [ { required: true, validator: validateusername, trigger: "blur", }, ], mobile: [ { required: true, validator: validatemobile, trigger: "blur", }, ], email: [ { required: false, validator: validateEmail, trigger: "blur", }, ], role_id: [ { required: true, message: "请选择角色", trigger: "change", }, ], item: [ { type: "array", required: true, message: "请选择所在部门", trigger: "change", }, ], status: [ { required: true, message: "请选择状态", trigger: "change", }, ], } }; }, watch: { showModel: function(val) { this.showModelThis = val; if (val) { this.initForm(); } }, showModelThis(val) { if (!val) { this.$emit("cancel"); } } }, methods: { closeModel() { console.log("closeModel!!"); }, async initForm() { this.loading = true; // await this.getRole(); if (this.id === "add") { this.title = "添加账号"; this.rulesThis = this.rules; await this.resetForm(); } else { if (this.isDetail) { this.title = "账号详情"; this.rulesThis = {}; } else { this.title = "修改账号"; this.rulesThis = this.rules; } await this.resetForm(this.sitem); // await this.initData() } this.loading = false; }, // async getRole() { // const model = { // status: "", // 状态 // level: "", // 姓名 // role_name: "", // }; // const res = await asyncRequest.getRole(model); // if (res && res.code === 0 && res.data) { // this.roleList = res.data; // this.roleList.map((v1) => { // v1.id += ""; // v1.status += ""; // return v1; // }); // } // }, async initData() { const res = await asyncRequest.detail({ id: this.id }); if (res && res.code === 0 && res.data) { this.ruleForm = res.data; this.ruleForm.role_id = this.ruleForm.role; } else if (res && res.code >= 100 && res.code <= 104) { await this.logout(); } else { this.$message.warning(res.message); } }, async resetForm(sitem) { // 重置 await this.$nextTick(() => { if (this.$refs.ruleForm) { this.$refs.ruleForm.resetFields(); this.$refs.ruleForm.clearValidate(); const { username, nickname, mobile, email, roleid, status, item } = sitem; this.ruleForm = { username: username || "", // 账号 name: nickname || "", // 真实姓名 mobile: mobile || "", email: email || "", role_id: roleid || "", status: status || "", item: item || [], }; if (this.id === "add" || this.isDetail) { this.rules.username[0].required = false; } } }); }, async submitForm() { await this.$refs.ruleForm.validate(async (valid) => { if (valid) { this.loading = true; const { username, name, mobile, email, role_id, status } = JSON.parse( JSON.stringify(this.ruleForm) ); const model = { id: this.id, username: username || "", // 账号 nickname: name || "", // 真实姓名 mobile: mobile || "", email: email || "", role: role_id || "", status: status || "", }; let res = {}; if (this.id === "add") { delete model["id"]; res = await asyncRequest.add(model); } else { res = await asyncRequest.update(model); } this.loading = false; if (res && res.code === 0) { const title = this.id === "add" ? "添加成功" : "修改成功"; this.$notify.success({ title, message: "", }); this.showModelThis = false; // 刷新 this.$emit("refresh"); } else if (res && res.code >= 100 && res.code <= 104) { await this.logout(); } else { this.$message.warning(res.message); } } else { console.log("error submit!!"); return false; } }); }, }, }; </script> <style lang="scss" scoped> .${compoenntName} { } </style> `; };