Lou
2024-04-19 5b426c8bb73408fc358155882cbaebfeb803d6fa
更新
9 files modified
6 files deleted
987 ■■■■■ changed files
api/dataCenter/dbSafety/dbSafety.js 118 ●●●●● patch | view | raw | blame | history
api/dataCenter/rainWaterCondition/rainWaterCondition.js 124 ●●●●● patch | view | raw | blame | history
api/dataCenter/region/region.js 29 ●●●●● patch | view | raw | blame | history
api/dataCenter/reservoir/reservoir.js 189 ●●●●● patch | view | raw | blame | history
api/dataCenter/responsiblePerson/responsiblePerson.js 53 ●●●●● patch | view | raw | blame | history
api/hsyb/index.js 19 ●●●●● patch | view | raw | blame | history
common/setting.js 11 ●●●● patch | view | raw | blame | history
pages.json 26 ●●●● patch | view | raw | blame | history
pages/home/index.vue 23 ●●●● patch | view | raw | blame | history
subPackage/article/detail.vue 32 ●●●● patch | view | raw | blame | history
subPackage/article/signature.vue 8 ●●●● patch | view | raw | blame | history
subPackage/school/clockIn.vue 21 ●●●●● patch | view | raw | blame | history
subPackage/school/trouble.vue 265 ●●●●● patch | view | raw | blame | history
subPackage/workbench/views/cscj.vue 8 ●●●●● patch | view | raw | blame | history
subPackage/workbench/views/editCscj.vue 61 ●●●●● patch | view | raw | blame | history
api/dataCenter/dbSafety/dbSafety.js
File was deleted
api/dataCenter/rainWaterCondition/rainWaterCondition.js
File was deleted
api/dataCenter/region/region.js
File was deleted
api/dataCenter/reservoir/reservoir.js
File was deleted
api/dataCenter/responsiblePerson/responsiblePerson.js
File was deleted
api/hsyb/index.js
File was deleted
common/setting.js
@@ -10,20 +10,13 @@
    version: '2.0.0',
    // 开发环境接口Url
    // devUrl: 'http://z4042833u6.wicp.vip',
    // devUrl: 'http://192.168.2.111:9528',
    devUrl: 'https://srgdjczzxtpt.com:2080/api',
    devUrl: 'http://192.168.2.111:9528',
    // devUrl: 'https://srgdjczzxtpt.com:2080/api',
    // devUrl: 'https://kt39592615.goho.co',
    minioBaseUrl: "https://srgdjczzxtpt.com:2080/gminio/jczz/",
    // minioBaseUrl: "http://192.168.0.101:9528/",
    // 数据中台接口url
    dataCenterUrl: 'https://sk.hubeishuiyi.cn/services',
    //洪水预报接口url
    hsybUrl: "https://sk.hubeishuiyi.cn/hsybApi/api/fh-admin",
    // 线上环境接口Url
    prodUrl: 'https://srgdjczzxtpt.com:2080/api',
    // prodUrl: 'http://192.168.2.140:9528',
    // 后端数据的接收方式application/json;charset=UTF-8或者application/x-www-form-urlencoded;charset=UTF-8
    contentType: 'application/json;charset=UTF-8',
    // 后端返回状态码
pages.json
@@ -1232,14 +1232,26 @@
        {
            "root": "subPackage/school",
            "pages": [{
                "path": "clockIn",
                "style": {
                    "navigationBarTitleText": "护学打卡 ",
                    "navigationBarBackgroundColor": "#fff",
                    "navigationBarTextStyle": "black",
                    "enablePullDownRefresh": false
                    "path": "clockIn",
                    "style": {
                        "navigationBarTitleText": "护学打卡 ",
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black",
                        "enablePullDownRefresh": false
                    }
                },
                {
                    "path": "trouble",
                    "style": {
                        "navigationBarTitleText": "隐患排查",
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black",
                        "enablePullDownRefresh": false
                    }
                }
            }]
            ]
        }
    ],
    "globalStyle": {
pages/home/index.vue
@@ -216,6 +216,13 @@
                                        <text class="nav-item-text f-26  mt-10">场所任务</text>
                                    </view>
                                </u-grid-item>
                                <!-- <u-grid-item @click="navToSchoolClockIn()"
                                    v-if="curSelectSite.categoryList[0].parentNo == 1601">
                                    <view class="nav-item flex f-d-c a-i-c">
                                        <u-icon name="/static/icon/nav-29.png" width="80rpx" height="80rpx"></u-icon>
                                        <text class="nav-item-text f-26  mt-10">护学打卡</text>
                                    </view>
                                </u-grid-item> -->
                            </block>
                        </u-grid>
                    </view>
@@ -437,12 +444,8 @@
                                text: "居住证申请",
                                path: "/subPackage/reside/edit",
                                icon: "/static/icon/nav-13.png"
                            },
                            // {
                            //     text: "护学打卡",
                            //     path: "/subPackage/school/clockIn",
                            //     icon: "/static/icon/nav-13.png"
                            // }
                            }
                        ]
                    },
