Lou
2024-01-09 e3fca5910be418aebbafd1f033940c6288ef81b4
新增报名签名功能,修复优化部分页面
18 files modified
1 files added
881 ■■■■ changed files
pages.json 11 ●●●●● patch | view | raw | blame | history
pages/home/index.vue 2 ●●● patch | view | raw | blame | history
subPackage/article/communityList.vue 18 ●●●●● patch | view | raw | blame | history
subPackage/article/detail.vue 50 ●●●● patch | view | raw | blame | history
subPackage/article/signUpList.vue 161 ●●●●● patch | view | raw | blame | history
subPackage/article/signature.vue 127 ●●●● patch | view | raw | blame | history
subPackage/bs/components/form/rentForm.vue 20 ●●●● patch | view | raw | blame | history
subPackage/bs/views/addRepair.vue 25 ●●●● patch | view | raw | blame | history
subPackage/house/member/index.vue 17 ●●●●● patch | view | raw | blame | history
subPackage/label/bail.vue 118 ●●●●● patch | view | raw | blame | history
subPackage/label/form.vue 43 ●●●●● patch | view | raw | blame | history
subPackage/label/hotel.vue 116 ●●●●● patch | view | raw | blame | history
subPackage/label/school.vue 55 ●●●●● patch | view | raw | blame | history
subPackage/workbench/views/bailReportDetail.vue 27 ●●●● patch | view | raw | blame | history
subPackage/workbench/views/cscj.vue 27 ●●●●● patch | view | raw | blame | history
subPackage/workbench/views/editExamine.vue 49 ●●●● patch | view | raw | blame | history
subPackage/workbench/views/report.vue 5 ●●●●● patch | view | raw | blame | history
subPackage/workbench/views/reportAudit.vue 8 ●●●●● patch | view | raw | blame | history
uni_modules/jushi-signature/components/jushi-signature/jushi-signature.vue 2 ●●● patch | view | raw | blame | history
pages.json
@@ -192,7 +192,16 @@
                {
                    "path": "communityList",
                    "style": {
                        "navigationBarTitleText": "",
                        "navigationBarTitleText": "选举调查",
                        "enablePullDownRefresh": false,
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black"
                    }
                },
                {
                    "path": "signUpList",
                    "style": {
                        "navigationBarTitleText": "公益报名",
                        "enablePullDownRefresh": false,
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black"
pages/home/index.vue
@@ -236,7 +236,7 @@
                    {
                        title: "公益报名",
                        icon: "/static/icon/nav-13.png",
                        path: "/subPackage/article/communityList?type=0"
                        path: "/subPackage/article/signUpList"
                    },
                    {
subPackage/article/communityList.vue
@@ -1,9 +1,9 @@
<template>
    <view class="">
        <!-- <view class="tab" v-if="tabList.length">
        <view class="tab" v-if="tabList.length">
            <u-tabs :list="tabList" :current="tabIndex" keyName="dictValue" @change="changeTab"
                :inactiveStyle="{color:'#999999'}" :activeStyle="{color:'#017BFC'}"></u-tabs>
        </view> -->
        </view>
        <z-paging ref="paging" v-model="list" @query="queryList" @onRefresh="refreshList"
            loading-more-no-more-text="没有更多了">
            <view class="list bgc-ff">
@@ -40,15 +40,10 @@
            this.eventType = option.type;
            if (option.type == 0) {
                this.type = 3
                uni.setNavigationBarTitle({
                    title: "公益报名"
                })
            } else {
                this.type = 4
                uni.setNavigationBarTitle({
                    title: "选举调查"
                })
            }
            this.getCateList()
            // this.getNoticeList()
        },
@@ -69,11 +64,12 @@
                this.list = [];
                this.currentPage = 1;
                // this.getNoticeList()
                this.refreshList();
            },
            getCateList() {
                getCategory({
                    parentId: '1722966265111248897',
                    parentId: '1740566650527752194',
                }).then(res => {
                    console.log(res)
                    let data = res.data;
@@ -82,8 +78,8 @@
                        dictValue: "全部"
                    })
                    this.tabList = data;
                    // this.tabId = data[0].dictKey;
                    this.getNoticeList()
                    this.tabId = data[0].dictKey;
                    // this.getNoticeList()
                })
            },
