cxc-szcx-uniapp/pages/leave/application.vue

338 lines
7.0 KiB
Vue
Raw Normal View History

2024-09-14 02:26:50 +00:00
<template>
<view :class="{'gray':store.isgray==1}">
<view class="form">
2024-09-24 09:21:34 +00:00
<view class="f-row aic jcb input_box">
<view class="title">
职工姓名
2024-09-14 02:26:50 +00:00
</view>
2024-09-24 09:21:34 +00:00
<input v-model="realname" disabled />
</view>
<view class="f-row aic jcb input_box">
<view class="title">
工作单位
2024-09-14 02:26:50 +00:00
</view>
2024-09-24 09:21:34 +00:00
<input v-model="depart" disabled />
</view>
<view class="f-row aic jcb input_box">
<view class="title">
联系方式
</view>
<input v-model="phone" />
</view>
<view class="f-row aic jcb input_box">
<view class="title">
请假类型
</view>
2024-09-26 04:06:47 +00:00
<tree-select :dataSource="dataSource" v-model="type" dataValue="name" />
2024-09-24 09:21:34 +00:00
</view>
<picker mode="date" fields="day" @change="chooseStart" :value="beginTime">
2024-09-14 02:26:50 +00:00
<view class="f-row aic jcb box">
<view class="title">
开始时间
</view>
<view class="f-row aic">
2024-09-24 09:21:34 +00:00
<view :class="[{'choose':!beginTime},{'choosed':beginTime}]">
{{beginTime?beginTime:'请选择'}}
2024-09-14 02:26:50 +00:00
</view>
2024-09-24 09:21:34 +00:00
<uni-icons type="bottom" color="#333333"></uni-icons>
2024-09-14 02:26:50 +00:00
</view>
</view>
</picker>
2024-09-24 09:21:34 +00:00
<picker mode="date" fields="day" @change="chooseEnd" :value="endTime">
2024-09-14 02:26:50 +00:00
<view class="f-row aic jcb box">
<view class="title">
结束时间
</view>
<view class="f-row aic">
2024-09-24 09:21:34 +00:00
<view :class="[{'choose':!endTime},{'choosed':endTime}]">
{{endTime?endTime:'请选择'}}
2024-09-14 02:26:50 +00:00
</view>
2024-09-24 09:21:34 +00:00
<uni-icons type="bottom" color="#333333"></uni-icons>
2024-09-14 02:26:50 +00:00
</view>
</view>
</picker>
<view class="f-row aic jcb input_box">
<view class="title">
请假地点
</view>
2024-09-24 09:21:34 +00:00
<input v-model="address" type="text" placeholder="请输入"
2024-09-14 02:26:50 +00:00
placeholder-style="font-size: 28rpx;color: #999999;" />
</view>
</view>
<view class="reason f-col">
<view class="title">
请假事由
</view>
<textarea v-model="reason" placeholder="请输入请假事由" placeholder-style="font-size: 28rpx;color: #999999;"
cols="30" rows="10"></textarea>
</view>
2024-09-24 09:21:34 +00:00
<!-- <view class="progress_box">
2024-09-14 02:26:50 +00:00
<view class="title">
审批流程
</view>
<view class="progress f-row aic">
<view class="f-col aic ">
<image class="avatar" src="" mode=""></image>
<text>发起人</text>
</view>
<image class="line" src="../../static/line.png" mode=""></image>
<view class="f-col aic">
<image class="avatar" src="" mode=""></image>
<text>部门领导</text>
</view>
<image class="line" src="../../static/line.png" mode=""></image>
<view class="f-col aic">
<image class="avatar" src="" mode=""></image>
<text>人事部门</text>
</view>
</view>
2024-09-24 09:21:34 +00:00
</view> -->
2024-09-14 02:26:50 +00:00
<view class="btn f-col aic">
2024-09-24 09:21:34 +00:00
<view @click="qjAdd">
2024-09-14 02:26:50 +00:00
提交
</view>
</view>
</view>
</template>
<script setup>
import {
ref,
getCurrentInstance
} from 'vue';
import {
qjAddApi,
startMutilProcessApi,
2024-09-24 09:21:34 +00:00
getCategoryItemsApi
2024-09-19 07:12:58 +00:00
} from '@/api/api.js';
2024-09-24 09:21:34 +00:00
import {
queryDepByCode
} from '@/api/depart.js'
2024-09-14 02:26:50 +00:00
import {
onLoad
} from '@dcloudio/uni-app'
import {
useStore
} from '@/store';
2024-09-24 09:21:34 +00:00
import treeSelect from "@/components/treeSelect/treeSelect.vue"
2024-09-14 02:26:50 +00:00
const store = useStore()
const {
proxy
} = getCurrentInstance()
2024-09-24 09:21:34 +00:00
/**职工姓名*/
const realname = ref(store.userinfo.realname)
/**工作单位*/
const depart = ref('')
/**联系方式*/
const phone = ref(store.userinfo.phone)
/**请假类型*/
const type = ref('')
const dataSource = ref([])
/**开始时间*/
const beginTime = ref('')
2024-09-14 02:26:50 +00:00
const chooseStart = (e) => {
2024-09-24 09:21:34 +00:00
beginTime.value = e.detail.value
2024-09-14 02:26:50 +00:00
}
2024-09-24 09:21:34 +00:00
/**结束时间*/
const endTime = ref('')
2024-09-14 02:26:50 +00:00
const chooseEnd = (e) => {
2024-09-24 09:21:34 +00:00
endTime.value = e.detail.value
2024-09-14 02:26:50 +00:00
}
2024-09-24 09:21:34 +00:00
/**请假地点*/
const address = ref('')
/**请假事由*/
const reason = ref('')
onLoad(() => {
loadData()
})
2024-09-14 02:26:50 +00:00
const qjAdd = () => {
2024-09-24 09:21:34 +00:00
if (!phone.value.trim()) return proxy.$toast('请输入联系方式')
if (!type.value) return proxy.$toast('请选择请假类型')
if (!beginTime.value) return proxy.$toast('请选择开始时间')
if (!endTime.value) return proxy.$toast('请选择结束时间')
if (!address.value.trim()) return proxy.$toast('请输入请假地点')
2024-09-14 02:26:50 +00:00
if (!reason.value.trim()) return proxy.$toast('请输入请假事由')
qjAddApi({
2024-09-24 09:21:34 +00:00
username: store.userinfo.username,
realname: store.userinfo.realname,
phone: phone.value,
type: type.value,
begintime: beginTime.value,
endtime: endTime.value,
address: address.value,
reason: reason.value
2024-09-14 02:26:50 +00:00
}).then((res) => {
if (res.success) {
startMutilProcess(res.message)
2024-09-26 04:06:47 +00:00
} else {
proxy.$toast(res.message);
2024-09-14 02:26:50 +00:00
}
})
}
const startMutilProcess = (id) => {
startMutilProcessApi({
flowCode: "dev_cxc_qxj_zg_001",
id,
2024-09-24 09:21:34 +00:00
formUrl: "modules/zgqxj/modules/CxcZgqxjBpmModel",
formUrlMobile: "leaveApplication" //对应main.js里全局注册createApp()里的 app.component('leaveApplication',index)
2024-09-14 02:26:50 +00:00
}).then((res) => {
if (res.success) {
proxy.$toast(res.message)
setTimeout(() => {
uni.navigateBack()
}, 2000)
}
}).catch((err) => {
console.log(err);
})
}
2024-09-24 09:21:34 +00:00
const loadData = () => {
2024-09-26 04:06:47 +00:00
getCategoryItemsApi('1838487445813645313').then((res) => { //请假类型
2024-09-14 02:26:50 +00:00
if (res.success) {
2024-09-24 09:21:34 +00:00
dataSource.value = res.result
2024-09-26 04:06:47 +00:00
console.log('--',res.result)
2024-09-14 02:26:50 +00:00
}
})
2024-09-26 04:06:47 +00:00
2024-09-24 09:21:34 +00:00
queryDepByCode(store.userinfo.orgCode).then((res) => { //部门翻译
if (res.success) {
depart.value = res.result
}
})
2024-09-26 04:06:47 +00:00
2024-09-14 02:26:50 +00:00
}
</script>
<style>
page {
background-color: #fff;
}
</style>
<style lang="scss" scoped>
.btn {
border-top: 1px solid #EFEFEF;
height: 120rpx;
justify-content: center;
position: fixed;
bottom: 0;
width: 100vw;
view {
width: 690rpx;
height: 88rpx;
background: #01508B;
border-radius: 16rpx;
font-size: 28rpx;
color: #FFFFFF;
text-align: center;
line-height: 88rpx;
}
}
.input_box {
height: 100rpx;
.title {
font-size: 28rpx;
color: #333333;
}
input {
flex: 1;
height: 100%;
text-align: right;
font-size: 28rpx;
color: #333333;
}
}
.form {
padding: 0 30rpx;
background-color: #fff;
.title {
font-size: 28rpx;
color: #333333;
}
.box {
height: 100rpx;
}
.box:not(:last-child) {
border-bottom: 1px solid #EFEFEF;
}
.choose {
font-size: 28rpx;
color: #999999;
}
.choosed {
font-size: 28rpx;
color: #333333;
}
}
.reason {
background-color: #fff;
margin-top: 20rpx;
height: 290rpx;
padding: 30rpx;
.title {
font-size: 28rpx;
color: #333333;
}
textarea {
width: 100%;
margin-top: 20rpx;
}
}
2024-09-24 09:21:34 +00:00
// .progress_box {
// background-color: #fff;
// margin-top: 20rpx;
// padding: 30rpx;
2024-09-14 02:26:50 +00:00
2024-09-24 09:21:34 +00:00
// .title {
// font-size: 28rpx;
// color: #333333;
// }
2024-09-14 02:26:50 +00:00
2024-09-24 09:21:34 +00:00
// .avatar {
// width: 78rpx;
// height: 78rpx;
// border-radius: 38rpx;
// background-color: #333333;
// margin-top: 30rpx;
// }
2024-09-14 02:26:50 +00:00
2024-09-24 09:21:34 +00:00
// text {
// font-size: 24rpx;
// color: #333333;
// margin-top: 10rpx;
// }
2024-09-14 02:26:50 +00:00
2024-09-24 09:21:34 +00:00
// .line {
// width: 91rpx;
// height: 17rpx;
// margin: 0 40rpx;
// }
// }
2024-09-14 02:26:50 +00:00
.lines {
height: 20rpx;
background-color: #F8F8F8;
}
</style>