You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
190 lines
5.0 KiB
190 lines
5.0 KiB
9 months ago
|
<template>
|
||
|
<view class="candidateForm-v">
|
||
|
<u-popup mode="left" :popup="false" v-model="value" length="auto" @close="close" width="100%">
|
||
|
<view class="jnpf-wrap jnpf-wrap-form">
|
||
|
<u-form :model="candidateForm" ref="candidateForm" :errorType="['toast']" label-position="left"
|
||
|
label-width="150" label-align="left">
|
||
|
<u-form-item label="分支选择" prop="branch" v-if="candidateType == 1" required>
|
||
|
<jnpf-select v-model="candidateForm.branchList" @change="branchChange" placeholder="请选择审批分支"
|
||
|
:options="branchList" :multiple="true" :props='props' />
|
||
|
</u-form-item>
|
||
|
<u-form-item prop="comInput" label-width="250" v-for="(item,index) in candidateForm.list"
|
||
|
:key="index" :label="item.label">
|
||
|
<u-input type="select" :select-open="item.selectShow" v-model="item.value"
|
||
|
@click="openSelect(item)" placeholder="请选择审批候选人">
|
||
|
</u-input>
|
||
|
</u-form-item>
|
||
|
</u-form>
|
||
|
<view class="buttom-actions">
|
||
|
<u-button class="buttom-btn" @click="cancel">取消</u-button>
|
||
|
<u-button class="buttom-btn" type="primary" @click="submit">确定</u-button>
|
||
|
</view>
|
||
|
</view>
|
||
|
</u-popup>
|
||
|
</view>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
export default {
|
||
|
props: {
|
||
|
// 通过双向绑定控制组件的弹出与收起
|
||
|
value: {
|
||
|
type: Boolean,
|
||
|
default: false
|
||
|
},
|
||
|
formData: {
|
||
|
type: Object,
|
||
|
default: {}
|
||
|
},
|
||
|
taskId: {
|
||
|
type: String,
|
||
|
default: ""
|
||
|
}
|
||
|
},
|
||
|
data() {
|
||
|
return {
|
||
|
innerValue: '',
|
||
|
candidateForm: {
|
||
|
list: [],
|
||
|
branchList: []
|
||
|
},
|
||
|
|
||
|
nodeId: '',
|
||
|
selectId: {},
|
||
|
rules: {},
|
||
|
selectList: [],
|
||
|
selectVal: {},
|
||
|
isCandidate: false,
|
||
|
props: {
|
||
|
label: 'nodeName',
|
||
|
value: 'nodeId'
|
||
|
},
|
||
|
candidateType: 1,
|
||
|
branchList: [],
|
||
|
candidateList: []
|
||
|
};
|
||
|
},
|
||
|
created() {
|
||
|
uni.$on('confirm', (data, id) => {
|
||
|
this.selectConfirm(data, id)
|
||
|
})
|
||
|
},
|
||
|
onUnload() {
|
||
|
uni.$off('confirm')
|
||
|
},
|
||
|
methods: {
|
||
|
branchChange(e) {
|
||
|
this.candidateForm.branchList = e;
|
||
|
this.init()
|
||
|
},
|
||
|
init(candidateType, branchList, candidateList) {
|
||
|
this.candidateType = candidateType;
|
||
|
this.branchList = branchList;
|
||
|
this.candidateList = candidateList
|
||
|
if (this.candidateType == 1) {
|
||
|
let list = [];
|
||
|
for (let i = 0; i < this.candidateForm.branchList.length; i++) {
|
||
|
inner: for (let j = 0; j < this.branchList.length; j++) {
|
||
|
let o = this.branchList[j]
|
||
|
if (o.isCandidates) this.isCandidate = o.isCandidates
|
||
|
if (this.candidateForm.branchList[i] === o.nodeId && o.isCandidates) {
|
||
|
list.push({
|
||
|
...o,
|
||
|
label: o.nodeName + '审批人',
|
||
|
value: '',
|
||
|
selectShow: false
|
||
|
})
|
||
|
break inner
|
||
|
}
|
||
|
}
|
||
|
this.candidateForm.list = list
|
||
|
}
|
||
|
} else {
|
||
|
if (Array.isArray(this.candidateList) && this.candidateList.length) {
|
||
|
this.isCandidate = true
|
||
|
this.candidateForm.list = this.candidateList.map(o => ({
|
||
|
...o,
|
||
|
label: o.nodeName + '审批人',
|
||
|
value: '',
|
||
|
selectShow: false
|
||
|
}))
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
openSelect(item) {
|
||
|
this.selectList = []
|
||
|
for (let o in this.selectVal) {
|
||
|
if (o === item.nodeId) this.selectList = this.selectVal[o]
|
||
|
}
|
||
|
item.formData = this.formData
|
||
|
item.taskId = this.taskId
|
||
|
item.selectList = !item.value ? [] : this.selectList
|
||
|
uni.navigateTo({
|
||
|
url: '/pages/workFlow/candiDateUserSelect/index?data=' + encodeURIComponent(JSON.stringify(
|
||
|
item))
|
||
|
})
|
||
|
},
|
||
|
|
||
|
selectConfirm(e, id) {
|
||
|
let selectData = e;
|
||
|
let selectVal = [];
|
||
|
let val = [];
|
||
|
let selectId = [];
|
||
|
let nodeId = '';
|
||
|
if (!selectData.length) {
|
||
|
delete this.selectVal[id]
|
||
|
delete this.selectId[id]
|
||
|
for (let i = 0; i < this.candidateForm.list.length; i++) {
|
||
|
if (id === this.candidateForm.list[i].nodeId) {
|
||
|
this.candidateForm.list[i].value = ""
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
for (let i = 0; i < this.candidateForm.list.length; i++) {
|
||
|
for (let o = 0; o < selectData.length; o++) {
|
||
|
if (selectData[o].nodeId === this.candidateForm.list[i].nodeId) {
|
||
|
nodeId = selectData[o].nodeId
|
||
|
val.push(selectData[o].userName)
|
||
|
selectVal.push(selectData[o])
|
||
|
this.candidateForm.list[i].value = val.join(',')
|
||
|
selectId.push(selectData[o].userId)
|
||
|
this.$set(this.selectId, selectData[o].nodeId, selectId)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
this.$set(this.selectVal, nodeId, selectVal)
|
||
|
},
|
||
|
submit() {
|
||
|
const query = {
|
||
|
candidateType: this.candidateType,
|
||
|
branchList: this.candidateForm.branchList
|
||
|
}
|
||
|
if (this.isCandidate) {
|
||
|
query.candidateList = this.selectId
|
||
|
for (let rules of this.candidateForm.list) {
|
||
|
if (!rules.value) return this.$u.toast(
|
||
|
`${rules.nodeName}不能为空`
|
||
|
)
|
||
|
}
|
||
|
}
|
||
|
this.$emit('submitCandidate', query);
|
||
|
},
|
||
|
cancel() {
|
||
|
this.close()
|
||
|
},
|
||
|
close() {
|
||
|
this.$emit('input', false);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
};
|
||
|
</script>
|
||
|
<style lang="scss" scoped>
|
||
|
.candidateForm-v {
|
||
|
|
||
|
.jnpf-wrap,
|
||
|
.jnpf-wrap-form {
|
||
|
padding: 0;
|
||
|
}
|
||
|
}
|
||
|
</style>
|