智慧保安互联网APP
zengh
2021-08-18 740427da76666343deaad67941a0674972e8d4a2
初版集成
6 files modified
3 files added
698 ■■■■ changed files
common/style/common.scss 108 ●●●●● patch | view | raw | blame | history
components/contacts/contacts.vue 271 ●●●●● patch | view | raw | blame | history
pages.json 6 ●●●●● patch | view | raw | blame | history
pages/groupChat/chating.vue 2 ●●● patch | view | raw | blame | history
pages/groupChat/friendrequest.vue 186 ●●●●● patch | view | raw | blame | history
pages/groupChat/groupChat.vue 117 ●●●●● patch | view | raw | blame | history
static/apply.png patch | view | raw | blame | history
store/actions.js 4 ●●●● patch | view | raw | blame | history
store/index.js 4 ●●●● patch | view | raw | blame | history
common/style/common.scss
New file
@@ -0,0 +1,108 @@
// 页面开头公共样式
.content {
    padding-top: var(--status-bar-height);
    }
// 头部公共样式
.top-bar {
            height: 88rpx;
            position: fixed;
            left: 0;
            top: 0;
            width: 100%;
            display: flex;
            align-items: center;
            z-index: 999;
            padding-top: var(--status-bar-height);
            .top-bar-left {
                margin-left: 32rpx;
                justify-content: left;
                flex: 1;
                image {
                    width: 68rpx;
                    height: 68rpx;
                    border-radius: 16rpx;
                }
                .back-img {
                    left: 0;
                    width: 88rpx;
                    height : 88rpx;
                    image {
                        width: 26rpx;
                        height: 45rpx;
                        margin-top: 22rpx;
                    }
                }
            }
            .top-bar-center {
                .logo {
                    font-weight: bold;
                    color: grey;
                }
            }
            .top-bar-right {
                margin-right: 32rpx;
                flex: 1;
                text-align: right;
                justify-content: right;
                image {
                    width: 52rpx;
                    height: 52rpx;
                    margin-left: 52rpx;
                }
                .text {
                    font-size: $uni-font-size-lg;
                    font-weight: 500;
                    color: $uni-text-color;
                }
                .more-img {
                    padding-right: $uni-spacing-col-base;
                    position: relative;
                    image {
                        width: 52rpx;
                        height: 12rpx;
                        top: 0;
                        right: 0;
                        position: absolute;
                    }
                }
            }
        }
        // 底部样式
        .bottom-bar {
            position: fixed;
            bottom: 0;
            height: 90rpx;
            width: 100%;
            // padding: 12rpx $uni-spacing-col-base;
            padding-top: 10rpx;
            padding-bottom: var(--status-bar-height);
        }
        // 按钮公共样式1
        .btn1 {
            margin: 0 $uni-spacing-col-base;
            line-height: 80rpx;
            height: 80rpx;
            border-radius: $uni-border-radius-sm;
            font-size: 32rpx;
            color: $uni-text-color;
            text-align: center;
        }
