|
@@ -1,75 +1,68 @@
|
|
<template>
|
|
<template>
|
|
- <a-modal
|
|
|
|
- :visible="visible"
|
|
|
|
- :title="editMode ? $t('customer.editCustomer') : $t('customer.addCustomer')"
|
|
|
|
- :loading="loading"
|
|
|
|
- @ok="handleSubmit"
|
|
|
|
- @cancel="handleCancel"
|
|
|
|
- :width="720"
|
|
|
|
- :okText="$t('customer.confirm')"
|
|
|
|
- >
|
|
|
|
|
|
+ <a-modal :visible="visible" :title="editMode ? $t('customer.editCustomer') : $t('customer.addCustomer')"
|
|
|
|
+ :loading="loading" @ok="handleSubmit" @cancel="handleCancel" :width="720" :okText="$t('customer.confirm')">
|
|
<a-tabs>
|
|
<a-tabs>
|
|
<!-- 基本信息 Tab -->
|
|
<!-- 基本信息 Tab -->
|
|
<a-tab-pane key="1" :title="$t('customer.basicInfo')">
|
|
<a-tab-pane key="1" :title="$t('customer.basicInfo')">
|
|
<a-form :model="formData" :rules="rules" ref="formRef" :label-col-props="{ span: 6 }"
|
|
<a-form :model="formData" :rules="rules" ref="formRef" :label-col-props="{ span: 6 }"
|
|
- :wrapper-col-props="{ span: 18 }">
|
|
|
|
|
|
+ :wrapper-col-props="{ span: 18 }">
|
|
<a-divider>{{ $t('customer.basicInfoSection') }}</a-divider>
|
|
<a-divider>{{ $t('customer.basicInfoSection') }}</a-divider>
|
|
<!-- Customer Code -->
|
|
<!-- Customer Code -->
|
|
<a-form-item field="zip" :label="$t('customer.customerCode')" required validate-trigger="blur">
|
|
<a-form-item field="zip" :label="$t('customer.customerCode')" required validate-trigger="blur">
|
|
<a-input v-model="formData.zip" :placeholder="$t('customer.enterCustomerCode')" :max-length="60"
|
|
<a-input v-model="formData.zip" :placeholder="$t('customer.enterCustomerCode')" :max-length="60"
|
|
- show-word-limit/>
|
|
|
|
|
|
+ show-word-limit />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
|
|
|
<a-form-item field="email" :label="$t('customer.emailName')" required validate-trigger="blur">
|
|
<a-form-item field="email" :label="$t('customer.emailName')" required validate-trigger="blur">
|
|
<a-input v-model="formData.email" :placeholder="$t('customer.emailType')" :max-length="60"
|
|
<a-input v-model="formData.email" :placeholder="$t('customer.emailType')" :max-length="60"
|
|
- show-word-limit/>
|
|
|
|
|
|
+ show-word-limit />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<a-form-item field="phone" :label="$t('customer.phoneName')" required validate-trigger="blur">
|
|
<a-form-item field="phone" :label="$t('customer.phoneName')" required validate-trigger="blur">
|
|
- <a-input v-model="formData.phone" :placeholder="$t('customer.phoneType')" show-word-limit/>
|
|
|
|
|
|
+ <a-input v-model="formData.phone" :placeholder="$t('customer.phoneType')" show-word-limit />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<!-- Customer Name -->
|
|
<!-- Customer Name -->
|
|
<a-form-item field="name" :label="$t('customer.customerName')" required validate-trigger="blur">
|
|
<a-form-item field="name" :label="$t('customer.customerName')" required validate-trigger="blur">
|
|
<a-input v-model="formData.name" :placeholder="$t('customer.enterCustomerName')" :max-length="60"
|
|
<a-input v-model="formData.name" :placeholder="$t('customer.enterCustomerName')" :max-length="60"
|
|
- show-word-limit/>
|
|
|
|
|
|
+ show-word-limit />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<!-- Account Number -->
|
|
<!-- Account Number -->
|
|
<a-form-item field="username" :label="$t('customer.accountNumber')" required validate-trigger="blur">
|
|
<a-form-item field="username" :label="$t('customer.accountNumber')" required validate-trigger="blur">
|
|
<a-input v-model="formData.username" :placeholder="$t('customer.enterAccountNumber')" :max-length="60"
|
|
<a-input v-model="formData.username" :placeholder="$t('customer.enterAccountNumber')" :max-length="60"
|
|
- show-word-limit/>
|
|
|
|
|
|
+ show-word-limit />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<!-- Password -->
|
|
<!-- Password -->
|
|
<a-form-item field="password" :label="$t('customer.password')" required validate-trigger="blur">
|
|
<a-form-item field="password" :label="$t('customer.password')" required validate-trigger="blur">
|
|
<a-input-password v-model="formData.password" :placeholder="$t('customer.enterPassword')" :max-length="60"
|
|
<a-input-password v-model="formData.password" :placeholder="$t('customer.enterPassword')" :max-length="60"
|
|
- show-word-limit/>
|
|
|
|
|
|
+ show-word-limit />
|
|
<a-button type="primary" @click="generatePassword">{{ $t('customer.generatePassword') }}</a-button>
|
|
<a-button type="primary" @click="generatePassword">{{ $t('customer.generatePassword') }}</a-button>
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<!-- role-->
|
|
<!-- role-->
|
|
-<!-- <a-form-item field="roleIds" :label="$t('customer.roleldsName')" required validate-trigger="blur">-->
|
|
|
|
-<!-- <a-select multiple v-model="formData.roleIds" :style="{width:'100%'}"-->
|
|
|
|
-<!-- :placeholder="$t('customer.roleldsNamedType')">-->
|
|
|
|
-<!-- <a-option v-for="item of roles" :value="item.id" :label="item.name"/>-->
|
|
|
|
-<!-- </a-select>-->
|
|
|
|
-<!-- </a-form-item>-->
|
|
|
|
-<!-- <a-form-item field="userType" :label="$t('customer.userTypeName')" required validate-trigger="blur">-->
|
|
|
|
-<!-- <a-select v-model="formData.userType" :style="{width:'100%'}"-->
|
|
|
|
-<!-- :placeholder="$t('customer.userTypeNameType')">-->
|
|
|
|
-<!-- <a-option v-for="item of userTypeList" :value="item.value" :label="item.label"/>-->
|
|
|
|
-<!-- </a-select>-->
|
|
|
|
-<!-- </a-form-item>-->
|
|
|
|
|
|
+ <!-- <a-form-item field="roleIds" :label="$t('customer.roleldsName')" required validate-trigger="blur">-->
|
|
|
|
+ <!-- <a-select multiple v-model="formData.roleIds" :style="{width:'100%'}"-->
|
|
|
|
+ <!-- :placeholder="$t('customer.roleldsNamedType')">-->
|
|
|
|
+ <!-- <a-option v-for="item of roles" :value="item.id" :label="item.name"/>-->
|
|
|
|
+ <!-- </a-select>-->
|
|
|
|
+ <!-- </a-form-item>-->
|
|
|
|
+ <!-- <a-form-item field="userType" :label="$t('customer.userTypeName')" required validate-trigger="blur">-->
|
|
|
|
+ <!-- <a-select v-model="formData.userType" :style="{width:'100%'}"-->
|
|
|
|
+ <!-- :placeholder="$t('customer.userTypeNameType')">-->
|
|
|
|
+ <!-- <a-option v-for="item of userTypeList" :value="item.value" :label="item.label"/>-->
|
|
|
|
+ <!-- </a-select>-->
|
|
|
|
+ <!-- </a-form-item>-->
|
|
<!-- Remark -->
|
|
<!-- Remark -->
|
|
<a-form-item field="note" :label="$t('customer.remark')" required validate-trigger="blur">
|
|
<a-form-item field="note" :label="$t('customer.remark')" required validate-trigger="blur">
|
|
<a-input v-model="formData.note" :placeholder="$t('customer.enterRemark')" :max-length="60"
|
|
<a-input v-model="formData.note" :placeholder="$t('customer.enterRemark')" :max-length="60"
|
|
- show-word-limit/>
|
|
|
|
|
|
+ show-word-limit />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<!-- Account Balance -->
|
|
<!-- Account Balance -->
|
|
<a-form-item field="amount" :label="$t('customer.accountBalance')" required validate-trigger="blur">
|
|
<a-form-item field="amount" :label="$t('customer.accountBalance')" required validate-trigger="blur">
|
|
<a-input-number v-model="formData.amount" :min="0" :precision="2" :step="100"
|
|
<a-input-number v-model="formData.amount" :min="0" :precision="2" :step="100"
|
|
- :suffix="$t('customer.currency')"/>
|
|
|
|
|
|
+ :suffix="$t('customer.currency')" />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<!-- Address -->
|
|
<!-- Address -->
|
|
<a-form-item field="addr" :label="$t('customer.address')" required validate-trigger="blur">
|
|
<a-form-item field="addr" :label="$t('customer.address')" required validate-trigger="blur">
|
|
<a-input v-model="formData.addr" :placeholder="$t('customer.addressMessage')" :max-length="50"
|
|
<a-input v-model="formData.addr" :placeholder="$t('customer.addressMessage')" :max-length="50"
|
|
- show-word-limit/>
|
|
|
|
|
|
+ show-word-limit />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<!-- Status -->
|
|
<!-- Status -->
|
|
<a-form-item field="state" :label="$t('customer.statusName')" required validate-trigger="blur">
|
|
<a-form-item field="state" :label="$t('customer.statusName')" required validate-trigger="blur">
|
|
@@ -86,23 +79,23 @@
|
|
<!-- SMS 信息 Tab -->
|
|
<!-- SMS 信息 Tab -->
|
|
<a-tab-pane key="2" :title="$t('customer.smsInfoSection')">
|
|
<a-tab-pane key="2" :title="$t('customer.smsInfoSection')">
|
|
<a-form :model="formData" :rules="rules" ref="formRef" :label-col-props="{ span: 6 }"
|
|
<a-form :model="formData" :rules="rules" ref="formRef" :label-col-props="{ span: 6 }"
|
|
- :wrapper-col-props="{ span: 18 }">
|
|
|
|
|
|
+ :wrapper-col-props="{ span: 18 }">
|
|
<a-divider>{{ $t('customer.smsInfoSection') }}</a-divider>
|
|
<a-divider>{{ $t('customer.smsInfoSection') }}</a-divider>
|
|
<a-form-item field="sms" :label="$t('customer.smsSubCode')" required validate-trigger="blur">
|
|
<a-form-item field="sms" :label="$t('customer.smsSubCode')" required validate-trigger="blur">
|
|
<a-input v-model="formData.sms" :placeholder="$t('customer.enterSmsSubCode')" :max-length="60"
|
|
<a-input v-model="formData.sms" :placeholder="$t('customer.enterSmsSubCode')" :max-length="60"
|
|
- show-word-limit/>
|
|
|
|
|
|
+ show-word-limit />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<a-form-item field="smsSignature" :label="$t('customer.smsName')" required validate-trigger="blur">
|
|
<a-form-item field="smsSignature" :label="$t('customer.smsName')" required validate-trigger="blur">
|
|
<a-input v-model="formData.smsSignature" :placeholder="$t('customer.enterSmsName')" :max-length="60"
|
|
<a-input v-model="formData.smsSignature" :placeholder="$t('customer.enterSmsName')" :max-length="60"
|
|
- show-word-limit/>
|
|
|
|
|
|
+ show-word-limit />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<a-form-item field="loginSms" :label="$t('customer.loginSmsTemplate')" required validate-trigger="blur">
|
|
<a-form-item field="loginSms" :label="$t('customer.loginSmsTemplate')" required validate-trigger="blur">
|
|
<a-input v-model="formData.loginSms" :placeholder="$t('customer.enterLoginSmsTemplate')" :max-length="60"
|
|
<a-input v-model="formData.loginSms" :placeholder="$t('customer.enterLoginSmsTemplate')" :max-length="60"
|
|
- show-word-limit/>
|
|
|
|
|
|
+ show-word-limit />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<a-form-item field="warnSms" :label="$t('customer.alarmSmsTemplate')" required validate-trigger="blur">
|
|
<a-form-item field="warnSms" :label="$t('customer.alarmSmsTemplate')" required validate-trigger="blur">
|
|
<a-input v-model="formData.warnSms" :placeholder="$t('customer.enterAlarmSmsTemplate')" :max-length="60"
|
|
<a-input v-model="formData.warnSms" :placeholder="$t('customer.enterAlarmSmsTemplate')" :max-length="60"
|
|
- show-word-limit/>
|
|
|
|
|
|
+ show-word-limit />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
</a-form>
|
|
</a-form>
|
|
</a-tab-pane>
|
|
</a-tab-pane>
|
|
@@ -110,45 +103,43 @@
|
|
<!-- Billing Information Tab -->
|
|
<!-- Billing Information Tab -->
|
|
<a-tab-pane key="3" :title="$t('customer.billingInfo')">
|
|
<a-tab-pane key="3" :title="$t('customer.billingInfo')">
|
|
<a-form :model="formData" :rules="rules" ref="formRef" :label-col-props="{ span: 6 }"
|
|
<a-form :model="formData" :rules="rules" ref="formRef" :label-col-props="{ span: 6 }"
|
|
- :wrapper-col-props="{ span: 18 }">
|
|
|
|
|
|
+ :wrapper-col-props="{ span: 18 }">
|
|
<a-divider>{{ $t('customer.InvoiceInformation') }}</a-divider>
|
|
<a-divider>{{ $t('customer.InvoiceInformation') }}</a-divider>
|
|
<a-form-item field="invoiceTitle" :label="$t('customer.invoiceTitle')" required validate-trigger="blur">
|
|
<a-form-item field="invoiceTitle" :label="$t('customer.invoiceTitle')" required validate-trigger="blur">
|
|
<a-input v-model="formData.invoiceTitle" :placeholder="$t('customer.enterInvoiceTitle')" :max-length="60"
|
|
<a-input v-model="formData.invoiceTitle" :placeholder="$t('customer.enterInvoiceTitle')" :max-length="60"
|
|
- show-word-limit/>
|
|
|
|
|
|
+ show-word-limit />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
- <a-form-item field="invoiceType" :label="$t('customer.invoice_vatTextType')" required
|
|
|
|
- validate-trigger="blur">
|
|
|
|
- <a-select v-model="formData.invoiceType" :style="{width:'100%'}"
|
|
|
|
- :placeholder="$t('customer.invoice_vatTextTypeSelect')">
|
|
|
|
- <a-option v-for="item of invoiceList" :value="item.value" :label="item.label"/>
|
|
|
|
|
|
+ <a-form-item field="invoiceType" :label="$t('customer.invoice_vatTextType')" required validate-trigger="blur">
|
|
|
|
+ <a-select v-model="formData.invoiceType" :style="{ width: '100%' }"
|
|
|
|
+ :placeholder="$t('customer.invoice_vatTextTypeSelect')">
|
|
|
|
+ <a-option v-for="item of invoiceList" :value="item.value" :label="item.label" />
|
|
</a-select>
|
|
</a-select>
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<a-form-item field="invoiceAddr" :label="$t('customer.registeredAddress')" required validate-trigger="blur">
|
|
<a-form-item field="invoiceAddr" :label="$t('customer.registeredAddress')" required validate-trigger="blur">
|
|
<a-input v-model="formData.invoiceAddr" :placeholder="$t('customer.enterRegisteredAddress')"
|
|
<a-input v-model="formData.invoiceAddr" :placeholder="$t('customer.enterRegisteredAddress')"
|
|
- :max-length="60" show-word-limit/>
|
|
|
|
|
|
+ :max-length="60" show-word-limit />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<a-form-item field="invoiceZip" :label="$t('customer.invoiceCode')" required validate-trigger="blur">
|
|
<a-form-item field="invoiceZip" :label="$t('customer.invoiceCode')" required validate-trigger="blur">
|
|
<a-input v-model="formData.invoiceZip" :placeholder="$t('customer.InvoiceCodeName')" :max-length="60"
|
|
<a-input v-model="formData.invoiceZip" :placeholder="$t('customer.InvoiceCodeName')" :max-length="60"
|
|
- show-word-limit/>
|
|
|
|
|
|
+ show-word-limit />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<a-form-item field="invoiceEmail" :label="$t('customer.invoiceEmailName')" required validate-trigger="blur">
|
|
<a-form-item field="invoiceEmail" :label="$t('customer.invoiceEmailName')" required validate-trigger="blur">
|
|
- <a-input v-model="formData.invoiceEmail" :placeholder="$t('customer.invoiceEmailNameType')"
|
|
|
|
- :max-length="60" show-word-limit/>
|
|
|
|
|
|
+ <a-input v-model="formData.invoiceEmail" :placeholder="$t('customer.invoiceEmailNameType')" :max-length="60"
|
|
|
|
+ show-word-limit />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<a-form-item field="bankName" :label="$t('customer.bankName')" required validate-trigger="blur">
|
|
<a-form-item field="bankName" :label="$t('customer.bankName')" required validate-trigger="blur">
|
|
<a-input v-model="formData.bankName" :placeholder="$t('customer.enterBankName')" :max-length="60"
|
|
<a-input v-model="formData.bankName" :placeholder="$t('customer.enterBankName')" :max-length="60"
|
|
- show-word-limit/>
|
|
|
|
|
|
+ show-word-limit />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<a-form-item field="bankAccount" :label="$t('customer.BankNumber')" required validate-trigger="blur">
|
|
<a-form-item field="bankAccount" :label="$t('customer.BankNumber')" required validate-trigger="blur">
|
|
<a-input v-model="formData.bankAccount" :placeholder="$t('customer.BankNumberName')" :max-length="60"
|
|
<a-input v-model="formData.bankAccount" :placeholder="$t('customer.BankNumberName')" :max-length="60"
|
|
- show-word-limit/>
|
|
|
|
|
|
+ show-word-limit />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<a-form-item field="bankBranch" :label="$t('customer.bank_branchName')" required validate-trigger="blur">
|
|
<a-form-item field="bankBranch" :label="$t('customer.bank_branchName')" required validate-trigger="blur">
|
|
- <a-input v-model="formData.bankBranch" :placeholder="$t('customer.bank_branchNameType')" show-word-limit/>
|
|
|
|
|
|
+ <a-input v-model="formData.bankBranch" :placeholder="$t('customer.bank_branchNameType')" show-word-limit />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
- <a-form-item field="businessLicense" :label="$t('customer.BusinessLicense')" required
|
|
|
|
- validate-trigger="blur">
|
|
|
|
- <upload v-model="formData.businessLicense"/>
|
|
|
|
|
|
+ <a-form-item field="businessLicense" :label="$t('customer.BusinessLicense')" required validate-trigger="blur">
|
|
|
|
+ <upload v-model="formData.businessLicense" />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
</a-form>
|
|
</a-form>
|
|
</a-tab-pane>
|
|
</a-tab-pane>
|
|
@@ -156,15 +147,15 @@
|
|
<!-- Tax Registration Tab -->
|
|
<!-- Tax Registration Tab -->
|
|
<a-tab-pane key="4" :title="$t('customer.TaxRegistration')">
|
|
<a-tab-pane key="4" :title="$t('customer.TaxRegistration')">
|
|
<a-form :model="formData" :rules="rules" ref="formRef" :label-col-props="{ span: 8 }"
|
|
<a-form :model="formData" :rules="rules" ref="formRef" :label-col-props="{ span: 8 }"
|
|
- :wrapper-col-props="{ span: 16 }">
|
|
|
|
|
|
+ :wrapper-col-props="{ span: 16 }">
|
|
<a-divider>{{ $t('customer.TaxRegistrationText') }}</a-divider>
|
|
<a-divider>{{ $t('customer.TaxRegistrationText') }}</a-divider>
|
|
<a-form-item field="taxRegistrationCertificate" :label="$t('customer.photocopy')" required
|
|
<a-form-item field="taxRegistrationCertificate" :label="$t('customer.photocopy')" required
|
|
- validate-trigger="blur">
|
|
|
|
- <upload v-model:modelValue="formData.taxRegistrationCertificate"/>
|
|
|
|
|
|
+ validate-trigger="blur">
|
|
|
|
+ <upload v-model:modelValue="formData.taxRegistrationCertificate" />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<a-form-item field="taxpayerQualification" :label="$t('customer.CertificationQualification')" required
|
|
<a-form-item field="taxpayerQualification" :label="$t('customer.CertificationQualification')" required
|
|
- validate-trigger="blur">
|
|
|
|
- <upload v-model:modelValue="formData.taxpayerQualification"/>
|
|
|
|
|
|
+ validate-trigger="blur">
|
|
|
|
+ <upload v-model:modelValue="formData.taxpayerQualification" />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
</a-form>
|
|
</a-form>
|
|
</a-tab-pane>
|
|
</a-tab-pane>
|
|
@@ -174,15 +165,15 @@
|
|
|
|
|
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
-import {ref, watch, onMounted} from 'vue';
|
|
|
|
-import {Message} from '@arco-design/web-vue';
|
|
|
|
-import {useI18n} from 'vue-i18n';
|
|
|
|
-import {useSystemStore} from '@/store/modules/systemStore.js'
|
|
|
|
-import {dictionaryDetail} from '@/api/path/dict.js'
|
|
|
|
|
|
+import { ref, watch, onMounted } from 'vue';
|
|
|
|
+import { Message } from '@arco-design/web-vue';
|
|
|
|
+import { useI18n } from 'vue-i18n';
|
|
|
|
+import { useSystemStore } from '@/store/modules/systemStore.js'
|
|
|
|
+import { dictionaryDetail } from '@/api/path/dict.js'
|
|
import Upload from "@/components/upload/index.vue";
|
|
import Upload from "@/components/upload/index.vue";
|
|
-import {systemFindRoleList} from "@/api/path/system.api.js";
|
|
|
|
-import {addCustomer, updateCustomer} from "@/api/customer.js";
|
|
|
|
-const {t} = useI18n();
|
|
|
|
|
|
+import { systemFindRoleList } from "@/api/path/system.api.js";
|
|
|
|
+import { addCustomer, updateCustomer } from "@/api/customer.js";
|
|
|
|
+const { t } = useI18n();
|
|
const systemStore = useSystemStore()
|
|
const systemStore = useSystemStore()
|
|
import { encryptByDES } from '@/utils/crypto.js'
|
|
import { encryptByDES } from '@/utils/crypto.js'
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
@@ -196,28 +187,27 @@ const invoiceList = ref([])
|
|
const roles = ref([])
|
|
const roles = ref([])
|
|
const userTypeList = ref([])
|
|
const userTypeList = ref([])
|
|
watch(
|
|
watch(
|
|
- () => props.editData,
|
|
|
|
- (newVal) => {
|
|
|
|
- if (newVal && props.editMode) {
|
|
|
|
- // 深拷贝编辑数据
|
|
|
|
- const editDataCopy = JSON.parse(JSON.stringify(newVal));
|
|
|
|
|
|
+ () => props.editData,
|
|
|
|
+ (newVal) => {
|
|
|
|
+ if (newVal && props.editMode) {
|
|
|
|
+ // 深拷贝编辑数据
|
|
|
|
+ const editDataCopy = JSON.parse(JSON.stringify(newVal));
|
|
|
|
|
|
- // 将 formData 中嵌套的 info 展平为一层
|
|
|
|
- const flattenedFormData = ref(Object.fromEntries(Object.entries(editDataCopy).flatMap(([key, value]) => typeof value === 'object' && value !== null && !Array.isArray(value) ? Object.entries(value) : [[key, value]])));
|
|
|
|
- if(editDataCopy.info) {
|
|
|
|
- delete editDataCopy.info;
|
|
|
|
- }
|
|
|
|
- const formDataList = {...editDataCopy,...flattenedFormData.value}
|
|
|
|
- console.log(formDataList)
|
|
|
|
- formData.value = formDataList
|
|
|
|
- // Object.keys(formData.value).forEach(key => {
|
|
|
|
- // if (formDataList[key]) {
|
|
|
|
- // formData.value[key] = formDataList[key];
|
|
|
|
- // }
|
|
|
|
- // });
|
|
|
|
|
|
+ // 将 formData 中嵌套的 info 展平为一层
|
|
|
|
+ const flattenedFormData = ref(Object.fromEntries(Object.entries(editDataCopy).flatMap(([key, value]) => typeof value === 'object' && value !== null && !Array.isArray(value) ? Object.entries(value) : [[key, value]])));
|
|
|
|
+ if (editDataCopy.info) {
|
|
|
|
+ delete editDataCopy.info;
|
|
}
|
|
}
|
|
- },
|
|
|
|
- {deep: true, immediate: true}
|
|
|
|
|
|
+ const formDataList = { ...editDataCopy, ...flattenedFormData.value }
|
|
|
|
+ formData.value = formDataList
|
|
|
|
+ // Object.keys(formData.value).forEach(key => {
|
|
|
|
+ // if (formDataList[key]) {
|
|
|
|
+ // formData.value[key] = formDataList[key];
|
|
|
|
+ // }
|
|
|
|
+ // });
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ { deep: true, immediate: true }
|
|
);
|
|
);
|
|
|
|
|
|
const emit = defineEmits(['update:visible', 'submit']);
|
|
const emit = defineEmits(['update:visible', 'submit']);
|
|
@@ -252,38 +242,38 @@ const formData = ref({
|
|
});
|
|
});
|
|
|
|
|
|
const rules = {
|
|
const rules = {
|
|
- userName: [{required: true, message: t('customer.enterAccountNumber')}],
|
|
|
|
- state: [{required: true, message: t('customer.stateType')}],
|
|
|
|
- name: [{required: true, message: t('customer.nameType')}],
|
|
|
|
- password: [{required: true, message: t('customer.passwordRequired')}],
|
|
|
|
|
|
+ userName: [{ required: true, message: t('customer.enterAccountNumber') }],
|
|
|
|
+ state: [{ required: true, message: t('customer.stateType') }],
|
|
|
|
+ name: [{ required: true, message: t('customer.nameType') }],
|
|
|
|
+ password: [{ required: true, message: t('customer.passwordRequired') }],
|
|
// roleIds: [{required: true, message: t('customer.roleIdsType')}],
|
|
// roleIds: [{required: true, message: t('customer.roleIdsType')}],
|
|
// userType: [{required: true, message: t('customer.userTypeType')}],
|
|
// userType: [{required: true, message: t('customer.userTypeType')}],
|
|
- phone: [{required: true, message: t('customer.phoneType')}],
|
|
|
|
- email: [{required: true, message: t('customer.emailType')}],
|
|
|
|
- addr: [{required: true, message: t('customer.addressRequired')}],
|
|
|
|
- amount: [{required: true, message: t('customer.amountRequired')}],
|
|
|
|
- bankAccount: [{required: true, message: t('customer.bankAccountRequired')}],
|
|
|
|
- bankBranch: [{required: true, message: t('customer.bankBranchRequired')}],
|
|
|
|
- bankName: [{required: true, message: t('customer.bankNameRequired')}],
|
|
|
|
- businessLicense: [{required: true, message: t('customer.businessLicenseRequired')}],
|
|
|
|
- invoiceAddr: [{required: true, message: t('customer.invoiceAddressRequired')}],
|
|
|
|
- invoiceEmail: [{required: true, message: t('customer.invoiceEmailRequired')}],
|
|
|
|
- invoiceTitle: [{required: true, message: t('customer.invoiceTitleRequired')}],
|
|
|
|
- invoiceType: [{required: true, message: t('customer.invoiceTypeRequired')}],
|
|
|
|
- invoiceZip: [{required: true, message: t('customer.invoiceZipRequired')}],
|
|
|
|
- loginSms: [{required: true, message: t('customer.loginSMSTemplateRequired')}],
|
|
|
|
- note: [{required: true, message: t('customer.noteRequired')}],
|
|
|
|
- sms: [{required: true, message: t('customer.smsRequired')}],
|
|
|
|
- smsSignature: [{required: true, message: t('customer.smsSignatureRequired')}],
|
|
|
|
- warnSms: [{required: true, message: t('customer.warnSMSTemplateRequired')}],
|
|
|
|
- zip: [{required: true, message: t('customer.zipCodeRequired')}],
|
|
|
|
- taxRegistrationCertificate: [{required: true, message: t('customer.taxRegistrationCertificateRequired')}],
|
|
|
|
- taxpayerQualification: [{required: true, message: t('customer.taxpayerQualificationRequired')}]
|
|
|
|
|
|
+ phone: [{ required: true, message: t('customer.phoneType') }],
|
|
|
|
+ email: [{ required: true, message: t('customer.emailType') }],
|
|
|
|
+ addr: [{ required: true, message: t('customer.addressRequired') }],
|
|
|
|
+ amount: [{ required: true, message: t('customer.amountRequired') }],
|
|
|
|
+ bankAccount: [{ required: true, message: t('customer.bankAccountRequired') }],
|
|
|
|
+ bankBranch: [{ required: true, message: t('customer.bankBranchRequired') }],
|
|
|
|
+ bankName: [{ required: true, message: t('customer.bankNameRequired') }],
|
|
|
|
+ businessLicense: [{ required: true, message: t('customer.businessLicenseRequired') }],
|
|
|
|
+ invoiceAddr: [{ required: true, message: t('customer.invoiceAddressRequired') }],
|
|
|
|
+ invoiceEmail: [{ required: true, message: t('customer.invoiceEmailRequired') }],
|
|
|
|
+ invoiceTitle: [{ required: true, message: t('customer.invoiceTitleRequired') }],
|
|
|
|
+ invoiceType: [{ required: true, message: t('customer.invoiceTypeRequired') }],
|
|
|
|
+ invoiceZip: [{ required: true, message: t('customer.invoiceZipRequired') }],
|
|
|
|
+ loginSms: [{ required: true, message: t('customer.loginSMSTemplateRequired') }],
|
|
|
|
+ note: [{ required: true, message: t('customer.noteRequired') }],
|
|
|
|
+ sms: [{ required: true, message: t('customer.smsRequired') }],
|
|
|
|
+ smsSignature: [{ required: true, message: t('customer.smsSignatureRequired') }],
|
|
|
|
+ warnSms: [{ required: true, message: t('customer.warnSMSTemplateRequired') }],
|
|
|
|
+ zip: [{ required: true, message: t('customer.zipCodeRequired') }],
|
|
|
|
+ taxRegistrationCertificate: [{ required: true, message: t('customer.taxRegistrationCertificateRequired') }],
|
|
|
|
+ taxpayerQualification: [{ required: true, message: t('customer.taxpayerQualificationRequired') }]
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
const handleSubmit = () => {
|
|
const handleSubmit = () => {
|
|
- formRef.value.validate(async (errors) => {
|
|
|
|
|
|
+ formRef.value.validate(async (errors) => {
|
|
if (!errors) {
|
|
if (!errors) {
|
|
let response;
|
|
let response;
|
|
formData.value.password = encryptByDES(formData.value.password);
|
|
formData.value.password = encryptByDES(formData.value.password);
|
|
@@ -309,10 +299,7 @@ const handleSubmit = () => {
|
|
|
|
|
|
const handleCancel = () => {
|
|
const handleCancel = () => {
|
|
Object.keys(formData.value).forEach(key => {
|
|
Object.keys(formData.value).forEach(key => {
|
|
- if(key!=='userType'){
|
|
|
|
- formData.value[key] = ''
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ formData.value[key] = ''
|
|
})
|
|
})
|
|
formRef.value = null
|
|
formRef.value = null
|
|
emit('update:visible', false);
|
|
emit('update:visible', false);
|
|
@@ -326,20 +313,14 @@ const generatePassword = () => {
|
|
|
|
|
|
|
|
|
|
const getDistList = async () => {
|
|
const getDistList = async () => {
|
|
- let code = ['invoiceVat', 'userType'];
|
|
|
|
|
|
+ let code = ['invoiceVat'];
|
|
|
|
|
|
for (let i = 0; i < code.length; i++) {
|
|
for (let i = 0; i < code.length; i++) {
|
|
let res = await dictionaryDetail({ typeKey: code[i] });
|
|
let res = await dictionaryDetail({ typeKey: code[i] });
|
|
if (res.code === 200) {
|
|
if (res.code === 200) {
|
|
- if (code[i] === 'invoiceVat') {
|
|
|
|
- invoiceList.value = res.data;
|
|
|
|
- } else if (code[i] === 'userType') {
|
|
|
|
- userTypeList.value = res.data;
|
|
|
|
- }
|
|
|
|
|
|
+ invoiceList.value = res.data;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
const getRolesData = async () => {
|
|
const getRolesData = async () => {
|
|
@@ -349,8 +330,8 @@ const getRolesData = async () => {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
- getDistList();
|
|
|
|
getRolesData()
|
|
getRolesData()
|
|
|
|
+ getDistList()
|
|
})
|
|
})
|
|
|
|
|
|
</script>
|
|
</script>
|