Lou
2024-04-18 4e0403082a4e85be27e83a900f7cc301810c0bf0
更新
3 files modified
2 files added
395 ■■■■■ changed files
api/school/school.js 64 ●●●●● patch | view | raw | blame | history
pages.json 14 ●●●● patch | view | raw | blame | history
pages/home/index.vue 7 ●●●● patch | view | raw | blame | history
subPackage/school/clockIn.vue 254 ●●●●● patch | view | raw | blame | history
subPackage/workbench/views/cscj.vue 56 ●●●●● patch | view | raw | blame | history
api/school/school.js
New file
@@ -0,0 +1,64 @@
import http from '@/http/api.js'
//新增护学打卡
export const addClockIn = (data) => {
    return http.request({
        url: '/blade-nursingCheckIn/nursingCheckIn/save',
        method: 'POST',
        data: data
    })
}
//添加居住证申请
export const saveResideApply = (data) => {
    return http.request({
        url: '/blade-taskResidencePermitApply/taskResidencePermitApply/save',
        method: 'POST',
        data: data
    })
}
//编辑居住证申请
export const updateResideApply = (data) => {
    return http.request({
        url: '/blade-taskResidencePermitApply/taskResidencePermitApply/update',
        method: 'POST',
        data: data
    })
}
//获取居住证申请详情
export const getResideApplyDetail = (params) => {
    return http.request({
        url: '/blade-taskResidencePermitApply/taskResidencePermitApply/detail',
        method: 'get',
        params: {
            ...params
        }
    })
}
//审核居住证申请
export const auditResideApply = (data) => {
    return http.request({
        url: '/blade-taskResidencePermitApply/taskResidencePermitApply/auditing',
        method: 'POST',
        data: data
    })
}
//获取居住证申请提交记录列表
export const getResideApplyRecord = (params) => {
    return http.request({
        url: '/blade-taskResidencePermitApply/taskResidencePermitApply/list',
        method: 'get',
        params: {
            ...params
        }
    })
}
pages.json
@@ -1228,9 +1228,19 @@
                    "enablePullDownRefresh": false
                }
            }]
        },
        {
            "root": "subPackage/school",
            "pages": [{
                "path": "clockIn",
                "style": {
                    "navigationBarTitleText": "护学打卡 ",
                    "navigationBarBackgroundColor": "#fff",
                    "navigationBarTextStyle": "black",
                    "enablePullDownRefresh": false
                }
            }]
        }
    ],
    "globalStyle": {
        "navigationBarTextStyle": "black",
pages/home/index.vue
@@ -437,7 +437,12 @@
                                text: "居住证申请",
                                path: "/subPackage/reside/edit",
                                icon: "/static/icon/nav-13.png"
                            }
                            },
                            // {
                            //     text: "护学打卡",
                            //     path: "/subPackage/school/clockIn",
                            //     icon: "/static/icon/nav-13.png"
                            // }
                        ]
                    },
