jg-waiwang-pro
胡川虎 5 months ago
parent 47dceacc1e
commit 8ccb4ad37f

@ -508,6 +508,12 @@
"style": {
"navigationBarTitleText": ""
}
},
{
"path": "paymentApplication/index",
"style": {
"navigationBarTitleText": ""
}
}
]
},

@ -0,0 +1,550 @@
<template>
<view class="jnpf-wrap jnpf-wrap-form" v-if="!loading">
<u-form :model="dataForm" :rules="rules" ref="dataForm" :errorType="['toast']" label-position="left"
label-align="right" :label-width="labelwidth" class="jnpf-form">
<view class="u-p-l-20 u-p-r-20 form-item-box">
<u-form-item v-if="judgeShow('type')" :required="requiredList.type" label="类型" prop="type">
<jnpf-radio v-model="dataForm.type" :disabled="judgeWrite('type')" @change="changeData('type',-1)"
optionType="button" direction="horizontal" :props="typeProps" :options="typeOptions">
</jnpf-radio>
</u-form-item>
</view>
<view class="u-p-l-20 u-p-r-20 form-item-box">
<u-form-item v-if="judgeShow('code')" :required="requiredList.code" label="单据编号" prop="code">
<u-input v-model="dataForm.code" disabled @change="changeData('code',-1)" input-align='right'
placeholder="系统自动生成" :style='{"width":"100%"}' readonly>
</u-input>
</u-form-item>
</view>
<view class="u-p-l-20 u-p-r-20 form-item-box">
<u-form-item v-if="judgeShow('subjectId')" :required="requiredList.subjectId" label="供应商"
prop="subjectId">
<jnpf-popup-select v-model="dataForm.subjectId" :disabled="judgeWrite('subjectId')"
@change="changeData('subjectId',-1)" :rowIndex="null" :formData="dataForm"
:templateJson="interfaceRes.subjectId" hasPage clearable propsValue="id" popupWidth="800px"
popupTitle="选择数据" popupType="dialog" relationField='name' vModel='subjectId'
:columnOptions="subjectIdColumnOptions" interfaceId="545165301679952325" :pageSize="20"
placeholder="请选择" type="popup" :style='{"width":"100%"}'>
</jnpf-popup-select>
</u-form-item>
</view>
<view class="u-p-l-20 u-p-r-20 form-item-box">
<u-form-item v-if="judgeShow('contractId')" :required="requiredList.contractId" label="合同"
prop="contractId">
<jnpf-popup-select v-model="dataForm.contractId" :disabled="judgeWrite('contractId')"
@change="changeData('contractId',-1)" :rowIndex="null" :formData="dataForm"
:templateJson="interfaceRes.contractId" hasPage clearable propsValue="id" popupWidth="800px"
popupTitle="选择数据" popupType="dialog" relationField='contract_name' vModel='contractId'
:columnOptions="contractIdColumnOptions" interfaceId="545203391626777029" :pageSize="20"
placeholder="请选择" type="popup" :style='{"width":"100%"}'>
</jnpf-popup-select>
</u-form-item>
</view>
<view class="u-p-l-20 u-p-r-20 form-item-box">
<u-form-item v-if="judgeShow('payee')" :required="requiredList.payee" label="收款方" prop="payee">
<u-input v-model="dataForm.payee" :disabled="judgeWrite('payee')" @change="changeData('payee',-1)"
input-align='right' clearable placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
</view>
<view class="u-p-l-20 u-p-r-20 form-item-box">
<u-form-item v-if="judgeShow('payer')" :required="requiredList.payer" label="付款方" prop="payer">
<u-input v-model="dataForm.payer" :disabled="judgeWrite('payer')" @change="changeData('payer',-1)"
input-align='right' clearable placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
</view>
<view class="u-p-l-20 u-p-r-20 form-item-box">
<u-form-item v-if="judgeShow('applyAmount')" :required="requiredList.applyAmount" label="申请金额"
prop="applyAmount">
<jnpf-number-box v-model="dataForm.applyAmount" :disabled="judgeWrite('applyAmount')"
@change="changeData('applyAmount',-1)" isAmountChinese :controls="false" placeholder="数字文本"
:step="1">
</jnpf-number-box>
</u-form-item>
</view>
<view class="u-p-l-20 u-p-r-20 form-item-box">
<u-form-item v-if="judgeShow('remark')" :required="requiredList.remark" label="备注" prop="remark">
<u-input v-model="dataForm.remark" :disabled="judgeWrite('remark')"
@change="changeData('remark',-1)" input-align='right' placeholder="请输入" type="textarea"
:style='{"width":"100%"}'>
</u-input>
</u-form-item>
</view>
</u-form>
<u-modal v-model="show" :content="content" width='70%' border-radius="16"
:content-style="{fontSize: '28rpx',padding: '20rpx',lineHeight: '44rpx',textAlign: 'left'}"
:titleStyle="{padding: '20rpx'}" :confirm-style="{height: '80rpx',lineHeight: '80rpx'}" :title="title"
confirm-text="确定">
</u-modal>
</view>
</template>
<script>
import {
getDictionaryDataSelector,
getDataInterfaceRes,
getDefaultCurrentValueUserId,
getDefaultCurrentValueDepartmentId
} from '@/api/common'
import comMixin from '../../../workFlow/workFlowForm/mixin'
import {
getDateDay,
getLaterData,
getBeforeData,
getBeforeTime,
getLaterTime
} from '@/components/index.js'
import request from '@/utils/request'
export default {
mixins: [comMixin],
data() {
return {
idList: [],
index: 0,
actionList: [],
actionListLength: false,
showAction: false,
btnLoading: false,
loading: false,
text: '提示:测试文本',
tableKey: '',
dataForm: {
id: "",
type: "1",
code: '',
subjectId: "",
contractId: "",
payee: '',
payer: '',
applyAmount: 0,
caseStatus: "1",
remark: '',
closeCaseRemark: '',
annex: [],
},
rules: {
type: [{
required: true,
message: '类型请至少选择一个',
}, ],
subjectId: [{
required: true,
message: '供应商请选择',
}, ],
contractId: [{
required: true,
message: '合同请选择',
}, ],
payee: [{
required: true,
message: '收款方请输入',
}, ],
payer: [{
required: true,
message: '付款方请输入',
}, ],
applyAmount: [{
required: true,
message: '申请金额数字文本',
}, ],
},
typeOptions: [{
"fullName": "采购付款",
"id": "1"
}],
typeProps: {
"label": "fullName",
"value": "id",
"multiple": false,
"children": ""
},
subjectIdColumnOptions: [{
"label": "名称",
"value": "name"
}, ],
contractIdColumnOptions: [{
"label": "合同名称",
"value": "contract_name"
}, ],
caseStatusOptions: [{
"fullName": "正常",
"id": "1"
}, {
"fullName": "结案",
"id": "2"
}],
caseStatusProps: {
"label": "fullName",
"value": "id",
"multiple": false,
"children": ""
},
labelwidth: 100 * 1.5,
menuId: '',
jurisdictionType: '',
ruleList: {},
interfaceRes: {
type: [],
code: [],
subjectId: [],
contractId: [{
fieldName: "",
field: "subjectId",
defaultValue: "",
jnpfKey: "popupSelect",
dataType: "varchar",
id: "HmoSU22",
required: "1",
relationField: "subjectId",
},
{
fieldName: "",
field: "contractType",
defaultValue: "",
jnpfKey: "radio",
dataType: "varchar",
id: "QnvSU22",
required: "1",
relationField: "type",
},
],
payee: [],
payer: [],
applyAmount: [],
caseStatus: [],
remark: [],
closeCaseRemark: [],
annex: [],
},
regList: {},
ableAll: {},
childIndex: -1,
dataValue: {},
isEdit: false,
userInfo: {},
formatType: {
"yyyy": "yyyy",
"yyyy-MM": "yyyy-mm",
"yyyy-MM-dd": "yyyy-mm-dd",
"yyyy-MM-dd HH:mm": "yyyy-mm-dd hh:MM",
"yyyy-MM-dd HH:mm:ss": "yyyy-mm-dd hh:MM:ss",
"HH:mm:ss": "hh:MM:ss",
"HH:mm": "hh:MM"
},
content: '',
title: '',
show: false,
}
},
onLoad(option) {
uni.$on('linkPageConfirm', (subVal) => {
if (this.tableKey) {
for (let i = 0; i < subVal.length; i++) {
let t = subVal[i]
if (this['get' + this.tableKey]) {
this['get' + this.tableKey](t)
}
}
this.childIndex = -1
this.collapse()
}
})
this.jurisdictionType = option.jurisdictionType
this.menuId = option.menuId
this.userInfo = uni.getStorageSync('userInfo') || {}
this.dataForm.id = option.id || 0
let _title = ""
if (option.jurisdictionType == 'btn_edit') {
_title = "编辑"
}
if (option.jurisdictionType == 'btn_detail') {
_title = "详情"
}
if (option.jurisdictionType == 'btn_add') {
_title = "新增"
}
if (_title) {
uni.setNavigationBarTitle({
title: _title
})
}
this.selfInit()
this.initDefaultData()
this.dataAll()
this.initData()
this.dataValue = JSON.parse(JSON.stringify(this.dataForm))
this.idList = option.idList ? option.idList.split(",") : []
for (let i = 0; i < this.idList.length; i++) {
if (this.idList[i] == option.id) {
this.index = i;
}
}
if (!option.id) {
this.actionList.push({
text: '确定并新增',
id: 'save_add'
})
} else {
let upper = {
text: '上一条',
id: 'upper',
disabled: this.index == 0 ? true : false
}
this.actionList.push(upper)
let lower = {
text: '下一条',
id: 'lower',
disabled: this.index == this.idList.length - 1 ? true : false
}
this.actionList.push(lower)
this.actionList.push({
text: '确定并继续',
id: 'save_proceed'
})
this.collapse()
}
},
onReady() {
this.$nextTick(() => {
setTimeout(() => {
this.$refs.dataForm.setRules(this.rules);
}, 100)
})
},
watch: {
dataForm: {
handler(val, oldVal) {},
deep: true
}
},
methods: {
handleAction(index) {
if (this.actionList[index].id === 'save_add' || this.actionList[index].id === 'save_proceed') {
this.submitForm(1)
} else {
this.calculation(this.actionList[index].id, index)
}
},
calculation(type, index) {
if (type === 'upper') {
this.index--
this.actionList[index + 1].disabled = false
if (this.index == 0) this.actionList[index].disabled = true
} else {
this.index++
this.actionList[index - 1].disabled = false
if (this.index == this.idList.length - 1) this.actionList[index].disabled = true
}
this.dataForm.id = this.idList[this.index]
this.initData()
},
changeData(model, index) {
this.isEdit = false
this.childIndex = index
let modelAll = model.split("-");
let faceMode = "";
for (let i = 0; i < modelAll.length; i++) {
faceMode += modelAll[i];
}
for (let key in this.interfaceRes) {
if (key != faceMode) {
let faceReList = this.interfaceRes[key]
for (let i = 0; i < faceReList.length; i++) {
if (faceReList[i].relationField == model) {
let options = 'get' + key + 'Options';
if (this[options]) {
this[options]()
}
this.changeData(key, index)
}
}
}
}
},
changeDataFormData(type, data, model, index, defaultValue, edit) {
if (!edit) {
if (type == 2) {
for (let i = 0; i < this.dataForm[data].length; i++) {
if (index == -1) {
this.dataForm[data][i][model] = defaultValue
} else if (index == i) {
this.dataForm[data][i][model] = defaultValue
}
}
} else {
this.dataForm[data] = defaultValue
}
}
},
clickIcon(label, tipLabel) {
this.content = tipLabel
this.title = label
this.show = true
},
exist() {
let title = [];
let _ruleList = this.ruleList
for (let k in _ruleList) {
let childData = this.dataForm[k]
childData.forEach((item, index) => {
for (let model in _ruleList[k]) {
if (item[model] instanceof Array) {
if (item[model].length == 0) {
title.push(_ruleList[k][model])
}
} else if (!item[model]) {
title.push(_ruleList[k][model])
}
}
})
}
let _regList = this.regList
for (let k in _regList) {
let childData = this.dataForm[k]
for (let n in _regList[k]) {
for (let i = 0; i < _regList[k][n].length; i++) {
const element = _regList[k][n][i]
if (element.pattern) {
element.pattern = element.pattern.toString()
let start = element.pattern.indexOf('/')
let stop = element.pattern.lastIndexOf('/')
let str = element.pattern.substring(start + 1, stop)
let reg = new RegExp(str)
element.pattern = reg
}
childData.forEach((item, index) => {
if (item[n] && !element.pattern.test(item[n])) {
title.push(element.message)
}
})
}
}
}
if (title.length > 0) {
return title[0]
}
},
resetForm() {
uni.navigateBack()
},
dataAll() {
this.collapse()
},
dateTime(timeRule, timeType, timeTarget, timeValueData, dataValue) {
let timeDataValue = null;
let timeValue = Number(timeValueData)
if (timeRule) {
if (timeType == 1) {
timeDataValue = timeValueData ? timeValue : null
} else if (timeType == 2) {
timeDataValue = dataValue
} else if (timeType == 3) {
timeDataValue = new Date().getTime()
} else if (timeType == 4) {
let previousDate = '';
if (timeTarget == 1 || timeTarget == 2) {
previousDate = getDateDay(timeTarget, timeType, timeValue)
timeDataValue = new Date(previousDate).getTime()
} else if (timeTarget == 3) {
previousDate = getBeforeData(timeValue)
timeDataValue = new Date(previousDate).getTime()
} else {
timeDataValue = getBeforeTime(timeTarget, timeValue).getTime()
}
} else if (timeType == 5) {
let previousDate = '';
if (timeTarget == 1 || timeTarget == 2) {
previousDate = getDateDay(timeTarget, timeType, timeValue)
timeDataValue = new Date(previousDate).getTime()
} else if (timeTarget == 3) {
previousDate = getLaterData(timeValue)
timeDataValue = new Date(previousDate).getTime()
} else {
timeDataValue = getLaterTime(timeTarget, timeValue).getTime()
}
}
}
return timeDataValue;
},
time(timeRule, timeType, timeTarget, timeValue, formatType, dataValue) {
let format = formatType == 'HH:mm' ? 'HH:mm:00' : formatType
let timeDataValue = null
if (timeRule) {
if (timeType == 1 && timeValue) {
timeDataValue = timeValue || '00:00:00'
if (timeDataValue.split(':').length == 3) {
timeDataValue = timeDataValue
} else {
timeDataValue = timeDataValue + ':00'
}
} else if (timeType == 2) {
timeDataValue = dataValue
} else if (timeType == 3) {
timeDataValue = this.jnpf.toDate(new Date(), format)
} else if (timeType == 4) {
let previousDate = '';
previousDate = getBeforeTime(timeTarget, timeValue)
timeDataValue = this.jnpf.toDate(previousDate, format)
} else if (timeType == 5) {
let previousDate = '';
previousDate = getLaterTime(timeTarget, timeValue)
timeDataValue = this.jnpf.toDate(previousDate, format)
}
}
return timeDataValue;
},
initData() {
this.$nextTick(function() {
if (this.dataForm.id) {
this.loading = true
request({
url: '/api/scm/PaymentApplication/' + this.dataForm.id,
method: 'get',
}).then(res => {
this.dataInfo(res.data)
this.loading = false
})
} else {
this.initDefaultData()
}
})
},
beforeSubmit() {
const _data = this.dataList()
return _data
},
initDefaultData() {},
selfInit() {
this.$store.commit('base/UPDATE_RELATION_DATA', {})
this.dataAll()
this.initDefaultData()
this.collapse()
},
selfGetInfo(dataForm) {
this.dataForm.id = this.dataForm.id
this.dataInfo(dataForm)
},
dataList() {
var _data = this.dataForm;
return _data;
},
dataInfo(dataAll) {
let _dataAll = dataAll
this.dataForm = _dataAll
this.isEdit = true
this.dataAll()
this.childIndex = -1
this.collapse()
},
collapse() {
setTimeout(() => {}, 1000);
},
},
}
</script>
<style>
page {
background-color: #f0f2f6;
}
</style>