components/contacts/contacts.vue
@@ -1,39 +1,56 @@
<template>
    <view class="pColumn" >
        <view class="inPColumn" v-if="fromW == 0">
            <view class="left" @click="chating">
                <view class="top">
                    <view class="userImg">
                        <img class="img" :src=Pdata.avatar>
                    </view>
                    <view class="t-type">{{Pdata.recipientName}}</view>
                    <view class="t-id">{{Pdata.postTime}}</view>
    <view class="main">
        <view v-if="fromW == 0">
            <view class="friend-list" @click="chating">
                <view class="head-wrap">
                    <image :src=Pdata.avatar class="head" />
                    <!-- <view v-if="1 != ''" class="tip">233</view> -->
                </view>
                <view class="bottom">{{Pdata.postMessage}}</view>
                <view class="content-wrap">
                    <text class="name">{{Pdata.recipientName}}</text>
                    <text class="mess">{{Pdata.postMessage}}</text>
                </view>
                <view class="data-wrap">
                    <text class="data">{{Pdata.postTime}}</text>
                </view>
            </view>
        </view>
        <view class="inPColumn" v-if="fromW == 1">
            <view class="left" @click="TXLchating">
                <view class="top">
                    <view class="userImg">
                        <img class="img" :src=Pdata.avatar>
                    </view>
                    <view class="t-type">{{Pdata.realName}}</view>
                    <!-- <view class="t-id">{{Pdata.postTime}}</view> -->
        <view v-if="fromW == 1">
            <view class="friend-list" @click="TXLchating">
                <view class="head-wrap">
                    <image :src=Pdata.avatar class="head" />
                    <!-- <view v-if="1 != ''" class="tip">233</view> -->
                </view>
                <view class="bottom">电话:{{Pdata.phone}}</view>
                <view class="content-wrap">
                    <text class="name">{{Pdata.realName}}</text>
                    <text class="mess">电话:{{Pdata.phone}}</text>
                </view>
                <view class="data-wrap">
                    <!-- <text class="data">{{Pdata.postTime}}</text> -->
                </view>
            </view>
        </view>
        <view class="inPColumn" v-if="fromW == 2">
            <view class="left" @click="QZchating">
                <view class="top">
                    <view class="userImg">
                        <img class="img" :src=Pdata.avatar>
                    </view>
                    <view class="t-type">{{Pdata.GroupName}}</view>
                    <!-- <view class="t-id">{{Pdata.postTime}}</view> -->
        <view v-if="fromW == 2">
            <view class="friend-list" @click="QZchating">
                <view class="head-wrap">
                    <image :src=Pdata.avatar class="head" />
                    <!-- <view v-if="1 != ''" class="tip">233</view> -->
                </view>
                <view class="bottom">{{Pdata.GroupContent}}</view>
                <view class="content-wrap">
                    <text class="name">{{Pdata.GroupName}}</text>
                    <text class="mess">{{Pdata.GroupContent}}</text>
                </view>
                <view class="data-wrap">
                    <!-- <text class="data">{{Pdata.postTime}}</text> -->
                </view>
            </view>
        </view>
    </view>
