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.

303 lines
7.8 KiB

9 months ago
<template>
<view class="jnpf-wrap personalData">
<u-toast ref="uToast" />
<view class="u-p-l-20 u-p-r-20" style="background-color: #fff;">
<u-form :model="dataForm" :errorType="['toast']" label-width="180" label-align="left" ref="dataForm">
<u-form-item label="受委托人" prop='toUserId' required>
<jnpf-user-select v-model="dataForm.toUserId" @change="toChangeUser" :disabled="disabled">
</jnpf-user-select>
</u-form-item>
<u-form-item label="委托类型" prop='type' required>
<jnpf-select v-model="dataForm.type" placeholder="请选择" :options='typeOptions' :props='props'
:disabled="disabled">
</jnpf-select>
</u-form-item>
<u-form-item label="委托流程">
<jnpf-flow-select v-model="dataForm.flowId" placeholder="全部流程" multiple @change="onChange"
:disabled="disabled">
</jnpf-flow-select>
</u-form-item>
<u-form-item label="开始时间" prop='startTime' required>
<jnpf-date-time type="date" v-model="dataForm.startTime" placeholder="请选择" :disabled="disabled"
@change="change" format="yyyy-MM-dd">
</jnpf-date-time>
</u-form-item>
<u-form-item label="结束时间" prop='endTime' required>
<jnpf-date-time type="date" v-model="dataForm.endTime" placeholder="请选择" @change="change"
:disabled="disabled" format="yyyy-MM-dd">
</jnpf-date-time>
</u-form-item>
<u-form-item label="委托说明">
<u-input input-align='right' v-model="dataForm.description" type="textarea" placeholder="请输入"
:disabled="disabled" />
</u-form-item>
</u-form>
</view>
<view class="flowBefore-actions">
<template>
<u-button class="buttom-btn" @click="showctionSheet = true" v-if="showBtn">
<u-icon name="arrow-down" size="24">
</u-icon>
</u-button>
<u-button class="buttom-btn" type="primary" @click.stop="getResult('confirm')" v-if="current != 2">
{{'确定'}}
</u-button>
<u-button class="buttom-btn" @click="getResult('cancel')">
{{'取消'}}
</u-button>
</template>
</view>
<u-action-sheet v-model="showctionSheet" :list="actionList" @click="handleAction"
:tips="{ text: '更多操作' , color: '#000' , fontSize: 30 }">
</u-action-sheet>
</view>
</template>
<script>
import {
UpdateUser
} from '@/api/common'
import {
Create,
getListByAuthorize,
Update,
FlowDelegateInfo,
entrustStop
} from '@/api/workFlow/entrust.js'
import {
FlowEngineListAll
} from '@/api/workFlow/flowEngine.js'
export default {
data() {
const data = {
showBtn: false,
showctionSheet: false,
show: false,
avatar: 'https://cdn.uviewui.com/uview/common/logo.png',
props: {
label: 'fullName',
value: 'enCode'
},
dataForm: {
id: '',
userId: '',
toUserId: '',
flowId: [],
description: '',
startTime: '',
endTime: '',
flowName: '',
toUserName: '',
type: [],
},
typeOptions: [{
enCode: "0",
fullName: '发起委托'
}, {
enCode: "1",
fullName: '审批委托'
}],
userInfo: {},
rules: {
userId: [{
required: true,
message: '委托人不能为空',
trigger: ['change', 'blur'],
}],
toUserId: [{
required: true,
message: '受委托人不能为空',
trigger: ['change', 'blur'],
}],
type: [{
required: true,
message: '委托类型不能为空',
trigger: ['change', 'blur'],
}],
endTime: [{
required: true,
message: '结束时间不能为空',
trigger: 'blur',
type: 'number'
}],
startTime: [{
required: true,
message: '开始时间不能为空',
trigger: 'blur',
type: 'number'
}]
},
isGradeUser: 2,
myNameAccount: '',
actionList: [],
current: '1',
disabled: false
}
this.getOptions()
return data
},
computed: {
baseURL() {
return this.define.baseURL
},
},
onLoad(option) {
this.userInfo = uni.getStorageSync('userInfo') || {}
if (option) {
this.current = option.current
this.disabled = this.current == 2 ? true : false
this.dataForm.id = option.id || ''
this.showBtn = option.current == 1 ? true : false
if (this.showBtn && option.status == 1 || option.status == 0) {
this.actionList.push({
text: '结束委托',
fontSize: 30,
})
}
}
uni.setNavigationBarTitle({
title: this.dataForm.id ? '委托详情' : '新建委托'
})
this.myNameAccount = this.userInfo.userName + '/' + this.userInfo.userAccount
this.dataForm.userId = this.userInfo.userId
this.dataForm.userName = this.myNameAccount
FlowEngineListAll().then((res) => {
this.flowEngineList = res.data.list
//初始化数据
if (this.dataForm.id) {
FlowDelegateInfo(this.dataForm.id).then(res => {
this.dataForm = res.data
this.dataForm.flowId = this.dataForm.flowId ? this.dataForm.flowId.split(",") : []
this.myNameAccount = this.dataForm.userName
})
}
})
},
mounted() {
this.$refs.dataForm.setRules(this.rules);
},
methods: {
handleAction(index) {
let currTime = Math.round(new Date())
uni.showModal({
title: '提示',
content: '结束后,流程不再进行委托!',
success: (res) => {
if (res.confirm) {
entrustStop(this.dataForm.id).then(res => {
this.dataForm.endTime = currTime
uni.$emit('refresh')
uni.navigateBack()
})
}
}
})
},
onChange(id, listData) {
if (listData && listData.length) {
let arr = []
listData.forEach(item => {
arr.push(item.fullName)
})
this.dataForm.flowName = arr.join(",")
} else {
this.dataForm.flowName = "全部流程"
}
},
change(val, list) {
this.$nextTick(() => {
this.$emit('change', this.dataForm)
})
},
toChangeUser(id, selectedData) {
return this.dataForm.toUserName = selectedData.fullName
},
onChangeUser(id, selectedData) {
this.dataForm.userName = selectedData.fullName
},
getOptions() {
this.show = true
},
// 点击确定或者取消
getResult(event = null) {
// #ifdef MP-WEIXIN
if (this.moving) return;
// #endif
this.keyword = '';
if (event === 'cancel') return this.close();
this.submit()
},
close() {
uni.navigateBack();
},
submit() {
let startTime = this.dataForm.startTime;
let endTime = this.dataForm.endTime;
this.$refs.dataForm.validate(valid => {
if (valid) {
if (startTime > endTime) {
this.$refs.uToast.show({
title: '开始时间不能大于等于结束时间',
type: 'error'
})
this.dataForm.startTime = '';
this.dataForm.endTime = '';
return
}
const formMethod = this.dataForm.id ? Update : Create
let params = {
...this.dataForm
}
params.flowId = this.dataForm.flowId ? this.dataForm.flowId.join(",") : ""
if (this.isGradeUser == 2) {
params.userId = this.userInfo.userId
params.userName = this.myNameAccount
}
if (!params.flowId) {
params.flowName = "全部流程"
}
formMethod(params).then(res => {
uni.showToast({
title: res.msg,
complete: () => {
setTimeout(() => {
uni.$emit('refresh')
uni.navigateBack()
}, 1500)
}
});
}).catch()
}
});
}
}
}
</script>
<style lang="scss">
page {
background-color: #f0f2f6;
}
/deep/.u-form-item {
min-height: 112rpx;
}
.u-form {
padding: 0;
}
.slot-btn {
width: 329rpx;
height: 140rpx;
display: flex;
justify-content: center;
align-items: center;
background: rgb(244, 245, 246);
border-radius: 10rpx;
}
.slot-btn__hover {
background-color: rgb(235, 236, 238);
}
</style>