subPackage/article/detail.vue
@@ -318,20 +318,22 @@
            //报名
            handleApply() {
                if (this.computeEndTime > 0) {
                    communityModel.addApply({
                        publicDiscussId: this.pdId,
                        articleId: this.params.id,
                        houseCode: uni.getStorageSync("siteInfo").houseCode
                    }).then(res => {
                        if (res.code == 200) {
                            uni.showToast({
                                title: "操作成功"
                            })
                            this.getApplyList();
                            this.getApplyDetail()
                        }
                    uni.navigateTo({
                        url: "signature"
                    })
                    // communityModel.addApply({
                    //     publicDiscussId: this.pdId,
                    //     articleId: this.params.id,
                    //     houseCode: uni.getStorageSync("siteInfo").houseCode
                    // }).then(res => {
                    //     if (res.code == 200) {
                    //         uni.showToast({
                    //             title: "操作成功"
                    //         })
                    //         this.getApplyList();
                    //         this.getApplyDetail()
                    //     }
                    // })
                } else {
                    uni.showToast({
                        title: "报名已结束",
@@ -340,6 +342,28 @@
                }
            },
            applyRequest(signPath) {
                signature_path
                let data = {
                    publicDiscussId: this.pdId,
                    articleId: this.params.id,
                    houseCode: uni.getStorageSync("siteInfo").houseCode
                }
                if (signPath) {
                    data.signaturePath = signPath
                }
                communityModel.addApply(data).then(res => {
                    if (res.code == 200) {
                        uni.showToast({
                            title: "操作成功"
                        })
                        this.getApplyList();
                        this.getApplyDetail()
                    }
                })
            },
            selectOption(id, index) {
                let item = this.voteTopicList[index];
                item.selected = id;
subPackage/article/signUpList.vue
New file
@@ -0,0 +1,161 @@
<template>
    <view class="">
        <view class="tab" v-if="tabList.length">
            <u-tabs :list="tabList" :current="tabIndex" keyName="dictValue" @change="changeTab"
                :inactiveStyle="{color:'#999999'}" :activeStyle="{color:'#017BFC'}"></u-tabs>
        </view>
        <z-paging ref="paging" v-model="list" @query="queryList" @onRefresh="refreshList"
            loading-more-no-more-text="没有更多了">
            <view class="list bgc-ff">
                <notice-list :data="list" />
            </view>
        </z-paging>
        <!-- <u-loadmore :status="loadingStatus" loadmoreText="开始加载" loadingText="数据加载中" nomoreText="没有更多了" line /> -->
    </view>
</template>
<script>
    import {
        getPage,
        getCategory
    } from "@/api/article/article.js";
    import noticeList from "@/components/noticeList/noticeList.vue"
    export default {
        components: {
            noticeList
        },
        data() {
            return {
                tabList: [],
                tabId: "",
                tabIndex: 0,
                list: [],
                currentPage: 1,
                loadingStatus: 'nomore',
                eventType: "",
                type: '',
            }
        },
        onLoad(option) {
            this.eventType = option.type;
            if (option.type == 0) {
                this.type = 3
            } else {
                this.type = 4
            }
            // this.getCateList()
            // this.getNoticeList()
        },
        // onReachBottom() {
        //     this.currentPage++
        //     this.getPageList()
        // },
        methods: {
            refreshList() {
                this.$refs.paging.reload();
            },
            changeTab(e) {
                this.tabIndex = e.index;
                this.tabId = e.dictKey;
                this.list = [];
                this.currentPage = 1;
                // this.getNoticeList()
                this.refreshList();
            },
            getCateList() {
                getCategory({
                    parentId: '1740566650527752194',
                }).then(res => {
                    console.log(res)
                    let data = res.data;
                    data.unshift({
                        dictKey: "",
                        dictValue: "全部"
                    })
                    this.tabList = data;
                    this.tabId = data[0].dictKey;
                    // this.getNoticeList()
                })
            },
            queryList(pageNo, pageSize) {
                getPage({
                    current: pageNo,
                    size: pageSize,
                    articleType: this.tabId,
                    eventType: this.eventType,
                    type: this.type,
                    houseCode: uni.getStorageSync("siteInfo").houseCode
                }).then(res => {
                    this.$refs.paging.complete(res.data.records);
                })
            },
            async getNoticeList() {
                this.loadingStatus = 'loadingmore'
                const param = {
                    size: 10,
                    current: this.currentPage,
                    articleType: this.tabId,
                    eventType: this.eventType,
                    type: this.type,
                    houseCode: uni.getStorageSync("siteInfo").houseCode
                }
                const res = await getPage(param)
                const {
                    code,
                    data: {
                        records
                    }
                } = res
                if (code != 200) {
                    uni.showToast({
                        title: '数据请求失败',
                        icon: 'error'
                    })
                    return
                }
                this.list = [...this.list, ...records]
                this.loadingStatus = 'nomore'
            },
            navTo(id, type) {
                this.$u.func.globalNavigator(`detail?id=${id}&type=${type}`, "navTo")
            }
        }
    }
</script>
<style lang="scss">
    page {
        background-color: #f5f5f5;
    }
    .tab {
        width: 100%;
        height: 88rpx;
        position: fixed;
        /*#ifdef H5*/
        top: 88rpx;
        /*#endif*/
        /*#ifdef MP-WEIXIN*/
        top: 0;
        /*#endif*/
        left: 0;
        background-color: #fff;
        padding: 0 30rpx;
        box-sizing: border-box;
        z-index: 999;
    }
    .list {
        // margin-top: 108rpx;
        padding: 0 30rpx;
    }
</style>
subPackage/article/signature.vue
@@ -1,44 +1,99 @@
<template>
    <view>
        <jushi-signature :settings="settings" @change="signatureChange"></jushi-signature>
        <view class="" style="margin-top: 20rpx;">
            <text class="text">保存后的签名图片</text>
            <view class="preview">
                <image :src="imgUrl" mode="" style="width: 100%;"></image>
            </view>
        </view>
    </view>
    <view>
        <jushi-signature :settings="settings" @change="signatureChange"></jushi-signature>
        <!-- <view class="" style="margin-top: 20rpx;">
            <text class="text">保存后的签名图片</text>
            <view class="preview">
                <image :src="imgUrl" mode="" style="width: 100%;"></image>
            </view>
        </view> -->
    </view>
</template>
<script>
    export default {
        data() {
            return {
                settings:{ //签名设置
                    width: '750',//签名区域的宽
                    height: '500',//签名区域的高
                    lineWidth:3,//签名时线宽
                    textColor:'#007AFF' //签名文字颜色
                },
                imgUrl: ''
            }
        },
        methods: {
            signatureChange(e) {
                this.imgUrl = e
            }
        }
    }
    import {
        Base64
    } from '@/utils/base64.js';
    import {
        prodUrl,
        clientId,
        clientSecret,
        minioBaseUrl
    } from '@/common/setting'
    export default {
        data() {
            return {
                settings: { //签名设置
                    width: '750', //签名区域的宽
                    height: '1100', //签名区域的高
                    lineWidth: 3, //签名时线宽
                    textColor: '#007AFF' //签名文字颜色
                },
                imgUrl: '',
                header: {},
                uploadConfig: {
                    url: prodUrl + "/blade-resource/oss/endpoint/put-file",
                    header: {},
                },
            }
        },
        onLoad() {
            this.getHeader()
        },
        methods: {
            //获取头部
            getHeader() {
                let accessToken = uni.getStorageSync('accessToken');
                let myHeader = {}
                if (accessToken) {
                    myHeader['Blade-Auth'] = 'bearer ' + accessToken;
                }
                // 客户端认证参数
                myHeader['Authorization'] = 'Basic ' + Base64.encode(clientId + ':' + clientSecret);
                this.uploadConfig.header = myHeader
            },
            signatureChange(e) {
                this.imgUrl = e;
                this.uploadSignImg(e)
            },
            uploadSignImg(url) {
                uni.uploadFile({
                    url: this.uploadConfig.url,
                    filePath: url,
                    name: 'file',
                    header: this.uploadConfig.header,
                    success: (res) => {
                        let data = JSON.parse(res.data);
                        this.handleApply(data.data.name);
                    }
                })
            },
            async handleApply(src) {
                let pages = getCurrentPages();
                let prePage = pages[pages.length - 2];
                await prePage.$vm.applyRequest();
                uni.navigateBack({
                    delta: 2
                })
            }
        }
    }
</script>
<style>
    .preview{
        margin: 10rpx;
        border: 1rpx solid #aaaaaa;
        border-radius: 10rpx;
    }
    .text {
        margin: 20rpx;
        color: #aaaaaa;
    }
    .preview {
        margin: 10rpx;
        border: 1rpx solid #aaaaaa;
        border-radius: 10rpx;
    }
    .text {
        margin: 20rpx;
        color: #aaaaaa;
    }
</style>
subPackage/bs/components/form/rentForm.vue
@@ -4,10 +4,10 @@
            <u-input v-model="form.name" border="none" placeholder="姓名" />
        </u-form-item>
        <u-form-item class="form-item" label="联系方式" labelWidth="80">
            <u-input v-model="form.phoneNumber" border="none" placeholder="联系方式" />
            <u-input type="number" v-model="form.phoneNumber" border="none" placeholder="联系方式" />
        </u-form-item>
        <u-form-item class="form-item" label="身份证号码" required prop="idCard" labelWidth="80">
            <u-input v-model="form.idCard" border="none" placeholder="身份证号码" />
            <u-input type="idcard" v-model="form.idCard" border="none" placeholder="身份证号码" />
        </u-form-item>
        <u-form-item class="form-item" label="户籍地址" labelWidth="80">
            <u-input v-model="form.hukouRegistration" border="none" placeholder="选填" />
@@ -36,6 +36,19 @@
                        // 可以单个或者同时写两个触发验证方式 
                        trigger: ['change', 'blur'],
                    }],
                    "phoneNumber": [{
                            required: true,
                            message: '请输入联系方式',
                            trigger: ['change', 'blur'],
                        },
                        {
                            validator: (rule, value, callback) => {
                                return uni.$u.test.mobile(value);
                            },
                            message: '手机号码不正确',
                            trigger: ['change', 'blur']
                        }
                    ],
                    idCard: [{
                        required: true,
                        message: '请输入身份证号',
@@ -64,6 +77,5 @@
<style lang="scss" scoped>
    .form-box {
        background: #fff;
    }
    }
</style>
subPackage/bs/views/addRepair.vue
@@ -88,12 +88,24 @@
                        message: '请输入姓名',
                        trigger: ['blur', 'change']
                    },
                    'phone': {
                        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']
                        }
                    ],
                    'address': {
                        type: 'string',
                        required: true,
@@ -231,6 +243,7 @@
    .address-content {
        width: calc(100% - 116rpx - 20rpx);
        margin-right: 20rpx;
        text-align: right;
    }
    .location-btn {
subPackage/house/member/index.vue
@@ -334,12 +334,12 @@
                addOrUpdateTitle: "添加",
                houseCode: "",
                form: {
                    roleName: "",
                    relationName: '',
                    location: "",
                    title: "",
                    // roleName: "",
                    // relationName: '',
                    // location: "",
                    // title: "",
                    // roleType:null,
                    description: "",
                    // description: "",
                },
                rules: {
                    'selectDefaultName.relationship': {
@@ -501,7 +501,8 @@
        onLoad(option) {
            const data = JSON.parse(option.data)
            console.log("data==>", data)
            this.houseCode = data.houseCode
            this.houseCode = data.houseCode;
            this.getRegionList()
            this.type = data.type;
            if (data.id) {
@@ -525,7 +526,11 @@
            }
            if (option.from) {
                this.from = option.from;
                if (data.type == 1) {
                    this.houseCode = uni.getStorageSync("siteInfo").houseCode
                }
            }
            this.form.roleName = uni.getStorageSync("activeRole").roleName;
        },
        onShow() {
subPackage/label/bail.vue
@@ -4,19 +4,19 @@
        <u-form labelPosition="left" :model="info" :rules="rules" ref="form" labelWidth="100"
            :labelStyle="{fontSize:'28rpx'}">
            <view class="content">
                <u-form-item label="姓名" prop="checkUserName" borderBottom  required>
                    <u-input v-model="info.checkUserName"  border="none" placeholder="请输入" placeholderClass="f-28 c-99"
                <u-form-item label="姓名" prop="checkUserName" borderBottom required>
                    <u-input v-model="info.checkUserName" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
                        inputAlign="right"></u-input>
                </u-form-item>
                <u-form-item label="手机" prop="checkTelephone" borderBottom  required>
                <u-form-item label="手机" prop="checkTelephone" borderBottom required>
                    <u-input v-model="info.checkTelephone" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
                        inputAlign="right"></u-input>
                </u-form-item>
                <u-form-item label="申请事由" prop="applyName" borderBottom  required>
                <u-form-item label="申请事由" prop="applyName" borderBottom required>
                    <u-input v-model="info.applyName" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
                        inputAlign="right"></u-input>
                </u-form-item>
                <u-form-item label="申请时间" prop="applyTime" borderBottom  required @click="showSelectDate = true">
                <u-form-item label="申请时间" prop="applyTime" borderBottom required @click="showSelectDate = true">
                    <u-input v-model="info.applyTime" disabled disabledColor="#ffffff" border="none" placeholder="请输入"
                        placeholderClass="f-28 c-99" inputAlign="right"></u-input>
                    <u-icon slot="right" name="arrow-right"></u-icon>
@@ -32,14 +32,14 @@
                        <view class="address-content f-28" v-if="info.location">
                            {{info.location}}
                        </view>
                        <view class="address-content f-28"  style="color: #c0c4cc;"  v-if="!info.location">
                        <view class="address-content f-28" style="color: #c0c4cc;" v-if="!info.location">
                            请选择位置
                        </view>
                        <view class="location-btn c-main f-24"  @click="getLocation()">
                        <view class="location-btn c-main f-24" @click="getLocation()">
                            获取地址
                        </view>
                    </view>
                </u-form-item>
            </view>
@@ -59,8 +59,8 @@
        </u-form>
        <button class="submit-btn" @click="sumitInfo">提交</button>
        <button class="list-btn mb-20" @click="navigatorPage">我上报的事件</button>
         <u-datetime-picker ref="datetimePicker" :show="showSelectDate" v-model="applyTime" mode="datetime"
             :formatter="formatter" @confirm="confirmDate"  @cancel="showSelectDate = false"></u-datetime-picker>
        <u-datetime-picker ref="datetimePicker" :show="showSelectDate" v-model="applyTime" mode="datetime"
            :formatter="formatter" @confirm="confirmDate" @cancel="showSelectDate = false"></u-datetime-picker>
    </view>
</template>
@@ -73,33 +73,44 @@
        mixins: [uploadMixin],
        data() {
            return {
                form:{
                    images:[]
                form: {
                    images: []
                },
                info: {
                    checkUserName: "",
                    checkTelephone: "",
                    applyName:"",
                    applyTime:'' ,
                    location:"",
                    houseCode:"",
                    districtName:"",
                    checkUserId:"",
                    reportType:1
                    applyName: "",
                    applyTime: '',
                    location: "",
                    houseCode: "",
                    districtName: "",
                    checkUserId: "",
                    reportType: 1
                },
                rules: {
                    'checkName': {
                    'checkUserName': {
                        type: 'string',
                        required: true,
                        message: '请输入姓名',
                        trigger: ['blur', 'change']
                    },
                    'checkPhone': {
                        type: 'number',
                        required: true,
                        message: '请输入手机',
                        trigger: ['blur', 'change']
                    },
                    'checkTelephone': [{
                            type: 'number',
                            required: true,
                            message: '请输入手机',
                            trigger: ['blur', 'change']
                        },
                        {
                            validator: (rule, value, callback) => {
                                return uni.$u.test.mobile(value);
                            },
                            message: '手机号码不正确',
                            trigger: ['change', 'blur']
                        }
                    ],
                    'applyName': {
                        type: 'string',
                        required: true,
@@ -112,7 +123,7 @@
                        message: '请输入选择时间',
                        trigger: ['blur', 'change']
                    },
                    'location':{
                    'location': {
                        type: 'string',
                        required: true,
                        message: '请输入位置',
@@ -120,7 +131,7 @@
                    }
                },
                showSelectDate: false,
                applyTime:Number(new Date())
                applyTime: Number(new Date())
            }
        },
        onLoad(option) {
@@ -128,8 +139,8 @@
            let userInfo = uni.getStorageSync("userInfo");
            this.$set(this.info, "houseCode", siteInfo.houseCode);
            this.$set(this.info, "districtName", siteInfo.name);
            this.$set(this.info,"checkUserName",userInfo.real_name);
            this.$set(this.info,"checkTelephone",userInfo.phone);
            this.$set(this.info, "checkUserName", userInfo.real_name);
            this.$set(this.info, "checkTelephone", userInfo.phone);
            this.$set(this.info, "checkUserId", userInfo.user_id);
        },
@@ -139,15 +150,15 @@
        },
        methods: {
            getLocation(){
            getLocation() {
                uni.chooseLocation({
                    success:(res)=>{
                        this.$set(this.info,"location",res.address);
                    success: (res) => {
                        this.$set(this.info, "location", res.address);
                    }
                })
            },
            formatter(type, value) {
                if (type === 'year') {
@@ -166,19 +177,19 @@
                this.showSelectDate = false;
                this.info.applyTime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss')
            },
            checkImages() {
                if (this.form.images.length) {
                    this.$set(this.info,"locationImageUrls",this.setImages())
                    this.$set(this.info, "locationImageUrls", this.setImages())
                }
            },
            setImages(){
            setImages() {
                let urls = [];
                for(let i of this.form.images){
                for (let i of this.form.images) {
                    urls.push(i.name);
                }
                return urls.join(",")
                return urls.join(",")
            },
            sumitInfo() {
@@ -269,23 +280,26 @@
        color: #fff;
        margin-top: 50rpx;
    }
    .address-row{
        flex:1;
    .address-row {
        flex: 1;
        justify-content: flex-end;
        align-items:center;
        align-items: center;
    }
    .address-content{
        width:calc(100% - 116rpx - 20rpx);
        margin-right:20rpx;
    .address-content {
        width: calc(100% - 116rpx - 20rpx);
        margin-right: 20rpx;
        text-align: right;
    }
    .location-btn{
        width:116rpx;
        height:46rpx;
    .location-btn {
        width: 116rpx;
        height: 46rpx;
        line-height: 46rpx;
        border-radius: 4rpx;
        border:1px solid currentColor;
        padding:0;
        border: 1px solid currentColor;
        padding: 0;
        background-color: #fff;
        text-align: center;
    }
subPackage/label/form.vue
@@ -5,11 +5,11 @@
            :labelStyle="{fontSize:'28rpx'}">
            <view class="content">
                <u-form-item label="对象电话" prop="transactionObjectTel" borderBottom required>
                    <u-input v-model="info.transactionObjectTel" border="none" placeholder="请输入"
                    <u-input v-model="info.transactionObjectTel" type="number" border="none" placeholder="请输入"
                        placeholderClass="f-28 c-99" inputAlign="right"></u-input>
                </u-form-item>
                <u-form-item label="交易金额" prop="transactionMoney" borderBottom required>
                    <u-input v-model="info.transactionMoney" border="none" placeholder="请输入"
                    <u-input type="digit" v-model="info.transactionMoney" border="none" placeholder="请输入"
                        placeholderClass="f-28 c-99" inputAlign="right"></u-input>
                </u-form-item>
                <u-form-item label="物品数量" prop="goodsNums" borderBottom required>
@@ -56,7 +56,8 @@
                    <u-upload :fileList="goodsImageUrls" :previewFullImage="uploadConfig.previewFullImage"
                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                        @afterRead="afterReadImgs($event,'goodsImageUrls')" @delete="deletePics($event,'goodsImageUrls')">
                        @afterRead="afterReadImgs($event,'goodsImageUrls')"
                        @delete="deletePics($event,'goodsImageUrls')">
                        <view class="upload-item upload-icon flex_base">
                            <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                        </view>
@@ -92,15 +93,21 @@
                    userId: ""
                },
                rules: {
                    'transactionObjectTel': {
                        type: 'string',
                        required: true,
                        message: '请输入对象电话',
                        trigger: ['blur', 'change']
                    },
                    'transactionObjectTel': [{
                            type: 'number',
                            required: true,
                            message: '请输入对象电话',
                            trigger: ['blur', 'change']
                        },
                        {
                            validator: (rule, value, callback) => {
                                return uni.$u.test.mobile(value);
                            },
                            message: '手机号码不正确',
                            trigger: ['change', 'blur']
                        }
                    ],
                    'transactionMoney': {
                        type: 'string',
                        required: true,
                        message: '请输入交易金额',
                        trigger: ['blur', 'change']
@@ -132,18 +139,16 @@
                })
            }
            this.$set(this.info, "eventType", option.type);
            if(option.type == 1){
            if (option.type == 1) {
                this.$set(this.info, "reportType", 3);
            }else if(option.type == 2){
            } else if (option.type == 2) {
                this.$set(this.info, "reportType", 4);
            }else {
            } else {
                this.$set(this.info, "reportType", 5);
            }
            let siteInfo = uni.getStorageSync("siteInfo");
            let userInfo = uni.getStorageSync("userInfo");
            this.$set(this.info, "houseCode", siteInfo.houseCode);
subPackage/label/hotel.vue
@@ -4,7 +4,7 @@
        <u-form labelPosition="left" :model="info" :rules="rules" ref="form" labelWidth="100"
            :labelStyle="{fontSize:'28rpx'}">
            <view class="content">
                <u-form-item label="社区名称" prop="districtName" borderBottom >
                <u-form-item label="社区名称" prop="districtName" borderBottom>
                    <view class="content-name f-28">
                        {{info.districtName}}
                    </view>
@@ -16,32 +16,32 @@
                        inputAlign="right"></u-input>
                </u-form-item>
                <u-form-item label="自查时间" prop="checkTime" borderBottom required @click="showSelectDate = true">
                    <u-input v-model="info.checkTime" disabled disabledColor="#ffffff" border="none" placeholder="请输入"
                    <u-input v-model="info.checkTime" disabled disabledColor="#ffffff" border="none" placeholder="请选择"
                        placeholderClass="f-28 c-99" inputAlign="right"></u-input>
                    <u-icon slot="right" name="arrow-right"></u-icon>
                </u-form-item>
                <u-form-item label="自查人姓名" prop="phone" borderBottom required>
                <u-form-item label="自查人姓名" prop="checkUserName" borderBottom required>
                    <u-input v-model="info.checkUserName" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
                        inputAlign="right"></u-input>
                </u-form-item>
                <u-form-item label="自查人手机" prop="phone" borderBottom required>
                    <u-input v-model="info.checkTelephone" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
                        inputAlign="right"></u-input>
                <u-form-item label="自查人手机" prop="checkTelephone" borderBottom required>
                    <u-input type="number" v-model="info.checkTelephone" border="none" placeholder="请输入"
                        placeholderClass="f-28 c-99" inputAlign="right"></u-input>
                </u-form-item>
                <u-form-item label="自查位置" prop="location" borderBottom ref="location" required>
                    <!-- <u-input v-model="info.location" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
                        inputAlign="right"></u-input> -->
                        <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 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-form-item>
                <u-form-item label="灭火器数量" prop="fireNums" borderBottom>
                    <u-input type="number" v-model="info.fireNums" border="none" placeholder="请输入"
@@ -127,11 +127,12 @@
            </view>
            <view class="content">
                <u-form-item label="接待未成年人需要做到的五个必须" prop="fiveMust"  labelWidth="300" :borderBottom="false" required  labelPosition="top">
                <u-form-item label="接待未成年人需要做到的五个必须" prop="fiveMust" labelWidth="300" :borderBottom="false" required
                    labelPosition="top">
                    <view class="mt-30">
                        <u-radio-group v-model="info.fiveMust" placement="column">
                            <u-radio :customStyle="{marginBottom: '10px'}" v-for="(item, index) in mustList" :key="index"
                                :label="item.name" :name="item.value"  labelSize="14"  iconSize="20">
                            <u-radio :customStyle="{marginBottom: '10px'}" v-for="(item, index) in mustList"
                                :key="index" :label="item.name" :name="item.value" labelSize="14" iconSize="20">
                            </u-radio>
                        </u-radio-group>
                    </view>
@@ -198,7 +199,7 @@
                    realName: "",
                    houseCode: "",
                    checkUserId: "",
                    reportType:2
                    reportType: 2
                },
                rules: {
                    // 'districtName': {
@@ -219,18 +220,26 @@
                        message: '请选择自查时间',
                        trigger: ['blur', 'change']
                    },
                    'checkName': {
                    'checkUserName': {
                        type: 'string',
                        required: true,
                        message: '请输入自查人姓名',
                        trigger: ['blur', 'change']
                    },
                    'checkPhone': {
                        type: 'number',
                        required: true,
                        message: '请输入自查人手机',
                        trigger: ['blur', 'change']
                    },
                    'checkTelephone': [{
                            type: 'number',
                            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,
@@ -330,8 +339,8 @@
            let userInfo = uni.getStorageSync("userInfo");
            this.$set(this.info, "houseCode", siteInfo.houseCode);
            this.$set(this.info, "districtName", siteInfo.neiName || "");
            this.$set(this.info,"checkUserName",userInfo.real_name);
            this.$set(this.info,"checkTelephone",userInfo.phone);
            this.$set(this.info, "checkUserName", userInfo.real_name);
            this.$set(this.info, "checkTelephone", userInfo.phone);
            this.$set(this.info, "checkUserId", userInfo.user_id);
        },
@@ -341,15 +350,15 @@
        },
        methods: {
            getLocation(){
            getLocation() {
                uni.chooseLocation({
                    success:(res)=>{
                        this.$set(this.info,"location",res.address);
                    success: (res) => {
                        this.$set(this.info, "location", res.address);
                    }
                })
            },
            formatter(type, value) {
                if (type === 'year') {
                    return `${value}年`
@@ -427,7 +436,7 @@
            sumitInfo() {
                this.$refs.form.validate().then(valid => {
                    this.checkImages()
                    console.log("info=>",this.info);
                    console.log("info=>", this.info);
                    saveHotelReporting(this.info).then(res => {
                        uni.showToast({
                            icon: 'success',
@@ -459,8 +468,9 @@
        padding: 0 30rpx;
        background-color: #fff;
    }
    .content-name{
        flex:1;
    .content-name {
        flex: 1;
        text-align: right;
    }
@@ -516,32 +526,36 @@
        font-size: 32rpx;
        color: #fff;
        margin-top: 50rpx;
        margin-bottom:20rpx;
        margin-bottom: 20rpx;
    }
    .mb-20 {
        margin-bottom: 20rpx;
    }
    .mt-30{
        margin-top:30rpx;
    .mt-30 {
        margin-top: 30rpx;
    }
    .address-row{
        flex:1;
    .address-row {
        flex: 1;
        justify-content: flex-end;
        align-items:center;
        align-items: center;
    }
    .address-content{
        width:calc(100% - 116rpx - 20rpx);
        margin-right:20rpx;
    .address-content {
        width: calc(100% - 116rpx - 20rpx);
        margin-right: 20rpx;
        text-align: right;
    }
    .location-btn{
        width:116rpx;
        height:46rpx;
    .location-btn {
        width: 116rpx;
        height: 46rpx;
        line-height: 46rpx;
        border-radius: 4rpx;
        border:1px solid currentColor;
        padding:0;
        border: 1px solid currentColor;
        padding: 0;
        background-color: #fff;
        text-align: center;
    }
subPackage/label/school.vue
@@ -13,7 +13,7 @@
                        inputAlign="right"></u-input>
                </u-form-item>
                <u-form-item label="自查时间" prop="checkTime" borderBottom required @click="showSelectDate = true">
                    <u-input v-model="info.checkTime" disabled disabledColor="#ffffff" border="none" placeholder="请输入"
                    <u-input v-model="info.checkTime" disabled disabledColor="#ffffff" border="none" placeholder="请选择"
                        placeholderClass="f-28 c-99" inputAlign="right"></u-input>
                    <u-icon slot="right" name="arrow-right"></u-icon>
                </u-form-item>
@@ -22,8 +22,8 @@
                        inputAlign="right"></u-input>
                </u-form-item>
                <u-form-item label="自查人手机" prop="checkTelephone" borderBottom required>
                    <u-input v-model="info.checkTelephone" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
                        inputAlign="right"></u-input>
                    <u-input type="number" v-model="info.checkTelephone" border="none" placeholder="请输入"
                        placeholderClass="f-28 c-99" inputAlign="right"></u-input>
                </u-form-item>
                <u-form-item label="自查位置" prop="location" borderBottom ref="location" required>
                    <view class="address-row flex">
@@ -84,7 +84,8 @@
                    <u-upload :fileList="fireFacsImageUrls" :previewFullImage="uploadConfig.previewFullImage"
                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                        @afterRead="afterReadImgs($event,'fireFacsImageUrls')" @delete="deletePics($event,'fireFacsImageUrls')">
                        @afterRead="afterReadImgs($event,'fireFacsImageUrls')"
                        @delete="deletePics($event,'fireFacsImageUrls')">
                        <view class="upload-item upload-icon flex_base">
                            <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                        </view>
@@ -120,7 +121,8 @@
                    <u-upload :fileList="patrolImageUrls" :previewFullImage="uploadConfig.previewFullImage"
                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                        @afterRead="afterReadImgs($event,'patrolImageUrls')" @delete="deletePics($event,'patrolImageUrls')">
                        @afterRead="afterReadImgs($event,'patrolImageUrls')"
                        @delete="deletePics($event,'patrolImageUrls')">
                        <view class="upload-item upload-icon flex_base">
                            <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                        </view>
@@ -138,13 +140,14 @@
                </u-form-item>
            </view>
            <view class="upload bgc-ff mb-20"  v-if="info.antiCollision == '有'">
            <view class="upload bgc-ff mb-20" v-if="info.antiCollision == '有'">
                <view class="f-28 mb-20">校园防撞装置照片</view>
                <view class="mt-20">
                    <u-upload :fileList="antiCollisionImageUrls" :previewFullImage="uploadConfig.previewFullImage"
                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                        @afterRead="afterReadImgs($event,'antiCollisionImageUrls')" @delete="deletePics($event,'antiCollisionImageUrls')">
                        @afterRead="afterReadImgs($event,'antiCollisionImageUrls')"
                        @delete="deletePics($event,'antiCollisionImageUrls')">
                        <view class="upload-item upload-icon flex_base">
                            <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                        </view>
@@ -157,7 +160,7 @@
                    <u-input type="number" v-model="info.fullSoNums" border="none" placeholder="请输入"
                        placeholderClass="f-28 c-99" inputAlign="right"></u-input>
                </u-form-item>
                <u-form-item label="兼职保安人数" prop="partSoNums" borderBottom required >
                <u-form-item label="兼职保安人数" prop="partSoNums" borderBottom required>
                    <u-input type="number" v-model="info.partSoNums" border="none" placeholder="请输入"
                        placeholderClass="f-28 c-99" inputAlign="right"></u-input>
                </u-form-item>
@@ -230,7 +233,7 @@
                    highAltitudeMonitor: '',
                    houseCode: "",
                    checkUserId: "",
                    reportType:6
                    reportType: 6
                },
                rules: {
                    // 'districtName': {
@@ -251,18 +254,28 @@
                        message: '请选择自查时间',
                        trigger: ['blur', 'change']
                    },
                    'checkName': {
                    'checkUserName': {
                        type: 'string',
                        required: true,
                        message: '请输入自查人姓名',
                        trigger: ['blur', 'change']
                    },
                    'checkTelephone': {
                        type: 'number',
                        required: true,
                        message: '请输入自查人手机',
                        trigger: ['blur', 'change']
                    },
                    'checkTelephone': [{
                            type: 'number',
                            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,
@@ -383,15 +396,15 @@
        },
        methods: {
            getLocation(){
            getLocation() {
                uni.chooseLocation({
                    success:(res)=>{
                        this.$set(this.info,"location",res.address);
                    success: (res) => {
                        this.$set(this.info, "location", res.address);
                    }
                })
            },
            formatter(type, value) {
                if (type === 'year') {
                    return `${value}年`
subPackage/workbench/views/bailReportDetail.vue
@@ -22,7 +22,7 @@
                <u-form-item label="审核结果" prop="confirmFlag" borderBottom>
                    <u-input v-model="confirmFlag" disabled disabledColor="#ffffff" border="none" placeholder="请输入"
                        placeholderClass="f-28 c-99" inputAlign="right"></u-input>
                    <u-icon slot="right" name="arrow-right"></u-icon>
                    <!-- <u-icon slot="right" name="arrow-right"></u-icon> -->
                </u-form-item>
                <u-form-item label="备注" borderBottom v-if="info.confirmNotion">
                    <u--input type="textarea" v-model="info.confirmNotion" :disabled="true" disabledColor="#ffffff"
@@ -41,7 +41,7 @@
            </u-form>
        </view>
        <view v-if="status == 2 && roleType  == 2">
        <view v-if="status == 2">
            <u-subsection :list="tabList" :current="tabIndex" button-color="#017BFC" @change="changeTab"></u-subsection>
            <u-form labelPosition="left" :model="goOutInfo" ref="form" labelWidth="100"
                :labelStyle="{fontSize:'28rpx'}">
@@ -269,7 +269,7 @@
            },
            showPickerDate() {
                if (this.roleType == 2 && this.status != 1) return;
                if (this.roleType == 1 && this.status != 1) return;
                this.showSelectDate = true;
            },
            cancelPickerDate() {
@@ -353,12 +353,17 @@
                        this.info.confirmFlag = data.confirmFlag;
                        this.info.confirmUserName = data.confirmUserName;
                        this.info.confirmUserTelephone = data.confirmUserTelephone;
                        for (let i in this.goOutInfo) {
                            this.goOutInfo[i] = data[i];
                        }
                        this.startImageUrls = this.$setImageUrl(data.startImageUrls, 2);
                        this.reachImageUrls = this.$setImageUrl(data.reachImageUrls, 2);
                        this.returnImageUrls = this.$setImageUrl(data.returnImageUrls, 2);
                    }
                    this.basicData.forEach(item => {
                        item.value = data[item.name]
                    })
                    this.locationImageUrls = this.$setImageUrl(data.locationImageUrls);
                })
            },
@@ -397,6 +402,20 @@
            submit(val) {
                if (this.roleType == 1) {
                    if (!this.info.confirmUserName) {
                        uni.showToast({
                            title: "请输入审核人员姓名",
                            icon: "none"
                        })
                        return
                    }
                    if (!this.info.confirmUserTelephone) {
                        uni.showToast({
                            title: "请输入审核人员手机号",
                            icon: "none"
                        })
                        return;
                    }
                    this.info.confirmFlag = val.type;
                    this.info.confirmNotion = val.remark;
                    this.submitRequest(this.info);
subPackage/workbench/views/cscj.vue
@@ -82,7 +82,7 @@
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="手机号:" prop="principalPhone">
                        <u--input border="none" v-model="form.principalPhone" placeholder="请输入">
                        <u--input border="none" type="number" v-model="form.principalPhone" placeholder="请输入">
                        </u--input>
                    </u-form-item>
                </view>
@@ -91,10 +91,6 @@
                    <view class="box-title">
                        <box-title title="场所照片"></box-title>
                    </view>
                    <u-upload :fileList="form.images" :previewFullImage="uploadConfig.previewFullImage"
                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
@@ -262,12 +258,21 @@
                        message: '请输入场所负责人',
                        trigger: ['blur', 'change'],
                    },
                    'phone': {
                        type: 'string',
                        required: true,
                        message: '请输入手机号',
                        trigger: ['blur', 'change'],
                    },
                    'principalPhone': [{
                            required: false,
                            message: '请输入手机号',
                            trigger: ['blur', 'change'],
                        },
                        {
                            validator: (rule, value, callback) => {
                                return uni.$u.test.mobile(value);
                            },
                            message: '手机号码不正确',
                            trigger: ['change', 'blur']
                        }
                    ],
                },
                labelList: [{
subPackage/workbench/views/editExamine.vue
@@ -18,8 +18,8 @@
                    <u-form-item label="法人信息" required class="form-item" prop="legalPerson">
                        <u--input border="none" v-model="form.legalPerson" placeholder="请填写法人信息"></u--input>
                    </u-form-item>
                    <u-form-item label="法人电话" class="form-item">
                        <u--input border="none" v-model="form.legalTel" placeholder="请填写法人电话"></u--input>
                    <u-form-item label="法人电话" class="form-item" prop="legalTel" required>
                        <u--input border="none" type="number" v-model="form.legalTel" placeholder="请填写法人电话"></u--input>
                    </u-form-item>
                </u-form>
            </view>
@@ -99,21 +99,34 @@
                    planImageUrls: []
                },
                rules: {
                    location: {
                    "location": {
                        required: true,
                        message: '请选择地址',
                        trigger: ['blur', 'change']
                    },
                    placeName: {
                    "placeName": {
                        required: true,
                        message: '请填写场所名称',
                        trigger: ['blur', 'change']
                    },
                    legalPerson: {
                    "legalPerson": {
                        required: true,
                        message: '请填写法人信息',
                        trigger: ['blur', 'change']
                    }
                    },
                    "legalTel": [{
                            required: true,
                            message: '请填写法人电话',
                            trigger: ['blur', 'change']
                        },
                        {
                            validator: (rule, value, callback) => {
                                return uni.$u.test.mobile(value);
                            },
                            message: '手机号码不正确',
                            trigger: ['change', 'blur']
                        }
                    ]
                },
                personNum: 1,
                curSelectSite: {},
@@ -123,6 +136,10 @@
        onShow() {
            this.curSelectSite = uni.getStorageSync('siteInfo')
        },
        onReady() {
            //onReady 为uni-app支持的生命周期之一
            this.$refs.form.setRules(this.rules)
        },
        mounted() {
            this.$nextTick(() => {
@@ -238,6 +255,7 @@
            updatePlaceExt(data) {
                data['imageUrls'] = this.getImageUrl('imageUrls')
                data['planImageUrls'] = this.getImageUrl('planImageUrls')
                data.confirmFlag = 1;
                // data['imageUrls'] = data['imageUrls'].join('、')
                // data['planImageUrls'] = data['planImageUrls'].join('、')
                updatePlaceExtData({
@@ -267,13 +285,20 @@
                this.personNum++
            },
            submit() {
                const placePractitioner = []
                this.$refs.formItemRef.forEach(item => {
                    item.form.placeId = this.form.placeId
                    placePractitioner.push(item.form)
                if (this.personNum > 0) {
                    const placePractitioner = []
                    this.$refs.formItemRef.forEach(item => {
                        item.form.placeId = this.form.placeId
                        placePractitioner.push(item.form)
                    })
                    this.form.placePractitioner = placePractitioner
                }
                this.$refs.form.validate().then(res => {
                    this.updatePlaceExt(this.form)
                }).catch(errors => {
                    uni.$u.toast('请完善基本信息')
                })
                this.form.placePractitioner = placePractitioner
                this.updatePlaceExt(this.form)
            },
            pushPage() {
subPackage/workbench/views/report.vue
@@ -129,6 +129,7 @@
        onShow() {
            this.currentRole = uni.getStorageSync("activeRole")
            this.reportList = []
            this.pagingParams.current = 1;
            this.getPageList()
        },
        onReachBottom() {
@@ -143,8 +144,8 @@
                    confirmFlag: this.tabStatus
                }
                if (this.selectDate.length) {
                    params.startTime = this.selectDate[0],
                        params.endTime = this.selectDate[1]
                    params.startTime = this.selectDate[0]
                    params.endTime = this.selectDate[1]
                }
                if (this.houseCode) {
                    params.addressCode = this.houseCode;
subPackage/workbench/views/reportAudit.vue
@@ -348,6 +348,14 @@
                if (type == 1) {
                    this.isShowPeoplePicker = true;
                } else {
                    if (!this.form.confirmNotion) {
                        uni.showToast({
                            title: "请输入处理情况",
                            icon: "none"
                        })
                        return;
                    }
                    let data = {
                        confirmFlag: 3,
                        content: this.form.confirmNotion,
uni_modules/jushi-signature/components/jushi-signature/jushi-signature.vue
@@ -6,7 +6,7 @@
                disable-scroll="true" @touchstart="touchstart" @touchmove="touchmove" @touchend="touchend"></canvas>
        </view>
        <view class="btn-view">
            <view class="save" @click="save()">保存</view>
            <view class="save" @click="save()">确定</view>
            <view class="clear" @click="clear()">清除</view>
        </view>
    </view>