@@ -55,7 +72,7 @@
                this.bmainb = '0';
                //#endif
            },
            chating(){
            chating() {
                //发起聊天
                var datas = this.Pdata;
                //alert(datas.name)
@@ -63,20 +80,21 @@
                    url: '/pages/groupChat/chating?chatID=' + datas.recipientId.toString()
                });
            },
            QZchating(){
            QZchating() {
                //发起聊天
                var datas = this.Pdata;
                //alert(datas.name)
                uni.navigateTo({
                    url: '/pages/groupChat/chatingQZ?chatID=' + datas.id.toString()
                    url: '/pages/groupChat/chatingQZ?chatID=' + datas.id.toString()
                });
            },
            TXLchating(){
            TXLchating() {
                //发起聊天
                var datas = this.Pdata;
                //alert(datas.name)
                uni.navigateTo({
                    url: '/pages/groupChat/chating?chatID=' + datas.id.toString() + '&data=' + JSON.stringify(datas)
                    url: '/pages/groupChat/chating?chatID=' + datas.friendid.toString() + '&data=' + JSON.stringify(
                        datas)
                });
            },
            onClose() { //触摸遮罩事件
@@ -93,144 +111,93 @@
</script>
<style lang="scss" scoped>
    /* components/pColumn/pColumn.wxss */
    .pColumn,
    .inPColumn,
    .left,
    .right,
    .top {
        display: flex;
    .top-bar {
        background-color: rgba(255, 255, 255, .96);
        // background-color: #42B983;
        box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, .1);
    }
    .userImg {
        // border: 1px solid #007AFF;
    .main {
        // margin-top: 108rpx;
        // padding: 0 32upx ;
        .img {
            width: 100rpx;
            height: 100rpx;
            border-radius: 100rpx;
            // border: 1px solid #007AFF;
        }
    }
    .pColumn {
        width: 100%;
        align-items: center;
        justify-content: center;
        padding-top: 0.5rem;
        .inPColumn {
            margin: 0.2rem 0 0.4rem 0;
            width: 95%;
            height: 4rem;
            border-bottom: 1px rgb(207, 207, 207) solid;
        .friend-list,
        .apply {
            display: flex;
            // margin: 40rpx 0;
            // padding: 20rpx 0;
            height: 130rpx;
            // padding: 16upx 0;
            align-items: center;
            justify-content: space-between;
            border-bottom: 1px solid rgba(0, 0, 0, .1);
            .left {
                width: 80%;
                /* border: 1px rgb(114, 250, 159) solid; */
                flex-direction: column;
            &:active {
                background-color: rgba(243,244,246,1);
            }
                .top {
                    .t-type {
                        padding-left: 0.7rem;
                        font-size: 1.1rem;
                        color: #000000;
                    }
            .head-wrap {
                position: relative;
                    .t-id {
                        color: #8b8b8b;
                        font-size: 0.8rem;
                        line-height: 1.6rem;
                        position: absolute;
                        right: 1.2rem;
                    }
                image {
                    width: 96rpx;
                    height: 96rpx;
                    border-radius: 20upx;
                    // background-color: rgba(255,228,49,1);
                }
                .bottom {
                    color: #8b8b8b;
                    font-size: 0.9rem;
                    position: relative;
                    bottom: 1rem;
                    left: 4rem;
                .tip {
                    position: absolute;
                    top: -6rpx;
                    left: 68rpx;
                    height: 36rpx;
                    min-width: 20rpx;
                    min-height: 20rpx;
                    background-color: rgba(255,93,91,1);
                    border-radius: 18rpx;
                    padding: 0 6rpx;
                    font-size: 24upx;
                    color: rgba(255,228,49,1);
                    line-height: 36rpx;
                    text-align: center;
                }
            }
            .right {
                width: 20%;
                /* border: 1px rgb(143, 114, 250) solid; */
                justify-content: space-around;
            .content-wrap {
                margin-left: 32rpx;
                flex: 1;
                /* align-items: center; */
                .butPopup {
                    z-index: 4;
                    position: fixed;
                    top: 0;
                    left: 0;
                    width: 100%;
                    height: 100%;
                    background-color: rgba($color: #000000, $alpha: 0.5);
                .name {
                    display: block;
                    color: rgba(39,40,50,1);
                    font-size: 36rpx;
                    font-weight: 400;
                    line-height: 50rpx;
                }
                    .b-main {
                        position: absolute;
                        z-index: 2;
                        // bottom: 3rem;//小程序不兼容
                        width: 100%;
                        // border: 1px solid #007AFF;
                        border-radius: 1.5rem;
                        background-color: #fff;
                .mess {
                    display: block;
                    color: rgba(39,40,50,.6);
                    font-size: 28upx;
                    line-height: 40rpx;
                    display: -webkit-box;
                    -webkit-box-orient: vertical;
                    -webkit-line-clamp: 1;
                    overflow: hidden;
                }
            }
                        // height: 20rem;
                        .b-m-title {
                            display: flex;
                            align-items: center;
                            justify-content: center;
                            width: 100%;
                            height: 2.8rem;
                        }
            .data-wrap {
                        .b-m-Y,
                        .b-m-N {
                            color: #fff;
                            border-radius: 0;
                        }
                justify-content: right;
                        .b-m-Y {
                            background-color: #07C160 !important;
                        }
                        .b-m-Y-hove {
                            background-color: #048c44 !important;
                        }
                        .b-m-N {
                            background-color: #FF976A !important;
                        }
                        .b-m-N-hove {
                            background-color: #e1855d !important;
                        }
                    }
                .data {
                    font-size: 24upx;
                    color: rgba(39,40,50,0.4);
                    line-height: 50rpx;
                }
            }
        }
    }
    // .buttitle {
    //     display: flex;
    //     align-items: center;
    //     justify-content: center;
    //     width: 100%;
    //     height: 2.8rem;
    // }
    // .popups {
    //     width: 100%;
    //     padding-bottom: 0 !important;
    //     /* border: 1px solid seagreen; */
    // }
</style>
pages.json
@@ -88,6 +88,12 @@
            }
        },
        {
            "path" : "pages/groupChat/friendrequest",
            "style" : {
                "navigationStyle" : "custom"
            }
        },
        {
            "path": "pages/securityStaff/exhibition",
            "style": {
                "navigationBarTitleText": "保安管理",
pages/groupChat/chating.vue
@@ -170,7 +170,7 @@
            // this.nextPage()
            var data = JSON.parse(option.data)
            console.log(data,55555555555555555555555)
            this.name = ['wo',data.id];
            this.name = ['wo',option.chatID];
            // console.log(data)
            this.callName = data.name;
        },
pages/groupChat/friendrequest.vue
New file
@@ -0,0 +1,186 @@
<template>
    <view class="content">
        <view class="top-bar">
            <view class="top-bar-left" @tap="backOne">
                <view class="back-img">
                    <image src="../../static/images/common/back.png" />
                </view>
            </view>
            <view class="top-bar-center">
                <text class="title">好友请求</text>
            </view>
            <view class="top-bar-right">
                <view class="pice"></view>
            </view>
        </view>
        <view class="main">
            <view class="requestr" v-for="(item, index) in requestList"
                                                         :key="index">
                <view class="request-top">
                    <view class="reject btn">拒绝</view>
                    <view class="header-img">
                        <image :src="item.head"
                                     mode=""
                                     class="header-img"/>
                    </view>
                    <view class="aggree btn">同意</view>
                </view>
                <view class="request-center">
                    <view class="title">{{ item.name }}</view>
                    <view class="time">{{ item.date | date }}</view>
                </view>
                <view class="notic">
                    <text>留言:</text>
                    <text>{{ item.message }}</text>
                </view>
            </view>
        </view>
    </view>
</template>
<script>
    import datas from '@/debugdate/debugdate.js'
    import filter from '@/config/filter.js'
    export default {
        onLoad(option) {
            friendApplication();
        },
        data() {
            return {
                requestList: []
            };
        },
        async onLoad() {
            this._FriendRequest()
        },
        methods:{
            // 返回键
            backOne() {
                uni.navigateBack({
                    delta: 1
                })
            },
            _FriendRequest() {
                this.requestList = datas.firendsRequest()
            },
            friendApplication(){
                //获取所有好友申请
                uni.request({
                    url: this.$store.state.piAPI + "/friend/friendApplication",
                    method: "GET",
                    data: {
                        applicant: WxStorage.get("ids")
                    },
                    success: (res) => {
                        var resdata = res.data.data;
                        debugger
                    }
                });
            }
        },
        filters:{
            date(time) {
             return    filter.date(time)
            }
        }
    }
</script>
<style lang="scss">
@import '../../common/style/common.scss';
    .top-bar {
        background-color: rgba(255, 255, 255, .96);
        // background-color: #42B983;
        box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, .1);
    }
    .main {
        padding: 108rpx 32upx;
        background: rgba(255, 255, 255, .6);
        .requestr {
            margin-top: 112rpx;
            padding: 32upx;
            background: rgba(255, 255, 255, 1);
            border-radius: 20upx;
            box-shadow: 0px 24rpx 64rpx -8rpx rgba(0, 0, 0, .1);
            .request-top {
                display: flex;
                flex-direction: row;
                .btn {
                    flex: none;
                    width: 160rpx;
                    height: 64rpx;
                    background: rgba(255, 93, 91, .1);
                    border-radius: 40rpx;
                    text-align: center;
                    font-size: 32upx;
                    font-weight: 400;
                    line-height: 64rpx;
                }
                .reject {
                    color: rgba(255,93,91,1);
                    background-color: rgba(255, 93, 91, .1);
                }
                .aggree {
                    color: rgba(39,40,50,1);
                    background-color: rgba(255,228,49,1);
                }
                .header-img {
                    margin-top: -52rpx;
                    flex: auto;
                    text-align: center;
                    image {
                        width: 144rpx;
                        height: 144rpx;
                        border-radius: 50%;
                    }
                }
            }
            .request-center {
                text-align: center;
                padding-top: 20rpx;
                padding-bottom: 40rpx;
                .title {
                    font-size: 36rpx;
                    font-weight: 500;
                    color: rgba(39,40,50,1);
                    line-height: 50rpx;
                }
                .time {
                    font-size: 24upx;
                    color: rgba(39,40,50,0.4);
                    line-height: 34rpx;
                }
            }
            .notic {
                font-size: 28upx;
                color: rgba(39,40,50,1);
                line-height: 40rpx;
                padding: 10px 32upx;
                border-radius: 20upx;
                background: rgba(243,244,246,1);
            }
        }
    }
</style>
pages/groupChat/groupChat.vue
@@ -30,6 +30,19 @@
                    <div>
                        <div class="m-main">
                            <!-- <view class="inTitle">{{Task}}</view> -->
                            <view class="applys" @click="toFriendRequest">
                                <view class="head-wrap">
                                    <image src="../../static/apply.png" class="head" />
                                    <view v-if=false class="tip">233</view>
                                </view>
                                <view class="content-wrap">
                                    <text class="name">好友申请</text>
                                    <text class="mess">若人生只如初见</text>
                                </view>
                                <view class="data-wrap">
                                    <text class="data"></text>
                                </view>
                            </view>
                            <view class="inTmain">
                                <contacts v-for="(item,index) in dataListTXL" :key="index" :Pdata="item" :fromW="indexs"
                                    @refreshTask="refreshTask"></contacts>
@@ -158,10 +171,10 @@
                    });
                } else if (this.current == 1) {
                    uni.request({
                        url: this.$store.state.piAPI + "/blade-user/page?current=1&size=9999",
                        url: this.$store.state.piAPI + "/friend/page?current=1&size=9999",
                        method: "get",
                        data: {
                            senderId: WxStorage.get("ids")
                            applicant: WxStorage.get("ids")
                        },
                        success: (res) => {
                            var resdata = res.data.data.records;
@@ -172,7 +185,7 @@
                                }
                            }
                            that.dataListTXL = resdata;
                            that.swiperHeight = resdata.length * 85;
                            // that.swiperHeight = resdata.length * 95;
                        }
                    })
                } else if (this.current == 2) {
@@ -193,13 +206,17 @@
                            that.dataListQZ = resdata;
                            that.swiperHeight = resdata.length * 85;
                        }
                    })
                    });
                }
            },
            refreshTask() {
                this.getdataList(1);
            },
            toFriendRequest(){
                uni.navigateTo({
                    url: '/pages/groupChat/friendrequest?'
                });
            }
        },
        mounted() {
            this.beginObj();
@@ -222,14 +239,14 @@
        onLoad: function(options) {
            this.userName = options.login;
            // if(options.txlType == 2){
            this.current = 2;
            // this.current = 0;
            // }
        }
    }