subPackage/school/clockIn.vue
New file
@@ -0,0 +1,254 @@
<template>
    <view class="">
        <view class="content bgc-ff">
            <u-form labelPosition="left" :model="info" :rules="rules" ref="form" labelWidth="90"
                :labelStyle="{fontSize:'28rpx'}">
                <u-form-item label="家长姓名" prop="name" borderBottom ref="name" required>
                    <u-input v-model="info.name" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
                        inputAlign="right"></u-input>
                </u-form-item>
                <u-form-item label="家长手机号" prop="phone" borderBottom ref="phone" required>
                    <u-input v-model="info.phone" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
                        inputAlign="right"></u-input>
                </u-form-item>
                <u-form-item label="学生姓名" prop="realName" borderBottom ref="realName" required>
                    <u-input v-model="info.realName" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
                        inputAlign="right"></u-input>
                </u-form-item>
                <u-form-item label="学生班级" prop="gradeAndClass" borderBottom ref="gradeAndClass" required>
                    <u-input v-model="info.gradeAndClass" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
                        inputAlign="right"></u-input>
                </u-form-item>
                <u-form-item label="位置" prop="location" :borderBottom="false" required>
                    <view class="address-row flex">
                        <view class="address-content f-28" v-if="info.location">
                            {{info.location}}
                        </view>
                        <view class="address-content f-28 c-99" v-if="!info.location">
                            请选择地址
                        </view>
                        <view class="location-btn c-main f-24" @click="getLocation()">
                            获取地址
                        </view>
                    </view>
                    <!-- <u-input v-model="info.address" border="none"  placeholderClass="f-28 c-99"
                        inputAlign="right"    disabled  disabledColor="#fff">
                        <template slot="suffix">
                            <button class="location-btn c-main f-24"   @click="getLocation()">获取地址</button>
                        </template>
                    </u-input> -->
                </u-form-item>
            </u-form>
        </view>
        <view class="upload bgc-ff">
            <view class="f-28 mb-20">照片</view>
            <!-- <u-textarea v-model="info.remark" placeholder="请输入内容" border="none"
                placeholderClass="c-99 f-26"></u-textarea> -->
            <view class="mt-20">
                <u-upload :fileList="form.images" :previewFullImage="uploadConfig.previewFullImage"
                    :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" :maxCount="uploadConfig.maxCount"
                    :capture="uploadConfig.capture" @afterRead="afterReadImg" @delete="deletePic">
                    <view class="upload-item upload-icon flex_base">
                        <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                    </view>
                </u-upload>
            </view>
        </view>
        <button class="submit-btn" @click="sumitInfo">提交</button>
        <!-- <button class="list-btn" @click="navigatorPage">我上报的事件</button> -->
    </view>
</template>
<script>
    import uploadMixin from "@/mixin/uploadMixin";
    import {
        addClockIn
    } from "@/api/school/school.js";
    export default {
        mixins: [uploadMixin],
        data() {
            return {
                info: {
                    realName: "",
                    phone: "",
                    remark: "",
                    type: -1,
                    address: "",
                    lat: "",
                    lng: ""
                },
                rules: {
                    'name': {
                        type: 'string',
                        required: true,
                        message: '请输入家长姓名',
                        trigger: ['blur', 'change']
                    },
                    'phone': [{
                            type: 'string',
                            required: true,
                            message: '请输入手机号',
                            trigger: ['blur', 'change']
                        },
                        {
                            validator: (rule, value, callback) => {
                                return uni.$u.test.mobile(value);
                            },
                            message: '手机号码不正确',
                            trigger: ['change', 'blur']
                        }
                    ],
                    'location': {
                        type: 'string',
                        required: true,
                        message: '请选择地址',
                        trigger: ['blur', 'change']
                    },
                },
                desc: "",
                title: "",
                curSelectSite: {}
            }
        },
        onLoad(option) {
            if (option.type) {
                this.info.type = option.type
            }
        },
        // onShow() {
        //     this.curSelectSite = uni.getStorageSync('siteInfo')
        //     this.info.addressCode = this.curSelectSite.houseCode
        // },
        methods: {
            getLocation() {
                uni.chooseLocation({
                    success: (res) => {
                        this.$set(this.info, "location", res.address);
                        // this.$set(this.info, "lat", res.latitude);
                        // this.$set(this.info, "lng", res.longitude)
                    }
                })
            },
            sumitInfo() {
                this.$refs.form.validate().then(valid => {
                    if (this.form.images.length > 0) {
                        let urls = []
                        this.form.images.forEach(e => {
                            urls.push(e.name)
                        })
                        this.info.images = urls.join(",")
                    }
                    addClockIn(this.info).then(res => {
                        this.$showTips("提交成功", "success")
                        setTimeout(() => {
                            uni.navigateBack()
                        }, 300)
                    })
                })
            },
            navigatorPage() {
                let url = "/subPackage/bs/views/repairList" + "?title=" + this.title + "&type=" + this.info.type
                this.$u.func.globalNavigator(url, "navTo")
            }
        }
    }
