diff --git a/src/api/base/server.ts b/src/api/base/server.ts
index 88faa4d..646f24d 100644
--- a/src/api/base/server.ts
+++ b/src/api/base/server.ts
@@ -179,6 +179,16 @@ export const xsQjSpApi = async (params: any) => {
return await post("/api/xsQj/sp", params);
};
+// 获取学生请假审批流程
+export const getXsQjApprovalProcessApi = async (ywId: string, ywType: string = 'XS_QJ') => {
+ return await get("/api/lcglSp/getByYwIdAndYwType", { ywId, ywType });
+};
+
+// 获取学生请假详情
+export const getXsQjDetailApi = async (id: string) => {
+ return await get("/api/xsQj/getDetail", { id });
+};
+
// 获取所有班级
export const bjFindAllApi = async (params: any) => {
return await get("/api/bj/findAll", params);
diff --git a/src/pages.json b/src/pages.json
index ab8b9ff..413bd9e 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -546,6 +546,13 @@
"enablePullDownRefresh": false
}
},
+ {
+ "path": "pages/base/xs/qj/detail",
+ "style": {
+ "navigationBarTitleText": "学生请假详情",
+ "enablePullDownRefresh": false
+ }
+ },
{
"path": "pages/view/routine/qd/index",
"style": {
diff --git a/src/pages/base/xs/qj/components/progressList.vue b/src/pages/base/xs/qj/components/progressList.vue
new file mode 100644
index 0000000..2bf7197
--- /dev/null
+++ b/src/pages/base/xs/qj/components/progressList.vue
@@ -0,0 +1,276 @@
+
+
+
+ 审批进度
+
+
+
+
+
+
+
+
+
+ {{ approver.userName }}
+ {{ getSpTypeText(approver.spType) }}
+
+
+ {{ formatTime(approver.approveTime) }}
+
+ {{ getStatusText(approver.approveStatus) }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/base/xs/qj/detail.vue b/src/pages/base/xs/qj/detail.vue
new file mode 100644
index 0000000..bb047d5
--- /dev/null
+++ b/src/pages/base/xs/qj/detail.vue
@@ -0,0 +1,187 @@
+
+
+
+
+
+
+
+
+
+ 学生姓名:
+ {{ qjData.xsxm }}
+
+
+ 家长姓名:
+ {{ qjData.jzxm }}
+
+
+ 请假类型:
+ {{ qjData.qjlx }}
+
+
+ 开始时间:
+ {{ qjData.qjkstime }}
+
+
+ 结束时间:
+ {{ qjData.qjjstime }}
+
+
+ 请假时长:
+ {{ qjData.qjsc }}
+
+
+ 是否离校:
+ {{ qjData.sflx === 1 ? '是' : '否' }}
+
+
+ 请假事由:
+ {{ qjData.qjsy }}
+
+
+ 申请时间:
+ {{ qjData.createdTime }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/base/xs/qj/sp.vue b/src/pages/base/xs/qj/sp.vue
index b5f4fc5..5c8565e 100644
--- a/src/pages/base/xs/qj/sp.vue
+++ b/src/pages/base/xs/qj/sp.vue
@@ -4,7 +4,7 @@
@@ -35,13 +35,16 @@
-
+
+
-
+
+
+
@@ -75,16 +78,20 @@ import { useUserStore } from "@/store/modules/user";
import { useDataStore } from "@/store/modules/data";
import { ref, nextTick } from "vue";
import { xxtsFindByIdApi, xxtsBlApi } from "@/api/base/server";
+import ProgressList from "./components/progressList.vue";
const { getJs, loginByOpenId } = useUserStore();
const { getData, setXxts, setData, getXxts } = useDataStore();
const dbFlag = ref(false);
+// 从URL参数获取请假ID
+const qjId = getData.id || '';
+
const [register, { getValue }] = useForm({
schema: [
{
- field: "flag",
+ field: "spStatus",
label: "审批意见",
component: "BasicCheckbox",
required: true,
@@ -93,13 +100,13 @@ const [register, { getValue }] = useForm({
},
componentProps: {
data: [
- { value: 2, text: "同意" },
- { value: 1, text: "拒绝" },
+ { value: 'approved', text: "同意" },
+ { value: 'rejected', text: "拒绝" },
],
},
},
{
- field: "comment",
+ field: "spYj",
label: "审批说明",
component: "BasicInput",
required: true,
@@ -108,6 +115,7 @@ const [register, { getValue }] = useForm({
},
componentProps: {
type: "textarea",
+ placeholder: "请输入审批说明",
},
},
],
@@ -115,25 +123,50 @@ const [register, { getValue }] = useForm({
// 请假基础数据
const qjData = computed(() => getData || {});
-const xxtsData = computed(() => getXxts || {});
+const xxtsData = ref({})
const submit = async () => {
- const params = {
- qjId: qjData.value.id,
- jsId: getJs.id,
- spStatus: 2,
- spYj: "同意",
- };
- uni.showLoading({
- title: "提交中...",
- });
- const res = await xsQjSpApi(params);
- // 如果是待办项,更新待办项状态
- if (dbFlag.value) {
- await xxtsBlApi({ id: xxtsData.value.id });
+ try {
+ const formData = await getValue();
+ if (!formData.spStatus || !formData.spYj) {
+ uni.showToast({
+ title: '请填写完整的审批信息',
+ icon: 'none'
+ });
+ return;
+ }
+
+ const params = {
+ qjId: qjData.value.id,
+ jsId: getJs.id,
+ spStatus: formData.spStatus,
+ spYj: formData.spYj,
+ };
+
+ uni.showLoading({
+ title: "提交中...",
+ });
+
+ const res = await xsQjSpApi(params);
+
+ uni.hideLoading();
+ uni.showToast({
+ title: '审批提交成功',
+ icon: 'success'
+ });
+
+ setTimeout(() => {
+ navigateBack();
+ }, 1500);
+
+ } catch (error) {
+ uni.hideLoading();
+ uni.showToast({
+ title: '提交失败,请重试',
+ icon: 'none'
+ });
+ console.error('审批提交失败:', error);
}
- uni.hideLoading();
- navigateBack();
};
onLoad(async (data: any) => {
@@ -153,7 +186,7 @@ onLoad(async (data: any) => {
const xxtsRes = await xxtsFindByIdApi({ id: data.id });
if (xxtsRes && xxtsRes.result) {
const xxts = xxtsRes.result;
-
+ xxtsData.value = xxts;
// 检查待办状态
if (xxts.dbZt === "B") {
setData({ id: xxts.xxzbId });
@@ -172,7 +205,7 @@ onLoad(async (data: any) => {
} catch (error) {
console.error("获取待办信息失败", error);
// 如果获取Xxts失败,回退到原来的逻辑
- const xxtsData = getXxts();
+ const xxtsData = getXxts;
if (xxtsData && xxtsData.dbZt === "B") {
setData({ id: data.id });
let url = "/pages/base/xs/qj/detail";
@@ -222,7 +255,6 @@ onLoad(async (data: any) => {
margin-bottom: 15px;
}
-
.card-body {
padding: 15px;
@@ -244,6 +276,7 @@ onLoad(async (data: any) => {
flex: 1;
}
}
+
.info-column {
display: flex;
flex-direction: column;
@@ -264,7 +297,6 @@ onLoad(async (data: any) => {
}
}
}
-
}
.bottom-action {