bug修改

This commit is contained in:
zhaoxiao
2021-10-20 16:12:26 +08:00
parent a24d69b7e2
commit 59089919ff
25 changed files with 184 additions and 94 deletions
+10 -4
View File
@@ -82,6 +82,8 @@ export default {
}
},
created() {
// this.initContacts = null
this.contactsList = []
// 编辑 第一次不回显的问题
this.getContactsList()
},
@@ -117,7 +119,7 @@ export default {
* 获取联系人数据
*/
getContactsList() {
if (this.selectedCompany && this.selectedCompany.hasOwnProperty.call(this.selectedCompany, 'id')) {
if (this.selectedCompany && this.selectedCompany.id) {
const params = {
companyId: this.selectedCompany.id
}
@@ -127,7 +129,7 @@ export default {
return new Promise(resolve => {
getContactsByCompanyNoLimit(params).then(res => {
this.contactsList = res.result
if (this.initContacts && this.initContacts.hasOwnProperty.call(this.initContacts, 'id')) {
if (this.initContacts && this.initContacts.id) {
this.contactsList.push(this.initContacts)
}
resolve()
@@ -137,7 +139,8 @@ export default {
return new Promise(resolve => {
getContactsByCompany(params).then(res => {
this.contactsList = res.result
if (this.initContacts && this.initContacts.hasOwnProperty.call(this.initContacts, 'id')) {
console.log(this.initContacts)
if (this.initContacts && this.initContacts.id) {
this.contactsList.push(this.initContacts)
}
resolve()
@@ -179,8 +182,11 @@ export default {
option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
)
},
/**
* 第一次展开下拉,去掉和初始联系人一样的联系人
*/
handleDropdownOpen() {
if (this.isFirstOpen && this.initContacts && this.initContacts.hasOwnProperty.call(this.initContacts, 'id')) {
if (this.isFirstOpen && this.initContacts && this.initContacts.id) {
this.contactsList.forEach((item, index) => {
if (item.id === this.initContacts.id) {
this.$emit('change', undefined)
+17 -8
View File
@@ -57,6 +57,7 @@
import { putAction } from '@/api/manage'
import { getRSAPublicKey } from '@api/login'
import { JSEncrypt } from 'jsencrypt'
import { passwordReg } from '../../utils/validate'
export default {
name: 'UserPassword',
@@ -85,14 +86,19 @@ export default {
validateTrigger: 'blur'
},
confirmpassword: {
rules: [
{ required: true, message: '请确认新密码!' },
{
pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,30}$/,
message: '密码由8位及以上数字、大小写字母和特殊符号组成!'
},
{ validator: this.handlePasswordCheck }
],
rules: [{
required: true, message: '请确认新密码',
}, {
validator: this.handlePasswordCheck,
}],
// rules: [
// { required: true, message: '请确认新密码!' },
// {
// pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,30}$/,
// message: '密码由8位及以上数字、大小写字母和特殊符号组成!'
// },
// { validator: this.handlePasswordCheck }
// ],
validateTrigger: 'blur'
}
},
@@ -179,6 +185,9 @@ export default {
if (value && password && value.trim() !== password.trim()) {
callback(new Error('两次密码不一致'))
}
if (value && !passwordReg(value)) {
callback('密码由8位及以上数字、大小写字母和特殊符号组成!')
}
callback()
},
compareToFirstPassword(rule, value, callback) {
+1 -1
View File
@@ -1,7 +1,7 @@
import { getIsAssociatedProject } from '../api/incomePaymentsApi'
/**
* 验证项目是否关联合同
* @param projectId
* @param projectId 项目id
*/
export function checkAssociatedProject(projectId) {
return new Promise(resolve => {
@@ -72,7 +72,7 @@ export default {
title: '来款单位',
align: 'center',
dataIndex: 'chargeCompanyName',
width: 250,
width: 280,
scopedSlots: { customRender: 'text' }
}, {
title: '应收金额',
@@ -90,13 +90,13 @@ export default {
title: '负责人',
align: 'center',
dataIndex: 'principalName',
width: 250,
width: 280,
scopedSlots: { customRender: 'text' }
}, {
title: '企业联系人',
align: 'center',
dataIndex: 'contactsName',
width: 250,
width: 280,
scopedSlots: { customRender: 'text' }
}, {
title: '创建时间',
@@ -547,6 +547,8 @@ export default {
} else {
this.form.resetFields()
this.$refs.installmentForm.form.resetFields()
// 清除选中联系人相关信息
this.selectedContact = null
}
},
installmentFormOk(value) {
@@ -280,7 +280,9 @@ export default {
this.lastQueryParam.year = new Date().getFullYear().toString()
//
this.queryParam.principalId = this.principal
this.lastQueryParam.principalId = this.principal
this.queryParam.departId = this.departId
this.lastQueryParam.departId = this.departId
this.loadDepartTreeData()
this.visible = true
this.loadData()
@@ -76,7 +76,7 @@
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, columnWidth: 80}"
class="j-table-force-nowrap">
<template slot="textRow" slot-scope="text">
<j-ellipsis :value="text" :length="20"></j-ellipsis>
<j-ellipsis :value="text" :length="12"></j-ellipsis>
</template>
<span slot="action" class="action-span-cell" slot-scope="text, itemRecord">
@@ -204,7 +204,7 @@ export default {
}, {
title: '项目负责人',
align: 'center',
width: 140,
width: 280,
dataIndex: 'principalName',
scopedSlots: { customRender: 'text' }
}, {
@@ -222,7 +222,7 @@ export default {
}, {
title: '实收金额',
align: 'center',
width: 100,
width: 120,
dataIndex: 'paidAmount',
scopedSlots: { customRender: 'text' }
}, {
@@ -154,7 +154,11 @@ export default {
checkMoney(rules, value, callback) {
if (value) {
if (money(value)) {
callback()
if (Number(value) > 0) {
callback()
} else {
callback('到账金额不能小于或等于0')
}
return
}
callback('请输入合法的金额数字,最多2位小数,10位正数')
@@ -207,12 +207,15 @@ export default {
&-content {
padding-right: 20px;
word-break: break-all;
white-space: nowrap;
font-size: 14px;
font-family: NotoSansHans, NotoSansHans-Light;
color: #4D4D4D;
&-money {
color: #D40505;
word-break: break-all;
white-space: nowrap;
}
}
}
+4 -4
View File
@@ -152,7 +152,7 @@ export default {
{
title: '票号',
align: 'center',
width: 200,
width: 300,
dataIndex: 'billNo',
scopedSlots: { customRender: 'text' }
},
@@ -166,21 +166,21 @@ export default {
{
title: '项目负责人',
align: 'center',
width: 200,
width: 300,
dataIndex: 'principalName',
scopedSlots: { customRender: 'text' }
},
{
title: '来款单位',
align: 'center',
width: 200,
width: 300,
dataIndex: 'chargeCompanyName',
scopedSlots: { customRender: 'text' }
},
{
title: '邮寄联系人',
align: 'center',
width: 200,
width: 300,
dataIndex: 'contactName',
scopedSlots: { customRender: 'text' }
},
+5 -5
View File
@@ -124,28 +124,28 @@ export default {
{
title: '合同编号',
align: 'center',
width: 200,
width: 300,
dataIndex: 'contractNum',
scopedSlots: { customRender: 'htmlSlot' }
},
{
title: '合同名称',
align: 'center',
width: 250,
width: 300,
dataIndex: 'contractName',
scopedSlots: { customRender: 'projectName' }
},
{
title: '签订单位',
align: 'center',
width: 200,
width: 300,
dataIndex: 'signedCompanyTemporaryName',
scopedSlots: { customRender: 'projectName' }
},
{
title: '负责人',
align: 'center',
width: 200,
width: 300,
dataIndex: 'principalName',
scopedSlots: { customRender: 'projectName' }
},
@@ -159,7 +159,7 @@ export default {
{
title: '邮寄联系人',
align: 'center',
width: 200,
width: 300,
dataIndex: 'liaisonMan',
scopedSlots: { customRender: 'projectName' }
},
@@ -310,7 +310,11 @@ export default {
checkMoney(rules, value, callback) {
if (value) {
if (money(value)) {
callback()
if (Number(value) > 0) {
callback
} else {
callback('来款金额不能小于或等于0')
}
return
}
callback('请输入合法的金额数字,最多2位小数,10位正数')
@@ -198,6 +198,9 @@ export default {
close() {
this.$emit('close')
this.visible = false
// 清空选中联系人相关信息
this.initContact = null
this.initPackContact = null
},
handleOk() {
if (this.confirmLoading) {
@@ -111,7 +111,7 @@
<a-form-item label="来款方式" :labelCol="labelCol" :wrapperCol="wrapperCol">
<span v-if="defaultChargeWay === 2 && chargeWayType === 2">合同</span>
<a-radio-group v-decorator="['chargeWay',validatorRules.chargeWay]" @change="handlechargeWayChange"
v-else>
v-else :disabled="isAssociatedContract">
<a-radio :value="1"></a-radio>
<a-radio :value="2">合同</a-radio>
<a-radio :value="3">收费通知</a-radio>
@@ -123,7 +123,7 @@
<a-input placeholder="请输入合同号"
v-decorator="['contractNum',validatorRules.contractNum]"
:maxLength='50'
:disabled="isContractNumDisabled"
:disabled="isContractNumDisabled || isAssociatedContract"
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
</a-col>
@@ -317,6 +317,7 @@ export default {
selectedContact: null, // 编辑时的联系人
selectedMailContact: null, // 编辑时的邮寄联系人
disabledCompany: false, // 企业是否可以编辑
isAssociatedContract: false, // 是否已关联合同
url: {
add: '/project/payCommonProject/add',
edit: '/project/payCommonProject/edit'
@@ -354,6 +355,7 @@ export default {
// 验证项目是否关联收入合同
checkAssociatedProject(record.id).then(res => {
this.disabledCompany = this.disabledChargeCompany || res || (!!record.inAccount && record.inAccount !== 0) || (!!record.makeInvoice && record.makeInvoice !== 0) || (!!record.mail && record.mail !== 0)
this.isAssociatedContract = res
})
} else {
this.disabledCompany = this.disabledChargeCompany
@@ -392,6 +394,12 @@ export default {
this.$emit('close')
this.chargeWayType = null
this.selectedCompany = null
// 清空选中联系人的相关信息
this.selectedContact = null
this.selectedMailContact = null
// 清除能否编辑企业、来款方式的限制
this.isAssociatedContract = false
this.disabledCompany = false
this.visible = false
},
handleOk() {
@@ -89,7 +89,7 @@
<a-form-item label="来款方式" :labelCol="labelCol" :wrapperCol="wrapperCol">
<span v-if="defaultChargeWay === 2">合同</span>
<a-radio-group v-decorator="['chargeWay',validatorRules.chargeWay]" @change="handlechargeWayChange"
v-else>
v-else :disabled="isAssociatedContract">
<a-radio :value="1"></a-radio>
<a-radio :value="2">合同</a-radio>
<a-radio :value="3">收费通知</a-radio>
@@ -141,7 +141,7 @@
<a-input placeholder="请输入合同号"
v-decorator="['contractNum',validatorRules.contractNum]"
:maxLength='50'
:disabled="isContractNumDisabled"
:disabled="isContractNumDisabled || isAssociatedContract"
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
</a-col>
@@ -354,6 +354,7 @@ export default {
workingGroupId: null,
workingGroupList: [],
disabledCompany: false, // 企业是否禁用
isAssociatedContract: false, // 是否关联合同
url: {
add: '/project/payWorkingGroupSubitem/add',
edit: '/project/payWorkingGroupSubitem/edit'
@@ -409,6 +410,7 @@ export default {
if (record.id) {
checkAssociatedProject(record.id).then(res => {
this.disabledCompany = this.disabledChargeCompany || res || (!!record.inAccount && record.inAccount !== 0) || (!!record.makeInvoice && record.makeInvoice !== 0) || (!!record.mail && record.mail !== 0)
this.isAssociatedContract = res
})
} else {
this.disabledCompany = this.disabledChargeCompany
@@ -453,6 +455,14 @@ export default {
this.$emit('close')
this.chargeWayType = null
this.selectedCompany = null
// 清除选中联系人信息
this.selectedContact1 = null
this.selectedContact2 = null
this.selectedContact3 = null
this.selectedMailContact = null
// 清除企业、来款方式、合同号的限制
this.isAssociatedContract = false
this.disabledCompany = false
this.visible = false
},
handleOk() {
@@ -197,25 +197,25 @@ export default {
}, {
title: '来款项目',
align: 'center',
width: 200,
width: 300,
dataIndex: 'projectName',
scopedSlots: { customRender: 'projectName' }
}, {
title: '项目负责人',
align: 'center',
width: 200,
width: 300,
dataIndex: 'principalName',
scopedSlots: { customRender: 'text' }
}, {
title: '所属科室',
align: 'center',
width: 200,
width: 300,
dataIndex: 'depart',
scopedSlots: { customRender: 'text' }
}, {
title: '来款单位',
align: 'center',
width: 200,
width: 300,
dataIndex: 'chargeCompanyTemporaryName',
scopedSlots: { customRender: 'text' }
}, {
@@ -246,25 +246,25 @@ export default {
}, {
title: '来款项目',
align: 'center',
width: 200,
width: 300,
dataIndex: 'projectName',
scopedSlots: { customRender: 'projectName' }
}, {
title: '项目负责人',
align: 'center',
width: 200,
width: 300,
dataIndex: 'principalName',
scopedSlots: { customRender: 'text' }
}, {
title: '所属科室',
align: 'center',
width: 200,
width: 300,
dataIndex: 'depart',
scopedSlots: { customRender: 'text' }
}, {
title: '来款单位',
align: 'center',
width: 200,
width: 300,
dataIndex: 'chargeCompanyTemporaryName',
scopedSlots: { customRender: 'text' }
}, {
@@ -170,7 +170,7 @@ export default {
}, {
title: '来款项目',
align: 'center',
width: 160,
width: 300,
dataIndex: 'projectName',
scopedSlots: { customRender: 'projectName' }
}, {
@@ -203,7 +203,7 @@ export default {
}, {
title: '来款项目',
align: 'center',
width: 160,
width: 300,
dataIndex: 'workGroup',
scopedSlots: { customRender: 'text' }
}, {
@@ -156,7 +156,7 @@ export default {
}, {
title: '项目负责人',
align: 'center',
width: 140,
width: 300,
dataIndex: 'principalName',
scopedSlots: { customRender: 'projectName' }
}, {
@@ -186,7 +186,7 @@ export default {
}, {
title: '项目负责人',
align: 'center',
width: 140,
width: 300,
dataIndex: 'principalName',
scopedSlots: { customRender: 'text' }
}, {
@@ -178,19 +178,19 @@ export default {
}, {
title: '项目负责人',
align: 'center',
width: 160,
width: 300,
dataIndex: 'principalName',
scopedSlots: { customRender: 'text' }
}, {
title: '来款项目',
align: 'center',
width: 160,
width: 300,
dataIndex: 'projectName',
scopedSlots: { customRender: 'projectName' }
}, {
title: '来款单位',
align: 'center',
width: 160,
width: 300,
dataIndex: 'chargeCompanyTemporaryName',
scopedSlots: { customRender: 'text' }
}, {
@@ -223,19 +223,19 @@ export default {
}, {
title: '项目负责人',
align: 'center',
width: 160,
width: 300,
dataIndex: 'principalName',
scopedSlots: { customRender: 'text' }
}, {
title: '来款项目',
align: 'center',
width: 160,
width: 300,
dataIndex: 'projectName',
scopedSlots: { customRender: 'text' }
}, {
title: '来款单位',
align: 'center',
width: 160,
width: 300,
dataIndex: 'chargeCompanyTemporaryName',
scopedSlots: { customRender: 'text' }
}, {
@@ -72,7 +72,7 @@
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:scroll="{x: 1100}"
:scroll="{x: 1000}"
@change="handleTableChange"
:class="dataSource.length === 0 ? 'show-scroll' : ''"
class="j-table-force-nowrap main-table">
@@ -101,7 +101,7 @@
:dataSource="footerDataSource"
:showHeader="false"
:pagination="false"
:scroll="{x: 1100}"
:scroll="{x: 1000}"
class="j-table-force-nowrap footer-table">
<!-- 项目名称-->
@@ -161,6 +161,7 @@ export default {
}, {
title: '来款项目',
align: 'center',
width: 300,
dataIndex: 'projectName',
scopedSlots: { customRender: 'projectName' }
}, {
@@ -193,6 +194,7 @@ export default {
}, {
title: '来款项目',
align: 'center',
width: 300,
dataIndex: 'projectName',
scopedSlots: { customRender: 'text' }
}, {
@@ -173,12 +173,13 @@ export default {
}, {
title: '项目负责人',
align: 'center',
width: 300,
dataIndex: 'principalName',
scopedSlots: { customRender: 'text' }
}, {
title: '来款单位',
align: 'center',
width: 160,
width: 300,
dataIndex: 'chargeCompanyTemporaryName',
scopedSlots: { customRender: 'text' }
}, {
@@ -214,17 +215,18 @@ export default {
{
title: '序号',
dataIndex: 'title',
width: 100,
width: 60,
align: 'center'
}, {
title: '项目负责人',
align: 'center',
width: 300,
dataIndex: 'principalName',
scopedSlots: { customRender: 'text' }
}, {
title: '来款单位',
align: 'center',
width: 160,
width: 300,
dataIndex: 'chargeCompanyTemporaryName',
scopedSlots: { customRender: 'text' }
}, {
+66 -32
View File
@@ -11,44 +11,70 @@
dictCode="system_dept_frequency"
@change="deptFrequencyChange"/>
</a-form-item>
<a-form-item label="催款时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<!-- 仅此一次年月日-->
<!-- 仅此一次年月日-->
<a-form-item label="催款时间" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="selectDeptFrequency === '1'">
<j-date
v-if="selectDeptFrequency === '1'"
placeholder="请选择催款时间"
allowClear
style="width: 100%;"
v-decorator="['time', validatorRules.time]"
:trigger-change="true"
date-format="YYYY-MM-DD"/>
</a-form-item>
<!-- 每年一次月日-->
<a-row :gutter="12" v-if="selectDeptFrequency === '2'">
<a-col :span="14">
<a-form-item label="催款时间" :labelCol="yearLabelCol" :wrapperCol="yearWrapperCol">
<!-- -->
<a-select
placeholder="请选择月"
allowClear
v-decorator="['deptMonth', validatorRules.deptMonth]"
:options="monthOptions">
</a-select>
</a-form-item>
</a-col>
<a-col :span="10">
<a-form-item>
<a-select
placeholder="请选择日"
allowClear
v-decorator="['deptDay', validatorRules.deptDay]"
:options="dayOptions">
</a-select>
</a-form-item>
</a-col>
</a-row>
<a-form-item v-if="selectDeptFrequency === '3'" label="催款时间" :labelCol="labelCol" :wrapperCol="wrapperCol" >
<a-select
placeholder="请选择日"
allowClear
v-decorator="['deptDay', validatorRules.deptDay]"
:options="dayOptions">
</a-select>
</a-form-item>
<!-- <a-row :gutter="12">-->
<!-- <a-col :span="12">-->
<!-- &lt;!&ndash; &ndash;&gt;-->
<!-- <template v-if="selectDeptFrequency === '2'">-->
<!-- <a-select-->
<!-- placeholder="请选择月"-->
<!-- allowClear-->
<!-- v-decorator="['deptMonth', validatorRules.deptMonth]"-->
<!-- :options="monthOptions">-->
<!-- </a-select>-->
<!-- </template>-->
<!-- </a-col>-->
<!-- <a-col :span="12">-->
<!-- </a-col>-->
<!-- </a-row>-->
<!-- 每年一次月日-->
<div class="m-d">
<a-row :gutter="12">
<a-col :span="12">
<!-- -->
<template v-if="selectDeptFrequency === '2'">
<a-select
placeholder="请选择月"
allowClear
v-decorator="['deptMonth', validatorRules.deptMonth]"
:options="monthOptions">
</a-select>
</template>
</a-col>
<a-col :span="12">
<a-form-item v-if="selectDeptFrequency === '2' || selectDeptFrequency === '3'">
<a-select
placeholder="请选择日"
allowClear
v-decorator="['deptDay', validatorRules.deptDay]"
:options="dayOptions">
</a-select>
</a-form-item>
</a-col>
</a-row>
</div>
</a-form-item>
<a-form-item class="btn-form">
<a-button type="primary" class="btn-form-save" @click="handleOk" v-has="'system:dept:save'">保存</a-button>
@@ -76,14 +102,22 @@ export default {
model: {},
labelCol: {
xs: { span: 24 },
sm: { span: 3 }
sm: { span: 4 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 21 }
sm: { span: 20 }
},
yearLabelCol: {
xs: { span: 24 },
sm: { span: 7 }
},
yearWrapperCol: {
xs: { span: 24 },
sm: { span: 17 }
},
validatorRules: {
deptFrequency: {
frequency: {
rules: [{ required: true, message: '请选择频率' }],
validateTrigger: 'change'
},
+2
View File
@@ -157,6 +157,8 @@ export default {
},
close() {
this.$emit('close')
// 解决点编辑关闭后,再点添加下级角色编码仍然置灰的问题
this.roleDisabled = false
this.isAddLower = false
this.visible = false
},
+4 -5
View File
@@ -606,14 +606,13 @@ export default {
},
compareToFirstPassword(rule, value, callback) {
const form = this.form
if (value && value !== form.getFieldValue('password')) {
callback('两次输入的密码不一样!')
}
if (value && !passwordReg(value)) {
callback('密码由8位及以上数字、大小写字母和特殊符号组成!')
}
if (value && value !== form.getFieldValue('password')) {
callback('两次输入的密码不一样!')
} else {
callback()
}
callback()
},
validatePhone(rule, value, callback) {
checkPhone(value, this.userId).then(res => {