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 :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;
}
+22 -2
View File
@@ -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()
}
}
}
+15 -5
View File
@@ -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>
+3 -3
View File
@@ -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="请确认新密码"
+3 -3
View File
@@ -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
},
+1 -1
View File
@@ -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)
}
}
}
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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>
+163 -147
View File
@@ -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)
}
})
},
+2 -2
View File
@@ -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>
+5 -5
View File
@@ -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位及以上数字、大小写字母和特殊符号组成!'
},