<template> <div> <el-row :gutter="20"> <el-col :span="24"> <el-card shadow="hover" class="m-b-20"> <div class="flex j-between a-center"> <div class="per_title" v-throttle @click="goback()"> <i class="el-icon-arrow-left"></i> <span class="per_back">返回</span> <span class="per_school" v-text="isDetail ? '查看用户' : (id != '' ? '编辑客户' : '新增客户')"></span> </div> <el-button type="primary" size="small" round class="mag" v-if="!isDetail" v-throttle @click="saveAdd">确定</el-button> </div> </el-card> <el-card shadow="hover"> <div> <div class="p-title m-b-20">基本信息</div> <div> <el-form :model="form" :rules="rules" ref="form" label-width="100px" class="flex j-center" :disabled="isDetail"> <el-col :span="6" style="margin-right: 60px;"> <el-form-item prop="countries" label="国家"> <el-select v-model="form.countries" clearable placeholder="请选择国家"> <el-option v-for="(item,index) in countryList" :key="index" :label="item.name" :value="item.name"></el-option> </el-select> </el-form-item> <el-form-item prop="provinceId" label="省份"> <el-select v-model="form.provinceId" placeholder="" @change="getCity()" @clear="clearprovince()"> <el-option v-for="(item,index) in provinceList" :key="index" :label="item.provinceName" :value="item.provinceId"></el-option> </el-select> </el-form-item> <el-form-item prop="clientName" label="客户名称"> <el-input placeholder="请输入客户名称" v-model="form.clientName" @change="nameChange"></el-input> </el-form-item> <el-form-item prop="phone" label="手机号"> <el-input placeholder="请输入手机号" v-model="form.phone" maxlength="11"></el-input> </el-form-item> </el-col> <el-col :span="6" style="margin-left: 60px;"> <el-form-item prop="type" label="客户类型"> <el-select v-model="form.type" placeholder=""> <el-option v-for="(item,index) in clientTypeList" :key="index" :label="item.name" :value="item.value"></el-option> </el-select> </el-form-item> <el-form-item prop="cityId" label="城市"> <el-select v-model="form.cityId" :disabled="form.provinceId ? false : true" placeholder=""> <el-option v-for="(item,index) in cityList" :key="index" :label="item.cityName" :value="item.cityId"></el-option> </el-select> </el-form-item> <el-form-item prop="contactPersonName" label="管理员姓名"> <el-input placeholder="请输入管理员姓名" v-model="form.contactPersonName"></el-input> </el-form-item> </el-col> </el-form> </div> </div> </el-card> </el-col> </el-row> </div> </template> <script> import { mapState } from 'vuex'; export default { name: 'index-add', data() { return { id: this.$route.query.id, isDetail: Boolean(this.$route.query.show), form: { countries: '中国', clientName: '', provinceId: '', contactPersonName: '', phone: '', cityId: '', type: 1, }, rules: { type: [ { required: true, message: '请选择客户类型', trigger: 'change' } ], countries: [ { required: true, message: '请选择国家', trigger: 'change' } ], provinceId: [ { required: true, message: '请选择省份', trigger: 'change' } ], cityId: [ { required: true, message: '请选择城市', trigger: 'change' } ], contactPersonName: [ { required: true, message: '请输入管理员姓名', trigger: 'blur' } ], phone: [ { required: true, message: '请输入手机号', trigger: 'blur' }, { pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号', trigger: 'blur' } ], clientName: [ { required: true, message: '请输入客户名称', trigger: 'blur' } ], }, clientTypeList: [{ name: '正式', value: 1 }, { name: '试用', value: 2 }, { name: '到期', value: 3 }], countryList: [{ name:'中国' }], cityList: [], originalName: '', nameRepeat: false }; }, computed: { ...mapState('client', [ 'provinceList' ]) }, mounted() { this.id && this.getData() }, methods: { getData(){ this.$get(`${this.api.getClient}/${this.id}`).then((res) => { this.form = res.data.client this.originalName = res.data.client.clientName this.form.countries = '中国' this.getCityData() }).catch((res) => { }) }, nameChange(){ if(this.form.clientName !== this.originalName){ this.$get(`${this.api.getClientName}?clientName=${this.form.clientName}`).then(res => { if(res.data.client.length){ this.nameRepeat = true this.$message.warning('该客户名称已存在') }else{ this.nameRepeat = false } }).catch(res => {}); }else{ this.nameRepeat = false } }, // 清除省份 clearprovince(){ this.form.cityId = '' }, getCity(){ this.clearprovince() this.getCityData() this.pageNo = 1 }, getCityData(){ let data = { provinceId: this.form.provinceId } this.$get(this.api.queryCity,data).then(res => { this.cityList = res.data.list }).catch(res => {}); }, saveAdd(){ this.$refs.form.validate((valid) => { if (valid) { if(this.nameRepeat) return this.$message.warning('该客户名称已存在') this.form.provinceName = this.provinceList.find(n => n.provinceId == this.form.provinceId).provinceName this.form.cityName = this.cityList.find(n => n.cityId == this.form.cityId).cityName let data = this.form if(this.id){ this.$post(this.api.updateClient,data).then((res) => { this.$message.success('编辑成功'); this.$router.back() }).catch((res) => { }) }else{ this.$post(this.api.addClient,data).then((res) => { this.$message.success('添加成功'); this.$router.back() }).catch((res) => { }) } } }) }, goback() { if(this.isDetail){ this.$router.back() }else{ this.$confirm('确定返回?未更新的信息将不会保存。', '提示', { type: 'warning' }) .then(() => { this.$router.back() }) .catch(() => {}); } } } }; </script> <style lang="scss" scoped> /deep/.el-row{ margin-bottom: 0; } </style>