@@ -1336,6 +1339,14 @@
                    url: `/subPackage/workbench/views/auditSite?code=${houseCode}&from=index`
                })
            },
            //护学打卡跳转
            navToSchoolClockIn() {
                uni.navigateTo({
                    url: `/subPackage/school/clockIn`
                })
            },
            getRealTimeLocaltion() {
                this.getDeviceGPS() //获取本机GPS状态
                wx.startLocationUpdateBackground({
subPackage/article/detail.vue
@@ -63,9 +63,10 @@
                    </view>
                    <view class="explain-row ">
                        <text class="f-28 c-main" v-if="!isEnd && !isComplete">投票进行中</text>
                        <text class="f-28 c-main" v-if="!isEnd && !isComplete && isStart">投票进行中</text>
                        <text class="f-28 c-main" v-if="isComplete && !isEnd">投票已提交</text>
                        <text class="f-28 c-main" v-if="isEnd">投票已结束</text>
                        <text class="f-28 c-main" v-if="!isStart">投票未开始</text>
                        <text class="ml-20 f-26 " v-if="applyInfo.voteRestrictions == 1">(该议题为一户一票)</text>
                    </view>
@@ -93,7 +94,7 @@
                            <view class="" v-if="item.optionRange == 0">
                                <u-radio-group size="22" iconPlacement="right" activeColor="#017BFC" placement="column"
                                    v-model="item.selected" @change="selectOption($event,index)"
                                    :disabled="item.isSubmit || isEnd  || isComplete">
                                    :disabled="item.isSubmit || isEnd  || isComplete  || !isStart">
                                    <view class="mb-30" v-for="(i,k) in item.children">
                                        <u-radio :label="i.optionContent" :name="i.id"></u-radio>
                                        <view class="flex j-c-s-b a-i-c mt-10">
@@ -133,10 +134,11 @@
                                </u-checkbox-group>
                            </view>
                        </view>
                        <button class="apply-btn bgc-main c-ff" v-if="!isEnd  && !isComplete"
                        <button class="apply-btn bgc-main c-ff" v-if="!isEnd  && !isComplete  && isStart"
                            @click="submitVote()">提交</button>
                        <button class="apply-btn bgc-gray c-dd" v-if="isComplete && !isEnd">已提交</button>
                        <button class="apply-btn bgc-gray c-dd" v-if="isEnd">已结束</button>
                        <button class="apply-btn bgc-gray c-dd" v-if="!isStart">未开始</button>
                    </view>
                </view>
            </view>
@@ -244,7 +246,9 @@
                isShowPopup: false,
                validationCode: "",
                phone: "",
                text: "获取验证码"
                text: "获取验证码",
                isSendCode: false,
                isStart: false //投票是否开始
            }
        },
        onLoad(option) {
@@ -286,6 +290,18 @@
                    this.setOptionDisable() //时间结束,所有多项按钮禁用
                }
                return Number(endTimestamp) - Number(curTimestamp)
            },
            computeStartTime() {
                let curTimestamp = new Date().getTime();
                let startTimestamp = new Date(this.applyInfo.startTime).getTime();
                if (Number(curTimestamp) - Number(startTimestamp) >= 0) {
                    this.isStart = true;
                } else {
                    this.setOptionDisable()
                    this.isStart = false;
                    //时间没到,所有多项按钮禁用
                }
                // return Number(endTimestamp) - Number(curTimestamp)
            }
        },
