Browse Source

pc端修改请假信息

plg 3 months ago
parent
commit
b5e1b9818f

+ 30 - 0
src/api/login.ts

@@ -10,6 +10,11 @@ const userLoginUrl = '/system/login'
 const homeUrl = ''
 const updatePasUrl = '/system/updatePassword'
 const getPositionUrl = '/param/findAllByType'
+
+const subLeaveUrl = '/leave/saveRecord'
+//请假列表
+const leaveRecordUrl = '/leave/findAllByCurrentUser'
+const updateLeaveUrl = '/leave/updateRecord'
 //首页API
 export const homeApi = (val: any) => {
     return http<any>(
@@ -66,4 +71,29 @@ export const getPositionApi = () => {
             url: `${getPositionUrl}?type=1`,
 
         })
+}
+//提交请假表单
+export const subLeaveApi = (val: any) => {
+    return http<any>({
+        method: 'post',
+        url: subLeaveUrl,
+        data: { ...val }
+    })
+}
+
+//修改请假表单
+export const updateLeaveApi = (val: any) => {
+    return http<any>({
+        method: 'post',
+        url: updateLeaveUrl,
+        data: { ...val }
+    })
+}
+
+//提交请假列表
+export const leaveRecordApi = (val: any) => {
+    return http<any>({
+        method: 'get',
+        url: `${leaveRecordUrl}?pageNum=${val.pageNum}&pageSize=${val.pageSize}`,
+    })
 }

+ 459 - 0
src/components/CpdmLeave.vue