</script>
<style lang="less">
    page {
        background-color: #F5F5F5;
    }
    .content {
        margin: 20rpx 30rpx;
        padding: 0 30rpx;
    }
    .site-box {
        padding: 30rpx;
        margin: 20rpx 30rpx;
        border-radius: 4rpx;
        .c-aa {
            color: #aaa;
        }
        .address {
            width: 60%;
            margin-left: 25rpx;
        }
    }
    .upload-item {
        width: 140rpx;
        height: 140rpx;
        border: 1px solid #EEEEEE;
    }
    .upload {
        margin: 0 30rpx;
        padding: 30rpx;
    }
    .submit-btn {
        width: 690rpx;
        height: 78rpx;
        line-height: 78rpx;
        background: linear-gradient(163deg, #01BDFC 0%, #017BFC 100%);
        border-radius: 8rpx 8rpx 8rpx 8rpx;
        font-size: 32rpx;
        color: #fff;
        margin-top: 50rpx;
    }
    .list-btn {
        width: 690rpx;
        height: 78rpx;
        line-height: 78rpx;
        background: linear-gradient(163deg, #c7d7dc 0%, #c3cdd8 100%);
        border-radius: 8rpx 8rpx 8rpx 8rpx;
        font-size: 32rpx;
        color: #fff;
        margin-top: 50rpx;
    }
    .address-row {
        flex: 1;
        justify-content: flex-end;
        align-items: center;
    }
    .address-content {
        width: calc(100% - 116rpx - 20rpx);
        margin-right: 20rpx;
        text-align: right;
    }
    .location-btn {
        width: 116rpx;
        height: 46rpx;
        line-height: 46rpx;
        border-radius: 4rpx;
        border: 1px solid currentColor;
        padding: 0;
        background-color: #fff;
        text-align: center;
    }
</style>
subPackage/workbench/views/cscj.vue
@@ -222,8 +222,6 @@
                <view class="item">
                    <view class="flex j-c-s-b a-i-c">
                        <view class="box-title" style="width:50%;">
                            <box-title title="房东信息"></box-title>
@@ -236,8 +234,6 @@
                            </view>
                        </ocr-navigator>
                    </view>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="姓名:" prop="landlordName">
                        <u--input border="none" v-model="form.placeExtEntity.landlordName" placeholder="请输入">
@@ -262,7 +258,57 @@
                    </u-form-item>
                </view>
                <view class="item" v-if="false">
                    <view class="flex j-c-s-b a-i-c">
                        <view class="box-title" style="width:50%;">
                            <box-title title="学校信息"></box-title>
                        </view>
                    </view>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="学生人数:" prop="studentNumber">
                        <u--input border="none" type="number" v-model="form.placeExtEntity.studentNumber"
                            placeholder="请输入">
                        </u--input>
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="教职工人数:" prop="workersNumber">
                        <u--input border="none" type="number" v-model="form.placeExtEntity.workersNumber"
                            placeholder="请输入">
                        </u--input>
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="专职保安:" prop="securityNumoer">
                        <u--input border="none" type="number" v-model="form.placeExtEntity.securityNumoer"
                            placeholder="请输入">
                        </u--input>
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="专职门卫:" prop="gusrdNumber">
                        <u--input border="none" v-model="form.placeExtEntity.gusrdNumber" placeholder="请输入">
                        </u--input>
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="专兼职保卫人员:" prop="temporarySecurityNumber">
                        <u--input border="none" v-model="form.placeExtEntity.temporarySecurityNumber" placeholder="请输入">
                        </u--input>
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="走读/寄宿:" prop="daystudentsNumber">
                        <u--input border="none" v-model="form.placeExtEntity.daystudentsNumber" placeholder="请输入">
                        </u--input>
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="住校生人数:" prop="residentialStudentsNumber">
                        <u--input border="none" v-model="form.placeExtEntity.residentialStudentsNumber"
                            placeholder="请输入">
                        </u--input>
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="宿舍管理人员:" prop="housemasterNumber">
                        <u--input border="none" v-model="form.placeExtEntity.housemasterNumber" placeholder="请输入">
                        </u--input>
                    </u-form-item>
                </view>
                <view class="item pic" v-if="(currentId && form.images.length) || !currentId ">