瀏覽代碼

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	client_h5/src/router/index.ts
yewc 1 年之前
父節點
當前提交
5cf42c20b5

+ 2 - 1
client_h5/.env.dev

@@ -1,3 +1,4 @@
+# VITE_BASE_URL='https://oa.zjugis.com:28080'
 VITE_BASE_URL='http://10.10.10.7:18080'
 # VITE_BASE_URL='http://localhost:6090/'
 
@@ -5,4 +6,4 @@ VITE_BASE_URL='http://10.10.10.7:18080'
 # File上传路径
 VITE_FILE_BASE_URI='/admin-api/infra/file'
 
-# VITE_AUTHORIZATION='2c68e8c6fb7f43e59fc2fea5634f7a60'
+# VITE_AUTHORIZATION='fd30a57b78364448b9d13eb0719ac151'

+ 31 - 10
client_h5/src/pages/myLogs/Daily/index.vue

@@ -24,7 +24,12 @@
     <div class="title">接收人</div>
     <SelectUser v-model="formData.receiveUserIds" />
     <div class="blank-line"></div>
-    <div class="send-btn-group">
+    <div class="send-btn-group" v-if="formData.isUpdate">
+      <van-button type="primary" block @click="onSubmit(false)"
+        >更新</van-button
+      >
+    </div>
+    <div class="send-btn-group" v-else>
       <van-button type="success" block class="send-btn" @click="onSubmit(true)"
         >暂存</van-button
       >
@@ -39,7 +44,7 @@
  * @description 日志
  */
 import moment from "moment";
-import { reactive } from "vue";
+import { reactive, watch } from "vue";
 import { showSuccessToast, showToast } from "vant";
 import SelectUser from "@/components/UserSelect.vue";
 import ProjectList from "../components/ProjectList.vue";
@@ -59,6 +64,7 @@ interface FormData {
   reportMonth: string | number; // 月
   reportWeek: string | number; // 周
   reportDay: string | number; // 本周第几天
+  isUpdate?: boolean; // 是否是更新
 }
 
 // 页面数据
@@ -100,15 +106,27 @@ onMounted(async () => {
   await getIsWorkDays();
 });
 