</script>
<style lang="scss">
<style lang="scss" scoped>
    .work {
        width: 100%;
        height: 100%;
@@ -271,7 +288,7 @@
        }
        .main {
            margin-top: 0.625rem;
            margin-top: 0.225rem;
            .m-title {
                width: 100%;
@@ -313,6 +330,7 @@
            }
            .m-main {
                padding-left: 32upx;
                box-sizing: border-box;
            }
        }
@@ -323,4 +341,87 @@
        height: auto;
        margin-right: 27rpx;
    }
    .top-bar {
        background-color: rgba(255, 255, 255, .96);
        // background-color: #42B983;
        box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, .1);
    }
    .applys {
        display: flex;
        // margin: 40rpx 0;
        padding: 40rpx 0;
        height: 130rpx;
        padding: 16upx 0;
        align-items: center;
        border-bottom: 1px solid rgba(0, 0, 0, .1);
        &:active {
            background-color: rgba(243, 244, 246, 1);
        }
        .head-wrap {
            position: relative;
            image {
                width: 96rpx;
                height: 96rpx;
                border-radius: 20upx;
                background-color: rgba(255, 228, 49, 1);
            }
            .tip {
                position: absolute;
                top: -6rpx;
                left: 68rpx;
                height: 36rpx;
                min-width: 20rpx;
                min-height: 20rpx;
                background-color: rgba(255, 93, 91, 1);
                border-radius: 18rpx;
                padding: 0 6rpx;
                font-size: 24upx;
                color: rgba(255, 228, 49, 1);
                line-height: 36rpx;
                text-align: center;
            }
        }
        .content-wrap {
            margin-left: 32rpx;
            flex: 1;
            .name {
                display: block;
                color: rgba(39, 40, 50, 1);
                font-size: 36rpx;
                font-weight: 400;
                line-height: 50rpx;
            }
            .mess {
                display: block;
                color: rgba(39, 40, 50, .6);
                font-size: 28upx;
                line-height: 40rpx;
                display: -webkit-box;
                -webkit-box-orient: vertical;
                -webkit-line-clamp: 1;
                overflow: hidden;
            }
        }
        .data-wrap {
            justify-content: right;
            .data {
                font-size: 24upx;
                color: rgba(39, 40, 50, 0.4);
                line-height: 50rpx;
            }
        }
    }
</style>
static/apply.png
store/actions.js
@@ -17,7 +17,7 @@
        var addr = position.addr; //详细地址
        wx.request({
            url: this.$store.state.piAPI + "/liveLocation/saveLiveLocationAndLocus",
            url: store.state.piAPI + "/liveLocation/saveLiveLocationAndLocus",
            method: "post",
            data: {
                type: 1,
@@ -116,7 +116,7 @@
                        30000)
                    uni.request({
                        url: this.$store.state.piAPI + "/blade-system/dept/detail?id=" + res
                        url: store.state.piAPI + "/blade-system/dept/detail?id=" + res
                            .data.dept_id,
                        method: "get",
                        data: {
store/index.js
@@ -34,9 +34,9 @@
        },
        logPath: '',
        // piAPI: 'http://223.82.109.183:2080/api',
        piAPI: 'http://223.82.109.183:2080/api',
        // piAPI: 'http://223.82.109.183:2080/api',
        api: 'http://223.82.109.183:2080/api',
        // piAPI: 'http://localhost:82/',
        piAPI: 'http://localhost:81/',
        // piAPI: 'http://192.168.0.108:81',
        puserName: '',
        puserID: '',