shuishen
2023-10-30 d5fac02a6fdc6564ff5da88056245d0fa579f3c6
Merge branch 'master' of http://s16s652780.51mypc.cn:49896/r/jczz_app
12 files modified
2 files added
726 ■■■■■ changed files
api/doorplateAddress/doorplateAddress.js 13 ●●●●● patch | view | raw | blame | history
api/label/label.js 10 ●●●●● patch | view | raw | blame | history
api/system/role.js 2 ●●● patch | view | raw | blame | history
components/curMenu/index.vue 38 ●●●● patch | view | raw | blame | history
components/tabBar/tabBar.vue 11 ●●●●● patch | view | raw | blame | history
mixin/uploadMixin.js 4 ●●●● patch | view | raw | blame | history
pages.json 6 ●●●●● patch | view | raw | blame | history
pages/home/index.vue 263 ●●●●● patch | view | raw | blame | history
store/index.js 8 ●●●● patch | view | raw | blame | history
subPackage/user/components/roleList.vue 4 ●●●● patch | view | raw | blame | history
subPackage/user/role/index.vue 11 ●●●● patch | view | raw | blame | history
subPackage/workbench/components/lineItem.vue 2 ●●● patch | view | raw | blame | history
subPackage/workbench/views/cscj.vue 322 ●●●● patch | view | raw | blame | history
utils/func.js 32 ●●●●● patch | view | raw | blame | history
api/doorplateAddress/doorplateAddress.js
New file
@@ -0,0 +1,13 @@
import http from '@/http/api.js'
//保存
export const getFuncList = (type, roleName) => {
    return http.request({
        url: 'blade-doorplateAddress/doorplateAddress/getFuncList',
        method: 'GET',
        params: {
            type,
            roleName
        }
    })
}
api/label/label.js
New file
@@ -0,0 +1,10 @@
import http from '@/http/api.js'
//保存
export const getLabelList = (params) => {
    return http.request({
        url: 'blade-label/label/list',
        method: 'GET',
        params
    })
}
api/system/role.js
@@ -55,7 +55,7 @@
export const getDetail = (params) => {
    return http.request({
        url: '/api/blade-system/role/detail',
        url: '/blade-system/role/detail',
        method: 'GET',
        params
    })
components/curMenu/index.vue
@@ -1,15 +1,16 @@
<template>
        <view class="menu-box" @click="curMenuClick(curMenu)">
            <view v-if="imgShow">
                <u--image :src="curMenu.imgUrl" :width='curMenu.imgWidth || 54' :height='curMenu.imgHeight || 54' shape="circle"></u--image>
            </view>
            <view v-if="textShow" :style="{height: curMenu.numHeight ? curMenu.numHeight + 'px' : '56rpx'}">
                {{curMenu.num}}
            </view>
            <view :style="{height: curMenu.titleHeight ? curMenu.titleHeight + 'px' : '56rpx'}">
                {{curMenu.title}}
            </view>
    <view class="menu-box" @click="curMenuClick(curMenu)">
        <view v-if="imgShow">
            <u--image :src="curMenu.imgUrl" :width='curMenu.imgWidth || 40' :height='curMenu.imgHeight || 40'
                shape="circle"></u--image>
        </view>
        <view v-if="textShow" :style="{height: curMenu.numHeight ? curMenu.numHeight + 'px' : '56rpx'}">
            {{curMenu.num}}
        </view>
        <view :style="{height: curMenu.titleHeight ? curMenu.titleHeight + 'px' : '56rpx'}">
            {{curMenu.title}}
        </view>
    </view>
</template>
<script>
@@ -21,22 +22,22 @@
                    return {}
                }
            },
            imgShow: {
                type: Boolean,
                default: true
            },
            textShow: {
                type: Boolean,
                default: false
            },
        },
        methods: {
            curMenuClick(e) {
                console.log('当前点击处')
                if (e.event) {
                    e.event(e)
                }
@@ -50,16 +51,15 @@
        display: flex;
        flex-direction: column;
        font-size: 28rpx;
        & > view {
        &>view {
            display: flex;
            justify-content: center;
            align-items: center;
        }
        & > view:first-child {
        &>view:first-child {
            flex: 1;
        }
    }
</style>
components/tabBar/tabBar.vue
@@ -9,9 +9,6 @@
</template>
<script>
    import {
        messageCount,
    } from "@/api/system/message.js"
    export default {
        props: {
            currentTab: {},
@@ -65,15 +62,7 @@
        },
        methods: {
            change(e) {
                this.$store.commit("SET_TABBAT_INDEX", e)
                this.$emit("change", this.curTabList[e].url)
                let params = {
                    recipient: this.userInfo.user_id,
                    status: 0
                }
                messageCount(params).then(res => {
                    this.$u.func.updateTabbar(res.data)
                })
            },
        }
mixin/uploadMixin.js
@@ -25,6 +25,10 @@
        }
    },
    created() {
        this.getHeader()
    },
    methods: {
        //获取头部
        getHeader() {
pages.json
@@ -326,12 +326,14 @@
                        "enablePullDownRefresh": false
                    }
                },
                //消息详情
                //切换角色
                {
                    "path": "role/index",
                    "style": {
                        "navigationBarTitleText": "切换角色",
                        "enablePullDownRefresh": false
                        "enablePullDownRefresh": false,
                        "navigationBarBackgroundColor": "#4586fe",
                        "navigationBarTextStyle": "white"
                    }
                }
            ]
pages/home/index.vue
@@ -14,11 +14,11 @@
            <view class="main-select" @click="selectBoxShow = !selectBoxShow">
                <u-icon name="map" color="#fff"></u-icon>
                <view>
                    当前场所:暂无绑定场所信息
                    当前场所:{{curSelectSite.name?curSelectSite.name:'暂无绑定场所信息'}}
                </view>
                <u-picker title="场所" :show="selectBoxShow" ref="uPicker" :columns="columns" @confirm="confirm"
                    @change="changeHandler"></u-picker>
                <u-picker title="场所" :show="selectBoxShow" keyName="name" ref="uPicker" :columns="siteColumns"
                    @confirm="confirm" @change="changeHandler"></u-picker>
            </view>
            <view class="main-btn">
@@ -26,11 +26,11 @@
            </view>
            <view class="main-phone-house">
                <view class="phone-box">
                <view v-if="gridDataList.length>0" class="phone-box">
                    <grid-menu :gridData='item' v-for="(item, index) in gridDataList" :key='index'></grid-menu>
                </view>
                <view class="house-box">
                <view v-if="hasMenu('楼盘表').length>0" class="house-box">
                    <box-title :title="'楼盘表'"></box-title>
                    <view class="content">
                        <grid-menu :gridData='item' v-for="(item, index) in houseDataList" :key='index'></grid-menu>
@@ -39,19 +39,20 @@
            </view>
            <view class="main-bt pb-40">
                <view class="mt-20">
                <view v-if="liveList.length>0" class="mt-20">
                    <box-title :title="'生活'">
                        <template slot="titleMore">
                            <view style="color: red;">titleMore</view>
                        </template>
                    </box-title>
                    <view class="mt-20 b-c-w">
                        <menu-list :menuData="liveList"></menu-list>
                    <view class="mt-20">
                        <view class="mt-20 b-c-w">
                            <menu-list :menuData="liveList"></menu-list>
                        </view>
                    </view>
                </view>
                <view class="mt-20">
                <view v-if="jobList.length>0" class="mt-20">
                    <box-title :title="'工作台'"></box-title>
                    <view class="mt-20 b-c-w">
@@ -81,7 +82,7 @@
            </view>
        </view>
        <tabBar @change='change' :currentTab="0" :tabList="tabList"></tabBar>
        <tabBar @change='change' :currentTab="0"></tabBar>
    </view>
</template>
@@ -90,6 +91,9 @@
    import curMenu from "@/components/curMenu/index.vue";
    import menuList from "@/components/menuList/index.vue";
    import gridMenu from "@/components/gridMenu/index.vue";
    import {
        getFuncList
    } from "@/api/doorplateAddress/doorplateAddress";
    export default {
        components: {
@@ -101,40 +105,28 @@
        data() {
            return {
                tabList: uni.getStorageSync("tabBarList") || [],
                menuList: [],
                selectRole: {},
                selectBoxShow: false,
                columns: [
                    ['中国', '美国']
                ],
                siteColumns: [],
                curSelectSite: {},
                columnData: [],
                btnList: [{
                        imgUrl: '/static/img/sys.png',
                        title: '扫一扫'
                        title: '扫一扫',
                        imgWidth: 54,
                        imgHeight: 54
                    },
                    {
                        imgUrl: '/static/img/bs.png',
                        title: '报事'
                        title: '报事',
                        imgWidth: 54,
                        imgHeight: 54
                    }
                ],
                gridDataList: [{
                        title: '物业',
                        data: '无数据',
                        phone: '无'
                    },
                    {
                        title: '综治网格',
                        data: '无数据',
                        phone: '无'
                    },
                    {
                        title: '公安网格',
                        data: '无数据',
                        phone: '无'
                    }
                ],
                gridDataList: [],
                houseDataList: [
                    {
                houseDataList: [{
                        title: '万达广场',
                        useSlot: true
                    },
@@ -152,63 +144,9 @@
                    }
                ],
                liveList: [{
                        imgUrl: '/static/img/ggbs.png',
                        title: '公共报事',
                        imgWidth: 40,
                        imgHeight: 40
                    },
                    {
                        imgUrl: '/static/img/bmrx.png',
                        title: '便民热线',
                        imgWidth: 40,
                        imgHeight: 40
                    },
                    {
                        imgUrl: '/static/img/zhsb.png',
                        title: '租户上报',
                        imgWidth: 40,
                        imgHeight: 40
                    }
                ],
                liveList: [],
                jobList: [{
                        imgUrl: '/static/img/ggbs.png',
                        title: '场所记录',
                        imgWidth: 40,
                        imgHeight: 40
                    },
                    {
                        imgUrl: '/static/img/bmrx.png',
                        title: '场所采集',
                        imgWidth: 40,
                        imgHeight: 40
                    },
                    {
                        imgUrl: '/static/img/zhsb.png',
                        title: '出租房管理',
                        imgWidth: 40,
                        imgHeight: 40
                    },
                    {
                        imgUrl: '/static/img/zhsb.png',
                        title: '标签事件',
                        imgWidth: 40,
                        imgHeight: 40
                    },
                    {
                        imgUrl: '/static/img/zhsb.png',
                        title: '场所维护',
                        imgWidth: 40,
                        imgHeight: 40
                    },
                    {
                        imgUrl: '/static/img/zhsb.png',
                        title: '报事审核',
                        imgWidth: 40,
                        imgHeight: 40
                    }
                ],
                jobList: [],
                taskTypeList: [{
                        title: '一次性',
@@ -237,10 +175,148 @@
        },
        onShow() {
            uni.hideTabBar()
            this.init()
        },
        computed: {
            hasMenu() {
                return (name) => {
                    let resultArr = []
                    resultArr = this.getMenu(name, this.menuList, resultArr)
                    if (resultArr.length > 0) {
                        return resultArr
                    } else {
                        return []
                    }
                }
            }
        },
        methods: {
            //初始化
            init() {
                this.curSelectSite = {}
                this.menuList = uni.getStorageSync("menu")
                this.selectRole = uni.getStorageSync("activeRole")
                this.getMenuList()
                this.getSiteList()
                uni.hideTabBar()
            },
            //获取场所列表
            async getSiteList() {
                console.log(this.selectRole)
                let type = null
                let roleName = this.selectRole.roleName
                console.log("roleName", roleName)
                if (roleName == '网格员' || roleName == '系统管理员') {
                    type = 1
                } else if (roleName == '场所负责人') {
                    type = 2
                } else if (roleName == '居民') {
                    type = 3
                }
                const res = await getFuncList(type, roleName)
                console.log(res, "-----------")
                let data = res.data
                this.siteColumns = []
                this.buildSiteColumn(data, 0)
                console.log(this.siteColumns)
            },
            buildSiteColumn(dataList, index) {
                if (dataList.length > 0) {
                    this.siteColumns[index] = dataList
                    if (dataList[0].children && dataList[0].children.length > 0) {
                        this.buildSiteColumn(dataList[0].children, index + 1)
                    }
                }
            },
            //获取首页菜单
            getMenuList() {
                console.log("当前角色菜单", this.menuList)
                this.getPhoneList()
                this.getLiveList()
                this.getWorkbenchList()
            },
            getPhoneList() {
                this.gridDataList = []
                const resultArr = this.hasMenu('快捷拨号')
                if (resultArr.length == 0) {
                    return
                }
                const topMenu = resultArr[0]
                topMenu.children.forEach(menu => {
                    this.gridDataList.push({
                        title: menu.name,
                        data: "无数据",
                        phone: "无"
                    })
                })
            },
            //获取生活菜单
            getLiveList() {
                this.liveList = []
                const resultArr = this.hasMenu('生活')
                if (resultArr.length == 0) {
                    return
                }
                const topMenu = resultArr[0]
                topMenu.children.forEach(menu => {
                    this.liveList.push({
                        imgUrl: menu.source,
                        title: menu.name,
                    })
                })
            },
            //获取工作台菜单
            getWorkbenchList() {
                this.jobList = []
                const resultArr = this.hasMenu('工作台')
                if (resultArr.length == 0) {
                    return
                }
                const topMenu = resultArr[0]
                topMenu.children.forEach(menu => {
                    this.jobList.push({
                        imgUrl: menu.source,
                        title: menu.name,
                    })
                })
            },
            getMenu(menuName, menuList, resultArr) {
                // console.log(menuList, menuName)
                for (var i = 0; i < menuList.length; i++) {
                    if (menuList[i].name == menuName) {
                        resultArr.push(menuList[i])
                    } else {
                        if (menuList[i].children && menuList[i].children.length) {
                            this.getMenu(menuName, menuList[i].children, resultArr);
                        }
                    }
                }
                return resultArr
            },
            change(index) {
                let url = index
                this.$u.func.globalNavigator(url, "switchTab")
@@ -263,6 +339,7 @@
            // 回调参数为包含columnIndex、value、values
            confirm(e) {
                console.log('confirm', e)
                this.curSelectSite = e.value[e.value.length - 1]
                this.selectBoxShow = false
            }
        }
@@ -330,7 +407,7 @@
                    .content {
                        display: flex;
                        flex-wrap: wrap;
                        &>view {
                            margin: 0 16rpx;
                            margin-top: 20rpx;
store/index.js
@@ -47,7 +47,7 @@
        isLogin: lifeData.isLogin ? lifeData.isLogin : false,
        // 如果version无需保存到本地永久存储,无需lifeData.version方式
        version: '1.0.0',
        activeRoleId: "",
        activeRole: {},
        // tabBarList: [],
        adCodeBase: {},
        // tabbarIndex: uni.getStorageSync("tabbarIndex") || 0,
@@ -93,9 +93,9 @@
        //     // console.log(uni.getStorageSync('tabBarList'))
        // },
        //设置当前激活的角色
        setActiveRoleId(state, roleId) {
            state.activeRoleId = roleId
            uni.setStorageSync('activeRoleId', roleId)
        setActiveRole(state, role) {
            state.activeRole = role
            uni.setStorageSync('activeRole', role)
        },
        SET_MENU(state, menuList) {
subPackage/user/components/roleList.vue
@@ -1,6 +1,6 @@
<template>
    <view class="role-container">
        <view @click="activeRole(item)" v-for="(item, index) in roleData" :key="index" :class="item.active?'active':''">
        <view @click="enableRole(item)" v-for="(item, index) in roleData" :key="index" :class="item.active?'active':''">
            <view class="l">
                <u-icon :name="item.iconName"></u-icon>
                <view class="role-name">
@@ -30,7 +30,7 @@
        methods: {
            //启用角色
            activeRole(item) {
            enableRole(item) {
                this.roleData.forEach(role => {
                    if (role.id == item.id) {
                        role.active = true
subPackage/user/role/index.vue
@@ -33,6 +33,7 @@
            }
        },
        created() {
            this.selectRole = uni.getStorageSync("activeRole")
            this.getUserRole()
        },
@@ -48,12 +49,11 @@
                let data = res.data
                console.log(data)
                data.forEach(e => {
                    this.roleData.push({
                        id: e.id,
                        iconName: 'account-fill',
                        roleName: e.roleName,
                        active: e.id == this.activeRoleId ? true : false
                        active: e.id == this.selectRole.id ? true : false
                    })
                })
@@ -63,23 +63,22 @@
            select(item) {
                this.selectRole = item
                console.log("当前选中角色", this.selectRole)
            },
            async submit() {
                const that = this
                //保存当前激活的角色
                store.commit("setActiveRoleId", this.selectRole.id)
                store.commit("setActiveRole", this.selectRole)
                //获取角色菜单
                const res = await dynamicMenu(this.selectRole.id)
                //把菜单存入store中
                let data = res.data
                const appMenu = data.filter(e => e.name == 'app')[0]
                const appMenu = data.filter(e => e.name == 'app')[0].children
                console.log("菜单:", appMenu)
                store.commit("SET_MENU", appMenu)
                uni.showToast({
subPackage/workbench/components/lineItem.vue
@@ -1,5 +1,5 @@
<template>
    <view class="line-item-container" style="margin-bottom: 1px;">
    <view class="line-item-container" style="margin-bottom: 20rpx;">
        <view v-for="(item, index) in dataInfo" :key="index" class="line-item">
            <view class="l">
subPackage/workbench/views/cscj.vue
@@ -5,28 +5,35 @@
                <box-title title="基础信息"></box-title>
            </view>
            <view class="item">
                <u-form-item class="form-item" labelWidth="100" label="场所名称:" required prop="location">
                    <u--input border="none" v-model="form.location" placeholder="请输入当前位置">
                <!--                 <u-form-item class="form-item" labelWidth="100" label="场所地址:" required prop="location">
                    <u--input border="none" v-model="form.location" placeholder="请选择场所地址">
                    </u--input>
                </u-form-item> -->
                <u-form-item class="form-item" labelWidth="100" label="场所名称:" required prop="placeName">
                    <u--input border="none" v-model="form.placeName" placeholder="请输入当前位置">
                    </u--input>
                </u-form-item>
                <u-form-item @click="popup" class="form-item" labelWidth="100" label="标签:" required prop="location">
                <u-form-item @click="popup" class="form-item" labelWidth="100" label="标签:" required prop="label">
                    <u--input border="none" placeholder="请选择地址标签">
                    </u--input>
                    <u-icon slot="right" name="arrow-right"></u-icon>
                </u-form-item>
                <view v-if="showLabelList.length>0" class="label">
                    <view v-for="(item,index) in showLabelList" :key="index" class="activeLabel">
                        <u-tag size="mini" :text="item.text"></u-tag>
                        <u-tag closable :show="!item.isClose" size="mini" @close="delTag(item)"
                            :text="item.text"></u-tag>
                    </view>
                </view>
                <u-form-item class="form-item" labelWidth="100" label="备注:" required prop="location">
                <u-form-item class="form-item" labelWidth="100" label="备注:" prop="location">
                    <u--input border="none" v-model="form.remark" placeholder="请输入备注">
                    </u--input>
                </u-form-item>
                <u-form-item class="form-item" labelWidth="100" label="经纬度:" required prop="location">
                <u-form-item class="form-item" labelWidth="100" label="经纬度:" prop="location">
                    <u--input border="none" v-model="form.jwd" placeholder="请输入经纬度">
                    </u--input>
                </u-form-item>
@@ -37,11 +44,11 @@
            </view>
            <view class="item">
                <u-form-item class="form-item" labelWidth="100" label="场所负责人:" required prop="location">
                    <u--input border="none" v-model="form.charge" placeholder="请输入场所负责人">
                <u-form-item class="form-item" labelWidth="100" label="场所负责人:" prop="principal">
                    <u--input border="none" v-model="form.principal" placeholder="请输入场所负责人">
                    </u--input>
                </u-form-item>
                <u-form-item class="form-item" labelWidth="100" label="手机号:" required prop="location">
                <u-form-item class="form-item" labelWidth="100" label="手机号:" prop="location">
                    <u--input border="none" v-model="form.phone" placeholder="请输入手机号">
                    </u--input>
                </u-form-item>
@@ -65,16 +72,44 @@
        </u-form>
        <view class="box-title">
            <view>
                <box-title title="综治网格"></box-title>
            </view>
            <box-title title="综治网格">
                <template slot="titleMore">
                    <view class="title-more">
                        <view class="red item"></view>
                        <view class="orange item">85.9</view>
                        <view class="green item"></view>
                    </view>
                </template>
            </box-title>
        </view>
        <view class="item">
            <lineItem :dataInfo="dataInfo">
            <lineItem :dataInfo="comprehensiveData.basic">
            </lineItem>
            <lineItem :dataInfo="dataInfo1">
            <lineItem :dataInfo="comprehensiveData.scene">
                <template v-slot:pic="{scope}">
                    {{scope.value}}
                </template>
            </lineItem>
        </view>
        <view class="box-title">
            <box-title title="公安网格">
                <template slot="titleMore">
                    <view class="title-more">
                        <view class="red item"></view>
                        <view class="orange item">85.9</view>
                        <view class="green item"></view>
                    </view>
                </template></box-title>
        </view>
        <view class="item">
            <lineItem :dataInfo="comprehensiveData.basic">
            </lineItem>
            <lineItem :dataInfo="comprehensiveData.scene">
                <template v-slot:pic="{scope}">
                    {{scope.value}}
                </template>
@@ -82,9 +117,16 @@
        </view>
        <view class="bottom">
            <view class="btn">
                <u-button @click="addRent" type="primary" text="提交"></u-button>
            </view>
        </view>
        <uni-popup class="citys_win popup_win" ref="uniPopup" type="bottom">
            <wyh-tree-select :items="items" title="标签选择" :showNav="true" defaultActiveColor="#4586fe"
            <wyh-tree-select :items="labelList" title="标签选择" :showNav="true" defaultActiveColor="#4586fe"
                :activeIds="activeIds" @clickItem="labelClick" :showCancel="false" :showConfirm="false">
            </wyh-tree-select>
        </uni-popup>
@@ -96,6 +138,9 @@
<script>
    import uploadMixin from "@/mixin/uploadMixin";
    import lineItem from "@/subPackage/workbench/components/lineItem.vue"
    import {
        getLabelList
    } from "@/api/label/label";
    export default {
        mixins: [uploadMixin],
        components: {
@@ -104,77 +149,125 @@
        data() {
            return {
                form: {},
                rules: {},
                rules: {
                    'userInfo.name': {
                        type: 'string',
                        required: true,
                        message: '请填写姓名',
                        trigger: ['blur', 'change']
                    },
                },
                items: [{
                labelList: [{
                    text: '全部标签',
                    children: [{
                            text: '餐馆',
                            id: 1,
                        },
                        {
                            text: '旅馆、招待所',
                            id: 2,
                        }, {
                            text: '居民住宿',
                            id: 3
                        }
                    ],
                    children: [],
                    dot: false
                }, ],
                dataInfo: [{
                        label: "社区名称",
                        value: "暂无数据"
                    },
                    {
                        label: "网格名称",
                        value: "暂无数据"
                    },
                    {
                        label: "网格员",
                        value: "暂无数据"
                    },
                    {
                        label: "联系电话",
                        value: "暂无数据"
                    }
                ],
                dataInfo1: [{
                        label: "场所照片",
                        value: "",
                        useSlot: "pic",
                    },
                    {
                        label: "采集人",
                        value: "未完善"
                    },
                    {
                        label: "采集时间",
                        value: "未完善"
                    },
                    {
                        label: "场所负责人",
                        value: "未完善",
                    },
                    {
                        label: "采集人",
                        value: "未完善"
                    },
                    {
                        label: "采集时间",
                        value: "未完善",
                    }
                ],
                comprehensiveData: {
                    basic: [{
                            label: "社区名称",
                            value: "暂无数据"
                        },
                        {
                            label: "网格名称",
                            value: "暂无数据"
                        },
                        {
                            label: "网格员",
                            value: "暂无数据"
                        },
                        {
                            label: "联系电话",
                            value: "暂无数据"
                        }
                    ],
                    scene: [{
                            label: "场所照片",
                            value: "",
                            useSlot: "pic",
                        },
                        {
                            label: "采集人",
                            value: "未完善"
                        },
                        {
                            label: "采集时间",
                            value: "未完善"
                        },
                        {
                            label: "场所负责人",
                            value: "未完善",
                        },
                        {
                            label: "采集人",
                            value: "未完善"
                        },
                        {
                            label: "采集时间",
                            value: "未完善",
                        },
                        {
                            label: "历史事件",
                            value: "未完善",
                        }
                    ],
                },
                publicData: {
                    basic: [{
                            label: "公安局",
                            value: "暂无数据"
                        },
                        {
                            label: "派出所",
                            value: "暂无数据"
                        },
                        {
                            label: "辖区民警",
                            value: "暂无数据"
                        },
                        {
                            label: "联系电话",
                            value: "暂无数据"
                        }
                    ],
                    scene: [{
                            label: "消防照片",
                            value: "",
                            useSlot: "pic",
                        },
                        {
                            label: "采集人",
                            value: "未完善"
                        },
                        {
                            label: "采集时间",
                            value: "未完善"
                        },
                        {
                            label: "消防负责人",
                            value: "未完善",
                        },
                        {
                            label: "采集人",
                            value: "未完善"
                        },
                        {
                            label: "采集时间",
                            value: "未完善",
                        },
                        {
                            label: "历史事件",
                            value: "未完善",
                        }
                    ],
                },
                activeIds: [],
                showLabelList: []
            }
        },
        created() {
        },
        created() {},
        mounted() {
        },
@@ -182,7 +275,7 @@
        },
        onShow() {
            this.getLabel()
        },
        methods: {
            //弹出层打开
@@ -190,22 +283,44 @@
                this.$refs.uniPopup.open()
            },
            getLabel() {
                getLabelList({
                    size: -1
                }).then(res => {
                    let data = res.data.records
                    data.sort((a, b) => a.sort - b.sort)
                    data.forEach(label => {
                        this.labelList[0].children.push({
                            id: label.id,
                            text: label.labelName
                        })
                    })
                })
            },
            labelClick(item) {
                //判断label是否已在
                const label = this.showLabelList.find(e => e.id == item.id)
                if (label) {
                    //在,去掉
                    this.showLabelList = this.showLabelList.filter(e => e.id != label.id)
                    this.activeIds = this.activeIds.filter(e => id != label.id)
                    this.activeIds = this.activeIds.filter(e => e != label.id)
                } else {
                    //不在,添加
                    item.isClose = false
                    this.showLabelList.push(item)
                    this.activeIds.push(item.id)
                }
                this.showLabelList.sort((a, b) => a.id - b.id)
                this.showLabelList.sort((a, b) => a.sort - b.sort)
            },
            delTag(label) {
                label.isClose = true
                this.showLabelList = this.showLabelList.filter(e => e.id != label.id)
                this.activeIds = this.activeIds.filter(e => e != label.id)
            }
        }
@@ -216,13 +331,30 @@
    .container {
        position: relative;
        width: 100%;
        height: 100%;
        // height: 100%;
        display: flex;
        flex-direction: column;
        background: #F9F9FA;
        .box-title {
            padding: 10px 0;
            .title-more {
                display: flex;
                align-items: center;
                height: 100%;
                .item {
                    width: 50rpx;
                    height: 40rpx;
                    color: #ffffff;
                    padding: 6rpx;
                    font-size: 2rpx;
                    text-align: center;
                    line-height: 20px;
                }
            }
        }
        .item {
@@ -237,10 +369,12 @@
                padding: 10rpx 30rpx;
                display: flex;
                background-color: #ffffff;
                flex-wrap: wrap;
                .activeLabel {
                    // width: 80rpx;
                    margin-left: 10rpx;
                    margin-top: 10rpx
                }
            }
@@ -252,5 +386,31 @@
            background-color: #ffffff;
            padding: 40rpx 30rpx;
        }
        .bottom {
            padding: 20rpx;
            background-color: #ffffff;
            display: flex;
            justify-content: center;
            align-items: center;
            .btn {
                width: calc(100% - 40rpx);
            }
        }
    }
    .red {
        background-color: red;
        border-radius: 10rpx 0rpx 0rpx 10rpx;
    }
    .orange {
        background-color: orange;
    }
    .green {
        background-color: green;
        border-radius: 0rpx 10rpx 10rpx 0rpx;
    }
</style>
utils/func.js
@@ -1,6 +1,7 @@
import store from "@/store/index.js"
import {
    dynamicMenu
    dynamicMenu,
    getDetail
} from "@/api/system/role.js"
import {
    logAdd
@@ -10,30 +11,33 @@
const install = (Vue, vm) => {
    // 登录操作 1
    const login = (userInfo) => {
    const login = async (userInfo) => {
        vm.$u.vuex('userInfo', userInfo)
        vm.$u.vuex('accessToken', userInfo.access_token)
        vm.$u.vuex('isLogin', true)
        let activeRoleId = userInfo.role_id.split(",")[0]
        console.log("当前激活角色的id:", activeRoleId)
        //添加当前激活的roleId(默认取第一个)
        vm.$u.vuex('activeRoleId', activeRoleId)
        const resDetail = await getDetail({
            id: activeRoleId
        })
        console.log("当前激活角色的id:", resDetail.data)
        //添加当前激活的角色(默认取第一个)
        store.commit('setActiveRole', resDetail.data)
        //获取角色菜单
        dynamicMenu(activeRoleId).then(res => {
            let data = res.data
            let appMenu = data.filter(e => e.name == 'app')[0]
            console.log("当前角色菜单:", appMenu)
            vm.$u.vuex('menu', appMenu)
        const {
            data
        } = await dynamicMenu(activeRoleId)
            //跳转到首页
            uni.switchTab({
                url: '/pages/home/index'
            })
        let appMenu = data.filter(e => e.name == 'app')[0].children
        console.log("当前角色菜单:", appMenu)
        store.commit('SET_MENU', appMenu)
        //跳转到首页
        uni.switchTab({
            url: '/pages/home/index'
        })
    }