-// 在退出前调用一下暂存
-onBeforeRouteLeave((ev: any) => {
-  // 如果是千万详情,则不做处理
-  if (ev.name == "LogsDetail") return;
-  // 如果日志内容不为空则触发暂存,否则直接退出
-  if (formData.reportContent?.length > 0) {
-    onSubmit(true, true);
+// 在退出前调用一下暂存(做好实时暂存后就不需要退出暂存了)
+// onBeforeRouteLeave((ev: any) => {
+//   // 如果是千万详情,则不做处理
+//   if (ev.name == "LogsDetail") return;
+//   // 如果日志内容不为空则触发暂存,否则直接退出
+//   if (formData.reportContent?.length > 0) {
+//     onSubmit(true, true);
+//   }
+// });
+
+// 在改动工作量的时候实时暂存
+watch(
+  () => formData.reportContent,
+  (newData, oldData) => {
+    // 如果是更新,则不进行实时暂存
+    if (formData.isUpdate) return;
+    if (newData?.length > 0 && oldData?.length > 0) {
+      onSubmit(true, true);
+    }
   }
-});
+);
 
 // 回填暂存数据
 const receiveData = (dailyDetail: any) => {
@@ -116,6 +134,9 @@ const receiveData = (dailyDetail: any) => {
   formData.reportYear = dailyDetail.reportYear;
   formData.reportMonth = dailyDetail.reportMonth;
   formData.reportWeek = dailyDetail.reportWeek;
+  if (dailyDetail.isUpdate) {
+    formData.isUpdate = dailyDetail.isUpdate;
+  }
   today.value = moment(dailyDetail.reportStartDate).format("YYYY-MM-DD");
   // 加个定时器回填接收人和工时
   const timer = setTimeout(() => {

+ 31 - 10
client_h5/src/pages/myLogs/Weekly/index.vue

@@ -30,7 +30,12 @@
     <div class="title">接收人</div>
     <SelectUser v-model="formData.receiveUserIds" />
     <div class="blank-line"></div>
-    <div class="send-btn-group">
+    <div class="send-btn-group" v-if="formData.isUpdate">
+      <van-button type="primary" block @click="onSubmit(false)"
+        >更新</van-button
+      >
+    </div>
+    <div class="send-btn-group" v-else>
       <van-button type="success" block class="send-btn" @click="onSubmit(true)"
         >暂存</van-button
       >
@@ -45,7 +50,7 @@
  * @description 周报
  */
 import moment from "moment";
-import { reactive } from "vue";
+import { reactive, watch } from "vue";
 import { showSuccessToast, showToast } from "vant";
 import SelectUser from "@/components/UserSelect.vue";
 import ProjectList from "../components/ProjectList.vue";
@@ -65,6 +70,7 @@ interface FormData {
   reportYear: string | number; // 年
   reportMonth: string | number; // 月
   reportWeek: string | number; // 周
+  isUpdate?: boolean; // 是否是更新
 }
 const defWeek = () => {
   if (moment().day() == 0) {
@@ -127,15 +133,27 @@ onMounted(async () => {
   formData.receiveUserIds = receiveUser;
 });
 
-// 在退出前调用一下暂存
-onBeforeRouteLeave((ev: any) => {
-  // 如果是千万详情,则不做处理
-  if (ev.name == "LogsDetail") return;
-  // 如果日志内容不为空则触发暂存,否则直接退出
-  if (formData.reportContent?.length > 0) {
-    onSubmit(true, true);
+// 在退出前调用一下暂存(做好实时暂存后就不需要退出暂存了)
+// onBeforeRouteLeave((ev: any) => {
+//   // 如果是前往详情,则不做处理
+//   if (ev.name == "LogsDetail") return;
+//   // 如果日志内容不为空则触发暂存,否则直接退出
+//   if (formData.reportContent?.length > 0) {
+//     onSubmit(true, true);
+//   }
+// });
+
+// 在改动工作量的时候实时暂存
+watch(
+  () => formData.reportContent,
+  (newData, oldData) => {
+    // 如果是更新,则不进行实时暂存
+    if (formData.isUpdate) return;
+    if (newData?.length > 0 && oldData?.length > 0) {
+      onSubmit(true, true);
+    }
   }
-});
+);
 
 // 回填暂存数据
 const receiveData = (weekDetail: any) => {
@@ -143,6 +161,9 @@ const receiveData = (weekDetail: any) => {
   formData.reportYear = weekDetail.reportYear;
   formData.reportMonth = weekDetail.reportMonth;
   formData.reportWeek = weekDetail.reportWeek;
+  if (weekDetail.isUpdate) {
+    formData.isUpdate = weekDetail.isUpdate;
+  }
   thisWeek.value = `${moment(weekDetail.reportStartDate).format(
     "YYYY/MM/DD"
   )} ~ ${moment(weekDetail.reportEndDate).format("YYYY/MM/DD")}`;

+ 27 - 1
client_h5/src/pages/myLogs/components/LogDetail.vue

@@ -95,6 +95,11 @@
         </template>
       </van-field>
     </div>
+    <van-floating-bubble
+      v-model:offset="offset"
+      icon="edit"
+      @click="goToEditPage"
+    />
   </div>
 </template>
 <script lang="ts" setup>
@@ -117,6 +122,9 @@ onMounted(() => {
   initCommentList();
 });
 
+// 编辑气泡的位置
+const offset = ref({ y: 100 });
+
 // 页面标题
 const pageTitle = ref({
   type: "daily", // daily | weekly
@@ -132,6 +140,9 @@ const formData = reactive<FormData>({
   receiveNames: [],
 });
 
+// 日志的详情(用于在回填时候进行编辑)
+const logDetail = ref<any>({});
+
 // 初始化日志数据
 const initData = async () => {
   const reportId: any = route.query?.id ?? "";
@@ -139,7 +150,7 @@ const initData = async () => {
     ? JSON.parse(route.query.detail as string)
     : null;
   const result = reportDetail ?? (await http.getLogDetail(reportId));
-
+  logDetail.value = result;
   formData.reportContent = result.reportContent ?? "";
   formData.workloadList = result.workload ?? [];
   formData.receiveNames = result.receiveNames ?? [];
@@ -260,6 +271,21 @@ const submitComment = async (content?: string) => {
     });
   }
 };
+// 跳转到编辑页面
+const { push } = useRouter();
+const goToEditPage = () => {
+  const goPath = logDetail.value.reportType == "weekly" ? "/weekly" : "/daily";
+  push({
+    path: goPath,
+    query: {
+      id: logDetail.value.id,
+      detail: JSON.stringify({
+        ...logDetail.value,
+        isUpdate: true,
+      }),
+    },
+  });
+};
 </script>
 <style lang="scss" scoped>
 @import "../page.scss";

+ 8 - 0
client_h5/src/pages/resign/index.vue

@@ -53,6 +53,13 @@
               placeholder="离职生效日期"
               readonly
           />
+          <van-field
+              v-model="formData.lzygszdText"
+              name="员工所在地"
+              label="员工所在地"
+              placeholder="员工所在地"
+              readonly
+          />
           <van-field
               v-model="formData.lzyyc"
               name="离职原因"
@@ -138,6 +145,7 @@ const initFormData = async () => {
   formData.value = result.data
 
   formData.value.drzwText = getDictLabel(DICT_TYPE.POST_TYPE, formData.value.drzw);
+  formData.value.lzygszdText = getDictLabel(DICT_TYPE.POST_TYPE, formData.value.lzygszd);
 
   formData.value.rgssjc = formatDate(formData.value.rgssj);
   formData.value.htdqsc = formatDate(formData.value.htdqs);

+ 0 - 2
client_h5/src/router/index.ts

@@ -15,8 +15,6 @@ const router = createRouter({
 
 // 路由加载前
 router.beforeEach((to, from, next) => {
-  next(); 
-  return;
   getUserInfoPromise(true).then((isLogin) => {
     next(); 
     if (!isLogin) {

+ 1 - 1
zjugis-business/src/main/java/com/zjugis/business/flow/resign/service/impl/ResignServiceImpl.java

@@ -139,7 +139,7 @@ public class ResignServiceImpl implements ResignService {
         }
 
         ResignApplyDO resignApplyDO = resignApplyService.findByUserId(aDo.getUserId());
-        if (resignApplyDO == null) {
+        if (resignApplyDO == null && aDo.getFlowStatus() != 90) {
             throw exception(RESIGN_APPLY_FIRST);
         }
 

+ 1 - 1
zjugis-business/src/main/resources/mapper/oracle/ContractInvoiceMapper.xml

@@ -178,7 +178,7 @@
     </select>
 
     <select id="excel" resultType="com.zjugis.business.bean.response.ContractInvoiceExcelResponse">
-        SELECT C.NAME as invoiceCompany,U.NICKNAME AS XSRY,D.NAME as ZRBM,T3.NAME as xmlb,A.FULL_NAME as xzqmc,T2.XMBH,T2.XMMC,T1.CONTRACT_NUMBER,T1.NAME,T.PAY_COMPANY,T.INVOICE_CONTENT,T.INVOICE_AMOUNT,(COALESCE(T.INVOICE_AMOUNT,0) - COALESCE(T5.returnAmount,0)) as unreturnAmount ,T.APPLY_WORKER_NAME,T.PAY_TAX_NUMBER,T.INVOICE_BZ,T.RECEIVE_BANKACCOUNT,T.ELE_INV_RECEIVE_PHONE,T.ELE_INV_RECEIVE_EMAIL,T.CUSTOMER_NAME
+        SELECT C.NAME as invoiceCompany,U.NICKNAME AS XSRY,D.NAME as ZRBM,T3.FULL_NAME as xmlb,A.FULL_NAME as xzqmc,T2.XMBH,T2.XMMC,T1.CONTRACT_NUMBER,T1.NAME,T.PAY_COMPANY,T.INVOICE_CONTENT,T.INVOICE_AMOUNT,(COALESCE(T.INVOICE_AMOUNT,0) - COALESCE(T5.returnAmount,0)) as unreturnAmount ,T.APPLY_WORKER_NAME,T.PAY_TAX_NUMBER,T.INVOICE_BZ,T.RECEIVE_BANKACCOUNT,T.ELE_INV_RECEIVE_PHONE,T.ELE_INV_RECEIVE_EMAIL,T.CUSTOMER_NAME
         FROM CONTRACT_INVOICE T
         LEFT JOIN CONTRACT T1 ON T1.ID=T.CONTRACT_ID
         LEFT JOIN PROJECT T2 ON T2.ID=T.PROJECT_ID

+ 2 - 0
zjugis-business/src/main/resources/templates/Resign/js/index.js

@@ -324,6 +324,8 @@
 
                 } else {
                     detailReadonly(i)
+                    $("#addDataUnfinished").css("display", "none");
+                    $("#addDataFinished").css("display", "none");
                 }
 
 

+ 8 - 1
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/service/staff/RecordsServiceImpl.java

@@ -145,7 +145,14 @@ public class RecordsServiceImpl implements RecordsService {
         //学校信息
         List<SchoolDetailDO> schoolList = schoolDetailDOMapper.selectList(new LambdaQueryWrapperX<SchoolDetailDO>().eq(SchoolDetailDO::getUserId, userId));
         if (CollectionUtil.isNotEmpty(schoolList)) {
-            vo.setSchoolList(schoolList);
+            List<SchoolDetailDO> schools = schoolList.stream().sorted(
+                    (o1, o2) -> {
+                        int b1 = Integer.parseInt(o1.getXl());
+                        int b2 = Integer.parseInt(o2.getXl());
+                        return Integer.compare(b1, b2);
+                    }
+            ).collect(Collectors.toList());
+            vo.setSchoolList(schools);
         }
 
         //工作经历