Browse Source

请假模块临时

plg 3 months ago
parent
commit
54799cb994
3 changed files with 139 additions and 18 deletions
  1. 84 12
      src/components/CpdmLeave.vue
  2. 53 4
      src/components/CpdmLeaveEdit.vue
  3. 2 2
      src/utils/http.ts

+ 84 - 12
src/components/CpdmLeave.vue

@@ -22,7 +22,24 @@ const type = ref<string>('1')
 const formSize = ref<ComponentSize>('default')
 const ruleFormRef = ref<any>()
 
-const ruleForm = reactive<any>({
+interface RuleForm {
+    leaveType: string
+    userPhone: string
+    monitorName: string
+    dormitory: string
+    destination: string
+    reason: string
+    isKnow: string
+    companionsPhone: string
+    motherPhone: string
+    fatherPhone: string
+    travelMode: string
+
+    startTime: string
+    endTime: string
+}
+
+const ruleForm = reactive<RuleForm>({
     //是否离郑
     leaveType: '0',
     //本人手机号
@@ -40,7 +57,7 @@ const ruleForm = reactive<any>({
     //同行人电话
     companionsPhone: '',
     //母亲电话
-    montherPhone: '',
+    motherPhone: '',
     //父亲电话
     fatherPhone: '',
     //出行方式
@@ -51,7 +68,7 @@ const ruleForm = reactive<any>({
     endTime: ''
 
 })
-const rules = reactive<FormRules<any>>({
+const rules = reactive<FormRules<RuleForm>>({
     leaveType: [
         { required: true, message: '请填写是否离郑', trigger: 'blur' },
     ],
@@ -94,9 +111,49 @@ const rules = reactive<FormRules<any>>({
     ],
     startTime: [
         { required: true, message: '请填写请假时间', trigger: 'change' },
+        {
+            validator: function (rule, value, callback) {
+                if (value !== '' && ruleForm.endTime !== '') {
+                    let startTime = new Date(value).getTime();
+                    let endTime = new Date(ruleForm.endTime).getTime()
+                    //先判断都不为空
+
+
+                    if (startTime >= endTime) {
+                        callback(new Error('请假时间应小于返校时间'))
+                    } else {
+                        callback()
+                    }
+                } else {
+                    callback()
+                }
+
+
+
+            }, trigger: 'change'
+        },
     ],
     endTime: [
         { required: true, message: '请填写返校时间', trigger: 'change' },
+        {
+            validator: function (rule, value, callback) {
+                if (value !== '' && ruleForm.startTime !== '') {
+                    let startTime = new Date(ruleForm.startTime).getTime();
+
+                    let endTime = new Date(value).getTime()
+                    if (endTime <= startTime) {
+                        callback(new Error('返校时间应大于请假时间'))
+                    } else {
+                        callback()
+                    }
+                } else {
+                    callback()
+                }
+                //
+
+
+            }, trigger: 'change'
+        },
     ],
 })
 //提交表单
@@ -113,6 +170,10 @@ const submitForm = async (formEl: FormInstance | undefined) => {
         if (valid) {
             console.log('submit!')
             //调用用户提交信息的代码
+            //判断返校时间是否大于请假时间
+            let leaveTime = new Date()
+
+
             subLeaveInfo()
         } else {
             buttonStatus.value = false
@@ -201,11 +262,17 @@ const resetData = (formEl: FormInstance | undefined) => {
 //是否离郑状态改变 
 const leaveStatus = (val: string) => {
     // resetData(ruleFormRef)
-
     if (val == '1') {
+        rules.monitorName = [
+            { required: true, message: '请填写班长姓名', trigger: 'blur' },
+        ]
+        rules.companionsPhone = [
+            { required: true, message: '请填写同行人电话', trigger: 'blur' },
+            { pattern: /^1[3456789]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' }
+        ]
         //这样回触发校验
-        rules.monitorName[0].required = true;
-        rules.companionsPhone[0].required = true
+        // rules!.monitorName[0].required = true;
+        // rules!.companionsPhone[0].required = true
     }
     ruleFormRef.value.clearValidate()
 }
@@ -261,9 +328,9 @@ const isKnowFormatter = (val: any) => {
 //格式审核状态状态
 const auditStatusFormatter = (val: any) => {
     if (val.auditStatus == '0') {
-        return '审批'
+        return '审批'
     } else {
-        return '审核结束'
+        return '已审批'
     }
 }
 
@@ -303,8 +370,7 @@ defineExpose({ open })
 
 <template>
 
-    <el-dialog v-model="leave_visible" :show-close="true" width="60%" height="1000px" top="5vh"
-        style="border-radius: 40px;  ">
+    <el-dialog v-model="leave_visible" :show-close="true" width="80%" top="5vh" style="border-radius: 40px;  ">
         <template #header="{ close, titleId, titleClass }">
             <div class="leave_title">请假</div>
             <el-radio-group v-model="type" size="large" @change="typeFun">
@@ -373,13 +439,14 @@ defineExpose({ open })
                 </el-form>
                 <div class="reset_sub">
                     <el-button @click="resetData(ruleFormRef)">重置</el-button>
-                    <el-button type="success" @click="submitForm(ruleFormRef)">提交</el-button>
+                    <el-button type="success" @click="submitForm(ruleFormRef)" :disabled="buttonStatus">提交</el-button>
                 </div>
                 <div class="leave_tip"> 温馨提示:(天气寒冷,晚上行人少,为保证大家安全,返校时间尽量在21:00之前)
                 </div>
             </div>
             <div v-show="type == '2'">
-                <el-table :data="tableData" style="width: 100%;height: 60vh;">
+                <el-table :data="tableData" style="width: 100%;height: 60vh;"
+                    :header-cell-style="{ background: '#F8F8F8', color: '#606266' }">
                     <el-table-column fixed prop="leaveType" label="是否离郑" width="" :formatter="leaveTypeFormatter" />
                     <el-table-column prop="userPhone" label="本人手机号码" width="" />
                     <el-table-column prop="monitorName" label="班长姓名" width="" />
@@ -419,6 +486,7 @@ defineExpose({ open })
 .leave {
     :deep(.el-form-item) {
         width: 50% !important;
+        margin-top: 10px;
     }
 
     :deep(.el-input__wrapper) {
@@ -455,5 +523,9 @@ defineExpose({ open })
 
 .leave_title {
     text-align: center;
+    color: #333333;
+    font-weight: 700;
+    font-size: 16px;
+    margin-bottom: 20px;
 }
 </style>

+ 53 - 4
src/components/CpdmLeaveEdit.vue

@@ -109,9 +109,44 @@ const rules = reactive<FormRules<any>>({
     ],
     startTime: [
         { required: true, message: '请填写请假时间', trigger: 'change' },
+        {
+            validator: function (rule, value, callback) {
+                if (value !== '' && ruleForm.endTime !== '') {
+                    let startTime = new Date(value).getTime();
+                    let endTime = new Date(ruleForm.endTime).getTime()
+                    //先判断都不为空
+
+
+                    if (startTime >= endTime) {
+                        callback(new Error('请假时间应小于返校时间'))
+                    } else {
+                        callback()
+                    }
+                } else {
+                    callback()
+                }
+            }, trigger: 'change'
+        },
+
     ],
     endTime: [
         { required: true, message: '请填写返校时间', trigger: 'change' },
+        {
+            validator: function (rule, value, callback) {
+                if (value !== '' && ruleForm.startTime !== '') {
+                    let startTime = new Date(ruleForm.startTime).getTime();
+
+                    let endTime = new Date(value).getTime()
+                    if (endTime <= startTime) {
+                        callback(new Error('返校时间应大于请假时间'))
+                    } else {
+                        callback()
+                    }
+                } else {
+                    callback()
+                }
+            }, trigger: 'change'
+        },
     ],
 })
 //提交表单
@@ -258,10 +293,18 @@ const resetData = (formEl: any) => {
 const leaveStatus = (val: string) => {
     // resetData(ruleFormRef)
 
+
     if (val == '1') {
+        rules.monitorName = [
+            { required: true, message: '请填写班长姓名', trigger: 'blur' },
+        ]
+        rules.companionsPhone = [
+            { required: true, message: '请填写同行人电话', trigger: 'blur' },
+            { pattern: /^1[3456789]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' }
+        ]
         //这样回触发校验
-        rules.monitorName[0].required = true;
-        rules.companionsPhone[0].required = true
+        // rules!.monitorName[0].required = true;
+        // rules!.companionsPhone[0].required = true
     }
     ruleFormRef.value.clearValidate()
 }
@@ -278,7 +321,7 @@ defineExpose({ open })
 
 <template>
 
-    <el-dialog v-model="leave_visible" :show-close="true" width="60%" height="1000px" top="5vh"
+    <el-dialog v-model="leave_visible" :show-close="true" width="80%" height="1000px" top="5vh"
         style="border-radius: 40px;  ">
         <template #header="{ close, titleId, titleClass }">
             <div class="leave_title">请假编辑</div>
@@ -344,7 +387,7 @@ defineExpose({ open })
                 </el-form>
                 <div class="reset_sub">
                     <el-button @click="resetData(ruleFormRef)">重置</el-button>
-                    <el-button type="success" @click="submitForm(ruleFormRef)">提交</el-button>
+                    <el-button type="success" @click="submitForm(ruleFormRef)" :disabled="buttonStatus">提交</el-button>
                 </div>
                 <div class="leave_tip"> 温馨提示:(天气寒冷,晚上行人少,为保证大家安全,返校时间尽量在21:00之前)
                 </div>
@@ -358,6 +401,7 @@ defineExpose({ open })
 .leave {
     :deep(.el-form-item) {
         width: 50% !important;
+        margin-top: 10px;
     }
 
     :deep(.el-input__wrapper) {
@@ -394,5 +438,10 @@ defineExpose({ open })
 
 .leave_title {
     text-align: center;
+    color: #333333;
+    font-weight: 700;
+    font-size: 16px;
+    margin-bottom: 20px;
+
 }
 </style>

+ 2 - 2
src/utils/http.ts

@@ -21,14 +21,14 @@ const menuStatus = menuStatusStore()
 //少锋本地wifi
 // const base_url = 'http://172.28.50.2:8089'
 //少锋本地
-const base_url = 'http://10.113.248.4:8089/'
+// const base_url = 'http://10.113.248.4:8089/'
 //30
 // const base_url = 'http://43.143.198.30:8089/'
 //红朵
 // const base_url = 'http://129.211.221.44:8089'
 
 //锦泓服务器
-// const base_url = 'http://146.56.226.174:8089'
+const base_url = 'http://146.56.226.174:8089'
 
 
 //设置axios 默认访问路径