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