@@ -0,0 +1,459 @@
+<script lang="ts" setup>
+import { ref, reactive, defineExpose } from 'vue'
+import { ElMessage, formatter, type ComponentSize, type FormInstance, type FormRules } from 'element-plus'
+import { leaveRecordApi, subLeaveApi } from '@/api/login';
+//格式化时间格式
+import { format } from 'date-fns/format';
+import CpdmLeaveEdit from './CpdmLeaveEdit.vue';
+const editFlag = ref<any>()
+
+const leave_visible = ref<boolean>(false)
+
+
+
+const open = () => {
+    leave_visible.value = true;
+}
+
+const type = ref<string>('1')
+
+//************表单数据******************/
+//设置表单大小
+const formSize = ref<ComponentSize>('default')
+const ruleFormRef = ref<any>()
+
+const ruleForm = reactive<any>({
+    //是否离郑
+    leaveType: '0',
+    //本人手机号
+    userPhone: '',
+    //班长姓名
+    monitorName: '',
+    //宿舍:
+    dormitory: '',
+    //出行方式
+    destination: '',
+    //请假原因
+    reason: '',
+    //父母是否知情
+    isKnow: '1',
+    //同行人电话
+    companionsPhone: '',
+    //母亲电话
+    montherPhone: '',
+    //父亲电话
+    fatherPhone: '',
+    //出行方式
+    travelMode: '',
+    //请假时间
+    startTime: '',
+    //返校时间
+    endTime: ''
+
+})
+const rules = reactive<FormRules<any>>({
+    leaveType: [
+        { required: true, message: '请填写是否离郑', trigger: 'blur' },
+    ],
+    userPhone: [
+        { required: true, message: '请填写手机号', trigger: 'blur' },
+        { pattern: /^1[3456789]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' }
+    ],
+
+    monitorName: [
+        { required: false, message: '请填写班长姓名', trigger: 'blur' },
+    ],
+    dormitory: [
+        { required: true, message: '请填写宿舍信息', trigger: 'blur' },
+    ],
+    destination: [
+        { required: true, message: '请填写出行目的', trigger: 'blur' },
+    ],
+    reason: [
+        { required: true, message: '请填写请假原因', trigger: 'blur' },
+    ],
+    isKnow: [
+        { required: true, message: '请填写父母是否知情', trigger: 'blur' },
+    ],
+
+    companionsPhone: [
+        { required: false, message: '请填写同行人电话', trigger: 'blur' },
+        { pattern: /^1[3456789]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' }
+    ],
+
+    motherPhone: [
+        { required: true, message: '请填写母亲电话', trigger: 'blur' },
+        { pattern: /^1[3456789]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' }
+    ],
+    fatherPhone: [
+        { required: true, message: '请填写父亲电话', trigger: 'blur' },
+        { pattern: /^1[3456789]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' }
+    ],
+    travelMode: [
+        { required: true, message: '请填写出行方式', trigger: 'blur' },
+    ],
+    startTime: [
+        { required: true, message: '请填写请假时间', trigger: 'change' },
+    ],
+    endTime: [
+        { required: true, message: '请填写返校时间', trigger: 'change' },
+    ],
+})
+//提交表单
+//按钮状态改变
+const buttonStatus = ref<boolean>(false)
+const submitForm = async (formEl: FormInstance | undefined) => {
+    buttonStatus.value = true
+    //设置单独校验的字段
+    if (!formEl) {
+        buttonStatus.value = false
+        return
+    }
+    await formEl.validate(async (valid, fields) => {
+        if (valid) {
+            console.log('submit!')
+            //调用用户提交信息的代码
+            subLeaveInfo()
+        } else {
+            buttonStatus.value = false
+            console.log('error submit!', fields)
+        }
+    })
+}
+
+//时间格式化
+
+
+
+//提交表单信息
+const subLeaveInfo = async () => {
+    //提交表单信息
+    //组装该用户需要提交的信息
+    let params = {}
+    //判断当前的状态是否离郑
+    //1是不离郑
+    if (ruleForm.leaveType == '0') {
+        params = {
+            userPhone: ruleForm.userPhone, //本人手机号
+            destination: ruleForm.destination,//出行目的地
+            dormitory: ruleForm.dormitory,//宿舍
+            endTime: format(ruleForm.endTime, 'yyyy-MM-dd HH:mm:ss'),//返校时间
+            fatherPhone: ruleForm.fatherPhone,//父亲手机号
+            isKnow: ruleForm.isKnow,//父母是否知情
+            leaveType: ruleForm.leaveType,//请假类型--离郑不离郑
+            // monitorName: ruleForm.monitorName,//班长名字
+            motherPhone: ruleForm.motherPhone,//母亲电话
+            reason: ruleForm.reason,//请假原因
+            startTime: format(ruleForm.startTime, 'yyyy-MM-dd HH:mm:ss'),//请假开始时间
+            travelMode: ruleForm.travelMode,//出行方式
+            // companionsPhone: ruleForm.companionsPhone, //同行人电话
+
+        }
+    } else {
+        params = {
+            userPhone: ruleForm.userPhone, //本人手机号
+            destination: ruleForm.destination,//出行目的地
+            dormitory: ruleForm.dormitory,//宿舍
+            endTime: format(ruleForm.endTime, 'yyyy-MM-dd HH:mm:ss'),//返校时间
+            fatherPhone: ruleForm.fatherPhone,//父亲手机号
+            isKnow: ruleForm.isKnow,//父母是否知情
+            leaveType: ruleForm.leaveType,//请假类型--离郑不离郑
+            monitorName: ruleForm.monitorName,//班长名字
+            motherPhone: ruleForm.motherPhone,//母亲电话
+            reason: ruleForm.reason,//请假原因
+            startTime: format(ruleForm.startTime, 'yyyy-MM-dd HH:mm:ss'),//请假开始时间
+            travelMode: ruleForm.travelMode,//出行方式
+            companionsPhone: ruleForm.companionsPhone, //同行人电话
+
+        }
+
+    }
+
+    let res: any = await subLeaveApi(params)
+    console.log(res)
+    //跳转测试记录
+    if (res.code == 200) {
+        //结束了
+        buttonStatus.value = false
+
+        ElMessage({
+            type: 'success',
+            message: '提交成功'
+        })
+        //跳转到请假记录
+        type.value = '2'
+        leaveRecord()
+        //开始查询请假记录的字段
+        //
+
+    } else {
+        buttonStatus.value = false
+
+    }
+}
+
+//清除表单的校验
+const resetData = (formEl: FormInstance | undefined) => {
+    if (!formEl) return
+    formEl.resetFields()
+
+}
+//是否离郑状态改变 
+const leaveStatus = (val: string) => {
+    // resetData(ruleFormRef)
+
+    if (val == '1') {
+        //这样回触发校验
+        rules.monitorName[0].required = true;
+        rules.companionsPhone[0].required = true
+    }
+    ruleFormRef.value.clearValidate()
+}
+
+//类型方法
+const typeFun = (val: string) => {
+    if (val == '1') {
+        //清空表单
+        ruleFormRef.value.clearValidate()
+        ruleFormRef.value.resetFields()
+    } else {
+        //查询记录列表
+        leaveRecord()
+    }
+}
+//请假记录列表
+let tableData = ref<any>([])
+//第几页
+const pageNum = ref<number>(1)
+//每页多少条
+const pageSize = ref<number>(10)
+
+//总条数
+const total = ref<number>(0)
+const leaveRecord = async () => {
+    //leaveRecordApi
+    let params = {
+        pageNum: pageNum.value,
+        pageSize: pageSize.value
+    }
+    let res: any = await leaveRecordApi(params)
+    tableData.value = res.data.content
+    total.value = res.data.totalElements
+}
+//格式化是否离郑
+
+const leaveTypeFormatter = (val: any) => {
+    if (val.leaveType == '0') {
+        return '不离郑'
+    } else {
+        return '离郑'
+    }
+}
+//格式化父母是否知情
+const isKnowFormatter = (val: any) => {
+    if (val.isKnow == '1') {
+        return '知情'
+    } else {
+        return '不知情'
+    }
+}
+
+//格式审核状态状态
+const auditStatusFormatter = (val: any) => {
+    if (val.auditStatus == '0') {
+        return '审批中'
+    } else {
+        return '审核结束'
+    }
+}
+
+//审核结果
+const auditResultFormatter = (val: any) => {
+    if (val.auditResult == null) {
+        return ''
+    } else {
+        if (val.auditResult == '0') {
+            return '驳回'
+        } else {
+            return '通过'
+        }
+    }
+
+}
+
+//分页显示
+const handleCurrentChange = (val: number) => {
+    pageNum.value = val
+    leaveRecord()
+}
+
+//需要重新编辑操作
+const editFun = (val: any) => {
+
+    editFlag.value.open(val)
+}
+const listFun = () => {
+    //刷新列表
+    leaveRecord()
+}
+defineExpose({ open })
+
+
+</script>
+
+<template>
+
+    <el-dialog v-model="leave_visible" :show-close="true" width="60%" height="1000px" 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">
+                <el-radio-button label="我要请假" value="1" />
+                <el-radio-button label="请假记录" value="2" />
+            </el-radio-group>
+            <div v-show="type == '1'" class="leave">
+                <el-form ref="ruleFormRef" style="display: flex;flex-wrap: wrap;" :model="ruleForm" :rules="rules"
+                    :validate-on-rule-change=false label-width="auto" class="demo-ruleForm" :size="formSize"
+                    status-icon>
+                    <el-form-item label="是否离郑" prop="leaveType">
+                        <el-radio-group v-model="ruleForm.leaveType" @change="leaveStatus">
+                            <el-radio value="0">不离郑</el-radio>
+                            <el-radio value="1">离郑</el-radio>
+                        </el-radio-group>
+                    </el-form-item>
+
+                    <el-form-item label="本人手机号码" prop="userPhone">
+                        <el-input v-model="ruleForm.userPhone" placeholder="请输入本人手机号码" />
+                    </el-form-item>
+
+                    <el-form-item label="班长姓名" prop="monitorName" v-if="ruleForm.leaveType == '1'">
+                        <el-input v-model="ruleForm.monitorName" placeholder="请输入班长姓名" />
+                    </el-form-item>
+
+                    <el-form-item label="宿舍" prop="dormitory">
+                        <el-input v-model="ruleForm.dormitory" placeholder="例如松15-XXX" />
+                    </el-form-item>
+                    <el-form-item label="请假原因" prop="reason">
+                        <el-input v-model="ruleForm.reason" type="textarea" placeholder="一定要写清楚,例如拔牙" />
+                    </el-form-item>
+                    <el-form-item label="出行目的地" prop="destination">
+                        <el-input v-model="ruleForm.destination" type="textarea"
+                            placeholder="一定要写清楚,例如郑州市中原区高新区郑州中心医院" />
+                    </el-form-item>
+
+                    <el-form-item label="父母是否知情" prop="isKnow">
+
+                        <el-radio-group v-model="ruleForm.isKnow">
+                            <el-radio value="1">知情</el-radio>
+                            <el-radio value="0">不知情</el-radio>
+                        </el-radio-group>
+                    </el-form-item>
+                    <el-form-item label="同行人电话" prop="companionsPhone" v-if="ruleForm.leaveType == '1'">
+                        <el-input v-model="ruleForm.companionsPhone" placeholder="请输入同行人电话" />
+                    </el-form-item>
+
+                    <el-form-item label="母亲电话" prop="motherPhone">
+                        <el-input v-model="ruleForm.motherPhone" placeholder="请输入母亲电话" />
+                    </el-form-item>
+                    <el-form-item label="父亲电话" prop="fatherPhone">
+                        <el-input v-model="ruleForm.fatherPhone" placeholder="请输入父亲电话" />
+                    </el-form-item>
+                    <el-form-item label="出行方式" prop="travelMode">
+                        <el-input v-model="ruleForm.travelMode" placeholder="请输入出行方式" />
+                    </el-form-item>
+                    <el-form-item label="请假时间" prop="startTime">
+                        <el-date-picker v-model="ruleForm.startTime" type="datetime" placeholder="请输入请假时间"
+                            style="width: 100%;" />
+                    </el-form-item>
+                    <el-form-item label="返校时间" prop="endTime">
+                        <el-date-picker v-model="ruleForm.endTime" type="datetime" placeholder="请输入返校时间"
+                            style="width: 100%;" />
+                    </el-form-item>
+
+                </el-form>
+                <div class="reset_sub">
+                    <el-button @click="resetData(ruleFormRef)">重置</el-button>
+                    <el-button type="success" @click="submitForm(ruleFormRef)">提交</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-column fixed prop="leaveType" label="是否离郑" width="" :formatter="leaveTypeFormatter" />
+                    <el-table-column prop="userPhone" label="本人手机号码" width="" />
+                    <el-table-column prop="monitorName" label="班长姓名" width="" />
+                    <el-table-column prop="dormitory" label="宿舍" width="" />
+                    <el-table-column prop="reason" label="请假原因" width="" />
+                    <el-table-column prop="destination" label="出行目的地" width="" />
+                    <el-table-column prop="isKnow" label="父母是否知情" width="" :formatter="isKnowFormatter" />
+                    <el-table-column prop="companionsPhone" label="同行人电话" width="" />
+                    <el-table-column prop="motherPhone" label="母亲电话" width="" />
+                    <el-table-column prop="fatherPhone" label="父亲电话" width="" />
+                    <el-table-column prop="travelMode" label="出行方式" width="" />
+                    <el-table-column prop="startTime" label="请假时间" width="" />
+                    <el-table-column prop="endTime" label="返校时间" width="" />
+                    <el-table-column fixed="right" prop="auditSuggest" label="审核建议" width="" />
+                    <el-table-column fixed="right" prop="auditStatus" label="审核状态" width=""
+                        :formatter="auditStatusFormatter" />
+                    <el-table-column fixed="right" prop="auditResult" label="审核结果" width=""
+                        :formatter="auditResultFormatter" />
+                    <el-table-column fixed="right" label="操作" min-width="">
+                        <template #default="scoped">
+
+                            <el-button v-show="scoped.row.auditResult == null" link type="primary" size="small"
+                                @click="editFun(scoped.row)">重新编辑</el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <el-pagination background v-model:current-page="pageNum" :page-size="pageSize"
+                    layout="total, prev, pager, next" :total="total" @current-change="handleCurrentChange" />
+            </div>
+        </template>
+        <CpdmLeaveEdit ref="editFlag" @search='listFun' />
+    </el-dialog>
+
+</template>
+
+<style lang="scss" scoped>
+.leave {
+    :deep(.el-form-item) {
+        width: 50% !important;
+    }
+
+    :deep(.el-input__wrapper) {
+        align-items: center;
+        background-color: #F7F7F7 !important;
+        border-radius: 40px !important;
+
+        // border: none;
+        // outline: none !important;
+        box-shadow: none;
+    }
+
+    :deep(.el-form-item__content) {
+        align-items: flex-start !important;
+    }
+}
+
+
+
+.reset_sub {
+    display: flex;
+    justify-content: space-around;
+}
+
+.leave_tip {
+    margin-top: 20px;
+    color: #5c5c5c;
+    text-align: center;
+    font-size: 12px;
+}
+
+
+
+
+.leave_title {
+    text-align: center;
+}
+</style>

+ 398 - 0
src/components/CpdmLeaveEdit.vue

@@ -0,0 +1,398 @@
+<script lang="ts" setup>
+import { ref, reactive, defineExpose, defineEmits } from 'vue'
+import { ElMessage, formatter, type ComponentSize, type FormInstance, type FormRules } from 'element-plus'
+import { leaveRecordApi, subLeaveApi, updateLeaveApi } from '@/api/login';
+//格式化时间格式
+import { format } from 'date-fns/format';
+const leave_visible = ref<boolean>(false)
+
+const emit = defineEmits(['search'])
+
+//返回的数据
+const detailData = ref<any>({})
+const open = (val: any) => {
+    detailData.value = val
+    leave_visible.value = true;
+    //回显数据
+    ruleForm.leaveType = val.leaveType
+    ruleForm.userPhone = val.userPhone
+    ruleForm.monitorName = val.monitorName
+    ruleForm.dormitory = val.dormitory
+    ruleForm.destination = val.destination
+    ruleForm.reason = val.reason
+    ruleForm.isKnow = val.isKnow
+    ruleForm.companionsPhone = val.companionsPhone
+    ruleForm.motherPhone = val.motherPhone
+    ruleForm.fatherPhone = val.fatherPhone
+    ruleForm.travelMode = val.travelMode
+    ruleForm.startTime = val.startTime
+    ruleForm.endTime = val.endTime
+    ruleFormRef.value.clearValidate()
+}
+
+const type = ref<string>('1')
+
+//************表单数据******************/
+//设置表单大小
+const formSize = ref<ComponentSize>('default')
+const ruleFormRef = ref<any>()
+
+const ruleForm = reactive<any>({
+    //是否离郑
+    leaveType: '0',
+    //本人手机号
+    userPhone: '',
+    //班长姓名
+    monitorName: '',
+    //宿舍:
+    dormitory: '',
+    //出行方式
+    destination: '',
+    //请假原因
+    reason: '',
+    //父母是否知情
+    isKnow: '1',
+    //同行人电话
+    companionsPhone: '',
+    //母亲电话
+    montherPhone: '',
+    //父亲电话
+    fatherPhone: '',
+    //出行方式
+    travelMode: '',
+    //请假时间
+    startTime: '',
+    //返校时间
+    endTime: ''
+
+})
+const rules = reactive<FormRules<any>>({
+    leaveType: [
+        { required: true, message: '请填写是否离郑', trigger: 'blur' },
+    ],
+    userPhone: [
+        { required: true, message: '请填写手机号', trigger: 'blur' },
+        { pattern: /^1[3456789]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' }
+    ],
+
+    monitorName: [
+        { required: false, message: '请填写班长姓名', trigger: 'blur' },
+    ],
+    dormitory: [
+        { required: true, message: '请填写宿舍信息', trigger: 'blur' },
+    ],
+    destination: [
+        { required: true, message: '请填写出行目的', trigger: 'blur' },
+    ],
+    reason: [
+        { required: true, message: '请填写请假原因', trigger: 'blur' },
+    ],
+    isKnow: [
+        { required: true, message: '请填写父母是否知情', trigger: 'blur' },
+    ],
+
+    companionsPhone: [
+        { required: false, message: '请填写同行人电话', trigger: 'blur' },
+        { pattern: /^1[3456789]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' }
+    ],
+
+    motherPhone: [
+        { required: true, message: '请填写母亲电话', trigger: 'blur' },
+        { pattern: /^1[3456789]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' }
+    ],
+    fatherPhone: [
+        { required: true, message: '请填写父亲电话', trigger: 'blur' },
+        { pattern: /^1[3456789]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' }
+    ],
+    travelMode: [
+        { required: true, message: '请填写出行方式', trigger: 'blur' },
+    ],
+    startTime: [
+        { required: true, message: '请填写请假时间', trigger: 'change' },
+    ],
+    endTime: [
+        { required: true, message: '请填写返校时间', trigger: 'change' },
+    ],
+})
+//提交表单
+//按钮状态改变
+const buttonStatus = ref<boolean>(false)
+const submitForm = async (formEl: FormInstance | undefined) => {
+    buttonStatus.value = true
+    //设置单独校验的字段
+    if (!formEl) {
+        buttonStatus.value = false
+        return
+    }
+    await formEl.validate(async (valid, fields) => {
+        if (valid) {
+            console.log('submit!')
+            //调用用户提交信息的代码
+            subLeaveInfo()
+        } else {
+            buttonStatus.value = false
+            console.log('error submit!', fields)
+        }
+    })
+}
+
+//时间格式化
+
+
+
+//提交表单信息
+const subLeaveInfo = async () => {
+    //提交表单信息
+    //组装该用户需要提交的信息
+    let params = {}
+    let tmpData = detailData.value
+    //判断当前的状态是否离郑
+    //1是不离郑
+    if (ruleForm.leaveType == '0') {
+        tmpData.userPhone = ruleForm.userPhone;
+        tmpData.destination = ruleForm.destination;
+        tmpData.dormitory = ruleForm.dormitory;
+        tmpData.endTime = format(ruleForm.endTime, 'yyyy-MM-dd HH:mm:ss');
+        tmpData.fatherPhone = ruleForm.fatherPhone;
+        tmpData.isKnow = ruleForm.isKnow
+        tmpData.leaveType = ruleForm.leaveType
+        tmpData.motherPhone = ruleForm.motherPhone
+        tmpData.reason = ruleForm.reason
+        tmpData.startTime = format(ruleForm.startTime, 'yyyy-MM-dd HH:mm:ss')
+        tmpData.travelMode = ruleForm.travelMode
+        params = {
+            ...tmpData
+            // userPhone: ruleForm.userPhone, //本人手机号
+            // destination: ruleForm.destination,//出行目的地
+            // dormitory: ruleForm.dormitory,//宿舍
+            // endTime: format(ruleForm.endTime, 'yyyy-MM-dd HH:mm:ss'),//返校时间
+            // fatherPhone: ruleForm.fatherPhone,//父亲手机号
+            // isKnow: ruleForm.isKnow,//父母是否知情
+            // leaveType: ruleForm.leaveType,//请假类型--离郑不离郑
+            // // monitorName: ruleForm.monitorName,//班长名字
+            // motherPhone: ruleForm.motherPhone,//母亲电话
+            // reason: ruleForm.reason,//请假原因
+            // startTime: format(ruleForm.startTime, 'yyyy-MM-dd HH:mm:ss'),//请假开始时间
+            // travelMode: ruleForm.travelMode,//出行方式
+            // companionsPhone: ruleForm.companionsPhone, //同行人电话
+
+        }
+    } else {
+        tmpData.userPhone = ruleForm.userPhone;
+        tmpData.destination = ruleForm.destination;
+        tmpData.dormitory = ruleForm.dormitory;
+        tmpData.endTime = format(ruleForm.endTime, 'yyyy-MM-dd HH:mm:ss');
+        tmpData.fatherPhone = ruleForm.fatherPhone;
+        tmpData.isKnow = ruleForm.isKnow
+        tmpData.leaveType = ruleForm.leaveType
+        tmpData.monitorName = ruleForm.monitorName
+        tmpData.motherPhone = ruleForm.motherPhone
+        tmpData.companionsPhone = ruleForm.companionsPhone
+        tmpData.reason = ruleForm.reason
+        tmpData.startTime = format(ruleForm.startTime, 'yyyy-MM-dd HH:mm:ss')
+        tmpData.travelMode = ruleForm.travelMode
+        params = {
+            ...tmpData
+            // userPhone: ruleForm.userPhone, //本人手机号
+            // destination: ruleForm.destination,//出行目的地
+            // dormitory: ruleForm.dormitory,//宿舍
+            // endTime: format(ruleForm.endTime, 'yyyy-MM-dd HH:mm:ss'),//返校时间
+            // fatherPhone: ruleForm.fatherPhone,//父亲手机号
+            // isKnow: ruleForm.isKnow,//父母是否知情
+            // leaveType: ruleForm.leaveType,//请假类型--离郑不离郑
+            // monitorName: ruleForm.monitorName,//班长名字
+            // motherPhone: ruleForm.motherPhone,//母亲电话
+            // reason: ruleForm.reason,//请假原因
+            // startTime: format(ruleForm.startTime, 'yyyy-MM-dd HH:mm:ss'),//请假开始时间
+            // travelMode: ruleForm.travelMode,//出行方式
+            // companionsPhone: ruleForm.companionsPhone, //同行人电话
+
+        }
+
+    }
+
+    let res: any = await updateLeaveApi(params)
+    console.log(res)
+    //跳转测试记录
+    if (res.code == 200) {
+        //结束了
+        buttonStatus.value = false
+
+        ElMessage({
+            type: 'success',
+            message: '修改成功'
+        })
+        //跳转到请假记录
+        //要关闭自己
+        leave_visible.value = false
+        emit('search')
+        //开始查询请假记录的字段
+        //
+
+    } else {
+        buttonStatus.value = false
+
+    }
+}
+
+//清除表单的校验
+const resetData = (formEl: any) => {
+    // if (!formEl) return
+    ruleForm.leaveType = ''
+    ruleForm.userPhone = ''
+    ruleForm.monitorName = ''
+    ruleForm.dormitory = ''
+    ruleForm.destination = ''
+    ruleForm.reason = ''
+    ruleForm.isKnow = ''
+    ruleForm.companionsPhone = ''
+    ruleForm.motherPhone = ''
+    ruleForm.fatherPhone = ''
+    ruleForm.travelMode = ''
+    ruleForm.startTime = ''
+    ruleForm.endTime = ''
+    formEl.clearValidate()
+
+}
+//是否离郑状态改变 
+const leaveStatus = (val: string) => {
+    // resetData(ruleFormRef)
+
+    if (val == '1') {
+        //这样回触发校验
+        rules.monitorName[0].required = true;
+        rules.companionsPhone[0].required = true
+    }
+    ruleFormRef.value.clearValidate()
+}
+
+
+
+
+
+
+defineExpose({ open })
+
+
+</script>
+
+<template>
+
+    <el-dialog v-model="leave_visible" :show-close="true" width="60%" height="1000px" top="5vh"
+        style="border-radius: 40px;  ">
+        <template #header="{ close, titleId, titleClass }">
+            <div class="leave_title">请假编辑</div>
+            <div v-show="type == '1'" class="leave">
+                <el-form ref="ruleFormRef" style="display: flex;flex-wrap: wrap;" :model="ruleForm" :rules="rules"
+                    :validate-on-rule-change=false label-width="auto" class="demo-ruleForm" :size="formSize"
+                    status-icon>
+                    <el-form-item label="是否离郑" prop="leaveType">
+                        <el-radio-group v-model="ruleForm.leaveType" @change="leaveStatus">
+                            <el-radio value="0">不离郑</el-radio>
+                            <el-radio value="1">离郑</el-radio>
+                        </el-radio-group>
+                    </el-form-item>
+
+                    <el-form-item label="本人手机号码" prop="userPhone">
+                        <el-input v-model="ruleForm.userPhone" placeholder="请输入本人手机号码" />
+                    </el-form-item>
+
+                    <el-form-item label="班长姓名" prop="monitorName" v-if="ruleForm.leaveType == '1'">
+                        <el-input v-model="ruleForm.monitorName" placeholder="请输入班长姓名" />
+                    </el-form-item>
+
+                    <el-form-item label="宿舍" prop="dormitory">
+                        <el-input v-model="ruleForm.dormitory" placeholder="例如松15-XXX" />
+                    </el-form-item>
+                    <el-form-item label="请假原因" prop="reason">
+                        <el-input v-model="ruleForm.reason" type="textarea" placeholder="一定要写清楚,例如拔牙" />
+                    </el-form-item>
+                    <el-form-item label="出行目的地" prop="destination">
+                        <el-input v-model="ruleForm.destination" type="textarea"
+                            placeholder="一定要写清楚,例如郑州市中原区高新区郑州中心医院" />
+                    </el-form-item>
+
+                    <el-form-item label="父母是否知情" prop="isKnow">
+
+                        <el-radio-group v-model="ruleForm.isKnow">
+                            <el-radio value="1">知情</el-radio>
+                            <el-radio value="0">不知情</el-radio>
+                        </el-radio-group>
+                    </el-form-item>
+                    <el-form-item label="同行人电话" prop="companionsPhone" v-if="ruleForm.leaveType == '1'">
+                        <el-input v-model="ruleForm.companionsPhone" placeholder="请输入同行人电话" />
+                    </el-form-item>
+
+                    <el-form-item label="母亲电话" prop="motherPhone">
+                        <el-input v-model="ruleForm.motherPhone" placeholder="请输入母亲电话" />
+                    </el-form-item>
+                    <el-form-item label="父亲电话" prop="fatherPhone">
+                        <el-input v-model="ruleForm.fatherPhone" placeholder="请输入父亲电话" />
+                    </el-form-item>
+                    <el-form-item label="出行方式" prop="travelMode">
+                        <el-input v-model="ruleForm.travelMode" placeholder="请输入出行方式" />
+                    </el-form-item>
+                    <el-form-item label="请假时间" prop="startTime">
+                        <el-date-picker v-model="ruleForm.startTime" type="datetime" placeholder="请输入请假时间"
+                            style="width: 100%;" />
+                    </el-form-item>
+                    <el-form-item label="返校时间" prop="endTime">
+                        <el-date-picker v-model="ruleForm.endTime" type="datetime" placeholder="请输入返校时间"
+                            style="width: 100%;" />
+                    </el-form-item>
+
+                </el-form>
+                <div class="reset_sub">
+                    <el-button @click="resetData(ruleFormRef)">重置</el-button>
+                    <el-button type="success" @click="submitForm(ruleFormRef)">提交</el-button>
+                </div>
+                <div class="leave_tip"> 温馨提示:(天气寒冷,晚上行人少,为保证大家安全,返校时间尽量在21:00之前)
+                </div>
+            </div>
+        </template>
+    </el-dialog>
+
+</template>
+
+<style lang="scss" scoped>
+.leave {
+    :deep(.el-form-item) {
+        width: 50% !important;
+    }
+
+    :deep(.el-input__wrapper) {
+        align-items: center;
+        background-color: #F7F7F7 !important;
+        border-radius: 40px !important;
+
+        // border: none;
+        // outline: none !important;
+        box-shadow: none;
+    }
+
+    :deep(.el-form-item__content) {
+        align-items: flex-start !important;
+    }
+}
+
+
+
+.reset_sub {
+    display: flex;
+    justify-content: space-around;
+}
+
+.leave_tip {
+    margin-top: 20px;
+    color: #5c5c5c;
+    text-align: center;
+    font-size: 12px;
+}
+
+
+
+
+.leave_title {
+    text-align: center;
+}
+</style>

+ 14 - 2
src/components/CpmdHeader.vue

@@ -4,6 +4,9 @@ import { useRouter } from 'vue-router'
 const router = useRouter()
 
 import { menuStatusStore, userInfoStore } from '@/stores';
+
+import CpdmLeave from '../components/CpdmLeave.vue'
+const leave = ref()
 // import url from '../assets/home/trademark.png';
 //选中的索引
 const userInfo = userInfoStore()
@@ -76,9 +79,14 @@ const formatterName = (val: string) => {
         return val
     }
 }
+//打开弹出框--显示弹出框
+const leaveFun = () => {
+    leave.value.open()
+}
 </script>
 
 <template>
+
     <!-- :style="{ backgroundColor: activeIndex == '1' ? '#ffffff' : '' }" -->
     <div class="header_qp" :style="{ backgroundColor: activeIndex == '1' ? '#ffffff' : '' }">
         <div class="header_p">
@@ -125,6 +133,9 @@ const formatterName = (val: string) => {
                         <div class="exit_login" @click="exitFun">
                             退出登录
                         </div>
+                        <div class="exit_login" @click="leaveFun">
+                            请假
+                        </div>
                     </div>
                 </transition>
 
@@ -154,7 +165,7 @@ const formatterName = (val: string) => {
             </el-dialog>
         </div>
     </div>
-
+    <CpdmLeave ref="leave" />
 </template>
 <style scoped>
 :deep(.dig_kg> .el-dialog__header) {
@@ -315,7 +326,8 @@ const formatterName = (val: string) => {
                 width: 80%;
                 position: absolute;
                 background-color: #ffffff;
-                bottom: -105px;
+                // bottom: -105px;
+                bottom: -145px;
                 margin-left: calc(10% - 20px);
                 z-index: 200;
                 color: #000000;

+ 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 默认访问路径

+ 3 - 3
src/views/UpdatePas.vue

@@ -173,7 +173,7 @@ const loginFun = async () => {
 
 </template>
 <style lang="scss" scoped>
-:deep(.el-input__wrapper) {
+:deep(.kply_inner .el-input__wrapper) {
     align-items: center;
     border-radius: 60px !important;
     border: 2px solid #B2F2D2 !important;
@@ -181,11 +181,11 @@ const loginFun = async () => {
 
 }
 
-:deep(.el-input__wrapper .is-fous) {
+:deep(.kply_inner .el-input__wrapper .is-fous) {
     box-shadow: none
 }
 
-:deep(.el-input__inner) {
+:deep(.kply_inner .el-input__inner) {
     height: 36px;
     font-size: 16px;
 }