diff --git a/src/components/company/BusinessSelect.vue b/src/components/company/BusinessSelect.vue index e93de9d..c8b723b 100644 --- a/src/components/company/BusinessSelect.vue +++ b/src/components/company/BusinessSelect.vue @@ -115,6 +115,37 @@ export default { this.loadData() }, methods: { + // 2023-07:解决选中回显问题 + loadData(arg) { + this.judgeFreeCount && this.judgeFreeCount() + if(!this.url.list){ + this.$message.error('请设置url.list属性!') + return + } + //加载数据 若传入参数1则加载第一页的内容 + if (arg === 1) { + this.ipagination.current = 1 + } + var params = this.getQueryParams()//查询条件 + this.loading = true + this.getAction(this.url.list, params).then((res) => { + if (res.success) { + //update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------ + this.dataSource = res.result.records||res.result + if(res.result.total) + { + this.ipagination.total = res.result.total + }else{ + this.ipagination.total = 0 + } + //update-end---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------ + } + if(res.code===510){ + this.$message.warning(res.message) + } + this.loading = false + }) + }, handleOk() { this.$emit('ok', this.selectedCompany) this.close() @@ -123,6 +154,8 @@ export default { this.close() }, close() { + // 清空列表选中 + this.onClearSelected() this.visible = false this.selectedCompany = {} }, diff --git a/src/views/system/modules/AccountCenterModel.vue b/src/views/system/modules/AccountCenterModel.vue index bd7d366..ad7520e 100644 --- a/src/views/system/modules/AccountCenterModel.vue +++ b/src/views/system/modules/AccountCenterModel.vue @@ -13,11 +13,20 @@ - + + + + 若没有您要选择的企业,请您添加企业信息(发票抬头) + + + + + @@ -25,7 +34,7 @@ @@ -109,13 +118,31 @@ import pick from 'lodash.pick' import { isEmail, postcode } from '@/utils/validate' import { editUserInfo } from '@api/incomePaymentsApi' +import CompanySelect from '@comp/company/CompanySelect' +import { queryContactByName } from '@api/incomePaymentsApi' +import { USER_INFO } from '@/store/mutation-types' +import Vue from 'vue' export default { name: 'AccountCenterModel', + components: {CompanySelect}, + props: { + // 是否可以选择企业 true--不可选;false--可选 + isCompanyDisabled: { + type: Boolean, + required: false, + default: false + } + }, + computed: { + isCompanyAdmin() { + return Vue.ls.get(USER_INFO).roleCode === '2' + } + }, data() { return { title: '编辑个人信息', - width: 800, + width: 1000, visible: false, confirmLoading: false, form: this.$form.createForm(this), @@ -137,6 +164,14 @@ export default { sm: { span: 21 } }, validatorRules: { + company: { + rules: [{ required: true, validator: this.checkCompany }], + validateTrigger: 'change' + }, + name: { + rules: [{ required: true, validator: this.checkName }], + validateTrigger: 'blur' + }, email: { rules: [{ required: true, validator: this.checkMail }], validateTrigger: 'blur' @@ -150,15 +185,22 @@ export default { validateTrigger: 'blur' } }, + selectedCompanyId: null // 当前选择企业的id } }, methods: { edit(record) { + console.log(record) + let company = { + id: record.companyId, + companyName: record.companyName + } + record.company = company this.form.resetFields() this.model = Object.assign({}, record) this.visible = true this.$nextTick(() => { - this.form.setFieldsValue(pick(this.model, 'companyName', 'name', 'gender', 'post', 'phone', 'email', 'contactAddress', 'postalCode', 'remarks')) + this.form.setFieldsValue(pick(this.model, 'company', 'name', 'gender', 'post', 'phone', 'email', 'contactAddress', 'postalCode', 'remarks')) }) }, handleOk() { @@ -172,6 +214,9 @@ export default { values.gender = null } const formData = Object.assign(this.model, values) + formData.company = values.company + formData.companyId = values.company.id + formData.companyName = values.company.companyName console.log('表单提交数据', formData) editUserInfo(formData).then((res) => { if (res.success) { @@ -193,6 +238,61 @@ export default { close() { this.visible = false }, + /** + * 企业必填校验 + * @param rules + * @param value + * @param callback + */ + checkCompany(rules, value, callback) { + console.log('---check---', value) + if (value.id && value.companyName) { + callback() + return + } + callback('请选择企业') + }, + /** + * 联系人姓名重复校验 + * @param rules + * @param value + * @param callback + */ + checkName(rules, value, callback) { + let company = this.form.getFieldValue('company') + if (!value) { + callback('请输入姓名') + return + } + if (!company.id) { + callback('请先选择企业再输入姓名') + return + } + // 是否编辑 + if (this.model.id) { + // 编辑前后姓名是否一致,一致则不进行验重 + if (value === this.model.name) { + callback() + return + } + this.selectedCompanyId = this.model.company.id + } + if (this.isCompanyDisabled) { + this.selectedCompanyId = this.selectedCompany.id + } + let param = { + companyId: this.selectedCompanyId, + name: value + } + queryContactByName(param).then(res => { + if (res.success) { + callback() + } else { + callback(res.message) + } + }) + + }, /** * 邮箱校验 * @param rules @@ -218,11 +318,16 @@ export default { } else { callback('请输入正确格式的邮政编码') } - } + }, + changeCompany(value) { + this.selectedCompanyId = value.id + }, } } - \ No newline at end of file