From 919cf3e086c89141a2cabd4e92a1776f6b32679a Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Thu, 25 Nov 2021 19:57:18 +0800
Subject: [PATCH] 验收版本
---
api/mock/dispatch.js | 32
pages/home/home.vue | 215 ++
static/images/message/unit.png | 0
components/submit/submit.vue | 13
api/mock/home.js | 4
utils/func.js | 1
pages/dispatch/lookDetail.vue | 2
pages/examine/examine.vue | 18
pages/examine/addpeople.vue | 149 +
static/images/message/send.png | 0
mapWz/js/vueMain.js | 30
store/index.js | 2
pages/message/message.vue | 12
components/contacts/contacts.vue | 19
pages/user/profile.vue | 183 +
pages/dispatch/index.vue | 85 +
pages/map/map.vue | 42
pages/securityStaff/information.vue | 35
pages/company/companyDetail.vue | 169 +-
pages/dispatch/imgissue.vue | 217 ++
pages/dispatch/text.vue | 261 +++
pages/groupChat/chating.vue | 125 +
static/images/dispatch/issue.png | 0
pages/dispatch/receive.vue | 372 +++++
pages/examine/addunit.vue | 130 +
pages/login/login-account.vue | 4
pages/groupChat/newGroup/newGroup.vue | 25
static/images/dispatch/imgissue.png | 0
static/images/message/security.png | 0
pages.json | 66
pages/dispatch/send.vue | 374 +++++
pages/message/addMessage.vue | 263 +++
pages/report/report.vue | 12
static/images/dispatch/look.png | 0
static/images/dispatch/up-down.png | 0
pages/report/initiate.vue | 324 +++-
/dev/null | 548 --------
pages/securityStaff/exhibition.vue | 196 ++
pages/user/center.vue | 25
mapWz/css/body.css | 10
exam-app.iml | 9
pages/manage/manage.vue | 55
42 files changed, 2,897 insertions(+), 1,130 deletions(-)
diff --git a/api/mock/dispatch.js b/api/mock/dispatch.js
new file mode 100644
index 0000000..afd04a8
--- /dev/null
+++ b/api/mock/dispatch.js
@@ -0,0 +1,32 @@
+// 获取服务按钮数据
+export function fakeServiceButton() {
+ return new Promise((resolute, reject) => {
+ try {
+ const list = [{
+ name: '下发指令查询',
+ img: '/static/images/dispatch/up-down.png',
+ url: '../dispatch/send'
+ },
+ {
+ name: '接收指令查询',
+ img: '/static/images/dispatch/look.png',
+ url: '../dispatch/receive'
+ },
+ {
+ name: '文字指令下发',
+ img: '/static/images/dispatch/issue.png',
+ url: '../dispatch/text'
+ },
+ {
+ name: '图片指令下发',
+ img: '/static/images/dispatch/imgissue.png',
+ url: '../dispatch/imgissue'
+ }
+ ];
+ resolute(list);
+ } catch (e) {
+ //模拟接口请求失败
+ reject(e);
+ }
+ })
+}
diff --git a/api/mock/home.js b/api/mock/home.js
index a02821d..908cd55 100644
--- a/api/mock/home.js
+++ b/api/mock/home.js
@@ -125,7 +125,7 @@
{
name: '调度指令',
img: '/static/images/home/s11.png',
- url: '../dispatch/dispatch'
+ url: '../dispatch/index'
},
{
name: '通知通告',
@@ -138,7 +138,7 @@
url: '../examine/examine'
},
{
- name: '位置查看',
+ name: '保安员位置',
img: '/static/images/wz.png',
url: '../map/map'
}
diff --git a/components/contacts/contacts.vue b/components/contacts/contacts.vue
index e49ab03..b581882 100644
--- a/components/contacts/contacts.vue
+++ b/components/contacts/contacts.vue
@@ -9,7 +9,7 @@
</view>
<view class="content-wrap">
<text class="name">{{Pdata.recipientName}}</text>
- <text class="mess">{{Pdata.postMessage}}</text>
+ <text class="mess">{{isJSON(Pdata.postMessage) == true ? '[语音]' : Pdata.postMessage}}</text>
</view>
<view class="data-wrap">
<text class="data">{{Pdata.postTime}}</text>
@@ -66,6 +66,23 @@
}
},
methods: {
+ isJSON(str) {
+
+ if (typeof str == 'string') {
+ try {
+ var obj = JSON.parse(str);
+ if (typeof obj == 'object' && obj) {
+ return true;
+ } else {
+ return false;
+ }
+
+ } catch (e) {
+ return false;
+ }
+ }
+
+ },
beginObj() {
this.bmainb = '3rem';
//#ifdef MP-WEIXIN
diff --git a/components/submit/submit.vue b/components/submit/submit.vue
index 918e8a1..7deab6e 100644
--- a/components/submit/submit.vue
+++ b/components/submit/submit.vue
@@ -3,7 +3,7 @@
<view class="submit">
<view class="submit-chat">
<view class="bt-img">
- <image src="../../static/images/chatroom/voice.png" mode="" @tap="records" />
+ <image :src="audio" mode="" @tap="records" />
</view>
<textarea auto-height="true" class="chat-send btn" :class="{displaynone: isrecord}" @input="inputs"
v-model="msg" @focus="focus" />
@@ -87,6 +87,7 @@
timer: '',
vlength: 0,
pageY: 0,
+ audio: "../../static/start-audio.png"
};
},
mounted() {
@@ -105,12 +106,19 @@
},
// 点击切换音频
records() {
+ if (this.audio == "../../static/start-audio.png") {
+ this.audio = "../../static/start-input.png"
+ } else {
+ this.audio = "../../static/start-audio.png"
+ }
this.isrecord = !this.isrecord
this.isemoji = false
this.ismore = false
+
setTimeout(() => {
this._getElementHeight()
}, 10)
+
},
// 点击弹出表情
emoji() {
@@ -170,10 +178,12 @@
},
// 发送消息
send(msg, type) {
+
let data = {
message: msg,
types: type
}
+
this.$emit('inputs', data)
setTimeout(() => {
this.msg = ''
@@ -225,6 +235,7 @@
clearInterval(this.timer)
recorderManager.stop()
recorderManager.onStop((res) => {
+ console.log(res, 4589)
let data = {
voice: res.tempFilePath,
time: this.vlength
diff --git a/exam-app.iml b/exam-app.iml
new file mode 100644
index 0000000..48426fc
--- /dev/null
+++ b/exam-app.iml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+ <component name="NewModuleRootManager">
+ <output url="file://$MODULE_DIR$/bin" />
+ <exclude-output />
+ <content url="file://$MODULE_DIR$" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ </component>
+</module>
\ No newline at end of file
diff --git a/mapWz/css/body.css b/mapWz/css/body.css
index ccc1ccd..2e98777 100644
--- a/mapWz/css/body.css
+++ b/mapWz/css/body.css
@@ -11,7 +11,7 @@
html,
body,
-#mapVue {
+#mapVue {.dingwei
width: 100%;
height: 100%;
}
@@ -29,10 +29,10 @@
.dingwei {
position: fixed;
- width: 38px;
- height: 38px;
- top: 100px;
- right: 0;
+ width: 34px;
+ height: 34px;
+ right: 10px;
+ bottom: 10px;
z-index: 100;
background-color: #fff;
border-radius: 20px;
diff --git a/mapWz/js/vueMain.js b/mapWz/js/vueMain.js
index ab33475..2d50583 100644
--- a/mapWz/js/vueMain.js
+++ b/mapWz/js/vueMain.js
@@ -1,8 +1,8 @@
/*
* @Author: Morpheus
* @Date: 2021-08-26 16:22:11
- * @Last Modified by: Morpheus
- * @Last Modified time: 2021-08-26 16:22:11
+ * @Last Modified by: Morpheus
+ * @Last Modified time: 2021-08-28 15:03:25
*/
var me = new Vue({
el: '#mapVue',
@@ -43,7 +43,25 @@
this.userId = this.GetQueryString('userid')
- axios.get('http://223.82.109.183:2080/api/blade-user/pages?dispatch=0&jurisdiction=' + jurisdictionId + '¤t=1&size=999999').then((res) => {
+ var deptid = this.GetQueryString('deptid')
+
+ var roleName = this.GetQueryChinese('roleName')
+
+ console.log(roleName)
+
+ var url = ''
+
+ if (roleName == '保安公司管理员') {
+
+ url = 'http://223.82.109.183:2080/api/blade-user/pages?¤t=1&size=999999&deptId=' + deptid
+
+ } else {
+
+ url = 'http://223.82.109.183:2080/api/blade-user/pages?dispatch=0&jurisdiction=' + jurisdictionId + '¤t=1&size=999999'
+
+ }
+
+ axios.get(url).then((res) => {
if (res.data.data.records.length > 0) {
res.data.data.records.forEach(item => {
@@ -68,6 +86,12 @@
if (r != null) return unescape(r[2]);
return null;
},
+ GetQueryChinese(name) {
+ var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
+ var r = window.location.search.substr(1).match(reg);
+ if (r != null) return decodeURI(r[2]);
+ return null;
+ },
beginMap(map, data) {
var that = this,
center = [28.708432053474827, 115.85883507433789];
diff --git a/pages.json b/pages.json
index ce4f522..74d4425 100644
--- a/pages.json
+++ b/pages.json
@@ -111,9 +111,10 @@
{
"path": "pages/securityStaff/information",
"style": {
- "navigationBarTitleText": "详细信息",
- "enablePullDownRefresh": false,
- "navigationStyle": "custom"
+ "navigationBarTitleText": "个人信息",
+ "navigationBarBackgroundColor": "#0BB9C8",
+ "navigationBarTextStyle": "white",
+ "enablePullDownRefresh": false
}
},
{
@@ -128,7 +129,7 @@
{
"path": "pages/company/companyDetail",
"style": {
- "navigationBarTitleText": "保安单位管理",
+ "navigationBarTitleText": "单位保安员统计",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#0BB9C8",
"navigationBarTextStyle": "white"
@@ -172,13 +173,48 @@
}
},
{
- "path": "pages/dispatch/dispatch",
+ "path": "pages/dispatch/index",
"style": {
"navigationBarTitleText": "调度指令",
- "enablePullDownRefresh": true,
+ "enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#0BB9C8",
- "navigationBarTextStyle": "white",
- "navigationStyle": "custom"
+ "navigationBarTextStyle": "white"
+ }
+ },
+ {
+ "path": "pages/dispatch/send",
+ "style": {
+ "navigationBarTitleText": "下发指令查询",
+ "enablePullDownRefresh": false,
+ "navigationBarBackgroundColor": "#0BB9C8",
+ "navigationBarTextStyle": "white"
+ }
+ },
+ {
+ "path": "pages/dispatch/receive",
+ "style": {
+ "navigationBarTitleText": "接收指令查询",
+ "enablePullDownRefresh": false,
+ "navigationBarBackgroundColor": "#0BB9C8",
+ "navigationBarTextStyle": "white"
+ }
+ },
+ {
+ "path": "pages/dispatch/text",
+ "style": {
+ "navigationBarTitleText": "文字指令下发",
+ "enablePullDownRefresh": false,
+ "navigationBarBackgroundColor": "#0BB9C8",
+ "navigationBarTextStyle": "white"
+ }
+ },
+ {
+ "path": "pages/dispatch/imgissue",
+ "style": {
+ "navigationBarTitleText": "图片指令下发",
+ "enablePullDownRefresh": false,
+ "navigationBarBackgroundColor": "#0BB9C8",
+ "navigationBarTextStyle": "white"
}
},
{
@@ -190,15 +226,7 @@
"navigationBarTextStyle": "white"
}
},
- {
- "path": "pages/dispatch/imgissue",
- "style": {
- "navigationBarTitleText": "指令下发",
- "enablePullDownRefresh": false,
- "navigationBarBackgroundColor": "#0BB9C8",
- "navigationBarTextStyle": "white"
- }
- },
+
{
"path": "pages/message/message",
"style": {
@@ -221,7 +249,7 @@
{
"path": "pages/message/addMessage",
"style": {
- "navigationBarTitleText": "新增通知通告",
+ "navigationBarTitleText": "发送通知",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#0BB9C8",
"navigationBarTextStyle": "white"
@@ -271,7 +299,7 @@
}, {
"path": "pages/map/map",
"style": {
- "navigationBarTitleText": "位置查看",
+ "navigationBarTitleText": "保安员位置",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#0BB9C8",
"navigationBarTextStyle": "white"
diff --git a/pages/company/companyDetail.vue b/pages/company/companyDetail.vue
index f0758a1..a3688db 100644
--- a/pages/company/companyDetail.vue
+++ b/pages/company/companyDetail.vue
@@ -1,104 +1,97 @@
<template>
<view class="container">
- <u-tabs :list="list" :is-scroll="false" :current="current" active-color="#14B9C8" inactive-color="#595959"
- height="100" @change="change"></u-tabs>
+ <u-form :model="detailData" ref="uForm" class="companyForm">
- <view v-show="current == 0">
+ <u-form-item label-width='132' label="单位名称">
+ <span> {{ detailData.enterprisename }} </span>
+ </u-form-item>
- <view style="
+ <u-form-item label-width='132' label="成立日期">
+ <span> {{ detailData.establishtime }} </span>
+ </u-form-item>
+
+ <u-form-item label-width='158' label="法定代表人">
+ <span> {{ detailData.representative }} </span>
+ </u-form-item>
+
+ <u-form-item label-width='266' label="法定代表人联系方式">
+ <span> {{ detailData.representativecell }} </span>
+ </u-form-item>
+
+ <u-form-item label-width='98' label="联系人">
+ <span> {{ detailData.contacts }} </span>
+ </u-form-item>
+
+ <u-form-item label-width='152' label="联系人电话">
+ <span> {{ detailData.contactscell }} </span>
+ </u-form-item>
+
+ <u-form-item label-width='132' label="注册资本">
+ <span> {{ detailData.registeredcapital }} </span>
+ </u-form-item>
+
+ <u-form-item label-width='132' label="实缴资本">
+ <span> {{ detailData.capital }} </span>
+ </u-form-item>
+
+ <u-form-item label-width='132' label="注册地址">
+ <span> {{ detailData.address }} </span>
+ </u-form-item>
+
+ <u-form-item label-width='132' label="经营范围">
+ <span> {{ detailData.business }} </span>
+ </u-form-item>
+
+ <u-form-item label-width='132' label="所属地区">
+ <span> {{ detailData.region }} </span>
+ </u-form-item>
+
+ <u-form-item label-width='132' label="登记机关">
+ <span> {{ detailData.registration }} </span>
+ </u-form-item>
+
+ <u-form-item label-width='132' label="所属行业">
+ <span> {{ detailData.industry }} </span>
+ </u-form-item>
+
+ <u-form-item label-width='158' label="工商注册号">
+ <span> {{ detailData.registrationnumber }} </span>
+ </u-form-item>
+
+ <u-form-item label-width='184' label="组织机构代码">
+ <span> {{ detailData.organizationcode }} </span>
+ </u-form-item>
+
+ <u-form-item label-width='184' label="纳税人识别号">
+ <span> {{ detailData.identificationnumber }} </span>
+ </u-form-item>
+
+ <u-form-item label-width='236' label="统一社会信用代码">
+ <span> {{ detailData.creditcode }} </span>
+ </u-form-item>
+
+ <u-form-item label-width='132' label="营业执照">
+ <img style="width: calc(100%)" :src="detailData.businessLicense" alt="">
+ </u-form-item>
+
+ </u-form>
+
+ <view style="
width: 100%;
height:500rpx;
margin-top: 30rpx;">
- <l-echart ref="chart"></l-echart>
-
- </view>
-
- <view style="
- width: 100%;
- height:500rpx;
- margin-top: 30rpx;">
-
- <l-echart ref="certificateEchart"></l-echart>
-
- </view>
+ <l-echart ref="chart"></l-echart>
</view>
- <view v-show="current == 1">
+ <view style="
+ width: 100%;
+ height:500rpx;
+ margin-top: 30rpx;">
- <u-form :model="detailData" ref="uForm" class="companyForm">
-
- <u-form-item label-width='132' label="单位名称">
- <span> {{ detailData.enterprisename }} </span>
- </u-form-item>
-
- <u-form-item label-width='132' label="成立日期">
- <span> {{ detailData.establishtime }} </span>
- </u-form-item>
-
- <u-form-item label-width='158' label="法定代表人">
- <span> {{ detailData.representative }} </span>
- </u-form-item>
-
- <u-form-item label-width='266' label="法定代表人联系方式">
- <span> {{ detailData.representativecell }} </span>
- </u-form-item>
-
- <u-form-item label-width='98' label="联系人">
- <span> {{ detailData.contacts }} </span>
- </u-form-item>
-
- <u-form-item label-width='152' label="联系人电话">
- <span> {{ detailData.contactscell }} </span>
- </u-form-item>
-
- <u-form-item label-width='132' label="注册资本">
- <span> {{ detailData.registeredcapital }} </span>
- </u-form-item>
-
- <u-form-item label-width='132' label="实缴资本">
- <span> {{ detailData.capital }} </span>
- </u-form-item>
-
- <u-form-item label-width='132' label="注册地址">
- <span> {{ detailData.address }} </span>
- </u-form-item>
-
- <u-form-item label-width='132' label="经营范围">
- <span> {{ detailData.business }} </span>
- </u-form-item>
-
- <u-form-item label-width='132' label="所属地区">
- <span> {{ detailData.region }} </span>
- </u-form-item>
-
- <u-form-item label-width='132' label="登记机关">
- <span> {{ detailData.registration }} </span>
- </u-form-item>
-
- <u-form-item label-width='132' label="所属行业">
- <span> {{ detailData.industry }} </span>
- </u-form-item>
-
- <u-form-item label-width='158' label="工商注册号">
- <span> {{ detailData.registrationnumber }} </span>
- </u-form-item>
-
- <u-form-item label-width='184' label="组织机构代码">
- <span> {{ detailData.organizationcode }} </span>
- </u-form-item>
-
- <u-form-item label-width='184' label="纳税人识别号">
- <span> {{ detailData.identificationnumber }} </span>
- </u-form-item>
-
- <u-form-item label-width='236' label="统一社会信用代码">
- <span> {{ detailData.creditcode }} </span>
- </u-form-item>
-
- </u-form>
+ <l-echart ref="certificateEchart"></l-echart>
</view>
diff --git a/pages/dispatch/dispatch.vue b/pages/dispatch/dispatch.vue
deleted file mode 100644
index c0c0018..0000000
--- a/pages/dispatch/dispatch.vue
+++ /dev/null
@@ -1,548 +0,0 @@
-<template>
-
- <view class="page-container" style="height: 100%; position: relative;">
- <view class="head top-absolute">
- <u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title=""
- :background="{ background: '#0BB9C8' }">
- <view class="nav-wrap">
-
- <view style="position: relative;">
-
- <view class="btn-return-box">
- <view class="btn-return">
- <i class="uni-btn-icon" @click="goReturnPage"
- style="color: rgb(255, 255, 255); font-size: 27px;"></i>
- </view>
- </view>
-
- <span class="header-title">调度指令</span>
-
- <u-icon @click="goToAddPage" top='4' class="header-add" name="plus" color="#fff">
- </u-icon>
-
- </view>
-
- </view>
- </u-navbar>
- </view>
- <view class="head">
- <u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title=""
- :background="{ background: '#0BB9C8' }">
- <view class="nav-wrap">
-
- <view style="position: relative;">
-
- <view class="btn-return-box">
- <view class="btn-return">
- <i class="uni-btn-icon" @click="goReturnPage"
- style="color: rgb(255, 255, 255); font-size: 27px;"></i>
- </view>
- </view>
-
- <span class="header-title">调度指令</span>
-
- <u-icon @click="goToAddPage" top='4' class="header-add" name="plus" color="#fff">
- </u-icon>
-
- </view>
-
- </view>
- </u-navbar>
- </view>
-
- <view class="wrapper">
-
- <view class="body">
-
- <view class="body-content">
-
- <u-tabs :list="list" :is-scroll="false" :current="current" active-color="#14B9C8"
- inactive-color="#595959" height="100" @change="change"></u-tabs>
-
- <u-search v-model='keyValue' placeholder='请输入指令内容' shape="round" class="u-search"
- input-align="center" height="70" @search='searchValue' @custom='searchValue' @clear='clearValue'
- @change='changeValue'>
- </u-search>
-
- <view v-show="current == 0 && newsList.length > 0">
- <view class="inTmain" v-for="(item,index) in newsList">
- <u-card :title="item.content" @click="goDetail(item)">
- <view class="" slot="body">
- <view>
- <view style="margin-bottom: 10px;" class="u-body-item-title u-line-2">
- 发送指令人:{{item.sendName}}</view>
- </view>
- <view>
- <view class="u-body-item-title u-line-2">接受指令人:{{item.receiveName}}</view>
- </view>
- </view>
- <view class="" slot="foot">
- </u-icon>发送指令时间:{{item.sendTime}}</view>
- </u-card>
- </view>
- <u-loadmore class='msg' :status="status" />
- </view>
-
- <view v-show="current == 1 && newsList.length > 0">
- <view class="inTmain" v-for="(item,index) in newsList">
- <u-card :title="item.content" @click="goDetail(item)">
- <view class="" slot="body">
- <view>
- <view style="margin-bottom: 10px;" class="u-body-item-title u-line-2">
- 发送指令人:{{item.sendName}}</view>
- </view>
- <view>
- <view class="u-body-item-title u-line-2">接受指令人:{{item.receiveName}}</view>
- </view>
- </view>
- <view class="" slot="foot">
- </u-icon>发送指令时间:{{item.sendTime}}</view>
- </u-card>
- </view>
- <u-loadmore class='msg' :status="status" />
- </view>
-
- <view class="msg" v-show='newsList.length == 0'>
- 暂无数据
- </view>
-
- </view>
-
- </view>
-
- </view>
- </view>
-
-</template>
-
-<script>
- export default {
- data() {
- return {
-
- list: [{
- name: '发送指令'
- },
- {
- name: '接收指令'
- }
- ],
-
- current: 0,
-
- dataList: [],
- newsList: [],
-
- status: 'loadmore',
- keyValue: '',
-
- dataList: [],
- newsList: [],
- pagelist: 0,
- pages: 0,
- flag: true,
-
- pullDown: false
-
- };
- },
- onLoad() {
-
- },
- onReachBottom() {
- var that = this;
-
- if (that.flag == false) {
- that.status = 'nomore';
- return
- }
- // 后续将改为与后端联动
- that.status = 'loading';
-
- setTimeout(() => {
- if (that.current == 0) {
- that.getReceive();
- } else {
- that.getSend();
- }
- }, 1000);
- },
-
- onPullDownRefresh: function() {
- var that = this;
-
- this.pullDown = true;
- this.pagelist = 0;
- this.pages = 0;
- this.flag = true;
- this.dataList = [];
- this.newsList = [];
- this.status = 'loading';
- this.keyValue = '';
- setTimeout(() => {
- if (that.current == 0) {
- that.getReceive();
- } else {
- that.getSend();
- }
- }, 1000)
-
- },
- mounted() {
- this.getReceive();
- },
- methods: {
- getReceive() {
- var that = this;
-
- if (that.pagelist < that.pages || that.pagelist == 0) {
- that.pagelist++
- } else if (that.pagelist == that.pages) {
- that.flag = false
- that.status = 'nomore';
- return
- }
-
- uni.request({
- url: this.$store.state.piAPI + "/directive/page?receiveDirectiveIds=" + this.$store.state
- .puserID,
- method: "get",
- data: {
- current: that.pagelist,
- size: 10
- },
- success: (res) => {
- that.pages = res.data.data.pages;
-
- var resdata = res.data.data.records;
-
- if (this.pullDown == true) {
- this.pullDown = false;
- uni.stopPullDownRefresh();
- }
-
- if (resdata.length == 0) {
- that.flag = false
- that.status = 'nomore';
- return
- } else {
- resdata.forEach(item => {
- that.newsList.push(item)
- that.dataList.push(item)
- })
- }
-
- if (that.pagelist == that.pages) {
- that.flag = false
- that.status = 'nomore';
- return
- }
-
- }
- });
- },
- getSend() {
- var that = this;
-
- if (that.pagelist < that.pages || that.pagelist == 0) {
- that.pagelist++
- } else if (that.pagelist == that.pages) {
- that.flag = false
- that.status = 'nomore';
- return
- }
-
- uni.request({
- url: this.$store.state.piAPI + "/directive/page?sendDirectiveId=" + this.$store.state.puserID,
- method: "get",
- data: {
- current: that.pagelist,
- size: 10
- },
- success: (res) => {
- that.pages = res.data.data.pages;
-
- var resdata = res.data.data.records;
-
- if (this.pullDown == true) {
- this.pullDown = false;
- uni.stopPullDownRefresh();
- }
-
- if (resdata.length == 0) {
- that.flag = false
- that.status = 'nomore';
- return
- } else {
- resdata.forEach(item => {
- that.newsList.push(item)
- that.dataList.push(item)
- })
- }
-
- if (that.pagelist == that.pages) {
- that.flag = false
- that.status = 'nomore';
- return
- }
-
- }
- });
- },
- goDetail(item) {
- uni.navigateTo({
- url: './lookDetail?detailData=' + JSON.stringify(item)
- });
- },
- change(index) {
- if (this.current == index) return;
- this.dataList = [];
- this.newsList = [];
- this.pagelist = 0;
- this.pages = 0;
- this.flag = true;
- this.current = index;
- if (index == 0) {
- this.getReceive();
- } else {
- this.getSend();
- }
- },
- searchValue(value) {
- var that = this;
- var str = value.replace(/\s*/g, "");
- if (str == '') {
- return
- } else {
- that.newsList = [];
-
- if (that.current == 0) {
- uni.request({
- url: this.$store.state.piAPI + "/directive/page?receiveDirectiveIds=" + this.$store
- .state
- .puserID,
- method: "get",
- data: {
- current: 1,
- size: 999999,
- content: str
- },
- success: (res) => {
- var resdata = res.data.data.records;
-
- resdata.forEach(item => {
- that.newsList.push(item)
- })
-
- }
- });
- } else {
- uni.request({
- url: this.$store.state.piAPI + "/directive/page?sendDirectiveId=" + this.$store.state
- .puserID,
- method: "get",
- data: {
- current: 1,
- size: 999999,
- content: str
- },
- success: (res) => {
- var resdata = res.data.data.records;
-
- resdata.forEach(item => {
- that.newsList.push(item)
- })
-
- }
- });
- }
-
- that.flag = false
- that.status = 'nomore';
- }
- },
- clearValue() {
- this.keyValue = ''
- this.newsList = [];
-
- this.dataList.forEach(item => {
- this.newsList.push(item)
- })
-
- if (this.pagelist < this.pages) {
- this.flag = true;
- this.status = 'loading';
- } else {
- this.flag = false;
- this.status = 'nomore';
- }
- },
- changeValue(value) {
- if (value == '') {
- this.newsList = [];
-
- this.dataList.forEach(item => {
- this.newsList.push(item)
- })
-
- if (this.pagelist < this.pages) {
- this.flag = true;
- this.status = 'loading';
- } else {
- this.flag = false;
- this.status = 'nomore';
- }
- }
- },
- goReturnPage() {
- uni.switchTab({
- url: '/pages/home/home'
- });
- },
- goToAddPage() {
- uni.navigateTo({
- url: './imgissue'
- });
- },
- }
- };
-</script>
-
-<style lang="scss">
- .page-container {
- position: fixed;
- display: block;
- width: 100%;
- max-height: 100vh;
-
-
-
- .head {
- position: relative;
-
-
- width: 100%;
-
-
- .nav-wrap {
- width: 100%;
- height: 44px;
- line-height: 30px;
- padding: 7px 3px;
- height: calc(44px + constant(safe-area-inset-top));
- height: calc(44px + env(safe-area-inset-top));
- color: rgb(255, 255, 255);
-
- .btn-return-box {
- display: flex;
- align-items: center;
- font-size: 16px;
- box-sizing: border-box;
-
- .btn-return {
- position: relative;
- width: auto;
- margin: 0 2px;
- word-break: keep-all;
- white-space: pre;
- cursor: pointer;
- }
- }
-
- .header-title {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- margin: auto;
- width: 60%;
- font-weight: 700;
- line-height: 30px;
- font-size: 16px;
- opacity: 1;
- text-overflow: ellipsis;
- text-align: center;
- min-width: 1em;
- }
-
- .header-add {
- position: absolute;
- top: 0;
- left: auto;
- right: 3px;
- bottom: 0;
- margin: auto;
- display: inline-block;
- font: normal normal normal 14px/1 unibtn;
- text-rendering: auto;
- -webkit-font-smoothing: antialiased;
- font-size: 24px;
- }
- }
-
- }
-
- .top-absolute {
- position: fixed;
- top: 0;
- left: 0;
- z-index: 101;
- }
-
- .wrapper {
-
- width: 100%;
- display: block;
- height: calc(100% - 44px);
- height: calc(100% - 44px - constant(safe-area-inset-top));
- height: calc(100% - 44px - env(safe-area-inset-top));
-
- .body {
- width: 100%;
- height: 100%;
- overflow-x: hidden;
- overflow-y: auto;
-
- .body-content {
- height: auto;
-
- }
-
- }
-
- }
- }
-
- .u-card-wrap {
- background-color: $u-bg-color;
- padding: 1px;
- }
-
- .u-body-item {
- font-size: 32rpx;
- color: #333;
- padding: 20rpx 10rpx;
- }
-
- .u-body-item image {
- width: 120rpx;
- flex: 0 0 120rpx;
- height: 120rpx;
- border-radius: 8rpx;
- margin-left: 12rpx;
- }
-
- .u-search {
- padding: 20rpx 30rpx 0 30rpx;
- }
-
- .inTmain {}
-
- .msg {
- height: 72rpx;
- line-height: 72rpx;
- text-align: center;
- color: #999;
- }
-</style>
diff --git a/pages/dispatch/imgissue.vue b/pages/dispatch/imgissue.vue
index 9782158..8c4db3a 100644
--- a/pages/dispatch/imgissue.vue
+++ b/pages/dispatch/imgissue.vue
@@ -1,20 +1,50 @@
<template>
<view class="container">
- <view class='initiae-box'>
+
+ <view class="group-chat-box">
+
<u-form :model="form" ref="uForm">
<u-form-item label-width='132' prop="content" label="指令内容" :required="true">
<u-input type='textarea' v-model="form.content" placeholder="请输入指令内容" />
</u-form-item>
-
+
<u-form-item label-width='158' prop="recipientText" label="指令接收人" :required="true">
-
- <u-input v-model="form.recipientText" type="select" placeholder="请选择接收人" :border="false"
- @click="recipientClick" />
- <u-select v-model="recipientShow" mode="mutil-column-auto" :list="recipientList"
- @confirm="recipientConfirm">
- </u-select>
-
+
+ <u-input type='textarea' v-model="form.recipientPeople" placeholder="请选择指令接收人"
+ @click="recipientClick" autoHeight />
+
+ <!-- <u-button slot="right" type="success" size="mini" @click="recipientClick">选择接收人</u-button> -->
+
+ <u-popup :closeable="true" v-model="recipientShow" mode="bottom" height="50%" border-radius="14">
+
+ <view>
+
+ <u-checkbox-group v-show="recipientList.length > 0" @change="checkboxGroupChange"
+ :wrap='true' :size="40">
+
+ <u-checkbox v-model="item.checked" v-for="(item, index) in recipientList" :key="index"
+ :name="item.id" shape="circle"
+ style="padding: 0 40rpx; height: 92rpx; position: relative; box-sizing: border-box;">
+
+ <view style="margin-left: 22rpx">
+ {{item.real_name}}
+ </view>
+
+ </u-checkbox>
+
+ </u-checkbox-group>
+
+ <view style=" height: 92rpx; padding: 0 40rpx;" v-show="recipientList.length == 0">
+
+ 暂无数据
+
+ </view>
+
+ </view>
+
+ </u-popup>
+
</u-form-item>
<u-form-item label-width='184' label="指令相关图片" class='imgissue-upload'>
@@ -24,13 +54,19 @@
</u-form-item>
</u-form>
- <view>
- <u-button type="primary" @click="initiateClick" style="margin-top: 4%; width: 60%;">发送</u-button>
- </view>
- <view>
- <u-toast ref="uToast" />
- </view>
+
</view>
+
+ <view class="establish-box">
+
+ <u-button class="submit" type="primary" @click="initiateClick">发送</u-button>
+
+ </view>
+
+ <view>
+ <u-toast ref="uToast" />
+ </view>
+
</view>
</template>
@@ -44,11 +80,11 @@
return {
recipientShow: false,
recipientList: [],
-
form: {
content: '',
recipient: '',
- recipientText: ''
+ recipientData: [],
+ recipientPeople: ''
},
rules: {
@@ -58,11 +94,7 @@
message: '指令内容不能少于5个字',
trigger: ['change', 'blur'],
}],
- recipientText: [{
- required: true,
- message: '请选择接收人',
- trigger: ['change', 'blur'],
- }],
+
},
imgs: [],
};
@@ -77,40 +109,48 @@
},
methods: {
recipientClick() {
+ if (this.recipientList.length > 0) {
+ this.recipientShow = true;
+ return;
+ }
+
uni.request({
- url: this.$store.state.piAPI + "/blade-system/dept/lazy-tree-user-app?userId=" + this.$store
- .state
- .UserData.user_id,
+ url: this.$store.state.piAPI + "/blade-user/seleL",
method: "get",
data: {
-
+ type: 1,
+ jurisdiction: this.$store.state
+ .UserData.jurisdiction,
},
success: (res) => {
this.recipientList = []
- res.data.forEach(item => {
- if (item.hasChildren) {
- this.recipientList.push(item)
+
+ res.data.data.forEach(item => {
+ var flag = true
+
+ if (this.recipientList.length > 0) {
+ this.recipientList.forEach(it => {
+ if (item.id == it.id) flag = false
+ })
}
+
+ if (flag == true) {
+ if (item.id != this.$store.state
+ .UserData.user_id
+ ) {
+ item.checked = false;
+ this.recipientList.push(item)
+ }
+ }
+
})
+
this.recipientShow = true;
}
});
},
- recipientConfirm(e) {
-
- if (e.length == 1) {
- this.form.recipient = e[0].value
- this.form.recipientText = e[0].label
- } else if (e.length == 2) {
- this.form.recipient = e[1].value
- this.form.recipientText = e[1].label
- } else if (e.length == 3) {
- this.form.recipient = e[2].value
- this.form.recipientText = e[2].label
- }
-
- },
+
initiateClick() {
var imgurl = '';
this.imgs.forEach((item, index) => {
@@ -122,12 +162,28 @@
})
this.$refs.uForm.validate(valid => {
if (valid) {
+
+ if (this.form.recipientData.length == 0) {
+ this.$refs.uToast.show({
+ title: '请最少选择一个接收人',
+ })
+ return
+ }
+
+ var str = '';
+
+ this.form.recipientData.forEach(item => {
+ str += item + ','
+ })
+
+ str = str.substr(0, str.length - 1);
+
uni.request({
url: this.$store.state.piAPI + "/directive/saveDirectiveAndFile",
method: "post",
data: {
// 接收
- receiveDirectiveIds: this.form.recipient,
+ receiveDirectiveIds: str,
// 发送
sendDirectiveId: this.$store.state
.UserData.user_id,
@@ -136,11 +192,11 @@
},
success: (res) => {
- if (res.data.msg == "操作成功") {
+ if (res.data.msg.indexOf('成功') != -1) {
this.$refs.uToast.show({
title: '指令下发成功',
type: 'success',
- url: '/pages/home/home'
+ url: '/pages/dispatch/dispatch'
})
}
}
@@ -206,13 +262,78 @@
}
});
},
+ checkboxGroupChange(e) {
+ var that = this
+
+ this.form.recipientData = e
+
+ var str = ""
+ var num = 0
+
+ that.form.recipientData.forEach((item, index) => {
+ that.recipientList.forEach((it, index) => {
+ if (item == it.id) {
+ if (num > 0) {
+ str += '、';
+ str += it.real_name;
+ } else {
+ str += it.real_name
+ }
+ num += 1
+ return
+ }
+ })
+ })
+
+ this.form.recipientPeople = str
+
+ },
+
}
};
</script>
<style lang="scss">
- .initiae-box {
- padding: 0 30rpx;
+ .submit {
+ border: none;
+ width: 94%;
+ height: 86rpx;
+ line-height: 86rpx;
+ box-sizing: border-box;
+ border-radius: 15rpx;
+ color: #ffffff;
+ font-size: 38rpx;
+
+ }
+
+ .container {
+ height: 100%;
+
+ .group-chat-box {
+ height: calc(100% - 116rpx);
+ padding: 0 36rpx;
+ box-sizing: border-box;
+ overflow-y: auto;
+ }
+
+ .establish-box {
+ position: relative;
+ height: 116rpx;
+ background: #fff;
+ text-align: center;
+
+ uni-button {
+ margin: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin: auto;
+ }
+
+ }
+
}
</style>
diff --git a/pages/dispatch/index.vue b/pages/dispatch/index.vue
new file mode 100644
index 0000000..2e793af
--- /dev/null
+++ b/pages/dispatch/index.vue
@@ -0,0 +1,85 @@
+<template>
+ <view class="container">
+ <view class="service-box">
+ <u-grid :col="3" :border="false">
+ <u-grid-item bg-color="transparent" v-for="(item, index) in serviceButton" :key="index"
+ @click="goBusinessPage(item.url,index)">
+ <view class="service-item">
+ <image :src="item.img" mode="widthFix" class="img"></image>
+ <view class="name">{{ item.name }}</view>
+ </view>
+ </u-grid-item>
+ </u-grid>
+ </view>
+ </view>
+</template>
+
+<script>
+ import {
+ fakeServiceButton
+ } from "@/api/mock/dispatch.js";
+
+ export default {
+ data() {
+ return {
+ dataList: [],
+ serviceButton: []
+ };
+ },
+ onLoad() {
+
+ },
+ onReachBottom() {
+
+ },
+ mounted() {},
+ methods: {
+ onLoad() {
+ // 加载服务按钮数据
+ fakeServiceButton().then(data => {
+ this.serviceButton = data;
+ });
+ },
+ //页面跳转
+ goBusinessPage(url, index) {
+ uni.navigateTo({
+ url: url
+ })
+ },
+ }
+ };
+</script>
+
+
+<style lang="scss">
+ .container {
+ background-color: #f7f7f7;
+ min-height: 100%;
+ overflow: hidden;
+ }
+
+ .service-box {
+ background: #ffffff;
+ border-radius: 20px 20px 20px 20px;
+ margin: 30rpx 20rpx 0;
+ padding: 0rpx 20rpx;
+
+ .service-item {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: center;
+ width: 100%;
+ height: 120rpx;
+ font-size: 26rpx;
+ font-family: PingFang SC;
+ font-weight: 500;
+ color: #585b61;
+
+ .img {
+ width: 70rpx;
+ height: auto;
+ }
+ }
+ }
+</style>
diff --git a/pages/dispatch/lookDetail.vue b/pages/dispatch/lookDetail.vue
index 32039b2..416ebac 100644
--- a/pages/dispatch/lookDetail.vue
+++ b/pages/dispatch/lookDetail.vue
@@ -18,7 +18,7 @@
<span>{{ detailData.sendTime }}</span>
</u-form-item>
- <u-form-item label-width='184' label="指令相关图片">
+ <u-form-item v-show="detailData.url.length > 0" label-width='184' label="指令相关图片">
<img :src="detailData.url" alt="">
</u-form-item>
diff --git a/pages/dispatch/receive.vue b/pages/dispatch/receive.vue
new file mode 100644
index 0000000..41d1bb5
--- /dev/null
+++ b/pages/dispatch/receive.vue
@@ -0,0 +1,372 @@
+<template>
+
+ <view class="page-container" style="height: 100%; position: relative;">
+
+ <view class="wrapper">
+
+ <view class="body">
+
+ <view class="body-content">
+
+ <u-search v-model='keyValue' placeholder='请输入指令内容' shape="round" class="u-search"
+ input-align="center" height="70" @search='searchValue' @custom='searchValue' @clear='clearValue'
+ @change='changeValue'>
+ </u-search>
+
+ <view v-show="newsList.length > 0">
+ <view class="inTmain" v-for="(item,index) in newsList">
+ <u-card :title="item.content" @click="goDetail(item)">
+ <view class="" slot="body">
+ <view>
+ <view style="margin-bottom: 10px;" class="u-body-item-title u-line-2">
+ 发送指令人:{{item.sendName}}</view>
+ </view>
+ <view>
+ <view class="u-body-item-title u-line-2">接受指令人:{{item.receiveName}}</view>
+ </view>
+ </view>
+ <view class="" slot="foot">
+ </u-icon>发送指令时间:{{item.sendTime}}</view>
+ </u-card>
+ </view>
+ <u-loadmore class='msg' :status="status" />
+ </view>
+
+ <view class="msg" v-show='newsList.length == 0'>
+ 暂无数据
+ </view>
+
+ </view>
+
+ </view>
+
+ </view>
+ </view>
+
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+
+ dataList: [],
+ newsList: [],
+
+ status: 'loadmore',
+ keyValue: '',
+
+ dataList: [],
+ newsList: [],
+ pagelist: 0,
+ pages: 0,
+ flag: true,
+
+ pullDown: false
+
+ };
+ },
+ onLoad() {
+
+ this.getSend();
+
+ },
+ onReachBottom() {
+ var that = this;
+
+ if (that.flag == false) {
+ that.status = 'nomore';
+ return
+ }
+ // 后续将改为与后端联动
+ that.status = 'loading';
+
+ setTimeout(() => {
+
+ that.getSend();
+
+ }, 1000);
+ },
+
+ onPullDownRefresh: function() {
+ var that = this;
+
+ this.pullDown = true;
+ this.pagelist = 0;
+ this.pages = 0;
+ this.flag = true;
+ this.dataList = [];
+ this.newsList = [];
+ this.status = 'loading';
+ this.keyValue = '';
+ setTimeout(() => {
+
+ that.getSend();
+
+ }, 1000)
+
+ },
+ mounted() {},
+ methods: {
+
+ getSend() {
+ var that = this;
+
+ if (that.pagelist < that.pages || that.pagelist == 0) {
+ that.pagelist++
+ } else if (that.pagelist == that.pages) {
+ that.flag = false
+ that.status = 'nomore';
+ return
+ }
+
+ uni.request({
+ url: this.$store.state.piAPI + "/directive/page?receiveDirectiveIds=" + this.$store.state
+ .puserID,
+ method: "get",
+ data: {
+ current: that.pagelist,
+ size: 10
+ },
+ success: (res) => {
+ that.pages = res.data.data.pages;
+
+ var resdata = res.data.data.records;
+
+ if (this.pullDown == true) {
+ this.pullDown = false;
+ uni.stopPullDownRefresh();
+ }
+
+ if (resdata.length == 0) {
+ that.flag = false
+ that.status = 'nomore';
+ return
+ } else {
+ resdata.forEach(item => {
+ that.newsList.push(item)
+ that.dataList.push(item)
+ })
+ }
+
+ if (that.pagelist == that.pages) {
+ that.flag = false
+ that.status = 'nomore';
+ return
+ }
+
+ }
+ });
+ },
+ goDetail(item) {
+ uni.navigateTo({
+ url: './lookDetail?detailData=' + JSON.stringify(item)
+ });
+ },
+ searchValue(value) {
+ var that = this;
+ var str = value.replace(/\s*/g, "");
+ if (str == '') {
+ return
+ } else {
+ that.newsList = [];
+
+ uni.request({
+ url: this.$store.state.piAPI + "/directive/page?receiveDirectiveIds=" + this.$store
+ .state
+ .puserID,
+ method: "get",
+ data: {
+ current: 1,
+ size: 999999,
+ content: str
+ },
+ success: (res) => {
+ var resdata = res.data.data.records;
+
+ resdata.forEach(item => {
+ that.newsList.push(item)
+ })
+
+ }
+ });
+
+ that.flag = false
+ that.status = 'nomore';
+ }
+ },
+ clearValue() {
+ this.keyValue = ''
+ this.newsList = [];
+
+ this.dataList.forEach(item => {
+ this.newsList.push(item)
+ })
+
+ if (this.pagelist < this.pages) {
+ this.flag = true;
+ this.status = 'loading';
+ } else {
+ this.flag = false;
+ this.status = 'nomore';
+ }
+ },
+ changeValue(value) {
+ if (value == '') {
+ this.newsList = [];
+
+ this.dataList.forEach(item => {
+ this.newsList.push(item)
+ })
+
+ if (this.pagelist < this.pages) {
+ this.flag = true;
+ this.status = 'loading';
+ } else {
+ this.flag = false;
+ this.status = 'nomore';
+ }
+ }
+ }
+ }
+ };
+</script>
+
+<style lang="scss">
+ .page-container {
+ position: fixed;
+ display: block;
+ width: 100%;
+ max-height: 100vh;
+
+
+
+ .head {
+ position: relative;
+
+
+ width: 100%;
+
+
+ .nav-wrap {
+ width: 100%;
+ height: 44px;
+ line-height: 30px;
+ padding: 7px 3px;
+ height: calc(44px + constant(safe-area-inset-top));
+ height: calc(44px + env(safe-area-inset-top));
+ color: rgb(255, 255, 255);
+
+ .btn-return-box {
+ display: flex;
+ align-items: center;
+ font-size: 16px;
+ box-sizing: border-box;
+
+ .btn-return {
+ position: relative;
+ width: auto;
+ margin: 0 2px;
+ word-break: keep-all;
+ white-space: pre;
+ cursor: pointer;
+ }
+ }
+
+ .header-title {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin: auto;
+ width: 60%;
+ font-weight: 700;
+ line-height: 30px;
+ font-size: 16px;
+ opacity: 1;
+ text-overflow: ellipsis;
+ text-align: center;
+ min-width: 1em;
+ }
+
+ .header-add {
+ position: absolute;
+ top: 0;
+ left: auto;
+ right: 10px;
+ bottom: 0;
+ margin: auto;
+ display: inline-block;
+ font: normal normal normal 14px/1 unibtn;
+ text-rendering: auto;
+ -webkit-font-smoothing: antialiased;
+ font-size: 24px;
+ }
+ }
+
+ }
+
+ .top-absolute {
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 101;
+ }
+
+ .wrapper {
+
+ width: 100%;
+ display: block;
+ height: calc(100% - 44px);
+ height: calc(100% - 44px - constant(safe-area-inset-top));
+ height: calc(100% - 44px - env(safe-area-inset-top));
+
+ .body {
+ width: 100%;
+ height: 100%;
+ overflow-x: hidden;
+ overflow-y: auto;
+
+ .body-content {
+ height: auto;
+
+ }
+
+ }
+
+ }
+ }
+
+ .u-card-wrap {
+ background-color: $u-bg-color;
+ padding: 1px;
+ }
+
+ .u-body-item {
+ font-size: 32rpx;
+ color: #333;
+ padding: 20rpx 10rpx;
+ }
+
+ .u-body-item image {
+ width: 120rpx;
+ flex: 0 0 120rpx;
+ height: 120rpx;
+ border-radius: 8rpx;
+ margin-left: 12rpx;
+ }
+
+ .u-search {
+ padding: 20rpx 30rpx 0 30rpx;
+ }
+
+ .inTmain {}
+
+ .msg {
+ height: 72rpx;
+ line-height: 72rpx;
+ text-align: center;
+ color: #999;
+ }
+</style>
diff --git a/pages/dispatch/send.vue b/pages/dispatch/send.vue
new file mode 100644
index 0000000..a4fc99e
--- /dev/null
+++ b/pages/dispatch/send.vue
@@ -0,0 +1,374 @@
+<template>
+
+ <view class="page-container" style="height: 100%; position: relative;">
+
+ <view class="wrapper">
+
+ <view class="body">
+
+ <view class="body-content">
+
+ <u-search v-model='keyValue' placeholder='请输入指令内容' shape="round" class="u-search"
+ input-align="center" height="70" @search='searchValue' @custom='searchValue' @clear='clearValue'
+ @change='changeValue'>
+ </u-search>
+
+ <view v-show="newsList.length > 0">
+ <view class="inTmain" v-for="(item,index) in newsList">
+ <u-card :title="item.content" @click="goDetail(item)">
+ <view class="" slot="body">
+ <view>
+ <view style="margin-bottom: 10px;" class="u-body-item-title u-line-2">
+ 发送指令人:{{item.sendName}}</view>
+ </view>
+ <view>
+ <view class="u-body-item-title u-line-2">接受指令人:{{item.receiveName}}</view>
+ </view>
+ </view>
+ <view class="" slot="foot">
+ </u-icon>发送指令时间:{{item.sendTime}}</view>
+ </u-card>
+ </view>
+ <u-loadmore class='msg' :status="status" />
+ </view>
+
+ <view class="msg" v-show='newsList.length == 0'>
+ 暂无数据
+ </view>
+
+ </view>
+
+ </view>
+
+ </view>
+
+ </view>
+
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+
+ dataList: [],
+ newsList: [],
+
+ status: 'loadmore',
+ keyValue: '',
+
+ dataList: [],
+ newsList: [],
+ pagelist: 0,
+ pages: 0,
+ flag: true,
+
+ pullDown: false
+
+ };
+ },
+ onLoad() {
+
+ this.getReceive()
+
+ },
+ onReachBottom() {
+ var that = this;
+
+ if (that.flag == false) {
+ that.status = 'nomore';
+ return
+ }
+ // 后续将改为与后端联动
+ that.status = 'loading';
+
+ setTimeout(() => {
+
+ that.getReceive();
+
+ }, 1000);
+ },
+
+ onPullDownRefresh: function() {
+ var that = this;
+
+ this.pullDown = true;
+ this.pagelist = 0;
+ this.pages = 0;
+ this.flag = true;
+ this.dataList = [];
+ this.newsList = [];
+ this.status = 'loading';
+ this.keyValue = '';
+ setTimeout(() => {
+
+ that.getReceive();
+
+ }, 1000)
+
+ },
+ mounted() {},
+ methods: {
+ getReceive() {
+ var that = this;
+
+ if (that.pagelist < that.pages || that.pagelist == 0) {
+ that.pagelist++
+ } else if (that.pagelist == that.pages) {
+ that.flag = false
+ that.status = 'nomore';
+ return
+ }
+
+ uni.request({
+ url: this.$store.state.piAPI + "/directive/page?sendDirectiveId=" + this.$store.state
+ .puserID,
+ method: "get",
+ data: {
+ current: that.pagelist,
+ size: 10
+ },
+ success: (res) => {
+ that.pages = res.data.data.pages;
+
+ var resdata = res.data.data.records;
+
+ if (this.pullDown == true) {
+ this.pullDown = false;
+ uni.stopPullDownRefresh();
+ }
+
+ if (resdata.length == 0) {
+ that.flag = false
+ that.status = 'nomore';
+ return
+ } else {
+ resdata.forEach(item => {
+ that.newsList.push(item)
+ that.dataList.push(item)
+ })
+ }
+
+ if (that.pagelist == that.pages) {
+ that.flag = false
+ that.status = 'nomore';
+ return
+ }
+
+ }
+ });
+ },
+
+ goDetail(item) {
+ uni.navigateTo({
+ url: './lookDetail?detailData=' + JSON.stringify(item)
+ });
+ },
+
+ searchValue(value) {
+ var that = this;
+ var str = value.replace(/\s*/g, "");
+ if (str == '') {
+ return
+ } else {
+ that.newsList = [];
+
+ uni.request({
+ url: this.$store.state.piAPI + "/directive/page?sendDirectiveId=" + this.$store.state
+ .puserID,
+ method: "get",
+ data: {
+ current: 1,
+ size: 999999,
+ content: str
+ },
+ success: (res) => {
+ var resdata = res.data.data.records;
+
+ resdata.forEach(item => {
+ that.newsList.push(item)
+ })
+
+ }
+ });
+
+ that.flag = false
+ that.status = 'nomore';
+ }
+ },
+ clearValue() {
+ this.keyValue = ''
+ this.newsList = [];
+
+ this.dataList.forEach(item => {
+ this.newsList.push(item)
+ })
+
+ if (this.pagelist < this.pages) {
+ this.flag = true;
+ this.status = 'loading';
+ } else {
+ this.flag = false;
+ this.status = 'nomore';
+ }
+ },
+ changeValue(value) {
+ if (value == '') {
+ this.newsList = [];
+
+ this.dataList.forEach(item => {
+ this.newsList.push(item)
+ })
+
+ if (this.pagelist < this.pages) {
+ this.flag = true;
+ this.status = 'loading';
+ } else {
+ this.flag = false;
+ this.status = 'nomore';
+ }
+ }
+ },
+
+ }
+ };
+</script>
+
+<style lang="scss">
+ .page-container {
+ position: fixed;
+ display: block;
+ width: 100%;
+ max-height: 100vh;
+
+
+
+ .head {
+ position: relative;
+
+
+ width: 100%;
+
+
+ .nav-wrap {
+ width: 100%;
+ height: 44px;
+ line-height: 30px;
+ padding: 7px 3px;
+ height: calc(44px + constant(safe-area-inset-top));
+ height: calc(44px + env(safe-area-inset-top));
+ color: rgb(255, 255, 255);
+
+ .btn-return-box {
+ display: flex;
+ align-items: center;
+ font-size: 16px;
+ box-sizing: border-box;
+
+ .btn-return {
+ position: relative;
+ width: auto;
+ margin: 0 2px;
+ word-break: keep-all;
+ white-space: pre;
+ cursor: pointer;
+ }
+ }
+
+ .header-title {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin: auto;
+ width: 60%;
+ font-weight: 700;
+ line-height: 30px;
+ font-size: 16px;
+ opacity: 1;
+ text-overflow: ellipsis;
+ text-align: center;
+ min-width: 1em;
+ }
+
+ .header-add {
+ position: absolute;
+ top: 0;
+ left: auto;
+ right: 10px;
+ bottom: 0;
+ margin: auto;
+ display: inline-block;
+ font: normal normal normal 14px/1 unibtn;
+ text-rendering: auto;
+ -webkit-font-smoothing: antialiased;
+ font-size: 24px;
+ }
+ }
+
+ }
+
+ .top-absolute {
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 101;
+ }
+
+ .wrapper {
+
+ width: 100%;
+ display: block;
+ height: calc(100% - 44px);
+ height: calc(100% - 44px - constant(safe-area-inset-top));
+ height: calc(100% - 44px - env(safe-area-inset-top));
+
+ .body {
+ width: 100%;
+ height: 100%;
+ overflow-x: hidden;
+ overflow-y: auto;
+
+ .body-content {
+ height: auto;
+
+ }
+
+ }
+
+ }
+ }
+
+ .u-card-wrap {
+ background-color: $u-bg-color;
+ padding: 1px;
+ }
+
+ .u-body-item {
+ font-size: 32rpx;
+ color: #333;
+ padding: 20rpx 10rpx;
+ }
+
+ .u-body-item image {
+ width: 120rpx;
+ flex: 0 0 120rpx;
+ height: 120rpx;
+ border-radius: 8rpx;
+ margin-left: 12rpx;
+ }
+
+ .u-search {
+ padding: 20rpx 30rpx 0 30rpx;
+ }
+
+ .inTmain {}
+
+ .msg {
+ height: 72rpx;
+ line-height: 72rpx;
+ text-align: center;
+ color: #999;
+ }
+</style>
diff --git a/pages/dispatch/text.vue b/pages/dispatch/text.vue
new file mode 100644
index 0000000..c546552
--- /dev/null
+++ b/pages/dispatch/text.vue
@@ -0,0 +1,261 @@
+<template>
+ <view class="container">
+
+ <view class="group-chat-box">
+
+ <u-form :model="form" ref="uForm">
+
+ <u-form-item label-width='132' prop="content" label="指令内容" :required="true">
+ <u-input type='textarea' v-model="form.content" placeholder="请输入指令内容" />
+ </u-form-item>
+
+ <u-form-item label-width='158' prop="recipientText" label="指令接收人" :required="true">
+
+ <u-input type='textarea' v-model="form.recipientPeople" placeholder="请选择指令接收人"
+ @click="recipientClick" autoHeight />
+
+ <u-popup :closeable="true" v-model="recipientShow" mode="bottom" height="50%" border-radius="14">
+
+ <view>
+
+ <u-checkbox-group v-show="recipientList.length > 0" @change="checkboxGroupChange"
+ :wrap='true' :size="40">
+
+ <u-checkbox v-model="item.checked" v-for="(item, index) in recipientList" :key="index"
+ :name="item.id" shape="circle"
+ style="padding: 0 40rpx; height: 92rpx; position: relative; box-sizing: border-box;">
+
+ <view style="margin-left: 22rpx">
+ {{item.real_name}}
+ </view>
+
+ </u-checkbox>
+
+ </u-checkbox-group>
+
+ <view style=" height: 92rpx; padding: 0 40rpx;" v-show="recipientList.length == 0">
+
+ 暂无数据
+
+ </view>
+
+ </view>
+
+ </u-popup>
+
+ </u-form-item>
+
+ </u-form>
+
+ </view>
+
+ <view class="establish-box">
+
+ <u-button class="submit" type="primary" @click="initiateClick">发送</u-button>
+
+ </view>
+
+ <view>
+ <u-toast ref="uToast" />
+ </view>
+
+ </view>
+</template>
+
+<script>
+ export default {
+
+ data() {
+ return {
+ recipientShow: false,
+ recipientList: [],
+
+ form: {
+ content: '',
+ recipient: '',
+ recipientData: [],
+ recipientPeople: ''
+ },
+ rules: {
+
+ content: [{
+ min: 5,
+ required: true,
+ message: '指令内容不能少于5个字',
+ trigger: ['change', 'blur'],
+ }],
+
+ },
+ };
+ },
+ onLoad() {},
+ onReachBottom() {
+
+ },
+ mounted() {},
+ onReady() {
+ this.$refs.uForm.setRules(this.rules);
+ },
+ methods: {
+ recipientClick() {
+ if (this.recipientList.length > 0) {
+ this.recipientShow = true;
+ return;
+ }
+ uni.request({
+ url: this.$store.state.piAPI + "/blade-user/seleL",
+ method: "get",
+ data: {
+ type: 1,
+ jurisdiction: this.$store.state
+ .UserData.jurisdiction,
+ },
+ success: (res) => {
+ this.recipientList = []
+
+ res.data.data.forEach(item => {
+ var flag = true
+
+ if (this.recipientList.length > 0) {
+ this.recipientList.forEach(it => {
+ if (item.id == it.id) flag = false
+ })
+ }
+
+ if (flag == true) {
+ if (item.id != this.$store.state
+ .UserData.user_id
+ ) {
+ item.checked = false;
+ this.recipientList.push(item)
+ }
+ }
+ })
+
+ this.recipientShow = true;
+ }
+ });
+
+ },
+
+ initiateClick() {
+
+ this.$refs.uForm.validate(valid => {
+ if (valid) {
+
+ if (this.form.recipientData.length == 0) {
+ this.$refs.uToast.show({
+ title: '请最少选择一个接收人',
+ })
+ return
+ }
+
+ var str = '';
+
+ this.form.recipientData.forEach(item => {
+ str += item + ','
+ })
+
+ str = str.substr(0, str.length - 1);
+
+ uni.request({
+ url: this.$store.state.piAPI + "/directive/saveDirectiveAndFile",
+ method: "post",
+ data: {
+ // 接收
+ receiveDirectiveIds: str,
+ // 发送
+ sendDirectiveId: this.$store.state
+ .UserData.user_id,
+ content: this.form.content
+ },
+ success: (res) => {
+ if (res.data.msg.indexOf('成功') != -1) {
+ this.$refs.uToast.show({
+ title: '指令下发成功',
+ type: 'success',
+ url: '/pages/dispatch/dispatch'
+ })
+ }
+ }
+ });
+ } else {
+ console.log('验证失败');
+ }
+ });
+ },
+
+ checkboxGroupChange(e) {
+ var that = this
+
+ this.form.recipientData = e
+
+ var str = ""
+ var num = 0
+
+ that.form.recipientData.forEach((item, index) => {
+ that.recipientList.forEach((it, index) => {
+ if (item == it.id) {
+ if (num > 0) {
+ str += '、';
+ str += it.real_name;
+ } else {
+ str += it.real_name
+ }
+ num += 1
+ return
+ }
+ })
+ })
+
+ this.form.recipientPeople = str
+ },
+
+ }
+ };
+</script>
+
+
+<style lang="scss">
+ .submit {
+ border: none;
+ width: 94%;
+ height: 86rpx;
+ line-height: 86rpx;
+ box-sizing: border-box;
+ border-radius: 15rpx;
+ color: #ffffff;
+ font-size: 38rpx;
+
+ }
+
+ .container {
+ height: 100%;
+
+ .group-chat-box {
+ height: calc(100% - 116rpx);
+ padding: 0 36rpx;
+ box-sizing: border-box;
+ overflow-y: auto;
+ }
+
+ .establish-box {
+ position: relative;
+ height: 116rpx;
+ background: #fff;
+ text-align: center;
+
+ uni-button {
+ margin: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin: auto;
+ }
+
+ }
+
+ }
+</style>
diff --git a/pages/examine/addpeople.vue b/pages/examine/addpeople.vue
index 387dd41..18e9914 100644
--- a/pages/examine/addpeople.vue
+++ b/pages/examine/addpeople.vue
@@ -1,6 +1,6 @@
<template>
<view class="container">
- <view class='initiae-box'>
+ <view class="group-chat-box">
<u-form :model="form" ref="uForm">
<u-form-item label-width='132' label="检查人">
@@ -29,6 +29,10 @@
<u-input type='textarea' v-model="form.outcome" placeholder="请输入检查结果" />
</u-form-item>
+ <u-form-item label-width='132' prop="handlerResult" label="处理结果" :required="true">
+ <u-input type='textarea' v-model="form.handlerResult" placeholder="请输入处理结果,整改要求,评价等" />
+ </u-form-item>
+
<u-form-item label-width='132' label="附属图片" class='imgissue-upload'>
<seeImgs :imgs="imgs" :videos="[]" @del="delImg" :type="'imgs'"></seeImgs>
<image style="width: 4rem; height: 4rem; display: block;" @tap="takePhoto"
@@ -36,12 +40,13 @@
</u-form-item>
</u-form>
- <view>
- <u-button type="primary" @click="initiateClick" style="margin-top: 4%; width: 60%;">发送</u-button>
- </view>
- <view>
- <u-toast ref="uToast" />
- </view>
+
+ </view>
+ <view class="establish-box">
+ <u-button class="submit" type="primary" @click="initiateClick">发送</u-button>
+ </view>
+ <view>
+ <u-toast ref="uToast" />
</view>
</view>
</template>
@@ -61,6 +66,7 @@
form: {
content: '',
outcome: '',
+ handlerResult: '',
people: '',
peopleText: '',
unitText: '',
@@ -77,6 +83,13 @@
min: 2,
required: true,
message: '检查结果不能少于2个字',
+ trigger: ['change', 'blur'],
+ }],
+
+ handlerResult: [{
+ min: 5,
+ required: true,
+ message: '处理结果不能少于5个字',
trigger: ['change', 'blur'],
}],
@@ -105,40 +118,43 @@
methods: {
peopleClick() {
+
uni.request({
- url: this.$store.state.piAPI + "/blade-system/dept/lazy-tree-user-app?type=1",
+ url: this.$store.state.piAPI + "/blade-user/seleL",
method: "get",
data: {
-
+ type: 1,
+ jurisdiction: this.$store.state
+ .UserData.jurisdiction,
},
success: (res) => {
this.peopleList = []
- res.data.forEach(item => {
- if (item.hasChildren == true) {
+
+ res.data.data.forEach(item => {
+
+ if (item.id != this.$store.state
+ .UserData.user_id
+ ) {
+
+ item.value = item.cardid
+
+ item.label = item.real_name
+
this.peopleList.push(item)
}
+
})
-
+
this.peopleShow = true;
}
});
+
},
peopleConfirm(e) {
-
- if (e.length == 1) {
- this.form.people = e[0].value
- this.form.peopleText = e[0].label
- } else if (e.length == 2) {
- this.form.people = e[1].value
- this.form.peopleText = e[1].label
- this.form.unitText = e[0].label
- } else if (e.length == 3) {
- this.form.people = e[2].value
- this.form.peopleText = e[2].label
- this.form.unitText = e[1].label
- }
+ this.form.people = e[0].value
+ this.form.peopleText = e[0].label
},
getCurrentTime() {
@@ -164,20 +180,7 @@
imgurl += item.src + ','
}
})
-
- var carid = ''
-
- console.log(this.peopleList)
-
- this.peopleList.forEach(item => {
-
- item.children.forEach(it => {
- if (it.value == this.form.people) {
- carid == it.idCardNo
- }
- })
- })
-
+
this.$refs.uForm.validate(valid => {
if (valid) {
uni.request({
@@ -188,14 +191,15 @@
deptname: this.createData.deptName,
realname: this.form.peopleText,
sname: this.form.unitText,
- carid: carid,
+ carid: this.form.people,
reviewtime: this.getCurrentTime(),
insid: this.form.content,
examinationType: this.form.outcome,
+ handlerResult: this.form.handlerResult,
url: imgurl
},
success: (res) => {
- if (res.data.msg == "操作成功") {
+ if (res.data.msg.indexOf('成功') != -1) {
this.$refs.uToast.show({
title: '新增人员检查成功',
type: 'success',
@@ -221,6 +225,7 @@
sizeType: ['compressed', 'original'], //上传压缩图,原图
sourceType: ['album', 'camera'], //从相册选择或从使用相机
success: async (res) => {
+
for (var i = 0; i < res.tempFiles.length; i++) {
if (res.tempFiles[i].size > 10 * 1024 * 1000) { //上传图片大小限制
uni.showToast({
@@ -230,6 +235,7 @@
return
}
}
+
var tempFilePath = res.tempFilePaths;
// try {
uni.showLoading({
@@ -249,19 +255,34 @@
'user': 'test' // 上传附带参数
},
success: (data) => {
- console.log(data, JSON.parse(data.data).data)
+
+ function isJSON_test(str) {
+ if (typeof str == 'string') {
+ try {
+ var obj = JSON.parse(str);
+ return obj.data;
+ } catch (e) {
+ return str;
+ }
+ }
+ console.log('It is not a string!')
+ }
+
uni.showToast({
title: '上传图片成功!',
duration: 1000
});
+
// 根据接口具体返回格式 赋值具体对应url
that.imgs.push({
id: i,
- src: JSON.parse(data.data).data
+ src: isJSON_test(data.data)
})
+
}
});
}
+
}
});
},
@@ -271,7 +292,45 @@
<style lang="scss">
- .initiae-box {
- padding: 0 30rpx;
+ .submit {
+ border: none;
+ width: 94%;
+ height: 86rpx;
+ line-height: 86rpx;
+ box-sizing: border-box;
+ border-radius: 15rpx;
+ color: #ffffff;
+ font-size: 38rpx;
+
+ }
+
+ .container {
+ height: 100%;
+
+ .group-chat-box {
+ height: calc(100% - 116rpx);
+ padding: 0 36rpx;
+ box-sizing: border-box;
+ overflow-y: auto;
+ }
+
+ .establish-box {
+ position: relative;
+ height: 116rpx;
+ background: #fff;
+ text-align: center;
+
+ uni-button {
+ margin: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin: auto;
+ }
+
+ }
+
}
</style>
diff --git a/pages/examine/addunit.vue b/pages/examine/addunit.vue
index 6fbbac4..73bd820 100644
--- a/pages/examine/addunit.vue
+++ b/pages/examine/addunit.vue
@@ -1,6 +1,6 @@
<template>
<view class="container">
- <view class='initiae-box'>
+ <view class="group-chat-box">
<u-form :model="form" ref="uForm">
<u-form-item label-width='132' label="检查人">
@@ -28,6 +28,10 @@
<u-form-item label-width='132' prop="outcome" label="检查结果" :required="true">
<u-input type='textarea' v-model="form.outcome" placeholder="请输入检查结果" />
</u-form-item>
+
+ <u-form-item label-width='132' prop="handlerResult" label="处理结果" :required="true">
+ <u-input type='textarea' v-model="form.handlerResult" placeholder="请输入处理结果,整改要求,评价等" />
+ </u-form-item>
<u-form-item label-width='132' label="附属图片" class='imgissue-upload'>
<seeImgs :imgs="imgs" :videos="[]" @del="delImg" :type="'imgs'"></seeImgs>
@@ -36,12 +40,12 @@
</u-form-item>
</u-form>
- <view>
- <u-button type="primary" @click="initiateClick" style="margin-top: 4%; width: 60%;">发送</u-button>
- </view>
- <view>
- <u-toast ref="uToast" />
- </view>
+ </view>
+ <view class="establish-box">
+ <u-button class="submit" type="primary" @click="initiateClick">发送</u-button>
+ </view>
+ <view>
+ <u-toast ref="uToast" />
</view>
</view>
</template>
@@ -61,6 +65,7 @@
form: {
content: '',
outcome: '',
+ handlerResult: '',
unit: '',
unitText: ''
},
@@ -76,6 +81,13 @@
min: 2,
required: true,
message: '检查结果不能少于2个字',
+ trigger: ['change', 'blur'],
+ }],
+
+ handlerResult: [{
+ min: 5,
+ required: true,
+ message: '处理结果不能少于5个字',
trigger: ['change', 'blur'],
}],
@@ -105,36 +117,39 @@
methods: {
unitClick() {
+
uni.request({
- url: this.$store.state.piAPI + "/blade-system/dept/lazy-tree-user-app?type=1",
+ url: this.$store.state.piAPI + "/blade-system/dept/security_lazy-tree",
method: "get",
data: {
-
+ jurisdiction: this.$store.state
+ .UserData.jurisdiction,
},
success: (res) => {
+
this.unitList = []
- res.data.forEach(item => {
- if (item.hasChildren == true) {
- this.unitList.push(item)
- }
+
+ res.data.data.forEach(item => {
+ var data = {}
+
+ data.value = item.id
+
+ data.label = item.title
+
+ this.unitList.push(data)
})
+
this.unitShow = true;
+
}
});
+
},
unitConfirm(e) {
-
- if (e.length == 1) {
- this.form.unit = e[0].value
- this.form.unitText = e[0].label
- } else if (e.length == 2) {
- this.form.unit = e[1].value
- this.form.unitText = e[1].label
- } else if (e.length == 3) {
- this.form.unit = e[2].value
- this.form.unitText = e[2].label
- }
+
+ this.form.unit = e[0].value
+ this.form.unitText = e[0].label
},
@@ -173,10 +188,11 @@
reviewtime: this.getCurrentTime(),
insid: this.form.content,
results: this.form.outcome,
+ handlerResult: this.form.handlerResult,
url: imgurl
},
success: (res) => {
- if (res.data.msg == "操作成功") {
+ if (res.data.msg.indexOf('成功') != -1) {
this.$refs.uToast.show({
title: '新增单位检查成功',
type: 'success',
@@ -202,6 +218,7 @@
sizeType: ['compressed', 'original'], //上传压缩图,原图
sourceType: ['album', 'camera'], //从相册选择或从使用相机
success: async (res) => {
+
for (var i = 0; i < res.tempFiles.length; i++) {
if (res.tempFiles[i].size > 10 * 1024 * 1000) { //上传图片大小限制
uni.showToast({
@@ -211,13 +228,16 @@
return
}
}
+
var tempFilePath = res.tempFilePaths;
// try {
uni.showLoading({
title: "上传中...",
mask: true
})
+
var that = this;
+
// 循环调用uni.uploadFile ,因微信小程序只支持单文件上传
for (var i = 0; i < tempFilePath.length; i++) {
uni.uploadFile({
@@ -230,19 +250,33 @@
'user': 'test' // 上传附带参数
},
success: (data) => {
- console.log(data, JSON.parse(data.data).data)
+
+ function isJSON_test(str) {
+ if (typeof str == 'string') {
+ try {
+ var obj = JSON.parse(str);
+ return obj.data;
+ } catch (e) {
+ return str;
+ }
+ }
+ console.log('It is not a string!')
+ }
+
uni.showToast({
title: '上传图片成功!',
duration: 1000
});
+
// 根据接口具体返回格式 赋值具体对应url
that.imgs.push({
id: i,
- src: JSON.parse(data.data).data
+ src: isJSON_test(data.data)
})
}
});
}
+
}
});
},
@@ -252,7 +286,45 @@
<style lang="scss">
- .initiae-box {
- padding: 0 30rpx;
+ .submit {
+ border: none;
+ width: 94%;
+ height: 86rpx;
+ line-height: 86rpx;
+ box-sizing: border-box;
+ border-radius: 15rpx;
+ color: #ffffff;
+ font-size: 38rpx;
+
+ }
+
+ .container {
+ height: 100%;
+
+ .group-chat-box {
+ height: calc(100% - 116rpx);
+ padding: 0 36rpx;
+ box-sizing: border-box;
+ overflow-y: auto;
+ }
+
+ .establish-box {
+ position: relative;
+ height: 116rpx;
+ background: #fff;
+ text-align: center;
+
+ uni-button {
+ margin: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin: auto;
+ }
+
+ }
+
}
</style>
diff --git a/pages/examine/examine.vue b/pages/examine/examine.vue
index 7d30c91..2f3ae3c 100644
--- a/pages/examine/examine.vue
+++ b/pages/examine/examine.vue
@@ -17,7 +17,8 @@
<span class="header-title">现场检查</span>
- <u-icon @click="goToAddPage" top='4' class="header-add" name="plus" color="#fff">
+ <u-icon v-if="$store.state.UserData.rname[0].indexOf('保安') == -1" @click="goToAddPage" top='4'
+ class="header-add" name="plus" color="#fff">
</u-icon>
</view>
@@ -59,7 +60,7 @@
<u-tabs :list="list" :is-scroll="false" :current="current" active-color="#14B9C8"
inactive-color="#595959" height="100" @change="change"></u-tabs>
- <u-search v-show="current == 0" v-model='keyValue' placeholder='请输入保安员公司名称' shape="round"
+ <u-search v-show="current == 0" v-model='keyValue' placeholder='请输入被检查保安员名称' shape="round"
class="u-search" input-align="center" height="70" @search='searchValue' @custom='searchValue'
@clear='clearValue' @change='changeValue'>
</u-search>
@@ -71,7 +72,7 @@
<view v-show="current == 0 && newsList.length > 0">
<view class="inTmain" v-for="(item,index) in newsList">
- <u-card :title="item.sname" @click="goDetail(item)">
+ <u-card :title="item.realname" @click="goDetail(item)">
<view class="" slot="body">
<view>
<view style="margin-bottom: 10px;" class="u-body-item-title u-line-1">
@@ -130,10 +131,10 @@
return {
list: [{
- name: '保安检查'
+ name: '保安员检查列表'
},
{
- name: '单位检查'
+ name: '单位检查列表'
}
],
@@ -217,6 +218,8 @@
url: this.$store.state.piAPI + "/seinspect/list",
method: "get",
data: {
+ deptId: this.$store.state.UserData
+ .dept_id,
current: that.pagelist,
size: 10
},
@@ -318,6 +321,7 @@
this.pages = 0;
this.flag = true;
this.current = index;
+ this.keyValue = "";
if (index == 0) {
this.getReceive();
} else {
@@ -339,7 +343,7 @@
data: {
current: 1,
size: 999999,
- sname: str
+ realName: str
},
success: (res) => {
var resdata = res.data.data.records;
@@ -490,7 +494,7 @@
position: absolute;
top: 0;
left: auto;
- right: 3px;
+ right: 10px;
bottom: 0;
margin: auto;
display: inline-block;
diff --git a/pages/groupChat/chating.vue b/pages/groupChat/chating.vue
index 922af94..8c8f014 100644
--- a/pages/groupChat/chating.vue
+++ b/pages/groupChat/chating.vue
@@ -1,19 +1,20 @@
<template>
<view class="container">
-
+
<!-- 头部 -->
- <u-navbar style="position: relative;" :is-fixed="false" :border-bottom="true" :is-back="true"
- :title="recName" back-icon-color="#fff" :background="{ background: '#0BB9C8' }" title-color="#fff">
+ <u-navbar style="position: relative;" :is-fixed="false" :border-bottom="true" :is-back="true" :title="recName"
+ back-icon-color="#fff" :background="{ background: '#0BB9C8' }" title-color="#fff">
<view slot='right'>
- <u-icon @click="chatMessageDetail" class="set-icon" name="more-dot-fill" color="#fff" size="28"></u-icon>
+ <u-icon @click="chatMessageDetail" class="set-icon" name="more-dot-fill" color="#fff" size="28">
+ </u-icon>
</view>
</u-navbar>
- <scroll-view id="chatingBox" :style="{ height: swiperHeight + 'px' }" scroll-y="true" class="chat" scroll-with-animation="isanimation" :scroll-into-view="scrollToView"
- @scrolltoupper="nextPage">
+ <scroll-view id="chatingBox" :style="{ height: swiperHeight + 'px' }" scroll-y="true" class="chat"
+ scroll-with-animation="isanimation" :scroll-into-view="scrollToView" @scrolltoupper="nextPage">
<view class="chat-main" :style="{paddingBottom:inputh + 'px'}">
<view class="loading" :class="{displaynone:isload}">
<image src="@/static/images/chatroom/load.png" mode="" class="loading-img"
@@ -35,10 +36,12 @@
</view>
<!-- voice -->
<view class="message" v-if="item.messageType == 2">
- <view class="msg-text voice" :style="{width:item.postMessage.time * 4 + 'px'}"
- @tap="playVoice(item.postMessage.voice)">
+ <view class="msg-text voice" :style="{width:item.postMessage.time * 4 + 50 + 'px'}"
+ @tap="playVoice(item.postMessage)">
+
<image src="../../static/images/chatroom/sound.png" mode="" class="voice-img" />
- {{ item.postMessage.time }} "
+ {{ item.postMessage.time }}"
+
</view>
</view>
<!-- location -->
@@ -63,9 +66,9 @@
</view>
<!-- voice -->
<view class="message" v-if="item.messageType == 2">
- <view class="msg-text voice" :style="{width:item.postMessage.time * 4 + 'px'}"
- @tap="playVoice(item.postMessage.voice)">
- {{ item.postMessage.time }} "
+ <view class="msg-text voice" :style="{width:item.postMessage.time * 4 + 50 + 'px'}"
+ @tap="playVoice(item.postMessage)">
+ {{ item.postMessage.time }}"
<image src="@/static/images/chatroom/sound.png" mode="" class="voice-img" />
</view>
</view>
@@ -98,7 +101,7 @@
import filter from '@/config/filter.js'
import submit from '@/components/submit/submit.vue'
import WxStorage from "../../static/lib/wxStorage.js"
- const innerAudioContext = uni.createInnerAudioContext()
+
export default {
data() {
@@ -122,7 +125,8 @@
isanimation: true,
begainloading: true,
- name: [] //视频 双方id
+ name: [], //视频 双方id
+ innerAudioContext: uni.createInnerAudioContext()
};
},
components: {
@@ -132,7 +136,13 @@
this.recipientId = option.chatID;
this._getMsg(this.nowpage)
// this.nextPage()
- var data = JSON.parse(option.data)
+ var data = option.data
+
+ if (this.isJSON(option.data) == true) {
+ data = JSON.parse(option.data)
+ }
+
+
console.log(data, 55555555555555555555555)
this.name = ['wo', option.chatID];
// console.log(data)
@@ -141,13 +151,14 @@
} else {
this.callName = data.recipientName;
}
+
},
-
+
onReady() {
let that = this;
uni.getSystemInfo({
success(e) {
- console.log(e);
+ // console.log(e);
let {
windowWidth,
windowHeight,
@@ -157,22 +168,27 @@
query
.select('#chatingBox')
.boundingClientRect(data => {
-
+
that.swiperHeight = (safeArea.bottom - data.top);
-
+
})
.exec();
}
});
},
-
+
methods: {
+ chatMessageDetail() {
+
+ },
+
// 返回键
backOne() {
uni.navigateBack({
delta: 1
})
},
+
// 滚动顶部加载上一页
nextPage() {
// if(this.nowpage > 0 && this.begainloading) {
@@ -221,7 +237,8 @@
var resdata = res.data.data.user;
for (var i = 0; i < resdata.length; i++) {
if (resdata[i].avatar == null || resdata[i].avatar == "") {
- resdata[i].avatar = "https://gimg2.baidu.com/image_search/src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20191109%2F1d3d4d82715444c4b8284f65e3feed10.jpeg&refer=http%3A%2F%2F5b0988e595225.cdn.sohucs.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1632484198&t=1f4086a5894cbf83b311fa37c276405c";
+ resdata[i].avatar =
+ "https://gimg2.baidu.com/image_search/src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20191109%2F1d3d4d82715444c4b8284f65e3feed10.jpeg&refer=http%3A%2F%2F5b0988e595225.cdn.sohucs.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1632484198&t=1f4086a5894cbf83b311fa37c276405c";
}
if (resdata[i].id == that.senId) {
@@ -259,6 +276,11 @@
msg[i].message = '../../static/images/index/friend-list/' + msg[i].message
that.imgMsg.unshift(msg[i].message)
}
+
+ if (that.isJSON(msg[i].postMessage) == true) {
+ msg[i].postMessage = JSON.parse(msg[i].postMessage)
+ }
+
that.msgs.unshift(msg[i])
}
@@ -280,6 +302,25 @@
})
},
+
+ isJSON(str) {
+
+ if (typeof str == 'string') {
+ try {
+ var obj = JSON.parse(str);
+ if (typeof obj == 'object' && obj) {
+ return true;
+ } else {
+ return false;
+ }
+
+ } catch (e) {
+ return false;
+ }
+ }
+
+ },
+
// 预览图片
previewImage(e) {
@@ -295,22 +336,33 @@
longPressActions: {
itemList: ['发送给朋友', '保存图片', '收藏'],
success: function(data) {
- console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
+ // console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
},
fail: function(err) {
- console.log(err.errMsg);
+ // console.log(err.errMsg);
}
}
});
},
// 音频播放
playVoice(e) {
- console.log('ok')
- innerAudioContext.src = e
+ console.log(e, 'ok')
+
+ var innerAudioContext = this.innerAudioContext = uni.createInnerAudioContext()
+ // innerAudioContext.autoplay = false
+ innerAudioContext.src = e.voice
innerAudioContext.play()
+
+ setTimeout(() => {
+ innerAudioContext.destroy()
+ }, e.time * 1000)
+
},
// 接收输入内容
inputs(e) {
+
+ console.log(e, 999)
+
var that = this;
this.isanimation = true
let len = this.msgs.length - 1
@@ -325,10 +377,19 @@
senderId: that.senId,
recipientId: that.recipientId,
postMessage: e.message,
- messageType: 0,
+ messageType: e.types,
status: 0,
postTime: nowTime,
}
+
+ var mesagess = null;
+
+ if (e.message instanceof Object) {
+ mesagess = JSON.stringify(e.message)
+ } else {
+ mesagess = e.message
+ }
+
uni.request({
url: this.$store.state.piAPI + "/chat-records/insertSingleChat",
@@ -336,12 +397,14 @@
data: {
senderId: that.senId,
recipientId: that.recipientId,
- postMessage: e.message,
- messageType: 0,
+ postMessage: mesagess,
+ messageType: e.types,
status: 0,
postTime: sentTime,
},
success: (res) => {
+
+ console.log(res, 89898)
}
});
@@ -389,7 +452,7 @@
name: e.name,
address: e.address,
success: () => {
- console.log('success')
+ // console.log('success')
}
})
},
@@ -437,7 +500,7 @@
height: auto;
margin-right: 35rpx;
}
-
+
.chat {
height: 100%;
@@ -492,7 +555,7 @@
font-size: $uni-font-size-lg;
color: $uni-text-color;
line-height: 44rpx;
- padding: 18rpx 34rpx;
+ padding: 18rpx 20rpx;
}
.msg-img {
diff --git a/pages/groupChat/newGroup/newGroup.vue b/pages/groupChat/newGroup/newGroup.vue
index c104a85..5ef5d99 100644
--- a/pages/groupChat/newGroup/newGroup.vue
+++ b/pages/groupChat/newGroup/newGroup.vue
@@ -1,7 +1,7 @@
<template>
<view class="registerUser">
- <view class="group-chat-box">
+ <view class="group-chat-box" id="groupChatBox" :style="{ height: swiperHeight + 'px' }">
<u-form :model="form" ref="uForm">
@@ -51,10 +51,31 @@
groupnotice: '',
groupmember: '',
},
+ swiperHeight: 0
}
},
onReady() {
this.$refs.uForm.setRules(this.rules);
+ let that = this;
+ uni.getSystemInfo({
+ success(e) {
+ console.log(e);
+ let {
+ windowWidth,
+ windowHeight,
+ safeArea
+ } = e;
+ const query = uni.createSelectorQuery().in(that);
+ query
+ .select('#groupChatBox')
+ .boundingClientRect(data => {
+
+ that.swiperHeight = (safeArea.bottom - 58);
+
+ })
+ .exec();
+ }
+ });
},
onLoad() {
this.getFriend();
@@ -167,11 +188,9 @@
}
.registerUser {
- height: 100%;
background: #f7f7f7;
.group-chat-box {
- height: calc(100% - 116rpx);
padding: 0 1.2rem;
box-sizing: border-box;
overflow-y: auto;
diff --git a/pages/home/home.vue b/pages/home/home.vue
index e3d008b..71d27ef 100644
--- a/pages/home/home.vue
+++ b/pages/home/home.vue
@@ -10,7 +10,7 @@
{{ position }}
<u-icon name="arrow-down" class="arrow" size="18" color="#C9C9C9"></u-icon>
</picker> -->
-
+
<!-- <image src="/static/images/rider.png" class="rider" mode="widthFix" v-if="!focus"></image>
<view class="search-input" v-else>
@@ -19,7 +19,7 @@
</view> -->
<view class="tool">
- <!-- <image src="/static/images/home/search.png" class="icon search-icon" mode="widthFix"
+ <!-- <image src="/static/images/home/search.png" class="icon search-icon" mode="widthFix"
@click="handleFocus" v-if="!focus"></image> -->
<image src="/static/images/home/message.png" class="icon message-icon" mode="widthFix"></image>
<!-- <image src="/static/images/home/qr.png" class="icon qr-icon" mode="widthFix"></image> -->
@@ -88,34 +88,41 @@
<!-- 服务按钮 end -->
<!-- 新闻模块 start -->
- <view class="news" style="display: none;">
- <navigator hover-class="none" url="/pages/news/list" class="cell">
- <view class="ctitle">通知公告</view>
- <view class="more">
+ <view class="news">
+
+ <navigator hover-class="none" url="/pages/news/listsss" class="cell">
+ <view class="ctitle">通知通告</view>
+ <view hover-class="bg-light" class="more" @click="goArticle()">
更多
<u-icon name="arrow-right" color="#A6ABB5" size="16"></u-icon>
</view>
</navigator>
<view class="news-list">
- <navigator url="/pages/news/detail" hover-class="none" class="news-item"
+ <view hover-class="none" class="news-item" @click="goArticleDetail(item)"
v-for="(item, index) in newsList" :key="index">
<view class="left">
<view class="info">
- [火灾防范] 严禁在建筑内的共用走道、楼梯间、安全出口处等公共区域停放电动车或者为电动车充电。
+ {{item.title}}
+ </view>
+
+ <view class="new-content u-line-1" v-html="item.content">
+
</view>
<view class="date">
- <image src="/static/images/home/date.png" class="icon" mode=""></image>
- 2021.06.17
+ <!-- <image src="/static/images/home/date.png" class="icon" mode=""></image> -->
+ <view class="advisory-title-name">{{item.category == 1 ? '单位公告' : '公安公告'}}</view>
+ <view class="advisory-title-time">{{item.releaseTime}}</view>
</view>
</view>
- <image src="" mode="" class="img"></image>
- </navigator>
+ </view>
<u-loadmore :status="status" />
</view>
+
<!-- 新闻模块 end -->
</view>
- <!-- <u-button class="ccbut" type="primary" @click="openVideo('Mains')">测试点视频通话:主播</u-button>
+
+ <!-- <u-button class="ccbut" type="primary" @click="openVideo('Mains')">测试点视频通话:主播</u-button>
<u-button class="ccbut" type="primary" @click="openVideo('Receiver')">测试点视频通话:第二个</u-button> -->
</view>
</template>
@@ -135,12 +142,14 @@
positionArr: [],
status: 'loadmore',
list: 15,
- page: 0,
+
keyword: '',
focus: false,
bannerList: [],
noticeList: [],
- newsList: [{}, {}],
+ page: 1,
+ pagesize: 2,
+ newsList: [],
navButton: [],
serviceButton: []
};
@@ -151,12 +160,12 @@
// uni.connectSocket({
// url: 'ws://192.168.0.111:9034/websocket'
// });
-
+
// uni.onSocketOpen(function(res) {
// socketOpen = true;
// sendSocketMessage();
// });
-
+
// function sendSocketMessage() {
// var data = {
// type: 'my',
@@ -168,14 +177,19 @@
// });
// }
// }
-
+
// uni.onSocketMessage(function(res) {
// console.log('收到服务器内容:' + res.data);
// });
-
+
},
onLoad() {
-
+
+ },
+ onShow() {
+
+ this.serviceButton = []
+
// 后续将改为与后端联动
// 加载banner数据
fakePosition().then(data => {
@@ -196,25 +210,100 @@
});
// 加载服务按钮数据
fakeServiceButton().then(data => {
+
+ if (this.$store.state.UserData.rname[0] == '保安') {
+
+ data.forEach((item, index) => {
+ if (item.name == '保安单位') {
+ data.splice(index, 1)
+ }
+ })
+
+ data.forEach((item, index) => {
+ if (item.name == '保安管理') {
+ data.splice(index, 1)
+ }
+ })
+
+ data.forEach((item, index) => {
+ if (item.name == '保安员位置') {
+ data.splice(index, 1)
+ }
+ })
+
+ data.forEach((item, index) => {
+ if (item.name == '现场检查') {
+ data.splice(index, 1)
+ }
+ })
+
+ } else if (this.$store.state.UserData.rname[0] == '保安公司管理员') {
+
+ data.forEach(item => {
+ if (item.name == '保安单位') {
+ data.splice(0, 1)
+ }
+ })
+
+ data.forEach((item, index) => {
+ if (item.name == '现场检查') {
+ data.splice(index, 1)
+ }
+ })
+
+ }
+
this.serviceButton = data;
+
});
+
+ this.page = 1
+ this.pagesize = 2
+ this.newsList = []
+
+ //获取新闻信息
+ this.getArtcilePageList();
+
},
onReachBottom() {
- // 后续将改为与后端联动
- if (this.page >= 3) return;
- this.status = 'loading';
+ if (this.status == 'nomore') return;
this.page = ++this.page;
setTimeout(() => {
- this.list += 10;
- if (this.page >= 3) this.status = 'nomore';
- else this.status = 'loading';
- this.newsList.push(...[{}, {}]);
+ this.getArtcilePageList();
}, 2000);
},
methods: {
- openVideo(val){
+ //点击更多跳转资讯页
+ goArticle() {
uni.navigateTo({
- // url: '../videoCall/videoCall?state=' + val + '&type=video'
+ url: '../message/message'
+ })
+ },
+ //去跳转详情页面
+ goArticleDetail(item) {
+
+ console.log(item)
+
+ if (item.content != undefined && item.content.indexOf('<p>') != -1) {
+
+ var reg1 = /<\/?p[^>]*>/g;
+
+ item.content = item.content.replace(reg1, '');
+
+ var reg2 = /[ ]/g;
+
+ item.content = item.content.replace(reg2, '');
+
+ }
+
+ uni.navigateTo({
+ url: '../message/messageDetail?detailData=' + JSON.stringify(item)
+ });
+
+ },
+ openVideo(val) {
+ uni.navigateTo({
+ // url: '../videoCall/videoCall?state=' + val + '&type=video'
url: '../videoCall/videoCall?state=Mains&type=video&myname=wo&toname=1424647828935819265'
});
},
@@ -258,6 +347,46 @@
},
handleSearchBlur() {
this.focus = false;
+ },
+ //获取资讯信息
+ getArtcilePageList() {
+ var that = this;
+ uni.request({
+ url: this.$store.state.piAPI + "/blade-desk/notice/page?category=2&deptId=" + this.$store.state
+ .UserData
+ .dept_id,
+ method: 'GET',
+ data: {
+ type: 1,
+ current: this.page,
+ size: this.pagesize
+ },
+ success: (res) => {
+ if (res.data.code == 200) {
+ if (res.data.data.records) {
+
+ //如果总数小于pageSize,不做其他操作
+ if (res.data.data.total < this.pagesize) {
+ that.newsList = res.data.data.records;
+ } else {
+ if (res.data.data.records.length < this.pagesize) {
+ //如果数量小于分页数量,则为最后一页
+ this.status = 'nomore'
+ } else {
+ //如果数量小于分页数量,则为最后一页
+ this.status = 'loading';
+ }
+ res.data.data.records.forEach(item => {
+ console.log(item);
+ that.newsList.push(item);
+ })
+ }
+ }
+ uni.stopPullDownRefresh();
+
+ }
+ }
+ });
}
}
};
@@ -506,7 +635,7 @@
justify-content: space-between;
.left {
- flex: 1;
+ width: 100%;
height: 160rpx;
display: flex;
flex-direction: column;
@@ -522,13 +651,21 @@
font-size: 28rpx;
font-family: PingFang SC;
- font-weight: 500;
+ font-weight: 550;
color: #585b61;
line-height: 36rpx;
+ letter-spacing: 1px;
+ }
+
+ .new-content {
+ margin: 12rpx 0;
+ font-size: 0.46rem;
+ color: #4d4d4d;
}
.date {
display: flex;
+ justify-content: space-between;
align-items: center;
.icon {
@@ -541,15 +678,27 @@
font-family: PingFang SC;
font-weight: 500;
color: #a6abb5;
+
+
+ .advisory-title-name {
+ font-size: 0.7rem;
+ letter-spacing: 1px;
+ }
+
+ .advisory-title-time {
+ // margin-left: 0.8rem;
+ font-size: 0.7rem;
+ }
}
}
.img {
flex-shrink: 0;
- width: 252rpx;
- height: 160rpx;
+ width: 232rpx;
+ height: 140rpx;
border-radius: 20rpx;
background-color: #82848a;
+ margin-left: 0.5rem;
}
}
}
diff --git a/pages/login/login-account.vue b/pages/login/login-account.vue
index e72a207..efac432 100644
--- a/pages/login/login-account.vue
+++ b/pages/login/login-account.vue
@@ -142,8 +142,8 @@
if (this.OURpass == true) {
// this.passwords = '******';
uni.hideNavigationBarLoading();
- uni.reLaunch({
- url: '../home/home'
+ uni.redirectTo({
+ url: '/pages/home/home'
})
return '成功登录'
} else {
diff --git a/pages/manage/manage.vue b/pages/manage/manage.vue
index 6a5152c..0f2ae87 100644
--- a/pages/manage/manage.vue
+++ b/pages/manage/manage.vue
@@ -26,8 +26,49 @@
return {
swiperHeight: 0,
- gridList: [{
- name: '通知通告',
+ gridList: []
+ };
+ },
+ mounted() {
+
+ if (this.$store.state.UserData.rname[0] == '保安') {
+
+
+ this.gridList = [{
+ name: '发送通知',
+ img: '/static/images/manage/g8.png',
+ url: '/pages/message/addMessage'
+ },
+ {
+ name: '工作汇报添加',
+ img: '/static/images/manage/g11.png',
+ url: '/pages/report/initiate'
+ }
+ ]
+
+ } else if (this.$store.state.UserData.rname[0] == '保安公司管理员') {
+
+ this.gridList = [{
+ name: '发送通知',
+ img: '/static/images/manage/g8.png',
+ url: '/pages/message/addMessage'
+ },
+ {
+ name: '工作汇报添加',
+ img: '/static/images/manage/g11.png',
+ url: '/pages/report/initiate'
+ },
+ {
+ name: '保安员位置',
+ img: '/static/images/manage/g12.png',
+ url: '/pages/map/map'
+ },
+ ]
+
+ } else {
+
+ this.gridList = [{
+ name: '发送通知',
img: '/static/images/manage/g8.png',
url: '/pages/message/addMessage'
},
@@ -44,20 +85,22 @@
{
name: '指令下发',
img: '/static/images/manage/g10.png',
- url: '/pages/dispatch/dispatch'
+ url: '/pages/dispatch/imgissue'
},
{
- name: '工作汇报',
+ name: '工作汇报添加',
img: '/static/images/manage/g11.png',
url: '/pages/report/initiate'
},
{
- name: '位置查看',
+ name: '保安员位置',
img: '/static/images/manage/g12.png',
url: '/pages/map/map'
},
]
- };
+
+ }
+
},
onReady() {
let that = this;
diff --git a/pages/map/map.vue b/pages/map/map.vue
index b3e1c8a..d4e85e3 100644
--- a/pages/map/map.vue
+++ b/pages/map/map.vue
@@ -1,6 +1,16 @@
<template>
- <view class="content">
- <web-view :src="urls"></web-view>
+ <view class="content" style="width: 100%; height: 100%;">
+
+ <!-- <u-loading size="66" :show="flag" mode="circle"></u-loading> -->
+
+ <view v-show="flag" class="loading">{{loadingText}}</view>
+
+ <view v-show="!flag">
+
+ <web-view :src="urls" style="width: 100%; height: 100%;"></web-view>
+
+ </view>
+
</view>
</template>
@@ -9,21 +19,41 @@
data() {
return {
urls: '',
+ flag: true,
+ loadingText: '加载中...'
// dataList: [],
}
},
methods: {},
- mounted() {},
+ mounted() {
+ // uni.showNavigationBarLoading();
+
+ this.urls = "http://web.byisf.com/mapWz/xcxmap.html?id=" + this.$store.state.UserData.jurisdiction +
+ "&userid=" + this.$store.state.UserData.user_id +
+ "&roleName=" + this.$store.state.UserData.rname[0] +
+ "&deptid=" + this.$store.state.UserData.dept_id;
+
+
+ setTimeout(() => {
+ // uni.hideNavigationBarLoading();
+ this.flag = false
+ }, 3000)
+
+ },
onLoad: function(options) {
-
- this.urls = "http://web.byisf.com/mapWz/xcxmap.html?id="+ this.$store.state.UserData.jurisdiction + "&userid="+ this.$store.state.UserData.role_id;
+
+
// this.urls = "http://127.0.0.1:5500/mapWz/xcxmap.html?id=" + this.$store.state.UserData.jurisdiction +
- // "&userid=" + this.$store.state.UserData.role_id;
+ // "&userid=" + this.$store.state.UserData.user_id;
},
}
</script>
<style>
+ .loading {
+ text-align: center;
+ line-height: 80px;
+ }
</style>
diff --git a/pages/message/addMessage.vue b/pages/message/addMessage.vue
index c6b5675..743b3be 100644
--- a/pages/message/addMessage.vue
+++ b/pages/message/addMessage.vue
@@ -1,6 +1,8 @@
<template>
<view class="container">
- <view class='initiae-box'>
+
+ <view class="group-chat-box">
+
<u-form :model="form" ref="uForm">
<u-form-item label-width='132' prop="title" label="通知标题" :required="true">
@@ -11,14 +13,54 @@
<u-input type='textarea' v-model="form.content" placeholder="请输入通知内容" />
</u-form-item>
+ <u-form-item label-width='132' label="接收人">
+
+ <u-button slot="right" type="success" size="mini" @click="recipientClick">选择接收人</u-button>
+
+ <u-popup :closeable="true" v-model="recipientShow" mode="bottom" height="50%" border-radius="14">
+
+ <view>
+
+ <u-checkbox-group v-show="recipientList.length > 0" @change="checkboxGroupChange"
+ :wrap='true' :size="40">
+
+ <u-checkbox v-model="item.checked" v-for="(item, index) in recipientList" :key="index"
+ :name="item.id" shape="circle"
+ style="padding: 0 40rpx; height: 92rpx; position: relative; box-sizing: border-box;">
+
+ <view style="margin-left: 22rpx">
+ {{item.real_name}}
+ </view>
+
+ </u-checkbox>
+
+ </u-checkbox-group>
+
+ <view style=" height: 92rpx; padding: 0 40rpx;" v-show="recipientList.length == 0">
+
+ 暂无数据
+
+ </view>
+
+ </view>
+
+ </u-popup>
+
+ </u-form-item>
+
</u-form>
- <view>
- <u-button type="primary" @click="initiateClick" style="margin-top: 4%; width: 60%;">发送</u-button>
- </view>
- <view>
- <u-toast ref="uToast" />
- </view>
+
</view>
+
+ <view class="establish-box">
+ <u-button class="submit" type="primary" @click="initiateClick">发送
+ </u-button>
+ </view>
+
+ <view>
+ <u-toast ref="uToast" />
+ </view>
+
</view>
</template>
@@ -26,10 +68,13 @@
export default {
data() {
return {
+ recipientShow: false,
+ recipientList: [],
form: {
title: '',
- content: ''
+ content: '',
+ recipientData: []
},
rules: {
content: [{
@@ -57,11 +102,95 @@
},
mounted() {},
onReady() {
- this.$refs.uForm.setRules(this.rules);
+ this.$refs.uForm.setRules(this.rules);
},
methods: {
+ recipientClick() {
+
+ if (this.recipientList.length > 0) {
+ this.recipientShow = true;
+ return
+ }
+
+ var data = null;
+
+ if (this.$store.state.UserData.rname[0] ==
+ '保安公司管理员') {
+
+ data = {
+ type: 2,
+ deptid: this.$store.state.UserData.dept_id
+ }
+
+ uni.request({
+ url: this.$store.state.piAPI + "/blade-user/seleL",
+ method: "get",
+ data: data,
+ success: (res) => {
+
+ this.recipientList = []
+ res.data.data.forEach(item => {
+
+ if (item.id != this.$store.state
+ .UserData.user_id
+ ) {
+
+ item.checked = false;
+ this.recipientList.push(item)
+
+ }
+
+ })
+
+ this.recipientShow = true;
+
+ }
+ });
+
+
+ } else {
+
+ uni.request({
+ url: this.$store.state.piAPI + '/blade-user/pages?dispatch=0&jurisdiction=' + this.$store
+ .state.UserData.jurisdiction + '¤t=1&size=999999',
+ method: "get",
+ data: data,
+ success: (res) => {
+
+ console.log(res, 546)
+
+ this.recipientList = []
+ res.data.data.records.forEach(item => {
+
+ if (item.id != this.$store.state
+ .UserData.user_id
+ ) {
+
+ item.checked = false
+ item.real_name = item.realName
+ this.recipientList.push(item)
+
+ }
+
+ })
+
+ this.recipientShow = true;
+
+ }
+ });
+
+
+ }
+
+ },
+
+ checkboxGroupChange(e) {
+
+ this.form.recipientData = e
+
+ },
getCurrentTime() {
let date = new Date();
@@ -81,7 +210,28 @@
this.$refs.uForm.validate(valid => {
if (valid) {
-
+
+ if (this.form.recipientData.length == 0) {
+ this.$refs.uToast.show({
+ title: '请最少选择一个接收人',
+ })
+ return
+ }
+
+ var receivedNameStr = []
+
+ this.form.recipientData.forEach(it => {
+
+ this.recipientList.forEach(item => {
+
+ if (it.id == item.id) {
+ receivedNameStr.push(item.real_name)
+ }
+
+ })
+
+ })
+
uni.request({
url: this.$store.state.piAPI + "/blade-system/dept/detail",
method: "get",
@@ -91,46 +241,87 @@
success: (result) => {
var deptCategory = result.data.data.deptCategory;
-
- uni.request({
- url: this.$store.state.piAPI + "/blade-desk/notice/submit",
- method: "post",
- data: {
- title: this.form.title,
- content: this.form.content,
- category: deptCategory,
- deptId: result.data.data.deptCategory,
- releaseTime: this.getCurrentTime(),
- },
- success: (res) => {
- if (res.data.msg == "操作成功") {
- this.$refs.uToast.show({
- title: '新增通知成功',
- type: 'success',
- url: '/pages/message/message'
- })
- }
+
+ uni.request({
+ url: this.$store.state.piAPI + "/blade-desk/notice/submit",
+ method: "post",
+ data: {
+ type: 1,
+ title: this.form.title,
+ content: this.form.content,
+ category: deptCategory,
+ deptId: this.createData.dept_id,
+ releaseTime: this.getCurrentTime(),
+ receivedName: receivedNameStr.toString(),
+ receivedIds: this.form.recipientData.toString(),
+ },
+ success: (res) => {
+ if (res.data.msg == "操作成功") {
+ this.$refs.uToast.show({
+ title: '新增通知成功',
+ type: 'success',
+ url: '/pages/message/message'
+ })
}
- });
+ }
+ });
}
});
-
-
+
+
} else {
console.log('验证失败');
}
});
},
-
-
+
+
}
};
</script>
<style lang="scss">
- .initiae-box {
- padding: 0 30rpx;
+ .submit {
+ border: none;
+ width: 94%;
+ height: 86rpx;
+ line-height: 86rpx;
+ box-sizing: border-box;
+ border-radius: 15rpx;
+ color: #ffffff;
+ font-size: 38rpx;
+
+ }
+
+ .container {
+ height: 100%;
+
+ .group-chat-box {
+ height: calc(100% - 116rpx);
+ padding: 0 36rpx;
+ box-sizing: border-box;
+ overflow-y: auto;
+ }
+
+ .establish-box {
+ position: relative;
+ height: 116rpx;
+ background: #fff;
+ text-align: center;
+
+ uni-button {
+ margin: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin: auto;
+ }
+
+ }
+
}
</style>
diff --git a/pages/message/message.vue b/pages/message/message.vue
index 17775b6..8e93e3a 100644
--- a/pages/message/message.vue
+++ b/pages/message/message.vue
@@ -17,7 +17,7 @@
<span class="header-title">通知公告</span>
- <u-icon @click="goToAddPage" top='4' class="header-add" name="plus" color="#fff">
+ <u-icon v-if="$store.state.UserData.rname[0] != '保安'" @click="goToAddPage" top='4' class="header-add" name="plus" color="#fff">
</u-icon>
</view>
@@ -121,10 +121,10 @@
return {
list: [{
- name: '单位公告'
+ name: '单位通知列表'
},
{
- name: '公安公告'
+ name: '公安通知列表'
}
],
@@ -209,6 +209,7 @@
.dept_id,
method: "get",
data: {
+ type: 1,
current: that.pagelist,
size: 10
},
@@ -259,6 +260,7 @@
.dept_id,
method: "get",
data: {
+ type: 1,
current: that.pagelist,
size: 10
},
@@ -337,6 +339,7 @@
.dept_id,
method: "get",
data: {
+ type: 1,
current: 1,
size: 999999,
title: str
@@ -358,6 +361,7 @@
.dept_id,
method: "get",
data: {
+ type: 1,
current: 1,
size: 999999,
title: str
@@ -486,7 +490,7 @@
position: absolute;
top: 0;
left: auto;
- right: 3px;
+ right: 10px;
bottom: 0;
margin: auto;
display: inline-block;
diff --git a/pages/report/initiate.vue b/pages/report/initiate.vue
index 9cff87e..0677f20 100644
--- a/pages/report/initiate.vue
+++ b/pages/report/initiate.vue
@@ -1,6 +1,8 @@
<template>
<view class="container">
- <view class='initiae-box'>
+
+ <view class="group-chat-box">
+
<u-form :model="form" ref="uForm">
<u-form-item label-width='132' prop="categoryText" label="汇报类别" :required="true">
@@ -21,24 +23,55 @@
<u-input type='textarea' v-model="form.content" placeholder="请输入汇报内容" />
</u-form-item>
- <u-form-item label-width='132' prop="recipientText" label="接收人" :required="true">
+ <u-form-item label-width='132' label="接收人">
- <u-input v-model="form.recipientText" type="select" placeholder="请选择接收人" :border="false"
- @click="recipientClick" />
- <u-select v-model="recipientShow" mode="mutil-column-auto" :list="recipientList"
- @confirm="recipientConfirm">
- </u-select>
+ <u-input type='textarea' v-model="form.recipientPeople" placeholder="请选择接收人"
+ @click="recipientClick" autoHeight />
+
+ <u-popup :closeable="true" v-model="recipientShow" mode="bottom" height="50%" border-radius="14">
+
+ <view>
+
+ <u-checkbox-group v-show="recipientList.length > 0" @change="checkboxGroupChange" :wrap='true' :size="40">
+
+ <u-checkbox v-model="item.checked" v-for="(item, index) in recipientList" :key="index"
+ :name="item.id" shape="circle"
+ style="padding: 0 40rpx; height: 92rpx; position: relative; box-sizing: border-box;">
+
+ <view style="margin-left: 22rpx">
+ {{item.real_name}}
+ </view>
+
+ </u-checkbox>
+
+ </u-checkbox-group>
+
+ <view style=" height: 92rpx; padding: 0 40rpx;" v-show="recipientList.length == 0">
+
+ 暂无数据
+
+ </view>
+
+ </view>
+
+ </u-popup>
</u-form-item>
</u-form>
- <view>
- <u-button type="primary" @click="initiateClick" style="margin-top: 4%; width: 60%;">发送</u-button>
- </view>
- <view>
- <u-toast ref="uToast" />
- </view>
+
</view>
+
+ <view class="establish-box">
+
+ <u-button class="submit" type="primary" @click="initiateClick">发送</u-button>
+
+ </view>
+
+ <view>
+ <u-toast ref="uToast" />
+ </view>
+
</view>
</template>
@@ -51,19 +84,7 @@
recipientShow: false,
- categoryList: [{
- value: '1',
- label: '保安向保安汇报'
- },
- {
- value: '2',
- label: '保安向民警汇报'
- },
- {
- value: '3',
- label: '民警向民警汇报'
- }
- ],
+ categoryList: [],
typeList: [{
value: '1',
label: '日报'
@@ -85,8 +106,8 @@
categoryText: '',
type: '',
typeText: '',
- recipient: '',
- recipientText: ''
+ recipientData: [],
+ recipientPeople: ''
},
rules: {
categoryText: [{
@@ -106,12 +127,8 @@
message: '汇报内容不能少于5个字',
trigger: ['change', 'blur'],
}],
- recipientText: [{
- required: true,
- message: '请选择接收人',
- trigger: ['change', 'blur'],
- }],
- }
+ },
+ peopleSelect: false,
};
},
onLoad() {
@@ -120,9 +137,44 @@
onReachBottom() {
},
- mounted() {},
+ mounted() {
+
+ if (this.$store.state.UserData.rname[0] == '保安') {
+
+ this.categoryList = [{
+ value: '1',
+ label: '保安向保安汇报'
+ },
+ {
+ value: '2',
+ label: '保安向民警汇报'
+ }
+ ]
+
+ } else if (this.$store.state.UserData.rname[0] == '保安公司管理员') {
+
+ this.categoryList = [{
+ value: '1',
+ label: '保安向保安汇报'
+ },
+ {
+ value: '2',
+ label: '保安向民警汇报'
+ }
+ ]
+
+ } else {
+ this.categoryList = [{
+ value: '3',
+ label: '民警向民警汇报'
+ }]
+ }
+
+ },
onReady() {
+
this.$refs.uForm.setRules(this.rules);
+
},
methods: {
categoryClick() {
@@ -140,57 +192,114 @@
});
return;
} else {
- uni.request({
- url: this.$store.state.piAPI + "/blade-system/dept/lazy-tree-user-app?type=" + this.form
- .category,
- method: "get",
- data: {
- },
- success: (res) => {
- this.recipientList = []
- res.data.forEach(item => {
- if (item.hasChildren) {
- this.recipientList.push(item)
- }
- })
- this.recipientShow = true;
+ if (this.peopleSelect == false) {
+ var data = null;
+ if (this.form
+ .category == 1) {
+
+ data = {
+ type: 2,
+ deptid: this.$store.state.UserData.dept_id
+ }
+
+ } else if (this.form
+ .category == 2) {
+
+ data = {
+ type: 3,
+ deptid: this.$store.state.UserData.dept_id,
+ userId: this.$store.state.UserData.user_id
+ }
+
+ } else if (this.form
+ .category == 3) {
+
+ data = {
+ type: 4,
+ deptid: this.$store.state.UserData.dept_id
+ // jurisdiction: this.$store.state
+ // .UserData.jurisdiction,
+ }
+
}
- });
+
+ uni.request({
+ url: this.$store.state.piAPI + "/blade-user/seleL",
+ method: "get",
+ data: data,
+ success: (res) => {
+
+ this.recipientList = []
+ res.data.data.forEach(item => {
+
+ var flag = true
+
+ if (this.recipientList.length > 0) {
+ this.recipientList.forEach(it => {
+ if (item.id == it.id) flag = false
+ })
+ }
+
+ if (flag == true) {
+ if (item.id != this.$store.state
+ .UserData.user_id
+ ) {
+ item.checked = false;
+ this.recipientList.push(item)
+ }
+ }
+
+ })
+
+ this.recipientShow = true;
+
+ this.peopleSelect = true;
+
+ }
+ });
+
+ } else {
+
+ this.recipientShow = true;
+
+ }
}
},
categoryConfirm(e) {
- if (this.form.categoryText != e[0].label) {
- this.form.recipient = ''
- this.form.recipientText = ''
+ if (this.form.categoryText == e[0].label) {
+ return;
+ } else {
+ this.form.category = e[0].value
+ this.form.categoryText = e[0].label
+ this.peopleSelect = false
}
-
- this.form.category = e[0].value
- this.form.categoryText = e[0].label
-
},
typeConfirm(e) {
this.form.type = e[0].value
this.form.typeText = e[0].label
},
- recipientConfirm(e) {
-
- if (e.length == 1) {
- this.form.recipient = e[0].value
- this.form.recipientText = e[0].label
- } else if (e.length == 2) {
- this.form.recipient = e[1].value
- this.form.recipientText = e[1].label
- } else if (e.length == 3) {
- this.form.recipient = e[2].value
- this.form.recipientText = e[2].label
- }
-
- },
+
initiateClick() {
this.$refs.uForm.validate(valid => {
if (valid) {
+
+ if (this.form.recipientData.length == 0) {
+ this.$refs.uToast.show({
+ title: '请最少选择一个接收人',
+ })
+ return
+ }
+
+ var str = '';
+
+ this.form.recipientData.forEach(item => {
+ str += item + ','
+ })
+
+ str = str.substr(0, str.length - 1);
+
uni.request({
url: this.$store.state.piAPI + "/workReport/submit",
method: "post",
@@ -200,7 +309,7 @@
content: this.form.content,
userId: this.$store.state.puserID,
deptId: this.$store.state.UserData.dept_id,
- receivedIds: this.form.recipient
+ receivedIds: str
},
success: (res) => {
if (res.data.msg == "操作成功") {
@@ -216,14 +325,79 @@
console.log('验证失败');
}
});
- }
+ },
+ checkboxGroupChange(e) {
+ var that = this
+
+ this.form.recipientData = e
+
+ var str = ""
+ var num = 0
+
+ that.form.recipientData.forEach((item, index) => {
+ that.recipientList.forEach((it, index) => {
+ if (item == it.id) {
+ if (num > 0) {
+ str += '、';
+ str += it.real_name;
+ } else {
+ str += it.real_name
+ }
+ num += 1
+ return
+ }
+ })
+ })
+
+ this.form.recipientPeople = str
+
+ },
+
}
};
</script>
<style lang="scss">
- .initiae-box {
- padding: 0 30rpx;
+ .submit {
+ border: none;
+ width: 94%;
+ height: 86rpx;
+ line-height: 86rpx;
+ box-sizing: border-box;
+ border-radius: 15rpx;
+ color: #ffffff;
+ font-size: 38rpx;
+
+ }
+
+ .container {
+ height: 100%;
+
+ .group-chat-box {
+ height: calc(100% - 116rpx);
+ padding: 0 36rpx;
+ box-sizing: border-box;
+ overflow-y: auto;
+ }
+
+ .establish-box {
+ position: relative;
+ height: 116rpx;
+ background: #fff;
+ text-align: center;
+
+ uni-button {
+ margin: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin: auto;
+ }
+
+ }
+
}
</style>
diff --git a/pages/report/report.vue b/pages/report/report.vue
index 6ea87ee..c81313f 100644
--- a/pages/report/report.vue
+++ b/pages/report/report.vue
@@ -124,10 +124,10 @@
return {
list: [{
- name: '接收汇报'
+ name: '汇报接收列表'
},
{
- name: '发送汇报'
+ name: '汇报发送列表'
}
],
@@ -217,7 +217,7 @@
that.pages = res.data.data.pages;
var resdata = res.data.data.records;
-
+
if (that.pullDown == true) {
that.pullDown = false;
uni.stopPullDownRefresh();
@@ -266,7 +266,7 @@
that.pages = res.data.data.pages;
var resdata = res.data.data.records;
-
+
if (that.pullDown == true) {
that.pullDown = false;
uni.stopPullDownRefresh();
@@ -289,7 +289,7 @@
return
}
-
+
}
});
@@ -481,7 +481,7 @@
position: absolute;
top: 0;
left: auto;
- right: 3px;
+ right: 10px;
bottom: 0;
margin: auto;
display: inline-block;
diff --git a/pages/securityStaff/exhibition.vue b/pages/securityStaff/exhibition.vue
index 0190213..5ec18b6 100644
--- a/pages/securityStaff/exhibition.vue
+++ b/pages/securityStaff/exhibition.vue
@@ -96,45 +96,94 @@
return
}
- uni.request({
- url: that.$store.state.piAPI + "/blade-user/pages",
- method: "get",
- data: {
- dispatch: 0,
- jurisdiction: this.$store.state
- .UserData.jurisdiction,
- current: that.pagelist,
- size: 10
- },
- success: (res) => {
- that.pages = res.data.data.pages;
-
- var resdata = res.data.data.records;
-
- if (this.pullDown == true) {
- this.pullDown = false;
- uni.stopPullDownRefresh();
+
+
+ if (this.$store.state.UserData.rname[0] == '保安公司管理员') {
+
+ uni.request({
+ url: that.$store.state.piAPI + "/blade-user/pages",
+ method: "get",
+ data: {
+ current: that.pagelist,
+ size: 10,
+ deptId: this.$store.state.UserData.dept_id,
+ roleAlias: 111
+ },
+ success: (res) => {
+ that.pages = res.data.data.pages;
+
+ var resdata = res.data.data.records;
+
+ if (this.pullDown == true) {
+ this.pullDown = false;
+ uni.stopPullDownRefresh();
+ }
+
+ if (resdata.length == 0) {
+ that.flag = false
+ that.status = 'nomore';
+ return
+ } else {
+ resdata.forEach(item => {
+ that.newsList.push(item)
+ that.dataList.push(item)
+ })
+ }
+
+ if (that.pagelist == that.pages) {
+ that.flag = false
+ that.status = 'nomore';
+ return
+ }
+
}
-
- if (resdata.length == 0) {
- that.flag = false
- that.status = 'nomore';
- return
- } else {
- resdata.forEach(item => {
- that.newsList.push(item)
- that.dataList.push(item)
- })
+ });
+
+ } else {
+
+ uni.request({
+ url: that.$store.state.piAPI + "/blade-user/pages",
+ method: "get",
+ data: {
+ dispatch: 0,
+ status: 1,
+ roleAlias: 111,
+ jurisdiction: this.$store.state
+ .UserData.jurisdiction,
+ current: that.pagelist,
+ size: 10
+ },
+ success: (res) => {
+ that.pages = res.data.data.pages;
+
+ var resdata = res.data.data.records;
+
+ if (this.pullDown == true) {
+ this.pullDown = false;
+ uni.stopPullDownRefresh();
+ }
+
+ if (resdata.length == 0) {
+ that.flag = false
+ that.status = 'nomore';
+ return
+ } else {
+ resdata.forEach(item => {
+ that.newsList.push(item)
+ that.dataList.push(item)
+ })
+ }
+
+ if (that.pagelist == that.pages) {
+ that.flag = false
+ that.status = 'nomore';
+ return
+ }
+
}
-
- if (that.pagelist == that.pages) {
- that.flag = false
- that.status = 'nomore';
- return
- }
-
- }
- });
+ });
+
+ }
},
goDetail(item) {
uni.navigateTo({
@@ -148,29 +197,56 @@
return
} else {
that.newsList = [];
-
- uni.request({
- url: that.$store.state.piAPI + "/blade-user/pages",
- method: "get",
- data: {
- current: 1,
- size: 999999,
- realName: str,
- dispatch: 0,
- jurisdiction: this.$store.state
- .UserData.jurisdiction,
- },
- success: (res) => {
-
- var resdata = res.data.data.records;
-
- resdata.forEach(item => {
- that.newsList.push(item)
- })
-
- }
- });
-
+
+ if (this.$store.state.UserData.rname[0] == '保安公司管理员') {
+
+ uni.request({
+ url: that.$store.state.piAPI + "/blade-user/pages",
+ method: "get",
+ data: {
+ current: 1,
+ size: 999999,
+ realName: str,
+ deptId: this.$store.state.UserData.dept_id,
+ roleAlias: 111
+ },
+ success: (res) => {
+
+ var resdata = res.data.data.records;
+
+ resdata.forEach(item => {
+ that.newsList.push(item)
+ })
+
+ }
+ });
+
+ } else {
+
+ uni.request({
+ url: that.$store.state.piAPI + "/blade-user/pages",
+ method: "get",
+ data: {
+ current: 1,
+ size: 999999,
+ realName: str,
+ dispatch: 0,
+ jurisdiction: this.$store.state
+ .UserData.jurisdiction,
+ },
+ success: (res) => {
+
+ var resdata = res.data.data.records;
+
+ resdata.forEach(item => {
+ that.newsList.push(item)
+ })
+
+ }
+ });
+
+ }
+
that.flag = false
that.status = 'nomore';
}
diff --git a/pages/securityStaff/information.vue b/pages/securityStaff/information.vue
index 1278ffb..5b053c0 100644
--- a/pages/securityStaff/information.vue
+++ b/pages/securityStaff/information.vue
@@ -27,13 +27,13 @@
<i>学历</i> <span> {{ datalist.education }} </span>
</view>
<view class="once">
- <i>出生日期</i> <span> {{ datalist.birthtime }} </span>
+ <i>出生日期</i> <span> {{ datalist.birthday }} </span>
</view>
<view class="once">
<i>政治面貌</i> <span> {{ datalist.politicaloutlook }} </span>
</view>
<view class="once">
- <i>联系电话</i> <span> {{ datalist.cell }} </span>
+ <i>联系电话</i> <span> {{ datalist.phone }} </span>
</view>
<view class="once">
<i>所属公司</i> <span> {{ datalist.deptName }} </span>
@@ -61,14 +61,15 @@
性别:<view class="o-once"> {{datalist.sex == 1 ? '男' : '女'}}</view>
</view>
<view class="once">
- 编号:<view class="o-once"> {{datalist.baoanzheng}}</view>
+ 编号:<view class="o-once"> {{datalist.securitynumber}}</view>
</view>
- <view class="once" style="margin-bottom: 1rem; display: flex;">
- <view style='flex: 1'>发证机关:<view class="o-once"> {{datalist.fzobj}}</view>
- </view>
- <view style='flex: 1'>发证日期:<view class="o-once">{{datalist.fztime}}</view>
- </view>
+ <view class="once">
+ 发证机关:<view class="o-once"> 南昌市公安局 </view>
</view>
+ <view class="once">
+ 发证日期:<view class="o-once"> {{datalist.updateTime}}</view>
+ </view>
+
<u-image class="img" width="150rpx" height="150rpx" :src="datalist.avatar">
<view slot="error" style="font-size: 1rem;">暂无证件</view>
</u-image>
@@ -92,7 +93,7 @@
<template v-slot:content>
<view>
<view class="u-order-title">在职时间:<view class="titles">
- {{item.entryTime.slice(0,11)}}至 {{item.departureTime.slice(0,11)}}
+ {{item.entrytime}}至 {{item.departuretime}}
</view>
</view>
<view class="u-order-desc">公司名称:{{item.companyname}}</view>
@@ -154,9 +155,9 @@
this.showc = true;
},
getcongye() {
- var url = this.$store.state.piAPI + '/experience/selectExperienceInfo',
+ var url = this.$store.state.piAPI + '/experience/page',
data = {
- cardid: this.datalist.cardid
+ securityid: this.datalist.id
},
that = this;
@@ -165,12 +166,14 @@
data: data,
method: 'get',
success: (res) => {
- var d = res.data.data;
+ var d = res.data.data.records;
var a = []
// for(var k = 1 ;k < 30; k++){
a.push(...d)
// }
that.cylist = a;
+
+ console.log(that.cylist, 456)
}
})
@@ -262,12 +265,14 @@
}
.certificatesnj {
+ padding: 0.6rem 1.6rem 1.6rem 1.6rem;
background-image: url(../../static/images/salf/bazbj.png);
background-size: 100% 100%;
height: 100%;
}
.certificates {
+
.img {
position: absolute;
@@ -289,14 +294,12 @@
.once {
width: 100%;
height: auto;
- line-height: 2rem;
- font-size: 0.8rem;
- padding: 0 2.5% 0 2.5%;
+ line-height: 1.6rem;
+ font-size: 0.72rem;
.o-once {
display: inline-block;
font-size: 0.72rem;
- font-weight: 600;
}
}
}
diff --git a/pages/user/center.vue b/pages/user/center.vue
index 018273c..3028bcf 100644
--- a/pages/user/center.vue
+++ b/pages/user/center.vue
@@ -31,10 +31,11 @@
<image src="/static/images/user/n2.png" class="icon" mode=""></image>
<view class="name">我的待办</view>
</navigator> -->
- <navigator url="" hover-class="none" class="nav-item">
+ <view hover-class="none" class="nav-item" @click="openMap">
<image src="/static/images/user/n3.png" class="icon" mode=""></image>
<view class="name">我的地址</view>
- </navigator>
+ </view>
+
<!-- <navigator url="" hover-class="none" class="nav-item">
<image src="/static/images/user/n4.png" class="icon" mode=""></image>
<view class="name">我的收藏</view>
@@ -112,7 +113,7 @@
getOneselfInFo() {
var that = this;
//保安信息查询
- console.log(this.$store.state.UserData)
+ console.log(this.$store.state.UserData, 999)
if (this.$store.state.UserData) {
that.name = this.$store.state.UserData.nick_name
that.id = this.$store.state.UserData.user_id
@@ -120,6 +121,24 @@
}
},
+ // 地图
+ openMap(){
+ uni.getLocation({
+ type: 'gcj02', //返回可以用于uni.openLocation的经纬度
+ success: function (res) {
+ console.log(res)
+ const latitude = res.latitude;
+ const longitude = res.longitude;
+ uni.openLocation({
+ latitude: latitude,
+ longitude: longitude,
+ success: function () {
+ console.log('success');
+ }
+ });
+ }
+ });
+ }
},
mounted() {
console.log(this.$store.state)
diff --git a/pages/user/profile.vue b/pages/user/profile.vue
index 59b15b9..1e013ae 100644
--- a/pages/user/profile.vue
+++ b/pages/user/profile.vue
@@ -1,28 +1,87 @@
<template>
<view class="container">
- <u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward" title="个人资料"
- back-icon-size="35" :background="{ background: '#fff' }" title-color="#000">
+ <u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-color="#fff" title="个人资料"
+ back-icon-size="35" :background="{ background: '#0BB9C8' }" title-color="#fff">
<view class="complie" slot="right" @click="submit">完成</view>
</u-navbar>
<view class="content">
- <view class="avatar">
+ <view class="avatar" style="height: 420rpx">
<image :src="detail.avatar" class="avatar-image" mode=""></image>
<view class="a" @click="handleChooseImg">更换头像</view>
</view>
- <view class="form">
- <view class="cell">
- <view class="name">姓名</view>
- <input type="text" placeholder="请输入姓名" v-model="detail.nick_name" class="ipt"
- placeholder-class="hold" />
+
+ <view class="detail-content">
+
+ <view class='row-content'>
+ <span class="title">
+ 名 称
+ </span>
+ <span>
+ {{detail.nick_name}}
+ </span>
</view>
+
+ <view class='row-content'>
+ <span class="title">
+ 单 位
+ </span>
+ <span>
+ {{detail.deptName}}
+ </span>
+ </view>
+
+ <view class='row-content' v-show="detail.rname[0] == '保安'">
+ <span class="title">
+ 性 别
+ </span>
+ <span>
+ {{detail.list.sex == 1 ? '男' : detail.list.sex == 2 ? '女' : ''}}
+ </span>
+ </view>
+
+ <view class='row-content' v-show="detail.rname[0] == '保安'">
+ <span class="title">
+ 年 龄
+ </span>
+ <span>
+ {{detail.age}}
+ </span>
+ </view>
+
+ <view class='row-content' v-show="detail.rname[0] == '保安'">
+ <span class="title">
+ 籍 贯
+ </span>
+ <span>
+ {{detail.list.nativeplace}}
+ </span>
+ </view>
+
+ <view class='row-content' v-show="detail.rname[0] == '保安'">
+ <span class="title">
+ 联系电话
+ </span>
+ <span>
+ {{detail.list.phone}}
+ </span>
+ </view>
+
+ <view class='row-content' v-show="detail.rname[0] == '保安'">
+ <span class="title">
+ 证件编号
+ </span>
+ <span>
+ {{detail.list.securitynumber}}
+ </span>
+ </view>
+
</view>
+
</view>
<!-- -->
- <view class="back" @click="logout">退出登录</view>
- <view>
- <u-toast ref="uToast" />
- </view>
+ <!-- <view class="back" @click="logout">退出登录</view> -->
+ <u-toast ref="uToast" />
</view>
</template>
@@ -50,8 +109,16 @@
.UserData) {
this.detail = this.$store.state
.UserData
+
+ var usercode = this.detail.cardid;
+ var date = new Date();
+ var year = date.getFullYear();
+ var birthday_year = parseInt(usercode.substr(6, 4));
+ var userage = year - birthday_year;
+
+ this.detail.age = userage;
}
-
+
},
methods: {
logout() {
@@ -87,7 +154,7 @@
}
}
});
-
+
},
changeDefaultPicker(name, e) {
this.detail[name] = e.detail.value;
@@ -110,10 +177,19 @@
<style lang="scss">
.container {
- background-color: #f7f7f7;
- min-height: 100vh;
- padding: 0 0 200rpx;
+
+ height: 100vh;
overflow: hidden;
+
+ background: #0ED2F7;
+ /* fallback for old browsers */
+ background: -webkit-linear-gradient(to left, #B2FEFA, #0ED2F7);
+ /* Chrome 10-25, Safari 5.1-6 */
+ background: linear-gradient(to left, #B2FEFA, #0ED2F7);
+ /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
+
+
+
}
.complie {
@@ -122,16 +198,15 @@
font-size: 32rpx;
font-family: Source Han Sans CN;
font-weight: 400;
- color: #14b9c8;
+ color: #fff;
}
.content {
- background-color: #ffffff;
- overflow: hidden;
+ height: 100%;
+ overflow-y: auto;
}
.avatar {
- margin-top: 30rpx;
display: flex;
justify-content: center;
align-items: center;
@@ -140,7 +215,14 @@
font-size: 30rpx;
font-family: Source Han Sans CN;
font-weight: 400;
- color: #14b9c8;
+ color: #fff;
+
+ background: #0BB9C8;
+ /* fallback for old browsers */
+ background: -webkit-linear-gradient(to left, #0BB9C8, #0cd9e7, #0cd9e7, #0BB9C8);
+ /* Chrome 10-25, Safari 5.1-6 */
+ background: linear-gradient(to left, #0BB9C8, #0cd9e7, #0cd9e7, #0BB9C8);
+ /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
.avatar-image {
width: 162rpx;
@@ -152,43 +234,42 @@
}
}
- .form {
- padding: 0 36rpx;
+ .detail-content {
+ margin-top: 8px;
+ margin-left: 2.5%;
+ padding: 8px 2.5%;
+ width: 95%;
+ background-color: rgba(65, 64, 66, 0.1);
+ border-radius: 5px;
+ display: flex;
+ flex-direction: column;
+
+ min-height: calc(100% - 634rpx);
- .cell {
+ .row-content {
+ width: 100%;
+ height: 60px;
+ /* background-color: seashell; */
display: flex;
- justify-content: space-between;
align-items: center;
- padding: 40rpx 0;
+ /* justify-content: center; */
+ color: #fff;
+ margin: 0 auto;
+ border-bottom: 1px solid rgba(255, 255, 255, 0.5);
- font-size: 30rpx;
- font-family: Source Han Sans CN;
- font-weight: bold;
- color: #666666;
-
- &:not(:last-of-type) {
- border-bottom: 2rpx solid #efefef;
- }
-
- .ipt {
- flex: 1;
- margin-left: 40rpx;
- text-align: right;
- font-size: 23rpx;
- font-family: Source Han Sans CN;
- font-weight: bold;
- color: #333333;
- }
-
- .hold {
- font-size: 27rpx;
- font-family: Source Han Sans CN;
- font-weight: bold;
- color: #c8c8ce;
+ .title {
+ margin-left: 6%;
+ display: inline-block;
+ width: 21%;
+ min-width: 144rpx;
}
}
+
}
+
+
+
.back {
margin-top: 40rpx;
text-align: center;
diff --git a/static/images/dispatch/imgissue.png b/static/images/dispatch/imgissue.png
index 3b0d66a..bef302c 100644
--- a/static/images/dispatch/imgissue.png
+++ b/static/images/dispatch/imgissue.png
Binary files differ
diff --git a/static/images/dispatch/issue.png b/static/images/dispatch/issue.png
index 7bceee0..6905ab1 100644
--- a/static/images/dispatch/issue.png
+++ b/static/images/dispatch/issue.png
Binary files differ
diff --git a/static/images/dispatch/look.png b/static/images/dispatch/look.png
index 37eeed8..1924434 100644
--- a/static/images/dispatch/look.png
+++ b/static/images/dispatch/look.png
Binary files differ
diff --git a/static/images/dispatch/up-down.png b/static/images/dispatch/up-down.png
new file mode 100644
index 0000000..02277f8
--- /dev/null
+++ b/static/images/dispatch/up-down.png
Binary files differ
diff --git a/static/images/message/security.png b/static/images/message/security.png
new file mode 100644
index 0000000..dd6ab60
--- /dev/null
+++ b/static/images/message/security.png
Binary files differ
diff --git a/static/images/message/send.png b/static/images/message/send.png
new file mode 100644
index 0000000..fc9808a
--- /dev/null
+++ b/static/images/message/send.png
Binary files differ
diff --git a/static/images/message/unit.png b/static/images/message/unit.png
new file mode 100644
index 0000000..720abe2
--- /dev/null
+++ b/static/images/message/unit.png
Binary files differ
diff --git a/store/index.js b/store/index.js
index 674c4be..2d02532 100644
--- a/store/index.js
+++ b/store/index.js
@@ -36,7 +36,7 @@
piAPI: 'http://223.82.109.183:2080/api',
api: 'http://223.82.109.183:2080/api',
// piAPI: 'http://localhost:81/',
- // piAPI: 'http://192.168.0.103:81',
+ // piAPI: 'http://192.168.0.108:81',
puserName: '',
puserID: '',
puserIphone: '',
diff --git a/utils/func.js b/utils/func.js
index c6c966e..4d00924 100644
--- a/utils/func.js
+++ b/utils/func.js
@@ -21,6 +21,7 @@
})
vm.$u.vuex('accessToken', '')
vm.$u.vuex('isLogin', false)
+ vm.$u.vuex('UserData', {})
uni.redirectTo({
url: '/pages/login/login-account'
})
--
Gitblit v1.9.3