diff --git a/src/api/base/common.ts b/src/api/base/common.ts
index ed2a98e..2c02882 100644
--- a/src/api/base/common.ts
+++ b/src/api/base/common.ts
@@ -16,6 +16,11 @@ export const jsFindAll = async () => {
return await get("/api/js/findAllBasicInfo");
};
+// 所有教师基础信息(Vo版本)
+export const jsFindAllBasicInfoVo = async () => {
+ return await get("/api/js/findAllBasicInfoVo");
+};
+
// 所有职务
export const zwFindAllApi = async () => {
return await get("/api/zw/findAll");
diff --git a/src/api/base/jsQjApi.ts b/src/api/base/jsQjApi.ts
index 3cbc491..10fb788 100644
--- a/src/api/base/jsQjApi.ts
+++ b/src/api/base/jsQjApi.ts
@@ -4,26 +4,26 @@
import { get, post } from "@/utils/request";
/**
- * 申请
+ * 教师申请请假
*/
export const jsQjSqApi = async (params: any) => {
return await post("/api/jsQj/sq", params);
};
/**
- * 审批
- */
-export const jsQjSpApi = async (params: any) => {
- return await post("/api/jsQj/sp", params);
-};
-
-/**
- * 重新提交
+ * 教师重新提交请假
*/
export const jsQjCxtjApi = async (params: any) => {
return await post("/api/jsQj/cxtj", params);
};
+/**
+ * 教师审批请假申请
+ */
+export const jsQjSpApi = async (params: any) => {
+ return await post("/api/jsQj/sp", params);
+};
+
/**
* 教务处确认
*/
@@ -39,19 +39,12 @@ export const jsQjJwcXtApi = async (params: any) => {
};
/**
- * 代课确认
+ * 代课教师确认
*/
export const jsQjDkQrApi = async (params: any) => {
return await post("/api/jsQj/dk/qr", params);
};
-/**
- * 转办
- */
-export const jsQjZbApi = async (params: any) => {
- return await post("/api/jsQj/zb", params);
-};
-
/**
* 查询请假信息
*/
@@ -89,8 +82,39 @@ export const findQjListApi = async (params: any) => {
};
/**
- * 查询请假流程处理历史
+ * 根据规则ID获取默认审批人和抄送人
*/
-export const getQjActivitiHistoryApi = async (params: any) => {
- return await get("/activiti/history/historicFlow", params);
+export const getApproversByRuleId = async (ruleId: string) => {
+ return await get("/api/jsQj/getApproversByRuleId", { ruleId });
+};
+
+/**
+ * 根据ID获取请假详情
+ */
+export const findQjByIdApi = async (params: { id: string }) => {
+ return await get("/api/jsQj/findById", params);
+};
+
+// 保留旧的接口方法以兼容现有代码,但标记为废弃
+/**
+ * @deprecated 使用 jsQjSqApi 替代
+ */
+export const jsQjSaveOrUpdateApi = async (params: any) => {
+ return await post("/api/jsQj/sq", params);
+};
+
+/**
+ * @deprecated 使用 jsQjSpApi 替代
+ */
+export const jsQjApproveApi = async (params: any) => {
+ return await post("/api/jsQj/sp", params);
+};
+
+/**
+ * 获取教师请假审批流程
+ * @param ywId 业务ID
+ * @param ywType 业务类型
+ */
+export const getJsQjApprovalProcessApi = (ywId: string, ywType: string = 'JS_QJ') => {
+ return get("/api/lcglSp/getByYwIdAndYwType", { ywId, ywType });
};
diff --git a/src/api/base/lcglSpApi.ts b/src/api/base/lcglSpApi.ts
new file mode 100644
index 0000000..581fb18
--- /dev/null
+++ b/src/api/base/lcglSpApi.ts
@@ -0,0 +1,64 @@
+import { get, post } from "@/utils/request";
+
+// 流程审批相关API接口
+
+/**
+ * 根据业务ID和业务类型获取审批流程
+ * @param ywId 业务ID
+ * @param ywType 业务类型
+ */
+export function getByYwIdAndYwTypeApi(ywId: string, ywType: string) {
+ return get('/api/lcglSp/getByYwIdAndYwType', { ywId, ywType });
+}
+
+/**
+ * 根据业务ID、业务类型和审批类型获取审批流程
+ * @param ywId 业务ID
+ * @param ywType 业务类型
+ * @param spType 审批类型
+ */
+export function getByYwIdAndYwTypeAndSpTypeApi(ywId: string, ywType: string, spType: string) {
+ return get('/api/lcglSp/getByYwIdAndYwTypeAndSpType', { ywId, ywType, spType });
+}
+
+/**
+ * 分页查询审批流程
+ * @param params 查询参数
+ */
+export function lcglSpFindPageApi(params: {
+ page: number;
+ pageSize: number;
+ ywId?: string;
+ ywType?: string;
+ spType?: string;
+ approveStatus?: string;
+}) {
+ return get('/api/lcglSp/findPage', params);
+}
+
+/**
+ * 新增/修改审批流程
+ * @param params 审批流程数据
+ */
+export function lcglSpSaveApi(params: {
+ id?: string;
+ ywId: string;
+ ywType: string;
+ userId: string;
+ userName: string;
+ spType: string;
+ approveStatus?: string;
+ approveRemark?: string;
+ setId?: string;
+ sort?: number;
+}) {
+ return post('/api/lcglSp/save', params);
+}
+
+/**
+ * 逻辑删除审批流程
+ * @param params 删除参数
+ */
+export function lcglSpLogicDeleteApi(params: { id: string }) {
+ return post('/api/lcglSp/logicDelete', params);
+}
diff --git a/src/components/BasicJsPicker/Picker.vue b/src/components/BasicJsPicker/Picker.vue
index 829af95..22a6721 100644
--- a/src/components/BasicJsPicker/Picker.vue
+++ b/src/components/BasicJsPicker/Picker.vue
@@ -1,12 +1,18 @@
-
-
+
+
+
+
+
+
+
{{ getShowSelectedName() }}
{{ placeholder }}
+
+
\ No newline at end of file
diff --git a/src/components/BasicSpCsMgr/index.vue b/src/components/BasicSpCsMgr/index.vue
new file mode 100644
index 0000000..29e65d1
--- /dev/null
+++ b/src/components/BasicSpCsMgr/index.vue
@@ -0,0 +1,477 @@
+
+
+
+
+
+
+
+
+
+ {{ spr.jsxm }}
+
+
+ 删除
+
+
+
+
+ 暂无审批人,请添加
+
+
+
+
+
+
+
+
+
+
+
+ {{ csr.jsxm }}
+
+
+ 删除
+
+
+
+
+ 暂无抄送人,请添加
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/components/JsPicker/index.vue b/src/pages/components/JsPicker/index.vue
deleted file mode 100644
index 3c6732d..0000000
--- a/src/pages/components/JsPicker/index.vue
+++ /dev/null
@@ -1,217 +0,0 @@
-
-
-
-
- {{ getShowSelectedName() }}
- 请选择老师
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/pages/view/hr/jsQj/components/jsQjDetail.vue b/src/pages/view/hr/jsQj/components/jsQjDetail.vue
index e8f165d..48ca4e5 100644
--- a/src/pages/view/hr/jsQj/components/jsQjDetail.vue
+++ b/src/pages/view/hr/jsQj/components/jsQjDetail.vue
@@ -81,7 +81,7 @@
-
+
diff --git a/src/pages/view/hr/jsQj/components/jsQjDkEdit.vue b/src/pages/view/hr/jsQj/components/jsQjDkEdit.vue
index 363d7d6..af71a4a 100644
--- a/src/pages/view/hr/jsQj/components/jsQjDkEdit.vue
+++ b/src/pages/view/hr/jsQj/components/jsQjDkEdit.vue
@@ -1,348 +1,143 @@
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
- 代课老师:
-
-
-
-
+
+
+
+
+ {{ item.jsxm }}
+ {{ item.kcmc }} - {{ item.kcsj }}
-
-
-
-
-
-
- 排课名称:
- {{ item.pkMc }}
-
-
- 代课老师:
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
- 排课名称:
- {{ item.pkMc }}
-
-
- 上课时间:
- {{ item.startTime }}-{{ item.endTime }}
-
-
- 代课老师:
-
-
-
- {{ item.dkJsName }}
-
-
-
-
-
- 暂无数据
+
\ No newline at end of file
diff --git a/src/pages/view/hr/jsQj/components/jsQjEdit.vue b/src/pages/view/hr/jsQj/components/jsQjEdit.vue
index 7496dce..56c9cdf 100644
--- a/src/pages/view/hr/jsQj/components/jsQjEdit.vue
+++ b/src/pages/view/hr/jsQj/components/jsQjEdit.vue
@@ -1,251 +1,233 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ 基本信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 代课信息
+
+
+
+
+
+
-
-
+
+
+
+ 审批信息
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/view/hr/jsQj/components/progressList.vue b/src/pages/view/hr/jsQj/components/progressList.vue
index 44f1682..fc9841a 100644
--- a/src/pages/view/hr/jsQj/components/progressList.vue
+++ b/src/pages/view/hr/jsQj/components/progressList.vue
@@ -1,63 +1,163 @@
-
- 请假流程进度
+ 审批进度
-
+
- {{ task.name }}
- {{ task.assignee || '' }}
+ {{ approver.userName }}
+ {{ getSpTypeText(approver.spType) }}
- {{ task.endTime }}
- 待处理
+ {{ formatTime(approver.approveTime) }}
+
+ {{ getStatusText(approver.approveStatus) }}
+
-
+
@@ -75,12 +175,6 @@ if (props.procInstId) {
color: #333;
margin-bottom: 10px;
- .title-icon {
- width: 24px;
- height: 24px;
- margin-right: 8px;
- }
-
.applicant-name {
font-size: 16px;
font-weight: bold;
@@ -99,51 +193,88 @@ if (props.procInstId) {
flex-direction: column;
.progress-item {
- .progress-item-row {
+ position: relative;
+
+ .progress-item-row {
display: flex;
align-items: center;
+ padding: 10px 0;
+
.item-avatar {
- flex: 0 0 40px;
+ width: 40px;
height: 40px;
+ border-radius: 50%;
+ overflow: hidden;
+ margin-right: 12px;
+ flex-shrink: 0;
}
.item-middle {
- margin-left: 16px;
+ flex: 1;
display: flex;
flex-direction: column;
+
+ .item-name {
+ font-size: 14px;
+ color: #333;
+ font-weight: 500;
+ margin-bottom: 4px;
+ }
+
+ .item-detail {
+ font-size: 12px;
+ color: #999;
+ }
}
.item-right {
- flex: 1 0 1px;
display: flex;
+ flex-direction: column;
align-items: flex-end;
+
+ .item-time {
+ font-size: 12px;
+ color: #999;
+ margin-bottom: 4px;
+ }
+
+ .item-status {
+ font-size: 12px;
+ padding: 2px 8px;
+ border-radius: 10px;
+
+ &.status-pending {
+ background-color: #fff7e6;
+ color: #fa8c16;
+ }
+
+ &.status-approved {
+ background-color: #f6ffed;
+ color: #52c41a;
+ }
+
+ &.status-rejected {
+ background-color: #fff2f0;
+ color: #ff4d4f;
+ }
+
+ &.status-cc {
+ background-color: #f0f5ff;
+ color: #1890ff;
+ }
+ }
}
}
+
.progress-item-line {
- width: 1px;
- height: 30px;
- background-color: #999;
- margin: 10px 20px;
+ height: 20px;
+ width: 2px;
+ background-color: #e8e8e8;
+ margin-left: 19px;
+ margin-top: -10px;
+ margin-bottom: -10px;
}
}
-
-
- .item-name {
- font-size: 16px;
- font-weight: bold;
- }
-
- .item-detail {
- font-size: 14px;
- color: #666;
- }
-
- .item-time,
- .item-status {
- font-size: 14px;
- color: #999;
- margin-left: auto;
- }
}
}
\ No newline at end of file
diff --git a/src/pages/view/hr/jsQj/cxTj.vue b/src/pages/view/hr/jsQj/cxTj.vue
index cb35369..bd145d0 100644
--- a/src/pages/view/hr/jsQj/cxTj.vue
+++ b/src/pages/view/hr/jsQj/cxTj.vue
@@ -1,81 +1,76 @@
-
-
-
+
+
+
+
+
+ 您的请假申请已被驳回,请修改后重新提交。
+
+
+
+
+
+
+
diff --git a/src/pages/view/hr/jsQj/dkQr.vue b/src/pages/view/hr/jsQj/dkQr.vue
index e9ce623..335f32e 100644
--- a/src/pages/view/hr/jsQj/dkQr.vue
+++ b/src/pages/view/hr/jsQj/dkQr.vue
@@ -1,321 +1,250 @@
-
-
-
+
-
+
-
-
-
- 排课名称:
- {{ item.pkName }}
-
-
- 上课时间:
- {{ item.startTime }}-{{ item.endTime }}
-
+
请假老师:
- {{ qjData.jsName }}
+ {{ qjData.jsName }}
+
+ 请假类型:
+ {{ qjData.qjlx }}
+
+
+ 请假时间:
+ {{ qjData.qjkstime }} 至 {{ qjData.qjjstime }}
+
+
+ 请假时长:
+ {{ qjData.qjsc }}
+
+
+ 请假事由:
+ {{ qjData.qjsy }}
+
+
+
+
+
+
+
+
+
+ 代课时间:
+ {{ dkData.dktime }}
+
+
+ 课程名称:
+ {{ dkData.kcmc }}
+
+
+ 班级:
+ {{ dkData.bjmc }}
+
+
+
+
+
+
+ 确认代课
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/pages/view/hr/jsQj/jwcQr.vue b/src/pages/view/hr/jsQj/jwcQr.vue
index d278949..217bbb3 100644
--- a/src/pages/view/hr/jsQj/jwcQr.vue
+++ b/src/pages/view/hr/jsQj/jwcQr.vue
@@ -3,10 +3,10 @@
-
-
-
-
@@ -52,9 +31,8 @@
text="驳回"
class="ml-15 mr-7"
:plain="true"
- @click="showBhDlg"
+ @click="showDlg"
/>
-
-
diff --git a/src/pages/view/hr/jsQj/jwcXt.vue b/src/pages/view/hr/jsQj/jwcXt.vue
index b057b22..677f829 100644
--- a/src/pages/view/hr/jsQj/jwcXt.vue
+++ b/src/pages/view/hr/jsQj/jwcXt.vue
@@ -1,194 +1,366 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ 请假类型:
+ {{ qjData.qjlx }}
+
+
+ 请假时间:
+ {{ qjData.qjkstime }} 至 {{ qjData.qjjstime }}
+
+
+ 请假时长:
+ {{ qjData.qjsc }}
+
+
+ 请假事由:
+ {{ qjData.qjsy }}
+
-
+
+
+
+
+
+
+
+
+
+
+ 代课教师:
+ {{ dk.jsName }}
+
+
+ 代课时间:
+ {{ dk.dktime }}
+
+
+ 课程名称:
+ {{ dk.kcmc }}
+
+
+ 班级:
+ {{ dk.bjmc }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/src/pages/view/hr/jsQj/sp.vue b/src/pages/view/hr/jsQj/sp.vue
index a9c130e..fdf48ee 100644
--- a/src/pages/view/hr/jsQj/sp.vue
+++ b/src/pages/view/hr/jsQj/sp.vue
@@ -1,40 +1,36 @@
-
-
-
-
+
-
-
diff --git a/src/pages/view/routine/jc/components/dm.vue b/src/pages/view/routine/jc/components/dm.vue
index 56f1f61..68d3cc3 100644
--- a/src/pages/view/routine/jc/components/dm.vue
+++ b/src/pages/view/routine/jc/components/dm.vue
@@ -15,7 +15,7 @@
陪餐教师
-
import { ref, computed } from 'vue'
import NjBjPicker from '@/pages/components/NjBjPicker/index.vue'
-import JsPicker from '@/pages/components/JsPicker/index.vue'
+import BasicJsPicker from '@/components/BasicJsPicker/Picker.vue'
import DmPsComponent from '@/pages/components/dmPs/index.vue'
import { getClassStudentDmDataApi, submitJcDmDataApi } from '@/api/base/jcApi'
import { imagUrl } from "@/utils";
diff --git a/src/pages/view/routine/qd/selectTeachers.vue b/src/pages/view/routine/qd/selectTeachers.vue
index 5172a94..b1e600a 100644
--- a/src/pages/view/routine/qd/selectTeachers.vue
+++ b/src/pages/view/routine/qd/selectTeachers.vue
@@ -987,12 +987,12 @@ const ensureTeacherDataCached = async () => {
if (!hasTeacherData) {
console.log('localStorage中没有教师数据,开始获取并缓存');
- // 导入并调用getAllJs方法
+ // 导入并调用getAllJsBasicInfoVo方法
const { useCommonStore } = await import('@/store/modules/common');
const commonStore = useCommonStore();
try {
- const result = await commonStore.getAllJs();
+ const result = await commonStore.getAllJsBasicInfoVo();
console.log('成功获取教师数据并写入缓存:', result);
} catch (error) {
console.error('获取教师数据失败:', error);
diff --git a/src/store/modules/common.ts b/src/store/modules/common.ts
index 1296ce2..8a50fc8 100644
--- a/src/store/modules/common.ts
+++ b/src/store/modules/common.ts
@@ -1,6 +1,7 @@
import {
bjFindByNjId,
jsFindAll,
+ jsFindAllBasicInfoVo,
njFindAll,
zwFindAllApi,
zwGetListByLxApi,
@@ -50,6 +51,20 @@ export const useCommonStore = defineStore({
}
return Promise.resolve(this.data.allJs);
},
+ // 所有教师基础信息(Vo版本)
+ async getAllJsBasicInfoVo(): Promise {
+ // if (!this.data.allJsBasicInfoVo) {
+ this.data.allJsBasicInfoVo = await jsFindAllBasicInfoVo();
+ // }
+ return Promise.resolve(this.data.allJsBasicInfoVo);
+ },
+ // 获取教师列表(Vo版本,用于审批人/抄送人选择)
+ async getJsList(): Promise {
+ if (!this.data.jsList) {
+ this.data.jsList = await jsFindAllBasicInfoVo();
+ }
+ return Promise.resolve(this.data.jsList);
+ },
// 所有职务
async getAllZw(): Promise {
if (!this.data.allZw) {