|
@@ -1,29 +1,18 @@
|
|
|
-<<<<<<< HEAD
|
|
|
-<template>
|
|
|
- <div>
|
|
|
-2222
|
|
|
- </div>
|
|
|
-</template>
|
|
|
-
|
|
|
-<script setup>
|
|
|
-
|
|
|
-</script>
|
|
|
-
|
|
|
-<style lang="scss" scoped>
|
|
|
-
|
|
|
-=======
|
|
|
<script setup >
|
|
|
import {ref} from 'vue';
|
|
|
import {userInfo} from '~/store/user';
|
|
|
const {uo_type,user_id,uo_id} = userInfo
|
|
|
-import {queryApi,org_users} from './apiItem';
|
|
|
+import {queryApi,editApi,org_users} from './apiItem';
|
|
|
+
|
|
|
+import { showNotify } from 'vant';
|
|
|
+const router = useRouter();
|
|
|
|
|
|
const isBureau = ref(false) // 当前用户是否局端
|
|
|
isBureau.value = uo_type === '1'
|
|
|
/***************************请假管理*******************************************/
|
|
|
|
|
|
//外出管理-返回
|
|
|
-const onClickLeft = () => history.back();
|
|
|
+const onclickBack = () => history.back();
|
|
|
|
|
|
const tabActive = ref(0);
|
|
|
|
|
@@ -35,36 +24,41 @@ const applyTypeOption = ref([
|
|
|
{ text: '婚假', value: 3 },
|
|
|
{ text: '丧假', value: 4 },
|
|
|
{ text: '产假', value: 5 },
|
|
|
- { text: '年休假', value: 6 },
|
|
|
+ { text: '年休假', value: 6},
|
|
|
{ text: '调休', value: 7 },
|
|
|
{ text: '其他', value: 8 },
|
|
|
]);
|
|
|
const applyReason = ref();
|
|
|
|
|
|
+//select请求
|
|
|
+const dropItemChange = (fromA) => {
|
|
|
+ if (fromA == "qjlx") {
|
|
|
+ console.log(fromA);
|
|
|
+ } else {
|
|
|
+ console.log('44');
|
|
|
+ }
|
|
|
+ onLoad();
|
|
|
+}
|
|
|
+//头部确定按钮
|
|
|
+const onConfirm = (markLabel) => {
|
|
|
+ onLoad();
|
|
|
+}
|
|
|
+
|
|
|
+const onClickTab = () => {
|
|
|
+ applyType.value = "";
|
|
|
+ applyReason.value = "";
|
|
|
+ onLoad();
|
|
|
+ }
|
|
|
|
|
|
const tableList = ref([])
|
|
|
const loading = ref(false)
|
|
|
const finished = ref(false)
|
|
|
|
|
|
const onLoad = () => {
|
|
|
- // 异步更新数据
|
|
|
- // setTimeout 仅做示例,真实场景中一般为 ajax 请求
|
|
|
- setTimeout(() => {
|
|
|
- for (let i = 0; i < 10; i++) {
|
|
|
- list.value.push(list.value.length + 1);
|
|
|
- }
|
|
|
-
|
|
|
- // 加载状态结束
|
|
|
- loading.value = false;
|
|
|
-
|
|
|
- // 数据全部加载完成
|
|
|
- if (list.value.length >= 40) {
|
|
|
- finished.value = true;
|
|
|
- }
|
|
|
- }, 1000);
|
|
|
-
|
|
|
let transObjs = {
|
|
|
- page:1
|
|
|
+ page: 1,
|
|
|
+ xxq_qjlx: applyType.value,
|
|
|
+ xxq_qjsy: applyReason.value
|
|
|
}
|
|
|
queryApi(transObjs)
|
|
|
.then(res => {
|
|
@@ -79,34 +73,13 @@ const onLoad = () => {
|
|
|
})
|
|
|
};
|
|
|
|
|
|
-const onSubmit = () => {
|
|
|
- show.value = true;
|
|
|
-}
|
|
|
-
|
|
|
-const show = ref(false);
|
|
|
-
|
|
|
-const value1 = ref('');
|
|
|
-const value2 = ref('');
|
|
|
-const value3 = ref('abc');
|
|
|
-const value4 = ref('');
|
|
|
-const pattern = /\d{6}/;
|
|
|
-
|
|
|
-// 校验函数返回 true 表示校验通过,false 表示不通过
|
|
|
-const validator = (val) => /1\d{10}/.test(val);
|
|
|
-
|
|
|
-// 校验函数可以直接返回一段错误提示
|
|
|
-const validatorMessage = (val) => `${val} 不合法,请重新输入`;
|
|
|
-
|
|
|
-// 校验函数可以返回 Promise,实现异步校验
|
|
|
-const asyncValidator = (val) =>
|
|
|
- new Promise((resolve) => {
|
|
|
- showLoadingToast('验证中...');
|
|
|
-
|
|
|
- setTimeout(() => {
|
|
|
- closeToast();
|
|
|
- resolve(val === '1234');
|
|
|
- }, 1000);
|
|
|
+//跳转
|
|
|
+const linkTo = () => {
|
|
|
+ router.push({
|
|
|
+ path: "/administrativeService/leaveManagement/add",
|
|
|
+ // query: { xsxk_id },
|
|
|
});
|
|
|
+}
|
|
|
|
|
|
const onFailed = (errorInfo) => {
|
|
|
console.log('failed', errorInfo);
|
|
@@ -138,17 +111,34 @@ const getUserList=()=> {
|
|
|
}
|
|
|
getUserList();
|
|
|
|
|
|
-
|
|
|
+const dialogCheckVisible = ref(false);
|
|
|
+const currentXxqId = ref();
|
|
|
const handleCheckDialog = (item) => {
|
|
|
if (user_id == item.xxq_spr_user_id) {
|
|
|
- this.dialogCheckVisible = true;
|
|
|
- this.curCheckId = row.xxq_id;
|
|
|
+ currentXxqId.value = item.xxq_id;
|
|
|
+ dialogCheckVisible.value = true;
|
|
|
} else {
|
|
|
showNotify({ type: 'warning', message: '此条申请,您无法审核~' });
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+const checkedValue = ref('2');
|
|
|
+const checkSubmitForm = () => {
|
|
|
+ let transParams = { xxq_zt: checkedValue.value }
|
|
|
+ editApi(currentXxqId.value, transParams)
|
|
|
+ .then(res => {
|
|
|
+ if (res.code == 1) {
|
|
|
+ dialogCheckVisible.value = false;
|
|
|
+ showNotify({ type: 'success', message: res.msg });
|
|
|
+ onLoad();
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(error => {
|
|
|
+ console.log(error);
|
|
|
+ })
|
|
|
+
|
|
|
+}
|
|
|
|
|
|
</script>
|
|
|
|
|
@@ -158,19 +148,19 @@ const handleCheckDialog = (item) => {
|
|
|
<div style="width: 100%;text-align: center;"><span style="font-size: 20px;">本功能仅对校端用户开放</span></div>
|
|
|
</div>
|
|
|
<div class="index" v-show="!isBureau">
|
|
|
- <van-nav-bar title="请假管理" left-text="返回" left-arrow @click-left="onClickLeft"/>
|
|
|
+ <van-nav-bar title="请假管理" left-text="返回" left-arrow @click-left="onclickBack"/>
|
|
|
|
|
|
- <van-tabs v-model:active="tabActive">
|
|
|
+ <van-tabs v-model:active="tabActive" @click-tab="onClickTab">
|
|
|
<van-tab title="请假管理">
|
|
|
|
|
|
<van-dropdown-menu>
|
|
|
- <van-dropdown-item v-model="applyType" title="请假类型" :options="applyTypeOption" @change="dropItemChange" />
|
|
|
- <van-dropdown-item ref="itemRef2" title="请假事由">
|
|
|
+ <van-dropdown-item v-model="applyType" title="请假类型" :options="applyTypeOption" @change="dropItemChange('qjlx')" />
|
|
|
+ <van-dropdown-item title="请假事由">
|
|
|
<van-cell-group inset>
|
|
|
<van-field v-model="applyReason" placeholder="请输入请假事由" />
|
|
|
</van-cell-group>
|
|
|
<div style="padding: 5px 16px;">
|
|
|
- <van-button type="primary" block round @click="onConfirm(0)">
|
|
|
+ <van-button type="primary" block round @click="onConfirm('qjgl')">
|
|
|
确认
|
|
|
</van-button>
|
|
|
</div>
|
|
@@ -178,7 +168,7 @@ const handleCheckDialog = (item) => {
|
|
|
</van-dropdown-menu>
|
|
|
|
|
|
<van-list v-model:loading="loading" :finished="finished" finished-text="没有更多了" @load="onLoad">
|
|
|
- <van-cell v-for="(item,index ) in tableList" :key="index" :title="item" >
|
|
|
+ <van-cell v-for="(item,index ) in tableList" :key="index" :title="item.xxq_spr" >
|
|
|
<template #title>
|
|
|
<div>申请时间:{{ item.xxq_sqsj }}</div>
|
|
|
<div>请假人:{{ item.xxq_qjr }}</div>
|
|
@@ -195,62 +185,20 @@ const handleCheckDialog = (item) => {
|
|
|
</van-cell>
|
|
|
</van-list>
|
|
|
|
|
|
- <van-submit-bar button-text="请假申请" @submit="onSubmit" />
|
|
|
-
|
|
|
- <van-dialog v-model:show="show" title="请假申请" confirmButtonDisabled="false">
|
|
|
- <van-form @failed="onFailed">
|
|
|
- <van-cell-group inset>
|
|
|
- <!-- 通过 pattern 进行正则校验 -->
|
|
|
- <van-field
|
|
|
- v-model="value1"
|
|
|
- name="申请时间"
|
|
|
- label="申请时间"
|
|
|
- placeholder="正则校验"
|
|
|
- :rules="[{ pattern, message: '请输入正确内容' }]"
|
|
|
- />
|
|
|
- <!-- 通过 validator 进行函数校验 -->
|
|
|
- <van-field
|
|
|
- v-model="value2"
|
|
|
- name="请假人:"
|
|
|
- label="请假人:"
|
|
|
- placeholder="函数校验"
|
|
|
- :rules="[{ validator, message: '请输入正确内容' }]"
|
|
|
- />
|
|
|
- <!-- 通过 validator 返回错误提示 -->
|
|
|
- <van-field
|
|
|
- v-model="value3"
|
|
|
- name="validatorMessage"
|
|
|
- placeholder="校验函数返回错误提示"
|
|
|
- :rules="[{ validator: validatorMessage }]"
|
|
|
- />
|
|
|
- <!-- 通过 validator 进行异步函数校验 -->
|
|
|
- <van-field
|
|
|
- v-model="value4"
|
|
|
- name="asyncValidator"
|
|
|
- placeholder="异步函数校验"
|
|
|
- :rules="[{ validator: asyncValidator, message: '请输入正确内容' }]"
|
|
|
- />
|
|
|
- </van-cell-group>
|
|
|
- <div style="margin: 16px;">
|
|
|
- <van-button round block type="primary" native-type="submit">
|
|
|
- 提交
|
|
|
- </van-button>
|
|
|
- </div>
|
|
|
- </van-form>
|
|
|
+ <van-submit-bar button-type="primary" button-text="请假申请" @submit="linkTo()" />
|
|
|
|
|
|
- </van-dialog>
|
|
|
|
|
|
</van-tab>
|
|
|
<van-tab title="请假审批">
|
|
|
<van-dropdown-menu>
|
|
|
- <van-dropdown-item v-model="applyType" title="请假类型" :options="applyTypeOption" />
|
|
|
- <van-dropdown-item v-model="applyPerson" title="申请人" :options="userLIST" />
|
|
|
- <van-dropdown-item ref="itemRef2" title="请假事由">
|
|
|
+ <van-dropdown-item v-model="applyType" title="请假类型" :options="applyTypeOption" @change="dropItemChange('qjsp')" />
|
|
|
+ <van-dropdown-item v-model="applyPerson" title="申请人" :options="userLIST" @change="dropItemChange('qjsp')" />
|
|
|
+ <van-dropdown-item title="请假事由">
|
|
|
<van-cell-group inset>
|
|
|
<van-field v-model="applyReason" placeholder="请输入请假事由" />
|
|
|
</van-cell-group>
|
|
|
<div style="padding: 5px 16px;">
|
|
|
- <van-button type="primary" block round @click="onConfirm(0)">
|
|
|
+ <van-button type="primary" block round @click="onConfirm('qjsp')">
|
|
|
确认
|
|
|
</van-button>
|
|
|
</div>
|
|
@@ -258,7 +206,7 @@ const handleCheckDialog = (item) => {
|
|
|
</van-dropdown-menu>
|
|
|
|
|
|
<van-list v-model:loading="loading" :finished="finished" finished-text="没有更多了" @load="onLoad">
|
|
|
- <van-cell v-for="(item,index) in tableList" :key="index" :title="item" >
|
|
|
+ <van-cell v-for="(item,index) in tableList" :key="index" :title="item.xxq_spr" >
|
|
|
<template #title>
|
|
|
<div>申请时间:{{ item.xxq_sqsj }}</div>
|
|
|
<div>请假人:{{ item.xxq_qjr }}</div>
|
|
@@ -272,17 +220,34 @@ const handleCheckDialog = (item) => {
|
|
|
</template>
|
|
|
|
|
|
<template #right-icon>
|
|
|
- <van-button type="primary" size="small" @click="handleCheckDialog(item)">审核</van-button>
|
|
|
+ <van-button type="primary" size="small" v-if="item.xxq_zt_option_k == 1" @click="handleCheckDialog(item)">审核</van-button>
|
|
|
+ <van-button type="text" disabled v-else>已审核</van-button>
|
|
|
</template>
|
|
|
</van-cell>
|
|
|
</van-list>
|
|
|
|
|
|
- </van-tab>
|
|
|
- </van-tabs>
|
|
|
-
|
|
|
-
|
|
|
+ <!-- 请假审批弹出框 -->
|
|
|
+ <van-popup v-model:show="dialogCheckVisible" round position="bottom" :style="{ height: '15%' }">
|
|
|
+ <div>
|
|
|
+ <van-form @submit="checkSubmitForm">
|
|
|
+ <van-field label="审核结果:" name="radio" >
|
|
|
+ <template #input>
|
|
|
+ <van-radio-group v-model="checkedValue" direction="horizontal">
|
|
|
+ <van-radio name="2">同意</van-radio>
|
|
|
+ <van-radio name="3">不同意</van-radio>
|
|
|
+ </van-radio-group>
|
|
|
+ </template>
|
|
|
+ </van-field>
|
|
|
+ <div style="margin: 16px;">
|
|
|
+ <van-button round block type="primary" native-type="submit">提交</van-button>
|
|
|
+ </div>
|
|
|
+ </van-form>
|
|
|
+ </div>
|
|
|
|
|
|
+ </van-popup>
|
|
|
|
|
|
+ </van-tab>
|
|
|
+ </van-tabs>
|
|
|
|
|
|
|
|
|
</div>
|
|
@@ -290,24 +255,10 @@ const handleCheckDialog = (item) => {
|
|
|
</template>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
-.vant-table-container {
|
|
|
- width: 100%;
|
|
|
- padding: 20px;
|
|
|
- box-sizing: border-box;
|
|
|
-}
|
|
|
-
|
|
|
-.even-row {
|
|
|
- background-color: #f7f7f7;
|
|
|
-}
|
|
|
-
|
|
|
-.odd-row {
|
|
|
- background-color: #ffffff;
|
|
|
-}
|
|
|
.greenText{
|
|
|
color: green;
|
|
|
}
|
|
|
.redText{
|
|
|
color: red;
|
|
|
}
|
|
|
->>>>>>> liua
|
|
|
</style>
|