@@ -632,8 +648,9 @@
                //     return false;
                // }
                // this.sendValidationCode();
                if (this.isSendCode) return;
                let second = 60;
                this.isSendCode = true;
                sendCode({
                    phone: uni.getStorageSync("userInfo").phone,
                }).then(res => {
@@ -641,11 +658,14 @@
                        let time = setInterval(() => {
                            second--
                            this.text = `${second}秒后获取`
                            if (second == 0 || this.data.isLogin) {
                            if (second == 0 || this.isLogin) {
                                clearInterval(time);
                                this.isSendCode = false
                                this.text = "获取验证码";
                            }
                        }, 1000)
                    } else {
                        this.isSendCode = false;
                    }
                })
            },
subPackage/article/signature.vue
@@ -70,7 +70,8 @@
                phone: "",
                text: "获取验证码",
                imgSrc: "",
                type: ""
                type: "",
                isSendCode: false
            }
        },
@@ -158,7 +159,9 @@
                //     return false;
                // }
                // this.sendValidationCode();
                if (this.isSendCode) return;
                let second = 60;
                this.isSendCode = true;
                sendCode({
                    phone: uni.getStorageSync("userInfo").phone,
                }).then(res => {
@@ -168,9 +171,12 @@
                            this.text = `${second}秒后获取`
                            if (second == 0 || this.data.isLogin) {
                                clearInterval(time);
                                this.isSendCode = false;
                                this.text = "获取验证码";
                            }
                        }, 1000)
                    } else {
                        this.isSendCode = false;
                    }
                })
            },
subPackage/school/clockIn.vue
@@ -3,20 +3,20 @@
        <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-form-item label="家长姓名" prop="name" borderBottom ref="name">
                    <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-form-item label="家长手机号" prop="phone" borderBottom ref="phone">
                    <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-form-item label="学生姓名" prop="realName" borderBottom ref="realName">
                    <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-form-item label="学生班级" prop="gradeAndClass" borderBottom ref="gradeAndClass">
                    <u-input v-model="info.gradeAndClass" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
                        inputAlign="right"></u-input>
                </u-form-item>
@@ -74,13 +74,10 @@
        data() {
            return {
                info: {
                    realName: "",
                    name: "",
                    phone: "",
                    remark: "",
                    type: -1,
                    address: "",
                    lat: "",
                    lng: ""
                    location: "",
                    gradeAndClass: ""
                },
                rules: {
                    'name': {
@@ -95,17 +92,13 @@
                            message: '请输入手机号',
                            trigger: ['blur', 'change']
                        },
                        {
                            validator: (rule, value, callback) => {
                                return uni.$u.test.mobile(value);
                            },
                            message: '手机号码不正确',
                            trigger: ['change', 'blur']
                        }
                    ],
                    'location': {
                        type: 'string',
subPackage/school/trouble.vue
@@ -1,8 +1,271 @@
<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="类型:" labelWidth="100" prop="type" :required="isRequired">
                    <u-radio-group v-model="info.type">
                        <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in statusList" :key="index"
                            :label="item.name" :name="item.id">
                        </u-radio>
                    </u-radio-group>
                </u-form-item>
                <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-item label="描述" prop="describe" borderBottom ref="describe" required>
                    <u-textarea v-model="info.describe" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
                        inputAlign="right"></u-textarea>
                </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: {
                    name: "",
                    phone: "",
                    location: "",
                    gradeAndClass: ""
                },
                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: {},
                statusList: [{
                        name: "隐患",
                        id: 1
                    },
                    {
                        name: "矛盾",
                        id: 2
                    }
                ],
            }
        },
        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>
<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
@@ -533,6 +533,14 @@
                        legalIdCard: "",
                        placeId: "",
                        studentNumber: "",
                        workersNumber: "",
                        securityNumoer: "",
                        gusrdNumber: "",
                        temporarySecurityNumber: "",
                        daystudentsNumber: "",
                        residentialStudentsNumber: "",
                        housemasterNumber: ""
                    }
                },
                rules: {
subPackage/workbench/views/editCscj.vue
@@ -218,7 +218,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">
@@ -440,6 +490,15 @@
                        legalIdCard: "",
                        placeId: "",
                        studentNumber: "",
                        workersNumber: "",
                        securityNumoer: "",
                        gusrdNumber: "",
                        temporarySecurityNumber: "",
                        daystudentsNumber: "",
                        residentialStudentsNumber: "",
                        housemasterNumber: ""
                    }
                },
                rules: {