@ -96,6 +96,11 @@
@eventReceiver="eventReceiver"
v-if="config.formEnCode === 'cwSettlement'"
/>
<paymentApplication
ref="form"
@eventReceiver="eventReceiver"
v-if="config.formEnCode === 'paymentApplication'"
/>
</template>
<template v-if="config.formType == 2">
<dynamicForm
@ -128,6 +133,7 @@ import warehousingReportloss from "@/pages/scm/form/warehousingReportloss/index.
import cwCost from "@/pages/scm/form/cwCost/index.vue";
import cwpaymentreceipt from "@/pages/scm/form/cwpaymentreceipt/index.vue";
import cwsettlement from "@/pages/scm/form/cwsettlement/index.vue";
import paymentApplication from "@/pages/scm/form/paymentApplication/index.vue";
export default {
components: {
@ -149,7 +155,8 @@ export default {
warehousingReportloss,
cwCost,
cwpaymentreceipt,
cwsettlement
cwsettlement,
paymentApplication
},
props: {
config: {

@ -311,19 +311,6 @@ public class PaymentApplicationServiceImpl extends ServiceImpl<PaymentApplicatio
if(StringUtil.isEmpty(form.getPayer())){
return "付款方不能为空";
}
if(StringUtil.isNotEmpty(form.getPayer())){
form.setPayer(form.getPayer().trim());
QueryWrapper<PaymentApplicationEntity> payerWrapper=new QueryWrapper<>();
payerWrapper.lambda().eq(PaymentApplicationEntity::getPayer,form.getPayer());
//假删除标志
payerWrapper.lambda().isNull(PaymentApplicationEntity::getDeleteMark);
if (isUp){
payerWrapper.lambda().ne(PaymentApplicationEntity::getId, id);
}
if((int) this.count(payerWrapper)>0){
countRecover = "付款方不能重复";
}
}
return countRecover;
}
/**

Loading…
Cancel
Save