This commit is contained in:
zhaoxiao
2021-10-18 11:35:37 +08:00
34 changed files with 396 additions and 283 deletions
+26 -15
View File
@@ -16,7 +16,7 @@
</a-col> </a-col>
<a-col :span="12" class="detail-item"> <a-col :span="12" class="detail-item">
<label>应收金额:</label> <label>应收金额:</label>
<span><j-ellipsis :value="basicInfo.receivableAmount" :length="20"></j-ellipsis></span> <span><j-ellipsis :value="`${basicInfo.receivableAmount}元`" :length="20"></j-ellipsis></span>
</a-col> </a-col>
</a-row> </a-row>
<a-row :gutter="24"> <a-row :gutter="24">
@@ -25,12 +25,6 @@
<span><j-ellipsis :value="basicInfo.remarks" :length="20"></j-ellipsis></span> <span><j-ellipsis :value="basicInfo.remarks" :length="20"></j-ellipsis></span>
</a-col> </a-col>
</a-row> </a-row>
<a-row :gutter="24" v-if="basicInfo.files">
<a-col>
<label>资料:</label>
<span><preview-file :file-id="basicInfo.files"></preview-file></span>
</a-col>
</a-row>
<!-- 来款方式为合同的显示--> <!-- 来款方式为合同的显示-->
<a-row :gutter="24" v-if="!!basicInfo.contractNum"> <a-row :gutter="24" v-if="!!basicInfo.contractNum">
<a-col :span="12" class="detail-item"> <a-col :span="12" class="detail-item">
@@ -52,6 +46,12 @@
<span><preview-file :file-id="basicInfo.chargeNoticeId"></preview-file></span> <span><preview-file :file-id="basicInfo.chargeNoticeId"></preview-file></span>
</a-col> </a-col>
</a-row> </a-row>
<a-row :gutter="24" v-if="basicInfo.files">
<a-col class="detail-item">
<label>资料:</label>
<span><preview-file :file-id="basicInfo.files"></preview-file></span>
</a-col>
</a-row>
</section> </section>
<!-- 基本信息end--> <!-- 基本信息end-->
<!-- 企业信息begin--> <!-- 企业信息begin-->
@@ -122,9 +122,14 @@
<!--到账信息begin--> <!--到账信息begin-->
<section class="payment-info"> <section class="payment-info">
<h3 class="title">到账信息</h3> <h3 class="title">到账信息</h3>
<section class="payment-info-title">到账信息</section> <div class="payment-info-box">
<div class="payment-info-content" v-for="item of paymentInfoList" :key="item.id"> <section class="payment-info-title">到账信息</section>
{{ item.paymentDate }}到账{{ item.amountReceived }}元 <template v-if="paymentInfoList && paymentInfoList.length > 0">
<div class="payment-info-content" v-for="item of paymentInfoList" :key="item.id">
{{ item.paymentDate }}到账{{ item.amountReceived }}元
</div>
</template>
<a-list v-else :data-source="[]"/>
</div> </div>
</section> </section>
<!--到账信息end--> <!--到账信息end-->
@@ -142,7 +147,7 @@
class="j-table-force-nowrap" class="j-table-force-nowrap"
> >
<span slot="action" class="action-span-cell" slot-scope="record"> <span slot="action" class="action-span-cell" slot-scope="record">
<a @click="lookLogistics()" v-if="record.postStatus === 1">查看物流</a> <a @click="lookLogistics(record)" v-if="record.postStatus === 1">查看物流</a>
</span> </span>
<!-- <p slot="expandedRowRender" slot-scope="record" style="margin: 0">--> <!-- <p slot="expandedRowRender" slot-scope="record" style="margin: 0">-->
<!-- {{ record.sendDate }}--> <!-- {{ record.sendDate }}-->
@@ -227,7 +232,7 @@ const columns = [
{ {
title: '快递', title: '快递',
align: 'center', align: 'center',
dataIndex: 'sendMethod' dataIndex: 'sendMethod_dictText'
}, },
{ {
title: '快递单号', title: '快递单号',
@@ -324,8 +329,9 @@ export default {
/* /*
* 查看物流 * 查看物流
* */ * */
lookLogistics() { lookLogistics(record) {
window.open('https://www.ems.com.cn/', '_blank') const com = Number(record.sendMethod) === 1 && 'ems' || 'shunfeng'
window.open(`https://www.kuaidi100.com/chaxun?com=${ com }&nu=${ record.postNo }`)
}, },
/* /*
* 去合同详情 传入合同id * 去合同详情 传入合同id
@@ -402,6 +408,10 @@ h3.title::before {
.payment-info { .payment-info {
margin-bottom: 14px; margin-bottom: 14px;
&-box {
border: 1px solid #ccc;
}
&-title { &-title {
text-align: center; text-align: center;
font-size: 14px; font-size: 14px;
@@ -413,11 +423,12 @@ h3.title::before {
} }
&-content { &-content {
border: 1px solid #ccc;
color: #424242; color: #424242;
//background: #efefef; //background: #efefef;
padding: 5px; padding: 5px;
padding-left: 10px; padding-left: 10px;
border: 1px solid #ccc; //border: 1px solid #ccc;
border-top: none; border-top: none;
} }
+22 -2
View File
@@ -67,6 +67,7 @@
import JDate from '../tools/JDate' import JDate from '../tools/JDate'
import pick from 'lodash.pick' import pick from 'lodash.pick'
import { addZero } from '../../utils/util' import { addZero } from '../../utils/util'
import { money } from '../../utils/validate'
export default { export default {
name: 'InstallmentForm', name: 'InstallmentForm',
@@ -89,11 +90,11 @@ export default {
validateTrigger: 'blur' validateTrigger: 'blur'
}, },
accountsReceivableAmount: { accountsReceivableAmount: {
rules: [{ required: true, message: '请输入金额' }], rules: [{ required: true, validator: this.checkMoney }],
validateTrigger: 'blur' validateTrigger: 'blur'
}, },
paidAmount: { paidAmount: {
rules: [{ required: false, message: '请输入金额' }], rules: [{ required: false, validator: this.checkMoney }],
validateTrigger: 'blur' validateTrigger: 'blur'
} }
}, },
@@ -147,6 +148,25 @@ export default {
this.$emit('ok', values) this.$emit('ok', values)
} }
}) })
},
/**
* 校验金额格式
* @param rules
* @param value
* @param callback
*/
checkMoney(rules, value, callback) {
if (value) {
if (money(value)) {
callback()
return
}
callback('请输入正确格式的金额')
}
if (rules.field === 'accountsReceivableAmount') {
callback('请输入金额')
}
callback()
} }
} }
} }
+15 -5
View File
@@ -1,9 +1,9 @@
<template> <template>
<div> <div>
<template v-if="statusType && statusNo"> <template v-if="statusType && statusNo">
<!-- placement="topLeft"-->
<a-tooltip <a-tooltip
overlay-class-name="status-tooltip" overlay-class-name="status-tooltip"
placement="topLeft"
:title="currentTitle" :title="currentTitle"
arrow-point-at-center arrow-point-at-center
:mouse-enter-delay="0.1" :mouse-enter-delay="0.1"
@@ -14,7 +14,6 @@
<template v-else> <template v-else>
<img :src="status" @click="s"/> <img :src="status" @click="s"/>
</template> </template>
</div> </div>
</template> </template>
@@ -147,6 +146,7 @@ export default {
}, },
/** /**
* 显示的模板数据,即根据返回值怎么处理数据 * 显示的模板数据,即根据返回值怎么处理数据
* 判断是否存在一句话里所有变量为null,存在就不显示那句话了
* @param item -传入的item的值 * @param item -传入的item的值
* @return 返回一个模板字符串用于后续显示,可按照需求进行更改 * @return 返回一个模板字符串用于后续显示,可按照需求进行更改
*/ */
@@ -155,11 +155,17 @@ export default {
console.log(item) console.log(item)
// 来款 // 来款
if (this.statusKey === 'paymentRecord') { if (this.statusKey === 'paymentRecord') {
result = `${ item.paymentDate }到账${ item.amountReceived }` if (item.paymentDate || item.amountReceived) {
result = `${ item.paymentDate }到账${ item.amountReceived }元`
}
} else if (this.statusKey === 'bill') { } else if (this.statusKey === 'bill') {
result = `${ item.billDate }新增发票,发票单号:${ item.billNo }` if (item.billDate || item.billNo) {
result = `${ item.billDate }新增发票,发票单号:${ item.billNo }`
}
} else if (this.statusKey === 'mail') { } else if (this.statusKey === 'mail') {
result = `${ item.sendDate }新增邮寄信息,邮寄单号:${ item.postNo }` if (item.sendDate || item.postNo) {
result = `${ item.sendDate }新增邮寄信息,邮寄单号:${ item.postNo }`
}
} }
return result return result
} }
@@ -175,4 +181,8 @@ export default {
.status-tooltip .ant-tooltip-inner { .status-tooltip .ant-tooltip-inner {
white-space: pre-wrap !important; white-space: pre-wrap !important;
} }
.ant-tooltip {
max-width: 16rem;
}
</style> </style>
+3 -3
View File
@@ -17,14 +17,14 @@
@paste.native.capture.prevent="handleOperate" @paste.native.capture.prevent="handleOperate"
autocomplete="new-password" autocomplete="new-password"
label="旧密码"> label="旧密码">
<a-input type="password" placeholder="请输入旧密码" v-decorator="[ 'oldpassword', validatorRules.oldpassword]"/> <a-input-password type="password" placeholder="请输入旧密码" v-decorator="[ 'oldpassword', validatorRules.oldpassword]"/>
</a-form-item> </a-form-item>
<a-form-item <a-form-item
:labelCol="labelCol" :labelCol="labelCol"
:wrapperCol="wrapperCol" :wrapperCol="wrapperCol"
label="新密码"> label="新密码">
<a-input <a-input-password
type="password" type="password"
placeholder="请输入新密码" placeholder="请输入新密码"
@paste.native.capture.prevent="handleOperate" @paste.native.capture.prevent="handleOperate"
@@ -36,7 +36,7 @@
:labelCol="labelCol" :labelCol="labelCol"
:wrapperCol="wrapperCol" :wrapperCol="wrapperCol"
label="确认新密码"> label="确认新密码">
<a-input <a-input-password
type="password" type="password"
@blur="handleConfirmBlur" @blur="handleConfirmBlur"
placeholder="请确认新密码" placeholder="请确认新密码"
+3 -3
View File
@@ -24,7 +24,7 @@ export const JeroListMixin = {
ipagination: { ipagination: {
current: 1, current: 1,
pageSize: 10, pageSize: 10,
pageSizeOptions: ['10', '20', '30', '50'], pageSizeOptions: ['10', '20', '30', '50', '100'],
showTotal: (total, range) => { showTotal: (total, range) => {
return range[0] + '-' + range[1] + ' 共' + total + '条' return range[0] + '-' + range[1] + ' 共' + total + '条'
}, },
@@ -284,7 +284,7 @@ export const JeroListMixin = {
param['selections'] = this.selectedRowKeys.join(',') param['selections'] = this.selectedRowKeys.join(',')
} }
console.log('导出参数', param) console.log('导出参数', param)
downloadFile(this.url.exportXlsUrl, fileName + '.xls', param) downloadFile(this.url.exportXlsUrl, fileName + '.xlsx', param)
}, },
/* /*
* 下载模板 * 下载模板
@@ -293,7 +293,7 @@ export const JeroListMixin = {
if (!fileName || typeof fileName != 'string') { if (!fileName || typeof fileName != 'string') {
fileName = '模板文件' fileName = '模板文件'
} }
downloadFile(this.url.downTemplateUrl, fileName + '.xls') downloadFile(this.url.downTemplateUrl, fileName + '.xlsx')
}, },
/* 导入 */ /* 导入 */
handleImportExcel(info) { handleImportExcel(info) {
@@ -134,7 +134,7 @@ export default {
}, { }, {
title: '职务', title: '职务',
align: 'center', align: 'center',
width: 160, width: 280,
dataIndex: 'post', dataIndex: 'post',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, { }, {
@@ -149,6 +149,7 @@ export default {
}, { }, {
title: '企业名称', title: '企业名称',
align: 'center', align: 'center',
width: 280,
dataIndex: 'companyName', dataIndex: 'companyName',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, { }, {
@@ -650,6 +650,9 @@ export default {
case 'accountsReceivableAmount': case 'accountsReceivableAmount':
callback('请输入应收金额') callback('请输入应收金额')
break break
case 'noTaxAmount':
callback('请输入未税金额')
break
case 'amountReceived': case 'amountReceived':
callback('请输入已收金额') callback('请输入已收金额')
break break
@@ -36,7 +36,7 @@
@change="handleSignedCompanyChange"></company-select> @change="handleSignedCompanyChange"></company-select>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :xxl="6" :xl="8" :sm="12" style="margin-bottom: 0"> <a-col :xxl="6" :xl="8" :sm="12" style="margin-bottom: 0px">
<a-form-item label="签订联系人" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="签订联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<select-contacts placeholder="请选择签订联系人" <select-contacts placeholder="请选择签订联系人"
:selected-company="selectedCompany" :selected-company="selectedCompany"
@@ -331,7 +331,6 @@ export default {
form: this.$form.createForm(this), form: this.$form.createForm(this),
confirmLoading: false, confirmLoading: false,
model: {}, model: {},
temporaryModel: {}, // 编辑数据临时保存
title: '', title: '',
labelCol: { labelCol: {
xs: { span: 24 }, xs: { span: 24 },
@@ -439,6 +438,9 @@ export default {
this.rateNum = 6 / 100 this.rateNum = 6 / 100
}, },
edit(id) { edit(id) {
if (!id) {
return
}
this.title = '编辑收入合同' this.title = '编辑收入合同'
this.confirmLoading = true this.confirmLoading = true
const param = { const param = {
@@ -476,7 +478,6 @@ export default {
this.accountsReceivableNum = record.accountsReceivableAmount this.accountsReceivableNum = record.accountsReceivableAmount
this.amountReceivedNum = record.amountReceived this.amountReceivedNum = record.amountReceived
this.model = Object.assign({}, record) this.model = Object.assign({}, record)
this.temporaryModel = Object.assign({}, record)
this.$nextTick(() => { this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model, 'contractNum', 'contractName', 'signedCompany', 'signedContactsId', 'opening', 'principalId', 'departmentName', 'contractAmount', 'rate', 'noTaxAmount', 'contractDate', 'terminationDate', 'contractTimePoints', 'accountsReceivableAmount', 'amountReceived', 'outstandingAmount', 'accountStatus', 'contractPaymentTimes', 'pack', 'packYear')) this.form.setFieldsValue(pick(this.model, 'contractNum', 'contractName', 'signedCompany', 'signedContactsId', 'opening', 'principalId', 'departmentName', 'contractAmount', 'rate', 'noTaxAmount', 'contractDate', 'terminationDate', 'contractTimePoints', 'accountsReceivableAmount', 'amountReceived', 'outstandingAmount', 'accountStatus', 'contractPaymentTimes', 'pack', 'packYear'))
this.confirmLoading = false this.confirmLoading = false
@@ -535,18 +536,12 @@ export default {
}) })
}, },
handleCancle() { handleCancle() {
this.model = this.temporaryModel if (this.model.id) {
// 处理联系人信息回显 this.edit(this.model.id)
this.isCancel = true } else {
this.model.signedContactsId = this.model.signedContactsTemporaryId this.form.resetFields()
this.selectedContact = { this.$refs.installmentForm.form.resetFields()
id: this.model.signedContactsTemporaryId,
name: this.model.signedContactsTemporaryName
} }
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model, 'contractNum', 'contractName', 'signedCompany', 'signedContactsId', 'opening', 'principalId', 'departmentName', 'contractAmount', 'rate', 'noTaxAmount', 'contractDate', 'terminationDate', 'contractTimePoints', 'accountsReceivableAmount', 'amountReceived', 'outstandingAmount', 'accountStatus', 'contractPaymentTimes', 'pack', 'packYear'))
this.confirmLoading = false
})
}, },
installmentFormOk(value) { installmentFormOk(value) {
this.installmentList = value.installmentList this.installmentList = value.installmentList
@@ -762,6 +757,9 @@ export default {
case 'accountsReceivableAmount': case 'accountsReceivableAmount':
callback('请输入应收金额') callback('请输入应收金额')
break break
case 'noTaxAmount':
callback('请输入未税金额')
break
case 'amountReceived': case 'amountReceived':
callback('请输入已收金额') callback('请输入已收金额')
break break
@@ -256,7 +256,7 @@ export default {
param['ids'] = this.selectedRowKeys.join(',') param['ids'] = this.selectedRowKeys.join(',')
} }
console.log('导出参数', param) console.log('导出参数', param)
downloadFile(this.url.exportXlsUrl, fileName + '.xls', param) downloadFile(this.url.exportXlsUrl, fileName + '.xlsx', param)
}, },
/** /**
* 新增成员 * 新增成员
@@ -80,7 +80,7 @@ export default {
this.model = Object.assign({}, record) this.model = Object.assign({}, record)
this.visible = true this.visible = true
this.$nextTick(() => { this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model, 'name', 'remark')) this.form.setFieldsValue(pick(this.model, 'name', 'remarks'))
}) })
}, },
close() { close() {
@@ -264,7 +264,7 @@ export default {
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) { if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
param['ids'] = this.selectedRowKeys.join(',') param['ids'] = this.selectedRowKeys.join(',')
} }
downloadFile(this.url.exportXlsUrl, fileName + '.xls', param) downloadFile(this.url.exportXlsUrl, fileName + '.xlsx', param)
}, },
handleCancel() { handleCancel() {
this.visible = false this.visible = false
@@ -8,8 +8,8 @@
<a-form layout="inline" @keyup.enter.native="searchQuery"> <a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row> <a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24"> <a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="类型项目" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="项目类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag v-model="queryParam.projectType" placeholder="请选择类型项目" <j-dict-select-tag v-model="queryParam.projectType" placeholder="请选择项目类型"
dictCode="project_type"/> dictCode="project_type"/>
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -89,21 +89,22 @@
</a-form-item> </a-form-item>
</a-col> </a-col>
<!-- 选择嘉宾和内部企业、缴费方式为打包也不显示--> <!-- 选择嘉宾和内部企业、缴费方式为打包也不显示-->
<a-col :xxl="8" :xl="12" :sm="24" v-if="identifyType === 2 && !payModeBool "> <!-- <a-col :xxl="8" :xl="12" :sm="24" v-if="identifyType === 2 && !payModeBool ">-->
<a-form-item label="付款凭证" :labelCol="labelCol" :wrapperCol="wrapperCol"> <!-- <a-form-item label="付款凭证" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
<j-image-upload :disabled="isEditBool" v-decorator="['paymentRecord']" :return-id="true"></j-image-upload> <!-- <j-image-upload :disabled="isEditBool" v-decorator="['paymentRecord']" :return-id="true"></j-image-upload>-->
</a-form-item> <!-- </a-form-item>-->
</a-col> <!-- </a-col>-->
<!--缴费方式为线上的需要上传 --> <!--缴费方式为线上的需要上传 -->
<a-col :xxl="8" :xl="12" :sm="24" v-if="onlinePayModeBool"> <!-- 暂时注释 2021 10 14 author: fac 需求说是 不在报名和添加参会人的时候去上传 缴费凭证和订单后四位-->
<a-form-item label="订单号后四位" :labelCol="labelCol" :wrapperCol="wrapperCol"> <!-- <a-col :xxl="8" :xl="12" :sm="24" v-if="onlinePayModeBool">-->
<a-input placeholder="请输入订单号后四位" <!-- <a-form-item label="订单号后四位" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
:maxLength='4' <!-- <a-input placeholder="请输入订单号后四位"-->
:disabled="isEditBool" <!-- :maxLength='4'-->
@change="(e) => {e.target.value = e.target.value.replace(/[^0-9]/g,'')}" <!-- :disabled="isEditBool"-->
v-decorator="[ 'orderCode',validatorRules.orderCode]"></a-input> <!-- @change="(e) => {e.target.value = e.target.value.replace(/[^0-9]/g,'')}"-->
</a-form-item> <!-- v-decorator="[ 'orderCode',validatorRules.orderCode]"></a-input>-->
</a-col> <!-- </a-form-item>-->
<!-- </a-col>-->
</a-row> </a-row>
</template> </template>
</a-form> </a-form>
@@ -111,7 +112,7 @@
<script> <script>
import JDate from '@comp/jero/JDate' import JDate from '@comp/jero/JDate'
import JImageUpload from '@comp/jero/JImageUpload' // import JImageUpload from '@comp/jero/JImageUpload'
import SelectContacts from '@comp/company/SelectContacts' import SelectContacts from '@comp/company/SelectContacts'
import pick from 'lodash.pick' import pick from 'lodash.pick'
import JDictSelectTag from '@comp/dict/JDictSelectTag' import JDictSelectTag from '@comp/dict/JDictSelectTag'
@@ -121,7 +122,7 @@ export default {
name: 'OtherMeetingForm', name: 'OtherMeetingForm',
components: { components: {
JDate, JDate,
JImageUpload, // JImageUpload,
SelectContacts, SelectContacts,
JDictSelectTag JDictSelectTag
}, },
+1 -1
View File
@@ -243,7 +243,7 @@ export default {
param['ids'] = this.selectedRowKeys.join(',') param['ids'] = this.selectedRowKeys.join(',')
} }
console.log('导出参数', param) console.log('导出参数', param)
downloadFile(this.url.exportXlsUrl, fileName + '.xls', param) downloadFile(this.url.exportXlsUrl, fileName + '.xlsx', param)
} }
} }
} }
+1 -1
View File
@@ -237,7 +237,7 @@ export default {
param['ids'] = this.selectedRowKeys.join(',') param['ids'] = this.selectedRowKeys.join(',')
} }
console.log('导出参数', param) console.log('导出参数', param)
downloadFile(this.url.exportXlsUrl, fileName + '.xls', param) downloadFile(this.url.exportXlsUrl, fileName + '.xlsx', param)
} }
} }
} }
@@ -29,6 +29,8 @@
<a-input <a-input
v-decorator="['postNo', validatorRules.postNo]" v-decorator="['postNo', validatorRules.postNo]"
placeholder="请输入快递单号" placeholder="请输入快递单号"
:maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"
></a-input> ></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -29,6 +29,8 @@
<a-input <a-input
v-decorator="['postNo', validatorRules.postNo]" v-decorator="['postNo', validatorRules.postNo]"
placeholder="请输入快递单号" placeholder="请输入快递单号"
:maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"
></a-input> ></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -159,6 +159,7 @@
<!-- 来款阶段--> <!-- 来款阶段-->
<arrive-stage-module <arrive-stage-module
ref="arriveStage" ref="arriveStage"
:project-type="selectProjectType"
:project-id="selectProjectId" :project-id="selectProjectId"
:visible.sync="arriveStageVisible" :visible.sync="arriveStageVisible"
@ok="modalFormOk"></arrive-stage-module> @ok="modalFormOk"></arrive-stage-module>
@@ -496,6 +497,7 @@ export default {
incomePayment(record) { incomePayment(record) {
this.selectProjectId = record.id this.selectProjectId = record.id
this.arriveStageVisible = true this.arriveStageVisible = true
this.selectProjectType = record.projectType
}, },
/** /**
* 开票 * 开票
@@ -192,6 +192,10 @@ export default {
this.$forceUpdate() this.$forceUpdate()
}, },
handleOk() { handleOk() {
if (this.inputIncomingAmount > this.sumAmountOwed) {
this.$message.warn('来款金额大于当前欠款金额,输入有误!')
return
}
if (this.confirmLoading) { if (this.confirmLoading) {
return return
} }
@@ -255,7 +259,7 @@ export default {
e.target.value = (e.target.value.replace(/[^0-9.]/g, '')).trim() e.target.value = (e.target.value.replace(/[^0-9.]/g, '')).trim()
this.inputIncomingAmount = Number(e.target.value) this.inputIncomingAmount = Number(e.target.value)
if (this.inputIncomingAmount > this.sumAmountOwed) { if (this.inputIncomingAmount > this.sumAmountOwed) {
this.$message.warn('来款金额大于总欠款金额,请修改') this.$message.warn('来款金额大于当前欠款金额,输入有误!')
return return
} }
this.clearThisTimeAmount() this.clearThisTimeAmount()
@@ -275,7 +275,7 @@ export default {
e.target.value = (e.target.value.replace(/[^0-9.]/g, '')).trim() e.target.value = (e.target.value.replace(/[^0-9.]/g, '')).trim()
this.inputInvoicingAmount = Number(e.target.value) this.inputInvoicingAmount = Number(e.target.value)
if (this.inputInvoicingAmount > this.sumAmountOwed) { if (this.inputInvoicingAmount > this.sumAmountOwed) {
this.$message.warn('开票金额大于总未开票金额,请修改') this.$message.warn('开票金额大于当前未开票金额,输入有误!')
return return
} }
this.clearThisTimeAmount() this.clearThisTimeAmount()
@@ -336,6 +336,10 @@ export default {
}) })
}, },
handleOk() { handleOk() {
if (this.inputInvoicingAmount > this.sumAmountOwed) {
this.$message.warn('开票金额大于当前未开票金额,输入有误!')
return
}
if (this.confirmLoading) { if (this.confirmLoading) {
return return
} }
@@ -208,7 +208,12 @@ export default {
// 触发表单验证 // 触发表单验证
this.form.validateFields((err, values) => { this.form.validateFields((err, values) => {
if (!err) { if (!err) {
values.companyId = values.company.id // 判断选中企业是否改变
if (values.company.id === this.model.companyId) {
values.companyId = this.model.companyTemporaryId
} else {
values.companyId = values.company.id
}
that.confirmLoading = true that.confirmLoading = true
let httpurl = '' let httpurl = ''
if (!this.model.id) { if (!this.model.id) {
@@ -197,7 +197,7 @@ export default {
align: 'center', align: 'center',
dataIndex: 'startTime', dataIndex: 'startTime',
width: 160, width: 160,
customRender: (text, record) => (<j-ellipsis value={record.startTime + record.endTime} length={20}></j-ellipsis>) customRender: (text, record) => (<j-ellipsis value={record.startTime + '~' + record.endTime} length={20}></j-ellipsis>)
}, },
{ {
title: '召开地点', title: '召开地点',
@@ -179,12 +179,16 @@ export default {
title: '应收金额', title: '应收金额',
align: 'center', align: 'center',
width: 150, width: 150,
dataIndex: 'receivableAmount' dataIndex: 'receivableAmount',
customRender: (text, record) => (
<j-ellipsis value={ record.receivableAmount + '元' } length={ 15 }></j-ellipsis>)
}, { }, {
title: '实收金额', title: '实收金额',
align: 'center', align: 'center',
width: 150, width: 150,
dataIndex: 'paidAmount' dataIndex: 'paidAmount',
customRender: (text, record) => (
<j-ellipsis value={ record.paidAmount + '元' } length={ 15 }></j-ellipsis>)
}, { }, {
title: '负责人', title: '负责人',
align: 'center', align: 'center',
@@ -379,6 +379,7 @@ export default {
type: 'chargeNoticeA', type: 'chargeNoticeA',
label: `A:${ this.workingGroupDetail.chargeNoticeNoA }`, label: `A:${ this.workingGroupDetail.chargeNoticeNoA }`,
value: this.workingGroupDetail.chargeNoticeNoA, value: this.workingGroupDetail.chargeNoticeNoA,
key: this.workingGroupDetail.chargeA,
yearCharge: this.workingGroupDetail.yearChargeA, yearCharge: this.workingGroupDetail.yearChargeA,
chargeNoticeId: this.workingGroupDetail.chargeNoticeAId chargeNoticeId: this.workingGroupDetail.chargeNoticeAId
} }
@@ -390,6 +391,7 @@ export default {
type: 'chargeNoticeB', type: 'chargeNoticeB',
label: `B:${ this.workingGroupDetail.chargeNoticeNoB }`, label: `B:${ this.workingGroupDetail.chargeNoticeNoB }`,
value: this.workingGroupDetail.chargeNoticeNoB, value: this.workingGroupDetail.chargeNoticeNoB,
key: this.workingGroupDetail.chargeB,
yearCharge: this.workingGroupDetail.yearChargeB, yearCharge: this.workingGroupDetail.yearChargeB,
chargeNoticeId: this.workingGroupDetail.chargeNoticeBId chargeNoticeId: this.workingGroupDetail.chargeNoticeBId
} }
@@ -117,7 +117,7 @@ import SelectPrincipal from '@comp/company/SelectPrincipal'
import ProgressBar from '@comp/ProgressBar' import ProgressBar from '@comp/ProgressBar'
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle' import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
import IconWorkingGruop from '@/assets/imgs/icon/icon_working_group.png' import IconWorkingGruop from '@/assets/imgs/icon/icon_working_group.png'
import { copyWorkingGroup, checkoutWorkingGroupPrincipal } from '../../api/incomePaymentsApi' import { copyWorkingGroup } from '../../api/incomePaymentsApi'
import { getAction } from '../../api/manage' import { getAction } from '../../api/manage'
export default { export default {
@@ -11,8 +11,16 @@
<a-spin :spinning="confirmLoading"> <a-spin :spinning="confirmLoading">
<a-form :form="form"> <a-form :form="form">
<a-form-item label="收费通知号" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol"> <a-form-item label="收费通知号" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-radio-group v-decorator="['chargeNoticeNo']" @change="handleChargeNoticeChange" <a-radio-group
:options="chargeNoticeList"></a-radio-group> class="charge-notice-no"
v-decorator="['charge']"
@change="handleChargeNoticeChange">
<a-radio v-for="item in chargeNoticeList" :key="item.key" :value="item.key">
<a-tooltip :title="item.label">
{{ item.label }}
</a-tooltip>
</a-radio>
</a-radio-group>
</a-form-item> </a-form-item>
<a-row v-if="selectedChargeNotice === 'A'"> <a-row v-if="selectedChargeNotice === 'A'">
<a-col :xl="12" :sm="24"> <a-col :xl="12" :sm="24">
@@ -26,11 +34,10 @@
</a-col> </a-col>
<a-col :xl="12" :sm="24"> <a-col :xl="12" :sm="24">
<a-form-item label="收费通知A" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="收费通知A" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-upload file-type="pdf" <j-upload :multiple="false"
file-type-error-message="请上传收费通知A"
:multiple="false"
:return-id="true" :return-id="true"
bizPath="payment" bizPath="payment"
:number="1"
v-decorator="['chargeNoticeId']" v-decorator="['chargeNoticeId']"
:trigger-change="true"></j-upload> :trigger-change="true"></j-upload>
</a-form-item> </a-form-item>
@@ -48,10 +55,9 @@
</a-col> </a-col>
<a-col :xl="12" :sm="24"> <a-col :xl="12" :sm="24">
<a-form-item label="收费通知B" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="收费通知B" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-upload file-type="pdf" <j-upload :multiple="false"
file-type-error-message="请上传收费通知B"
:multiple="false"
:return-id="true" :return-id="true"
:number="1"
bizPath="payment" bizPath="payment"
v-decorator="['chargeNoticeId']" v-decorator="['chargeNoticeId']"
:trigger-change="true"></j-upload> :trigger-change="true"></j-upload>
@@ -146,25 +152,25 @@ export default {
* 收费通知号变化, 回显本年应收款和文件 * 收费通知号变化, 回显本年应收款和文件
*/ */
handleChargeNoticeChange(e) { handleChargeNoticeChange(e) {
let chargeNoticeNo = e.target.value let key = e.target.value
this.pickChargeNoticeType(chargeNoticeNo) this.pickChargeNoticeType(key)
}, },
/** /**
* 匹配显隐 * 匹配显隐
* @param value * @param key
*/ */
pickChargeNoticeType(value) { pickChargeNoticeType(key) {
this.chargeNoticeList.forEach(item => { this.chargeNoticeList.forEach(item => {
if (item.value === value) { if (item.type === 'chargeNoticeA' && key === 'a') {
if (item.type === 'chargeNoticeA') { this.selectedChargeNotice = 'A'
this.selectedChargeNotice = 'A' this.model.receivableAmount = item.yearCharge
this.model.receivableAmount = item.yearCharge this.model.chargeNoticeId = item.chargeNoticeId
this.model.chargeNoticeId = item.chargeNoticeId this.model.chargeNoticeNo = item.value
} else { } else if (item.type === 'chargeNoticeB' && key === 'b'){
this.selectedChargeNotice = 'B' this.selectedChargeNotice = 'B'
this.model.receivableAmount = item.yearCharge this.model.receivableAmount = item.yearCharge
this.model.chargeNoticeId = item.chargeNoticeId this.model.chargeNoticeId = item.chargeNoticeId
} this.model.chargeNoticeNo = item.value
} }
}) })
this.$nextTick(() => { this.$nextTick(() => {
@@ -100,9 +100,9 @@
<a-form-item label="收费通知号" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="收费通知号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group <a-radio-group
class="charge-notice-no" class="charge-notice-no"
v-decorator="['chargeNoticeNo',validatorRules.chargeNoticeNo]" v-decorator="['charge',validatorRules.charge]"
@change="handleChargeNoticeChange"> @change="handleChargeNoticeChange">
<a-radio v-for="item in chargeNoticeList" :key="item.value" :value="item.value"> <a-radio v-for="item in chargeNoticeList" :key="item.key" :value="item.key">
<a-tooltip :title="item.label"> <a-tooltip :title="item.label">
{{ item.label }} {{ item.label }}
</a-tooltip> </a-tooltip>
@@ -114,7 +114,7 @@
<a-row v-if="chargeWayType === 2"> <a-row v-if="chargeWayType === 2">
<a-col :xl="12" :sm="24"> <a-col :xl="12" :sm="24">
<a-form-item label="应收金额" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="应收金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-row> <a-row :gutter="10">
<a-col :span="20"> <a-col :span="20">
<a-input placeholder="请输入应收金额" <a-input placeholder="请输入应收金额"
v-decorator="['receivableAmount',validatorRules.receivableAmount]" v-decorator="['receivableAmount',validatorRules.receivableAmount]"
@@ -148,11 +148,10 @@
</a-col> </a-col>
<a-col :xl="12" :sm="24"> <a-col :xl="12" :sm="24">
<a-form-item label="收费通知A" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="收费通知A" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-upload file-type="pdf" <j-upload :multiple="false"
file-type-error-message="请上传收费通知A"
:multiple="false"
:return-id="true" :return-id="true"
bizPath="payment" bizPath="payment"
:number="1"
v-decorator="['chargeNoticeId']" v-decorator="['chargeNoticeId']"
:trigger-change="true"></j-upload> :trigger-change="true"></j-upload>
</a-form-item> </a-form-item>
@@ -170,11 +169,10 @@
</a-col> </a-col>
<a-col :xl="12" :sm="24"> <a-col :xl="12" :sm="24">
<a-form-item label="收费通知B" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="收费通知B" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-upload file-type="pdf" <j-upload :multiple="false"
file-type-error-message="请上传收费通知B"
:multiple="false"
:return-id="true" :return-id="true"
bizPath="payment" bizPath="payment"
:number="1"
v-decorator="['chargeNoticeId']" v-decorator="['chargeNoticeId']"
:trigger-change="true"></j-upload> :trigger-change="true"></j-upload>
</a-form-item> </a-form-item>
@@ -325,13 +323,13 @@ export default {
rules: [{ required: true, message: '请输入合同号' }], rules: [{ required: true, message: '请输入合同号' }],
validateTrigger: 'blur' validateTrigger: 'blur'
}, },
chargeNoticeNo: { charge: {
rules: [{ required: true, message: '请输入收费通知号' }], rules: [{ required: true, message: '请输入收费通知号' }],
validateTrigger: 'blur' validateTrigger: 'blur'
}, },
needInvoice: { needInvoice: {
rules: [{ required: true, message: '请选择发票类型' }], rules: [{ required: true, message: '请选择发票类型' }],
validateTrigger: 'blur' validateTrigger: 'change'
} }
}, },
chargeWayType: null, chargeWayType: null,
@@ -400,7 +398,6 @@ export default {
this.companyChange(this.selectedCompany) this.companyChange(this.selectedCompany)
this.form.resetFields() this.form.resetFields()
this.model = Object.assign({}, record) this.model = Object.assign({}, record)
console.log(this.signedContactId)
// 是否存在从收入合同传入的签订联系人id // 是否存在从收入合同传入的签订联系人id
this.model.contactsIdOne = this.signedContactId || this.model.contactsTemporaryIdOne || undefined this.model.contactsIdOne = this.signedContactId || this.model.contactsTemporaryIdOne || undefined
this.model.contactsIdTwo = this.model.contactsTemporaryIdTwo || undefined this.model.contactsIdTwo = this.model.contactsTemporaryIdTwo || undefined
@@ -426,10 +423,10 @@ export default {
} }
} }
this.chargeWayType = record.chargeWay this.chargeWayType = record.chargeWay
this.pickChargeNoticeType(record.chargeNoticeNo) this.pickChargeNoticeType(record.charge, true)
this.visible = true this.visible = true
this.$nextTick(() => { this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model, 'chargeCompany', 'contactsIdOne', 'contactsIdTwo', 'contactsIdThree', 'mailContactsId', 'chargeWay', 'chargeNoticeNo', 'receivableAmount', 'contractNum', 'receivableAmount', 'chargeNoticeId', 'needInvoice', 'remarks')) this.form.setFieldsValue(pick(this.model, 'chargeCompany', 'contactsIdOne', 'contactsIdTwo', 'contactsIdThree', 'mailContactsId', 'chargeWay', 'charge', 'receivableAmount', 'contractNum', 'receivableAmount', 'chargeNoticeId', 'needInvoice', 'remarks'))
}) })
}, },
close() { close() {
@@ -512,25 +509,29 @@ export default {
* 收费通知号变化, 回显本年应收款和文件 * 收费通知号变化, 回显本年应收款和文件
*/ */
handleChargeNoticeChange(e) { handleChargeNoticeChange(e) {
let chargeNoticeNo = e.target.value let key = e.target.value
this.pickChargeNoticeType(chargeNoticeNo) this.pickChargeNoticeType(key)
}, },
/** /**
* 匹配收费通知显隐 * 匹配收费通知显隐
* @param value * @param value
*/ */
pickChargeNoticeType(value) { pickChargeNoticeType(key, isFirst) {
this.chargeNoticeList.forEach(item => { this.chargeNoticeList.forEach(item => {
if (item.value === value) { if (item.type === 'chargeNoticeA' && key === 'a') {
if (item.type === 'chargeNoticeA') { this.selectedChargeNotice = 'A'
this.selectedChargeNotice = 'A' if (!isFirst) {
this.model.receivableAmount = item.yearCharge
this.model.chargeNoticeId = item.chargeNoticeId
} else {
this.selectedChargeNotice = 'B'
this.model.receivableAmount = item.yearCharge this.model.receivableAmount = item.yearCharge
this.model.chargeNoticeId = item.chargeNoticeId this.model.chargeNoticeId = item.chargeNoticeId
} }
this.model.chargeNoticeNo = item.value
} else if (item.type === 'chargeNoticeB' && key === 'b') {
this.selectedChargeNotice = 'B'
if (!isFirst) {
this.model.receivableAmount = item.yearCharge
this.model.chargeNoticeId = item.chargeNoticeId
}
this.model.chargeNoticeNo = item.value
} }
}) })
this.$nextTick(() => { this.$nextTick(() => {
@@ -93,9 +93,7 @@
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="收费通知A" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="收费通知A" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-upload file-type="pdf" <j-upload :multiple="false"
file-type-error-message="请上传pdf文件"
:multiple="false"
:return-id="true" :return-id="true"
bizPath="payment" bizPath="payment"
:number="1" :number="1"
@@ -131,9 +129,7 @@
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="收费通知B" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="收费通知B" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-upload file-type="pdf" <j-upload :multiple="false"
file-type-error-message="请上传pdf文件"
:multiple="false"
:return-id="true" :return-id="true"
bizPath="payment" bizPath="payment"
:number="1" :number="1"
@@ -275,6 +271,8 @@ export default {
} }
values.yearChargeA = values.yearChargeA ? Number(values.yearChargeA) : null values.yearChargeA = values.yearChargeA ? Number(values.yearChargeA) : null
values.yearChargeB = values.yearChargeB ? Number(values.yearChargeB) : null values.yearChargeB = values.yearChargeB ? Number(values.yearChargeB) : null
values.chargeA = values.chargeNoticeNoA ? 'a' : null
values.chargeB = values.chargeNoticeNoB ? 'b' : null
const formData = Object.assign(this.model, values) const formData = Object.assign(this.model, values)
console.log('表单提交数据', formData) console.log('表单提交数据', formData)
httpAction(httpurl, formData, method).then((res) => { httpAction(httpurl, formData, method).then((res) => {
@@ -132,6 +132,7 @@
:dataSource="footerDataSource" :dataSource="footerDataSource"
:showHeader="false" :showHeader="false"
:pagination="false" :pagination="false"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap footer-table"> class="j-table-force-nowrap footer-table">
<!-- 项目名称--> <!-- 项目名称-->
@@ -163,6 +164,7 @@ import SelectPrincipal from '../../components/company/SelectPrincipal'
import JYearDate from '../../components/jero/JYearDate' import JYearDate from '../../components/jero/JYearDate'
import { getAction } from '../../api/manage' import { getAction } from '../../api/manage'
import ProjectDetailModal from '../../components/ProjectDetailModal' import ProjectDetailModal from '../../components/ProjectDetailModal'
import { downloadFile } from '../../api/manage'
export default { export default {
name: 'WholeInstituteStatisticsList', name: 'WholeInstituteStatisticsList',
@@ -286,7 +288,8 @@ export default {
list: '/statistics/allProjectStatistics/list', list: '/statistics/allProjectStatistics/list',
exportXlsUrl: '/statistics/allProjectStatistics/statistics/excel' exportXlsUrl: '/statistics/allProjectStatistics/statistics/excel'
}, },
validateMoney: true validateMoney: true,
exportSelectedKeys: []
} }
}, },
created() { created() {
@@ -388,6 +391,7 @@ export default {
this.queryParam = { this.queryParam = {
year: new Date().getFullYear().toString() year: new Date().getFullYear().toString()
} }
this.exportSelectedKeys = []
this.loadData(1) this.loadData(1)
}, },
/** /**
@@ -435,7 +439,26 @@ export default {
} }
return return
} }
} },
onSelectChange(selectedRowKeys, selectionRows) {
this.selectedRowKeys = selectedRowKeys
this.exportSelectedKeys = []
selectionRows.forEach(item => {
this.exportSelectedKeys.push(item.projectId)
})
this.selectionRows = selectionRows
},
handleExportXls(fileName) {
if (!fileName || typeof fileName != 'string') {
fileName = '导出文件'
}
let param = this.getQueryParams()
if (this.exportSelectedKeys && this.exportSelectedKeys.length > 0) {
param['selections'] = this.exportSelectedKeys.join(',')
}
console.log('导出参数', param)
downloadFile(this.url.exportXlsUrl, fileName + '.xlsx', param)
},
} }
} }
</script> </script>
+1 -1
View File
@@ -429,7 +429,7 @@ export default {
param['selections'] = this.checkedKeys.join(',') param['selections'] = this.checkedKeys.join(',')
} }
console.log('导出参数', param) console.log('导出参数', param)
downloadFile(this.url.exportXlsUrl, fileName + '.xls', param) downloadFile(this.url.exportXlsUrl, fileName + '.xlsx', param)
}, },
nodeModalOk() { nodeModalOk() {
this.loadTree() this.loadTree()
+1 -1
View File
@@ -64,7 +64,7 @@
<template slot="title"> <template slot="title">
<span v-html="text" class="ellipsis-span"></span> <span v-html="text" class="ellipsis-span"></span>
</template> </template>
<span v-html="myEllipsis(text,20)" class="ellipsis-span"></span> <span v-html="myEllipsis(text,50)" class="ellipsis-span"></span>
</a-tooltip> </a-tooltip>
</span> </span>
+163 -147
View File
@@ -1,13 +1,13 @@
<template> <template>
<a-drawer <a-drawer
:title="title" :title="title"
:maskClosable="true" :maskClosable="true"
:width="drawerWidth" :width="drawerWidth"
placement="right" placement="right"
:closable="true" :closable="true"
@close="handleCancel" @close="handleCancel"
:visible="visible" :visible="visible"
style="height: 100%;overflow: auto;padding-bottom: 53px;"> style="height: 100%;overflow: auto;padding-bottom: 53px;">
<template slot="title"> <template slot="title">
<div style="width: 100%;"> <div style="width: 100%;">
@@ -23,26 +23,32 @@
<a-form :form="form"> <a-form :form="form">
<a-form-item label="用户账号" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="用户账号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入用户账号" @change="event => event.target.value = event.target.value.trim()" :maxLength="50" v-decorator.trim="[ 'username', validatorRules.username]" <a-input placeholder="请输入用户账号" @change="event => event.target.value = event.target.value.trim()"
:readOnly="!!model.id" :disabled="disableSubmit || disabledEdit" /> :maxLength="50" v-decorator.trim="[ 'username', validatorRules.username]"
:readOnly="!!model.id" :disabled="disableSubmit || disabledEdit"/>
</a-form-item> </a-form-item>
<template v-if="!model.id"> <template v-if="!model.id">
<a-form-item label="登录密码" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="登录密码" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input type="password" placeholder="请输入登录密码" :maxLength="50" autocomplete='new-password' <a-input-password type="password" placeholder="请输入登录密码" :maxLength="50" autocomplete='new-password'
@paste.native.capture.prevent="handleOperate" @paste.native.capture.prevent="handleOperate"
@change="event => event.target.value = event.target.value.trim()" :disabled="disableSubmit" v-decorator="[ 'password',validatorRules.password]"/> @change="event => event.target.value = event.target.value.trim()"
:disabled="disableSubmit" v-decorator="[ 'password',validatorRules.password]"/>
</a-form-item> </a-form-item>
<a-form-item label="确认密码" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="确认密码" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input type="password" @blur="handleConfirmBlur" :maxLength="50" placeholder="请输入确认密码" :disabled="disableSubmit" <a-input-password type="password" @blur="handleConfirmBlur" :maxLength="50" placeholder="请输入确认密码"
@paste.native.capture.prevent="handleOperate" :disabled="disableSubmit"
@change="event => event.target.value = event.target.value.trim()" v-decorator="[ 'confirmpassword', validatorRules.confirmpassword]"/> @paste.native.capture.prevent="handleOperate"
@change="event => event.target.value = event.target.value.trim()"
v-decorator="[ 'confirmpassword', validatorRules.confirmpassword]"/>
</a-form-item> </a-form-item>
</template> </template>
<a-form-item label="用户姓名" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="用户姓名" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入用户姓名" :disabled="disableSubmit" @change="event => event.target.value = event.target.value.trim()" :maxLength="50" v-decorator.trim="[ 'realname', validatorRules.realname]"/> <a-input placeholder="请输入用户姓名" :disabled="disableSubmit"
@change="event => event.target.value = event.target.value.trim()" :maxLength="50"
v-decorator.trim="[ 'realname', validatorRules.realname]"/>
</a-form-item> </a-form-item>
<!--<a-form-item label="工号" :labelCol="labelCol" :wrapperCol="wrapperCol">--> <!--<a-form-item label="工号" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
@@ -53,101 +59,105 @@
<!--<j-select-position placeholder="请选择职务" :multiple="false" v-decorator="['post', {}]"/>--> <!--<j-select-position placeholder="请选择职务" :multiple="false" v-decorator="['post', {}]"/>-->
<!--</a-form-item>--> <!--</a-form-item>-->
<!-- <a-form-item label="角色分配" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!roleDisabled">--> <!-- <a-form-item label="角色分配" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!roleDisabled">-->
<!-- <a-select--> <!-- <a-select-->
<!-- mode="multiple"--> <!-- mode="multiple"-->
<!-- :disabled="departDisabled || disableSubmit"--> <!-- :disabled="departDisabled || disableSubmit"-->
<!-- style="width: 100%"--> <!-- style="width: 100%"-->
<!-- placeholder="请选择用户角色"--> <!-- placeholder="请选择用户角色"-->
<!-- optionFilterProp="children"--> <!-- optionFilterProp="children"-->
<!-- v-model="selectedRole"--> <!-- v-model="selectedRole"-->
<!-- :getPopupContainer="(target) => target.parentNode">--> <!-- :getPopupContainer="(target) => target.parentNode">-->
<!-- <a-select-option v-for="(role,roleindex) in roleList" :key="roleindex.toString()" :value="role.id">--> <!-- <a-select-option v-for="(role,roleindex) in roleList" :key="roleindex.toString()" :value="role.id">-->
<!-- {{ role.roleName }}--> <!-- {{ role.roleName }}-->
<!-- </a-select-option>--> <!-- </a-select-option>-->
<!-- </a-select>--> <!-- </a-select>-->
<!-- </a-form-item>--> <!-- </a-form-item>-->
<!-- update--begin--autor:wangshuai-----date:20200108------for:新增身份和负责部门------ --> <!-- update--begin--autor:wangshuai-----date:20200108------for:新增身份和负责部门------ -->
<!-- <a-form-item label="身份" :labelCol="labelCol" :wrapperCol="wrapperCol">--> <!-- <a-form-item label="身份" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
<!-- <a-radio-group--> <!-- <a-radio-group-->
<!-- v-model="identity"--> <!-- v-model="identity"-->
<!-- @change="identityChange">--> <!-- @change="identityChange">-->
<!-- <a-radio value="1">普通用户</a-radio>--> <!-- <a-radio value="1">普通用户</a-radio>-->
<!-- <a-radio value="2">上级</a-radio>--> <!-- <a-radio value="2">上级</a-radio>-->
<!-- </a-radio-group>--> <!-- </a-radio-group>-->
<!-- </a-form-item>--> <!-- </a-form-item>-->
<!-- <a-form-item label="组织机构" :labelCol="labelCol" :wrapperCol="wrapperCol">--> <!-- <a-form-item label="组织机构" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
<!-- <a-select--> <!-- <a-select-->
<!-- mode="multiple"--> <!-- mode="multiple"-->
<!-- style="width: 100%"--> <!-- style="width: 100%"-->
<!-- placeholder="请选择组织机构"--> <!-- placeholder="请选择组织机构"-->
<!-- v-model="departIds"--> <!-- v-model="departIds"-->
<!-- optionFilterProp="children"--> <!-- optionFilterProp="children"-->
<!-- :getPopupContainer="(target) => target.parentNode"--> <!-- :getPopupContainer="(target) => target.parentNode"-->
<!-- :dropdownStyle="{maxHeight:'200px',overflow:'auto'}"--> <!-- :dropdownStyle="{maxHeight:'200px',overflow:'auto'}"-->
<!-- :disabled="disableSubmit"--> <!-- :disabled="disableSubmit"-->
<!-- >--> <!-- >-->
<!-- <a-select-option v-for="item in resultDepartOptions" :key="item.key" :value="item.key"--> <!-- <a-select-option v-for="item in resultDepartOptions" :key="item.key" :value="item.key"-->
<!-- >{{ item.title }}--> <!-- >{{ item.title }}-->
<!-- </a-select-option--> <!-- </a-select-option-->
<!-- >--> <!-- >-->
<!-- </a-select>--> <!-- </a-select>-->
<!-- </a-form-item>--> <!-- </a-form-item>-->
<!-- <a-form-item label="性别" :labelCol="labelCol" :wrapperCol="wrapperCol" v-has="'user:sex'">--> <!-- <a-form-item label="性别" :labelCol="labelCol" :wrapperCol="wrapperCol" v-has="'user:sex'">-->
<!-- <a-select v-decorator="[ 'sex', {}]" placeholder="请选择性别" :disabled="disableSubmit" :getPopupContainer="(target) => target.parentNode">--> <!-- <a-select v-decorator="[ 'sex', {}]" placeholder="请选择性别" :disabled="disableSubmit" :getPopupContainer="(target) => target.parentNode">-->
<!-- <a-select-option :value="1">男</a-select-option>--> <!-- <a-select-option :value="1">男</a-select-option>-->
<!-- <a-select-option :value="2">女</a-select-option>--> <!-- <a-select-option :value="2">女</a-select-option>-->
<!-- </a-select>--> <!-- </a-select>-->
<!-- </a-form-item>--> <!-- </a-form-item>-->
<a-form-item <a-form-item
label="角色类型" label="角色类型"
:labelCol="labelCol" :labelCol="labelCol"
:wrapperCol="wrapperCol"> :wrapperCol="wrapperCol">
<a-tree-select <a-tree-select
multiple multiple
show-search show-search
tree-default-expand-all tree-default-expand-all
tree-node-filter-prop="title" tree-node-filter-prop="title"
style="width:100%" style="width:100%"
:dropdownStyle="{ maxHeight: '200px', overflow: 'auto' }" :dropdownStyle="{ maxHeight: '200px', overflow: 'auto' }"
:treeData="treeRoleData" :treeData="treeRoleData"
v-decorator="[ 'selectedroles', validatorRules.selectedroles]" v-decorator="[ 'selectedroles', validatorRules.selectedroles]"
placeholder="请选择角色类型" placeholder="请选择角色类型"
> >
</a-tree-select> </a-tree-select>
</a-form-item> </a-form-item>
<a-form-item <a-form-item
label="组织机构" label="组织机构"
:labelCol="labelCol" :labelCol="labelCol"
:wrapperCol="wrapperCol"> :wrapperCol="wrapperCol">
<a-tree-select <a-tree-select
:multiple="false" :multiple="false"
show-search show-search
tree-default-expand-all tree-default-expand-all
tree-node-filter-prop="title" tree-node-filter-prop="title"
style="width:100%" style="width:100%"
:dropdownStyle="{ maxHeight: '200px',maxWidth:'100px','overflow-x':'hidden',' overflo-y': 'auto' }" :dropdownStyle="{ maxHeight: '200px',maxWidth:'100px','overflow-x':'hidden',' overflo-y': 'auto' }"
:treeData="treeDepartData" :treeData="treeDepartData"
v-decorator="[ 'selecteddeparts', validatorRules.selecteddeparts]" v-decorator="[ 'selecteddeparts', validatorRules.selecteddeparts]"
placeholder="请选择组织机构"> placeholder="请选择组织机构">
</a-tree-select> </a-tree-select>
</a-form-item> </a-form-item>
<a-form-item label="邮箱" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="邮箱" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入邮箱" :disabled="disableSubmit" @change="event => event.target.value = event.target.value.trim()" v-decorator="[ 'email', validatorRules.email]" :maxLength="50"/> <a-input placeholder="请输入邮箱" :disabled="disableSubmit"
@change="event => event.target.value = event.target.value.trim()"
v-decorator="[ 'email', validatorRules.email]" :maxLength="50"/>
</a-form-item> </a-form-item>
<a-form-item label="邮箱密码" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="邮箱密码" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input-password placeholder="请输入邮箱密码" @change="event => event.target.value = event.target.value.trim()" v-decorator="[ 'emailPassword', validatorRules.emailPassword]" :maxLength="50"/> <a-input-password placeholder="请输入邮箱密码" @change="event => event.target.value = event.target.value.trim()"
v-decorator="[ 'emailPassword', validatorRules.emailPassword]" :maxLength="50"/>
</a-form-item> </a-form-item>
<a-form-item label="手机号码" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="手机号码" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入手机号码" @change="event => event.target.value = event.target.value.trim()" :disabled="isDisabledAuth('user:form:phone') || disableSubmit" <a-input placeholder="请输入手机号码" @change="event => event.target.value = event.target.value.trim()"
:disabled="isDisabledAuth('user:form:phone') || disableSubmit"
v-decorator="[ 'phone', validatorRules.phone]" :maxLength="11"/> v-decorator="[ 'phone', validatorRules.phone]" :maxLength="11"/>
</a-form-item> </a-form-item>
@@ -155,10 +165,10 @@
<!--<a-input placeholder="请输入座机" v-decorator="[ 'telephone', validatorRules.telephone]"/>--> <!--<a-input placeholder="请输入座机" v-decorator="[ 'telephone', validatorRules.telephone]"/>-->
<!--</a-form-item>--> <!--</a-form-item>-->
<!-- <a-form-item label="工作流引擎" :labelCol="labelCol" :wrapperCol="wrapperCol">--> <!-- <a-form-item label="工作流引擎" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
<!-- <j-dict-select-tag v-decorator="['activitiSync', {}]" placeholder="请选择是否同步工作流引擎" :type="'radio'"--> <!-- <j-dict-select-tag v-decorator="['activitiSync', {}]" placeholder="请选择是否同步工作流引擎" :type="'radio'"-->
<!-- :triggerChange="true" dictCode="activiti_sync"/>--> <!-- :triggerChange="true" dictCode="activiti_sync"/>-->
<!-- </a-form-item>--> <!-- </a-form-item>-->
</a-form> </a-form>
</a-spin> </a-spin>
@@ -179,11 +189,11 @@ import moment from 'moment'
import Vue from 'vue' import Vue from 'vue'
import {ACCESS_TOKEN} from '@/store/mutation-types' import {ACCESS_TOKEN} from '@/store/mutation-types'
import {getAction} from '@/api/manage' import {getAction} from '@/api/manage'
import {addUser, editUser, queryUserRole, queryall,queryallRoles, queryDepartTreeList} from '@/api/api' import {addUser, editUser, queryUserRole, queryall, queryallRoles, queryDepartTreeList} from '@/api/api'
import {disabledAuthFilter} from '@/utils/authFilter' import {disabledAuthFilter} from '@/utils/authFilter'
import { passwordReg} from '@/utils/validate' import {passwordReg} from '@/utils/validate'
import {checkPhone,checkEmail,checkUserName} from '@/utils/validateOnly' import {checkPhone, checkEmail, checkUserName} from '@/utils/validateOnly'
import { getRSAPublicKey } from '@/api/login.js' import {getRSAPublicKey} from '@/api/login.js'
import {encrypt} from '@/utils/util' import {encrypt} from '@/utils/util'
@@ -198,9 +208,9 @@ export default {
modaltoggleFlag: true, modaltoggleFlag: true,
confirmDirty: false, confirmDirty: false,
// 组织机构 下拉数据 // 组织机构 下拉数据
treeDepartData:[], treeDepartData: [],
// 角色类型下拉数据 // 角色类型下拉数据
treeRoleData:[], treeRoleData: [],
selectedDepartKeys: [], //保存用户选择部门id selectedDepartKeys: [], //保存用户选择部门id
checkedDepartKeys: [], checkedDepartKeys: [],
checkedDepartNames: [], // 保存部门的名称 =>title checkedDepartNames: [], // 保存部门的名称 =>title
@@ -217,7 +227,7 @@ export default {
}], }],
validateTrigger: 'blur' validateTrigger: 'blur'
}, },
emailPassword:{ emailPassword: {
rules: [{ rules: [{
required: true, required: true,
message: '请输入邮箱密码' message: '请输入邮箱密码'
@@ -242,7 +252,7 @@ export default {
validateTrigger: 'blur' validateTrigger: 'blur'
}, },
realname: {rules: [{required: true, message: '请输入用户姓名'}], validateTrigger: 'blur'}, realname: {rules: [{required: true, message: '请输入用户姓名'}], validateTrigger: 'blur'},
phone: {rules: [{required: true,validator: this.validatePhone}], validateTrigger: 'blur'}, phone: {rules: [{required: true, validator: this.validatePhone}], validateTrigger: 'blur'},
email: { email: {
rules: [{ rules: [{
required: true, required: true,
@@ -250,8 +260,8 @@ export default {
},], },],
validateTrigger: 'blur' validateTrigger: 'blur'
}, },
selectedroles:{rules: [{required: true, message:'请选择角色类型'}], validateTrigger: ['change']}, selectedroles: {rules: [{required: true, message: '请选择角色类型'}], validateTrigger: ['change']},
selecteddeparts:{rules: [{required: true, message:'请选择组织机构'}], validateTrigger: ['change']} selecteddeparts: {rules: [{required: true, message: '请选择组织机构'}], validateTrigger: ['change']}
// sex:{initialValue:((!this.model.sex)?"": (this.model.sex+""))} // sex:{initialValue:((!this.model.sex)?"": (this.model.sex+""))}
}, },
departIdShow: false, departIdShow: false,
@@ -286,7 +296,7 @@ export default {
tenantList: [], tenantList: [],
currentTenant: [], currentTenant: [],
// 公钥 // 公钥
rsaPublicKey:'', rsaPublicKey: '',
disabledEdit: false, // 用户账号是否可编辑 disabledEdit: false, // 用户账号是否可编辑
} }
}, },
@@ -372,7 +382,7 @@ export default {
// eslint-disable-next-line no-prototype-builtins // eslint-disable-next-line no-prototype-builtins
if (record.hasOwnProperty('id')) { if (record.hasOwnProperty('id')) {
that.loadUserRoles(record.id).then(res => { that.loadUserRoles(record.id).then(res => {
that.form.setFieldsValue({selectedroles:res}) that.form.setFieldsValue({selectedroles: res})
}) })
setTimeout(() => { setTimeout(() => {
this.fileList = record.avatar this.fileList = record.avatar
@@ -387,9 +397,9 @@ export default {
that.disabledEdit = false that.disabledEdit = false
} }
// 组织机构修改成了单选,此处不需要了 // 组织机构修改成了单选,此处不需要了
if(record.departIds !== '' && record.id){ if (record.departIds !== '' && record.id) {
// 部门是数组的时候以逗号拼接 // 部门是数组的时候以逗号拼接
if(Object.prototype.toString.call(record.departIds) === '[object Array]') { if (Object.prototype.toString.call(record.departIds) === '[object Array]') {
that.model.selecteddeparts = record.departIds.split(',') that.model.selecteddeparts = record.departIds.split(',')
} else { } else {
that.model.selecteddeparts = record.departIds that.model.selecteddeparts = record.departIds
@@ -397,7 +407,7 @@ export default {
} }
that.$nextTick(() => { that.$nextTick(() => {
that.form.setFieldsValue(pick(this.model, 'username', 'realname', 'email', 'phone', 'post','selecteddeparts','emailPassword')) that.form.setFieldsValue(pick(this.model, 'username', 'realname', 'email', 'phone', 'post', 'selecteddeparts', 'emailPassword'))
}) })
//身份为上级显示负责部门,否则不显示 //身份为上级显示负责部门,否则不显示
if (this.model.userIdentity == '2') { if (this.model.userIdentity == '2') {
@@ -420,13 +430,13 @@ export default {
//update-end-author:taoyan date:2020710 for:多租户配置 //update-end-author:taoyan date:2020710 for:多租户配置
}, },
// 组织机构下拉数据 // 组织机构下拉数据
loadDepartTreeData(){ loadDepartTreeData() {
const that = this const that = this
queryDepartTreeList().then((res) => { queryDepartTreeList().then((res) => {
if(res.success){ if (res.success) {
that.treeDepartData = [] that.treeDepartData = []
let treeList = res.result let treeList = res.result
for(let a=0;a<treeList.length;a++){ for (let a = 0; a < treeList.length; a++) {
let temp = treeList[a] let temp = treeList[a]
temp.isLeaf = temp.leaf temp.isLeaf = temp.leaf
that.treeDepartData.push(temp) that.treeDepartData.push(temp)
@@ -438,10 +448,10 @@ export default {
loadRolesTreeData() { loadRolesTreeData() {
const that = this const that = this
queryallRoles().then((res) => { queryallRoles().then((res) => {
if(res.success){ if (res.success) {
that.treeRoleData = [] that.treeRoleData = []
let treeList = res.result let treeList = res.result
for(let a=0;a<treeList.length;a++){ for (let a = 0; a < treeList.length; a++) {
let temp = treeList[a] let temp = treeList[a]
temp.isLeaf = temp.leaf temp.isLeaf = temp.leaf
that.treeRoleData.push(temp) that.treeRoleData.push(temp)
@@ -507,7 +517,7 @@ export default {
}, },
moment, moment,
handleSubmit() { handleSubmit() {
console.log('username',this.form.getFieldValue('username')) console.log('username', this.form.getFieldValue('username'))
const that = this const that = this
// 触发表单验证 // 触发表单验证
this.form.validateFields((err, values) => { this.form.validateFields((err, values) => {
@@ -523,28 +533,34 @@ export default {
// 公钥参数 // 公钥参数
formData.rsaPublicKey = that.rsaPublicKey formData.rsaPublicKey = that.rsaPublicKey
// 新建 JSEncrypt 对象 // 新建 JSEncrypt 对象
formData.password =encrypt(that.rsaPublicKey,values.password) formData.password = encrypt(that.rsaPublicKey, values.password)
formData.confirmpassword = formData.password formData.confirmpassword = formData.password
formData.phone = encrypt(that.rsaPublicKey,values.phone) formData.phone = encrypt(that.rsaPublicKey, values.phone)
formData.email = encrypt(that.rsaPublicKey,values.email) formData.email = encrypt(that.rsaPublicKey, values.email)
// 加密邮箱密码 // 加密邮箱密码
formData.emailPassword = encrypt(that.rsaPublicKey,values.emailPassword) formData.emailPassword = encrypt(that.rsaPublicKey, values.emailPassword)
//update-begin-author:taoyan date:2020710 for:多租户配置 //update-begin-author:taoyan date:2020710 for:多租户配置
formData.relTenantIds = this.currentTenant.length > 0 ? this.currentTenant.join(',') : '' formData.relTenantIds = this.currentTenant.length > 0 ? this.currentTenant.join(',') : ''
//update-end-author:taoyan date:2020710 for:多租户配置 //update-end-author:taoyan date:2020710 for:多租户配置
formData.selectedroles = values.selectedroles.length > 0 ? values.selectedroles.join(',') : '' formData.selectedroles = values.selectedroles.length > 0 ? values.selectedroles.join(',') : ''
// 部门由多选改成单选 所以不需要单独处理了,但为了历史数据可以使用,对values.selecteddeparts类型进行判断,如果是数组则以逗号分隔转成字符串,若是字符串则直接显示 // 部门由多选改成单选 所以不需要单独处理了,但为了历史数据可以使用,对values.selecteddeparts类型进行判断,如果是数组则以逗号分隔转成字符串,若是字符串则直接显示
if(Object.prototype.toString.call(values.selecteddeparts) === '[object Array]') { if (Object.prototype.toString.call(values.selecteddeparts) === '[object Array]') {
formData.selecteddeparts = values.selecteddeparts.length > 0 ? values.selecteddeparts.join(',') : '' formData.selecteddeparts = values.selecteddeparts.length > 0 ? values.selecteddeparts.join(',') : ''
} }
// formData.selecteddeparts = values.selecteddeparts.length > 0 ? values.selecteddeparts.join(',') : '' // formData.selecteddeparts = values.selecteddeparts.length > 0 ? values.selecteddeparts.join(',') : ''
// 不知道为啥 之前不要这两个字段 后面出bug了 说是这两个没传
formData.departIds = values.selecteddeparts
formData.roleIds = formData.selectedroles
//
formData.userIdentity = this.identity formData.userIdentity = this.identity
//如果是上级择传入departIds,否则为空 //如果是上级择传入departIds,否则为空
if (this.identity === '2') { // if (this.identity === '2') {
formData.departIds = this.departIds.join(',') // formData.departIds = this.departIds.join(',')
} else { // } else {
formData.departIds = '' // formData.departIds = ''
} // }
// that.addDepartsToUser(that,formData); // 调用根据当前用户添加部门信息的方法 // that.addDepartsToUser(that,formData); // 调用根据当前用户添加部门信息的方法
let obj let obj
if (!this.model.id) { if (!this.model.id) {
@@ -567,7 +583,7 @@ export default {
that.userDepartModel.departIdList = {userId: '', departIdList: []} that.userDepartModel.departIdList = {userId: '', departIdList: []}
}) })
}else { } else {
that.confirmLoading = false that.confirmLoading = false
} }
}) })
@@ -600,29 +616,29 @@ export default {
} }
}, },
validatePhone(rule, value, callback) { validatePhone(rule, value, callback) {
checkPhone(value,this.userId).then(res => { checkPhone(value, this.userId).then(res => {
if(res.success){ if (res.success) {
callback() callback()
}else { } else {
callback(res.code === 500 ? '手机号已存在': res) callback(res.code === 500 ? '手机号已存在' : res)
} }
}) })
}, },
validateEmail(rule, value, callback) { validateEmail(rule, value, callback) {
checkEmail(value,this.userId).then(res => { checkEmail(value, this.userId).then(res => {
if(res.success){ if (res.success) {
callback() callback()
}else { } else {
callback(res.code === 500 ? '邮箱已存在': res) callback(res.code === 500 ? '邮箱已存在' : res)
} }
}) })
}, },
validateUsername(rule, value, callback) { validateUsername(rule, value, callback) {
checkUserName(value,this.userId).then(res => { checkUserName(value, this.userId).then(res => {
if(res.success){ if (res.success) {
callback() callback()
}else { } else {
callback(res.code === 500 ? '用户账号已存在': res) callback(res.code === 500 ? '用户账号已存在' : res)
} }
}) })
}, },
+2 -2
View File
@@ -24,14 +24,14 @@
<a-col :span="6"></a-col> <a-col :span="6"></a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item> <a-form-item>
<a-input <a-input-password
v-decorator="['password',{initialValue:'', rules: validatorRules.password.rules,validateTrigger: 'blur'}]" v-decorator="['password',{initialValue:'', rules: validatorRules.password.rules,validateTrigger: 'blur'}]"
size="large" size="large"
type="password" type="password"
placeholder="请输入密码" placeholder="请输入密码"
@paste.native.capture.prevent="handleOperate"> @paste.native.capture.prevent="handleOperate">
<a-icon slot="prefix" type="lock" :style="{ color: '#B3B7C2',fontSize:'20px' }"/> <a-icon slot="prefix" type="lock" :style="{ color: '#B3B7C2',fontSize:'20px' }"/>
</a-input> </a-input-password>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="6"></a-col> <a-col :span="6"></a-col>
+5 -5
View File
@@ -70,13 +70,13 @@
label="新密码" label="新密码"
:labelCol="{span: 5}" :labelCol="{span: 5}"
:wrapperCol="{span: 19}"> :wrapperCol="{span: 19}">
<a-input <a-input-password
placeholder="请输入新密码" placeholder="请输入新密码"
v-decorator="['password', validatorRules.password]" v-decorator="['password', validatorRules.password]"
@paste.native.capture.prevent="handleOperate" @paste.native.capture.prevent="handleOperate"
autocomplete="new-password" autocomplete="new-password"
type="password"> type="password">
</a-input> </a-input-password>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span='6'></a-col> <a-col :span='6'></a-col>
@@ -87,13 +87,13 @@
label="确认密码" label="确认密码"
:labelCol="{span: 5}" :labelCol="{span: 5}"
:wrapperCol="{span: 19}"> :wrapperCol="{span: 19}">
<a-input <a-input-password
placeholder="请输入确认密码" placeholder="请输入确认密码"
v-decorator="['confirmPassword', validatorRules.confirmPassword]" v-decorator="['confirmPassword', validatorRules.confirmPassword]"
type="password" type="password"
@paste.native.capture.prevent="handleOperate" @paste.native.capture.prevent="handleOperate"
autocomplete="new-password"> autocomplete="new-password">
</a-input> </a-input-password>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span='6'></a-col> <a-col :span='6'></a-col>
@@ -155,7 +155,7 @@ export default {
}, },
confirmPassword: { confirmPassword: {
rules: [ rules: [
{ required: true, message: '请确认新密码!' }, { required: true, message: '请输入确认密码!' },
{ pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,30}$/, { pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,30}$/,
message: '密码由8位及以上数字、大小写字母和特殊符号组成!' message: '密码由8位及以上数字、大小写字母和特殊符号组成!'
}, },