From bbcb300bb30e287816c6f1e6aff96aa0fd0e1c91 Mon Sep 17 00:00:00 2001
From: Lou <luzhiping@qqyjz.com>
Date: Mon, 22 Apr 2024 17:33:56 +0800
Subject: [PATCH] 更新
---
api/school/school.js | 42 ++
subPackage/article/signature.vue | 2
pages/circle/index.vue | 23
pages.json | 28 +
subPackage/school/troubleAuditList.vue | 286 +++++++++++++++++++
subPackage/article/detail.vue | 4
pages/user/center.vue | 6
common/common.js | 2
subPackage/school/troubleList.vue | 112 +++++++
pages/home/index.vue | 37 ++
subPackage/school/trouble.vue | 153 +++------
subPackage/workbench/views/cscj.vue | 1
subPackage/school/troubleDetail.vue | 172 +++++++++++
subPackage/school/clockIn.vue | 8
14 files changed, 756 insertions(+), 120 deletions(-)
diff --git a/api/school/school.js b/api/school/school.js
index 5eebcfa..52b2f32 100644
--- a/api/school/school.js
+++ b/api/school/school.js
@@ -9,6 +9,48 @@
})
}
+//新增隐患、矛盾报事
+export const addTroubleReport = (data) => {
+ return http.request({
+ url: '/blade-taskSchoolEven/taskSchoolEven/save',
+ method: 'POST',
+ data: data
+ })
+}
+
+//隐患、矛盾报事列表
+export const getTroubleReportList = (params) => {
+ return http.request({
+ url: '/blade-taskSchoolEven/taskSchoolEven/page',
+ method: 'get',
+ params: {
+ ...params
+ }
+ })
+}
+
+//隐患、矛盾报事详情
+export const getTroubleReportDetail = (params) => {
+ return http.request({
+ url: '/blade-taskSchoolEven/taskSchoolEven/detail',
+ method: 'get',
+ params: {
+ ...params
+ }
+ })
+}
+
+//审核隐患、矛盾报事详情
+export const auditTroubleReport = (data) => {
+ return http.request({
+ url: '/blade-taskSchoolEven/taskSchoolEven/auditing',
+ method: 'POST',
+ data: data
+ })
+}
+
+
+
//添加居住证申请
export const saveResideApply = (data) => {
return http.request({
diff --git a/common/common.js b/common/common.js
index cc660a2..e4db5b0 100644
--- a/common/common.js
+++ b/common/common.js
@@ -131,7 +131,7 @@
url: '/pages/circle/index'
},
{
- name: '警务辖区数据统计',
+ name: '驾驶舱',
iconPathSelected: '/static/img/tabbar-05-selected.png',
iconPath: '/static/img/tabbar-05.png',
url: '/pages/statistics/index'
diff --git a/pages.json b/pages.json
index 31023d1..5f95eff 100644
--- a/pages.json
+++ b/pages.json
@@ -1249,8 +1249,34 @@
"navigationBarTextStyle": "black",
"enablePullDownRefresh": false
}
+ },
+ {
+ "path": "troubleList",
+ "style": {
+ "navigationBarTitleText": "",
+ "navigationBarBackgroundColor": "#fff",
+ "navigationBarTextStyle": "black",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "troubleDetail",
+ "style": {
+ "navigationBarTitleText": "",
+ "navigationBarBackgroundColor": "#fff",
+ "navigationBarTextStyle": "black",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "troubleAuditList",
+ "style": {
+ "navigationBarTitleText": "",
+ "navigationBarBackgroundColor": "#fff",
+ "navigationBarTextStyle": "black",
+ "enablePullDownRefresh": false
+ }
}
-
]
}
],
diff --git a/pages/circle/index.vue b/pages/circle/index.vue
index b811707..574ee52 100644
--- a/pages/circle/index.vue
+++ b/pages/circle/index.vue
@@ -158,20 +158,21 @@
let accountInfo = wx.getAccountInfoSync();
this.envVersion = accountInfo.miniProgram.envVersion;
let role = uni.getStorageSync('activeRole')
- if (role.roleName == "居民" || role.roleName == '无诈') {
+ if (role.roleName == "居民") {
this.tabList = getTabbarList(1);
this.roleType = 0
- } else {
- if (role.roleName == '网格员') {
- console.log(111)
- this.tabList = getTabbarList(3);
- } else if (role.roleName == '民警') {
- this.tabList = getTabbarList(2);
- } else if (role.roleName == '系统管理员') {
- this.tabList = getTabbarList(4);
- }
-
+ } else if (role.roleName == '网格员') {
this.roleType = 1;
+ this.tabList = getTabbarList(3);
+ } else if (role.roleName == '民警') {
+ this.roleType = 1;
+ this.tabList = getTabbarList(2);
+ } else if (role.roleName == '系统管理员') {
+ this.roleType = 1;
+ this.tabList = getTabbarList(4);
+ } else {
+ this.tabList = getTabbarList(1);
+ this.roleType = 0
}
this.$refs.paging.reload();
},
diff --git a/pages/home/index.vue b/pages/home/index.vue
index 5acf4f7..3024b09 100644
--- a/pages/home/index.vue
+++ b/pages/home/index.vue
@@ -216,13 +216,36 @@
<text class="nav-item-text f-26 mt-10">场所任务</text>
</view>
</u-grid-item>
- <!-- <u-grid-item @click="navToSchoolClockIn()"
- v-if="curSelectSite.categoryList[0].parentNo == 1601">
- <view class="nav-item flex f-d-c a-i-c">
- <u-icon name="/static/icon/nav-29.png" width="80rpx" height="80rpx"></u-icon>
- <text class="nav-item-text f-26 mt-10">护学打卡</text>
- </view>
- </u-grid-item> -->
+ <block v-if="curSelectSite.categoryList[0].parentNo == 1601">
+ <u-grid-item @click="navToSchoolClockIn()">
+ <view class="nav-item flex f-d-c a-i-c">
+ <u-icon name="/static/icon/nav-29.png" width="80rpx"
+ height="80rpx"></u-icon>
+ <text class="nav-item-text f-26 mt-10">护学打卡</text>
+ </view>
+ </u-grid-item>
+ <u-grid-item @click="navigatorPage('/subPackage/school/trouble?type=1')">
+ <view class="nav-item flex f-d-c a-i-c">
+ <u-icon name="/static/icon/nav-29.png" width="80rpx"
+ height="80rpx"></u-icon>
+ <text class="nav-item-text f-26 mt-10">安全隐患</text>
+ </view>
+ </u-grid-item>
+ <u-grid-item @click="navigatorPage('/subPackage/school/trouble?type=2')">
+ <view class="nav-item flex f-d-c a-i-c">
+ <u-icon name="/static/icon/nav-29.png" width="80rpx"
+ height="80rpx"></u-icon>
+ <text class="nav-item-text f-26 mt-10">纠纷矛盾排查</text>
+ </view>
+ </u-grid-item>
+ <u-grid-item @click="navigatorPage('/subPackage/school/trouble')">
+ <view class="nav-item flex f-d-c a-i-c">
+ <u-icon name="/static/icon/nav-29.png" width="80rpx"
+ height="80rpx"></u-icon>
+ <text class="nav-item-text f-26 mt-10">校园安保检查</text>
+ </view>
+ </u-grid-item>
+ </block>
</block>
</u-grid>
</view>
diff --git a/pages/user/center.vue b/pages/user/center.vue
index 278430a..bea8f9f 100644
--- a/pages/user/center.vue
+++ b/pages/user/center.vue
@@ -157,6 +157,12 @@
this.color = "#017BFC";
// this.tabbarIndex = 2;
this.tabbarIndex = 3;
+ } else {
+ this.tabbarList = getTabbarList(1)
+ this.roleType = 1
+ this.color = "#017BFC"
+ // this.tabbarIndex = 1;
+ this.tabbarIndex = 2
}
this.addressType = uni.getStorageSync("siteInfo").addressType;
},
diff --git a/subPackage/article/detail.vue b/subPackage/article/detail.vue
index c2d2aa9..74335c2 100644
--- a/subPackage/article/detail.vue
+++ b/subPackage/article/detail.vue
@@ -68,6 +68,10 @@
<text class="f-28 c-main" v-if="isEnd">投票已结束</text>
<text class="f-28 c-main" v-if="!isStart">投票未开始</text>
<text class="ml-20 f-26 " v-if="applyInfo.voteRestrictions == 1">(该议题为一户一票)</text>
+ <view class="f-26 mt-20 fw" v-if="!isStart">
+ {{applyInfo.startTime }} -
+ {{applyInfo.endTime}}
+ </view>
</view>
<view class="vote bgc-ff">
diff --git a/subPackage/article/signature.vue b/subPackage/article/signature.vue
index 3f87c24..422c20c 100644
--- a/subPackage/article/signature.vue
+++ b/subPackage/article/signature.vue
@@ -169,7 +169,7 @@
let time = setInterval(() => {
second--
this.text = `${second}秒后获取`
- if (second == 0 || this.data.isLogin) {
+ if (second == 0 || this.isLogin) {
clearInterval(time);
this.isSendCode = false;
this.text = "获取验证码";
diff --git a/subPackage/school/clockIn.vue b/subPackage/school/clockIn.vue
index 9822d99..3e97edb 100644
--- a/subPackage/school/clockIn.vue
+++ b/subPackage/school/clockIn.vue
@@ -77,7 +77,9 @@
name: "",
phone: "",
location: "",
- gradeAndClass: ""
+ gradeAndClass: "",
+ lat: "",
+ lng: ""
},
rules: {
'name': {
@@ -129,8 +131,8 @@
uni.chooseLocation({
success: (res) => {
this.$set(this.info, "location", res.address);
- // this.$set(this.info, "lat", res.latitude);
- // this.$set(this.info, "lng", res.longitude)
+ this.$set(this.info, "lat", res.latitude);
+ this.$set(this.info, "lng", res.longitude)
}
})
},
diff --git a/subPackage/school/trouble.vue b/subPackage/school/trouble.vue
index 565c6fd..8d49b25 100644
--- a/subPackage/school/trouble.vue
+++ b/subPackage/school/trouble.vue
@@ -4,54 +4,14 @@
<u-form labelPosition="left" :model="info" :rules="rules" ref="form" labelWidth="90"
:labelStyle="{fontSize:'28rpx'}">
- <u-form-item label="类型:" labelWidth="100" prop="type" :required="isRequired">
- <u-radio-group v-model="info.type">
- <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in statusList" :key="index"
- :label="item.name" :name="item.id">
- </u-radio>
- </u-radio-group>
-
+ <u-form-item label="隐患类型" prop="hiddenDangerType" borderBottom ref="phone" v-if="info.type == 1"
+ @click="showPicker = true">
+ <u-input v-model="info.hiddenDangerType" border="none" placeholder="请输入"
+ placeholderClass="f-28 c-99" inputAlign="right" disabled disabledColor="#ffffff"></u-input>
+ <u-icon slot="right" name="arrow-right"></u-icon>
</u-form-item>
-
- <u-form-item label="家长姓名" prop="name" borderBottom ref="name" required>
- <u-input v-model="info.name" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
- inputAlign="right"></u-input>
- </u-form-item>
-
- <u-form-item label="家长手机号" prop="phone" borderBottom ref="phone" required>
- <u-input v-model="info.phone" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
- inputAlign="right"></u-input>
- </u-form-item>
- <u-form-item label="学生姓名" prop="realName" borderBottom ref="realName" required>
- <u-input v-model="info.realName" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
- inputAlign="right"></u-input>
- </u-form-item>
- <u-form-item label="学生班级" prop="gradeAndClass" borderBottom ref="gradeAndClass" required>
- <u-input v-model="info.gradeAndClass" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
- inputAlign="right"></u-input>
- </u-form-item>
- <u-form-item label="位置" prop="location" :borderBottom="false" required>
- <view class="address-row flex">
- <view class="address-content f-28" v-if="info.location">
- {{info.location}}
- </view>
- <view class="address-content f-28 c-99" v-if="!info.location">
- 请选择地址
- </view>
- <view class="location-btn c-main f-24" @click="getLocation()">
- 获取地址
- </view>
- </view>
- <!-- <u-input v-model="info.address" border="none" placeholderClass="f-28 c-99"
- inputAlign="right" disabled disabledColor="#fff">
- <template slot="suffix">
- <button class="location-btn c-main f-24" @click="getLocation()">获取地址</button>
- </template>
- </u-input> -->
- </u-form-item>
-
- <u-form-item label="描述" prop="describe" borderBottom ref="describe" required>
- <u-textarea v-model="info.describe" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
+ <u-form-item label="描述" prop="remark" borderBottom ref="remark" required>
+ <u-textarea v-model="info.remark" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
inputAlign="right"></u-textarea>
</u-form-item>
</u-form>
@@ -74,7 +34,13 @@
<button class="submit-btn" @click="sumitInfo">提交</button>
- <!-- <button class="list-btn" @click="navigatorPage">我上报的事件</button> -->
+ <button class="list-btn" @click="navigatorPage">提交记录</button>
+
+
+ <u-picker :defaultIndex="troubleTypeIndex" :closeOnClickOverlay="true" :show="showPicker"
+ :columns="[troubleTypeList]" @close="showPicker = false" @cancel="showPicker = false" keyName="name"
+ @confirm="confirmPicker"></u-picker>
+
</view>
</template>
@@ -82,66 +48,46 @@
<script>
import uploadMixin from "@/mixin/uploadMixin";
import {
- addClockIn
+ addTroubleReport
} from "@/api/school/school.js";
+ import {
+ bizDictionary,
+ bizDictionaryTree
+ } from '@/api/system/dict.js'
export default {
mixins: [uploadMixin],
data() {
return {
+ form: {
+ images: []
+ },
info: {
- name: "",
- phone: "",
- location: "",
- gradeAndClass: ""
+ type: "",
+ hiddenDangerType: "",
+ remark: ""
},
rules: {
- 'name': {
+ 'remark': {
type: 'string',
required: true,
message: '请输入家长姓名',
trigger: ['blur', 'change']
},
- 'phone': [{
- type: 'string',
- required: true,
- message: '请输入手机号',
- trigger: ['blur', 'change']
- },
- {
- validator: (rule, value, callback) => {
- return uni.$u.test.mobile(value);
- },
- message: '手机号码不正确',
- trigger: ['change', 'blur']
- }
- ],
- 'location': {
- type: 'string',
- required: true,
- message: '请选择地址',
- trigger: ['blur', 'change']
- },
+
},
desc: "",
title: "",
curSelectSite: {},
- statusList: [{
- name: "隐患",
- id: 1
- },
- {
- name: "矛盾",
- id: 2
- }
- ],
+ troubleTypeList: [],
+ troubleTypeIndex: [0],
+ showPicker: false
}
},
onLoad(option) {
if (option.type) {
this.info.type = option.type
}
-
-
+ this.getAllBizDict()
},
// onShow() {
// this.curSelectSite = uni.getStorageSync('siteInfo')
@@ -149,19 +95,36 @@
// },
methods: {
- getLocation() {
- uni.chooseLocation({
- success: (res) => {
- this.$set(this.info, "location", res.address);
- // this.$set(this.info, "lat", res.latitude);
- // this.$set(this.info, "lng", res.longitude)
- }
+ async getAllBizDict() {
+
+ //反诈类别
+ await this.getBizDict('hiddenDangerType', this.troubleTypeList);
+ },
+
+ // 获取业务字典
+ async getBizDict(code, list) {
+ const param = {
+ code: code
+ }
+ const res = await bizDictionary(param)
+ res.data.forEach(e => {
+ list.push({
+ name: e.dictValue,
+ value: Number(e.dictKey)
+ })
})
},
- sumitInfo() {
+ //选择隐患类型
+ confirmPicker(e) {
+ this.genderIndex = e.indexs;
+ this.genderValue = e.value[0].name;
+ this.info.hiddenDangerType = e.value[0].value;
+ this.showPicker = false;
+ },
+ sumitInfo() {
this.$refs.form.validate().then(valid => {
if (this.form.images.length > 0) {
let urls = []
@@ -170,7 +133,7 @@
})
this.info.images = urls.join(",")
}
- addClockIn(this.info).then(res => {
+ addTroubleReport(this.info).then(res => {
this.$showTips("提交成功", "success")
setTimeout(() => {
uni.navigateBack()
@@ -179,7 +142,7 @@
})
},
navigatorPage() {
- let url = "/subPackage/bs/views/repairList" + "?title=" + this.title + "&type=" + this.info.type
+ let url = `troubleList?type=${this.info.type}`
this.$u.func.globalNavigator(url, "navTo")
}
}
diff --git a/subPackage/school/troubleAuditList.vue b/subPackage/school/troubleAuditList.vue
new file mode 100644
index 0000000..5b1bb91
--- /dev/null
+++ b/subPackage/school/troubleAuditList.vue
@@ -0,0 +1,286 @@
+<template>
+ <view>
+ <u-sticky>
+ <view class="hander">
+ <view class="tab">
+ <u-tabs :list="tabList" :current="tabIndex" @click="changeTab" :inactiveStyle="{color:'#999999'}"
+ :activeStyle="{color:'#017BFC'}" :scrollable="false">
+ </u-tabs>
+ </view>
+
+ <view class="search flex j-c-s-b a-i-c">
+ <view class="tab-filter flex j-c-c a-i-c" slot="right" @click="showDateModal">
+ <text class="f-28">时间筛选</text>
+ <u-icon name="arrow-down"></u-icon>
+ </view>
+ <u-search placeholder="请输入姓名" v-model="keyWord" :clearabled="true" :showAction="true"
+ :animation="true" @search="searchConfirm" @clear="clearConfirm"
+ @custom="searchConfirm"></u-search>
+ </view>
+
+ </view>
+ </u-sticky>
+ <view class="list">
+ <view class="list-item bgc-ff mb-20" v-for="item in siteList" :key="item.id" @click="pushPage(item.id)">
+ <view class="item-title flex a-i-c j-c-s-b mb-20">
+ <text class="f-32 fw">{{ item.name}}</text>
+ <!-- <u-tag text="待审批" type="warning" plain plainFill></u-tag> -->
+ <u-tag class="u_tag" size="mini" :text="findObjValue(item.confirmFlag, tabList).name"
+ :type="findObjValue(item.confirmFlag, tabList).type" plain plainFill></u-tag>
+ <!-- <u-tag text="审核拒绝" type="error" plain plainFill></u-tag> -->
+ </view>
+ <!-- <view class="item-row flex a-i-c j-c-s-b">
+ <text class="f-28">法人信息</text>
+ <text class="f-28 c-66">{{ item.legalPerson ? item.legalPerson : '未完善'}}</text>
+ </view> -->
+ <view class="item-row flex a-i-c j-c-s-b f-28">
+ <text>时间</text>
+ <text class="c-66">{{item.createTime}}</text>
+ </view>
+ </view>
+ </view>
+ <u-toast ref="uToast"></u-toast>
+ <u-loadmore :status="loadingStatus" loadmoreText="开始加载" loadingText="数据加载中" nomoreText="没有更多了" line />
+
+
+
+
+
+ <date-range-modal ref="dateRane" @comfirm="handleComfirmDate" @rest="handleRestDate" />
+ </view>
+</template>
+
+<script>
+ import dateRangeModal from '@/components/dateRangeModal/modal.vue';
+ import {
+ getTroubleReportList
+ } from "@/api/school/school.js";
+
+ export default {
+ components: {
+ dateRangeModal
+ },
+ data() {
+ return {
+ siteList: [],
+ pagingParams: {
+ current: 1,
+ size: 10
+ },
+ tabList: [{
+ name: "全部",
+ status: "",
+ },
+ {
+ name: "待审核",
+ status: 1,
+ type: 'warning'
+ },
+ {
+ name: "审核通过",
+ status: 2,
+ type: 'success'
+ },
+ {
+ name: "已拒绝",
+ status: 3,
+ type: 'error'
+ },
+ ],
+ tabIndex: 0,
+ tabStatus: "",
+ keyWord: '',
+ loadingStatus: 'nomore',
+ clickInfo: {},
+ currentRole: {},
+ selectDate: [],
+ type: 1
+ }
+ },
+
+
+ onLoad(option) {
+ if (option.from) {
+ this.tabIndex = 1;
+ this.tabStatus = 1;
+ }
+ if (option.placeId) {
+ this.pagingParams.placeId = option.placeId
+ }
+ if (option.type == 1) {
+ this.type = option.type;
+ uni.setNavigationBarTitle({
+ title: option.type == 1 ? "安全隐患排查" : "矛盾纠纷排查"
+ })
+ }
+ },
+
+ onShow() {
+ this.currentRole = uni.getStorageSync("activeRole")
+ this.resetParams()
+ this.getSiteList()
+ },
+ onReachBottom() {
+ this.pagingParams.current++
+ this.getSiteList()
+ },
+
+
+ methods: {
+
+
+ async getSiteList() {
+ this.$nextTick(() => {
+ this.$refs.uToast.show({
+ type: 'loading',
+ message: '正在加载',
+ duration: 9999999
+ })
+ this.loadingStatus = 'loadingmore'
+ })
+
+ const params = {
+ name: this.keyWord,
+ confirmFlag: this.tabStatus,
+ type: this.type
+ }
+ if (this.selectDate.length) {
+ params.startTime = this.selectDate[0],
+ params.endTime = this.selectDate[1]
+ }
+ const {
+ roleName
+ } = this.currentRole
+
+ const res = await getTroubleReportList({
+ ...params,
+ roleName,
+ ...this.pagingParams
+ })
+ console.log(res);
+ const {
+ code,
+ data: {
+ records
+ }
+ } = res
+ if (code !== 200) {
+ uni.showToast({
+ title: '数据请求失败',
+ icon: 'error'
+ })
+ return
+ }
+ this.siteList = [...this.siteList, ...records]
+ this.$nextTick(() => {
+ this.$refs.uToast.isShow = false
+ })
+ this.loadingStatus = 'nomore'
+ },
+ changeTab(e) {
+ this.tabStatus = e.status;
+ this.resetParams()
+ this.getSiteList()
+ },
+ searchConfirm() {
+ this.resetParams()
+ this.getSiteList()
+ },
+ clearConfirm() {
+ this.keyWord = ''
+ this.resetParams()
+ this.searchConfirm()
+ },
+
+
+ showDateModal() {
+ this.$refs.dateRane.open();
+ },
+
+
+ resetParams() {
+ this.siteList = []
+ this.pagingParams.current = 1
+ },
+ findObjValue(value, obj) {
+ const res = obj.find(item => {
+ return item.status == value
+ })
+ return res
+ },
+ pushPage(id) {
+ const {
+ roleAlias
+ } = this.currentRole
+ if (roleAlias === "inhabitant") {
+ return
+ }
+ uni.navigateTo({
+ url: `trouble?id=${id}`
+ })
+
+
+ // this.$u.func.globalNavigator(`/subPackage/workbench/views/examine?id=${id}&placeId=${placeId}`)
+ },
+
+ handleRestDate() {
+ this.selectDate = [];
+ this.resetParams();
+ this.getSiteList()
+ },
+ handleComfirmDate(val) {
+ this.selectDate = val;
+ this.resetParams();
+ this.getSiteList()
+ }
+
+
+ }
+ }
+</script>
+
+<style lang="scss">
+ page {
+ background-color: #F5F5F5;
+ }
+
+ .hander {
+ background-color: #fff;
+
+ .tab {
+ width: 100%;
+ }
+
+ .tab-filter {
+ padding: 0 20rpx;
+ }
+
+
+ .search {
+ padding: 20rpx 30rpx;
+ }
+ }
+
+ .list {
+ margin: 20rpx 30rpx 0;
+ }
+
+ .list-item {
+ padding: 0 30rpx 20rpx;
+ border-radius: 8rpx;
+
+ .item-title {
+ padding: 30rpx 0;
+ border-bottom: 1px solid #F5F5F5;
+ }
+
+ .item-row {
+ padding: 10rpx 0;
+
+ .address {
+ width: 65%;
+ text-align: right;
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/subPackage/school/troubleDetail.vue b/subPackage/school/troubleDetail.vue
new file mode 100644
index 0000000..cb775b5
--- /dev/null
+++ b/subPackage/school/troubleDetail.vue
@@ -0,0 +1,172 @@
+<template>
+ <view class="">
+
+ <view class="item-row flex j-c-s-b a-i-c">
+ <text>描述</text>
+ <text class="item-content">{{info.remark}}</text>
+ </view>
+
+ <view class="item-row flex j-c-s-b a-i-c">
+ <text>审核状态</text>
+ <text class="item-content" v-if="info.confirmFlag == 1">待审核</text>
+ <text class="item-content" v-if="info.confirmFlag == 2">审核通过</text>
+ <text class="item-content" v-if="info.confirmFlag == 3">审核驳回</text>
+ </view>
+
+ <view class="item-row flex j-c-s-b a-i-c" v-if="info.confirmFlag == 3">
+ <text>驳回原因</text>
+ <text>{{info.confirmNotion}}</text>
+ </view>
+
+ <view class="item-row flex j-c-s-b a-i-c">
+ <text>时间</text>
+ <text>{{info.createTime}}</text>
+ </view>
+
+ <view class="image-wrap bgc-ff" v-if="images.length">
+ <view class="mb-20">
+ 图片
+ </view>
+ <view class="flex flex-wrap">
+ <view class="image-item" v-for="(i,k) in images" @click="previewImage(images,i)">
+ <u-image :src="i" width="100rpx" height="100rpx"></u-image>
+ </view>
+ </view>
+ </view>
+ <view class="image-wrap bgc-ff" v-if="roleType == 2">
+ <view class="mb-20">
+ 处理意见
+ </view>
+ <view class="flex flex-wrap">
+ <u-textarea v-model="confirmNotion" placeholder=""></u-textarea>
+ </view>
+ </view>
+
+
+ <audit-action @handle="submit" v-if="roleType == 2 && info.confirmFlag == 1"></audit-action>
+ <footer-btn v-if="roleType == 1 && info.confirmFlag == 3" text="编辑" @click="navToEdit" />
+
+ </view>
+
+</template>
+
+<script>
+ import auditAction from '@/components/btn/actionBtn.vue'
+ import {
+ getTroubleReportDetail,
+ auditTroubleReport
+ } from "@/api/school/school.js"
+ export default {
+ components: {
+ auditAction
+ },
+ data() {
+ return {
+ info: {},
+ roleType: 1,
+ id: "",
+ images: [],
+ confirmNotion: ""
+ }
+ },
+
+
+ onLoad(option) {
+ if (uni.getStorageSync("activeRole").roleName == "民警") {
+ this.roleType = 2;
+ }
+
+ if (uni.getStorageSync("activeRole").roleName == "居民") {
+ this.roleType == 1;
+ }
+
+ this.id = option.id;
+ },
+
+
+ onShow() {
+ this.getDetail(this.id)
+ },
+
+
+ methods: {
+ getDetail(id) {
+ getTroubleReportDetail({
+ id
+ }).then(res => {
+ this.info = res.data;
+ if (res.data.images) {
+ this.images = this.$setImageUrl(res.data.images);
+ }
+ })
+ },
+
+
+ previewImage(urls, current) {
+ uni.previewImage({
+ urls,
+ current
+ })
+ },
+
+ submit(val) {
+ let data = {
+ id: this.info.id,
+ confirmFlag: val.type == 2 ? 2 : 3,
+ }
+ if (val.type == 3) {
+ data.confirmNotion = val.remark;
+ }
+ submit(data).then(res => {
+ if (res.code == 200) {
+ this.$showTips("操作成功", "success");
+ setTimeout(() => {
+ uni.navigateBack();
+ }, 300)
+ }
+ })
+ },
+
+ navToEdit() {
+ uni.navigateTo({
+ url: `edit?id=${this.info.id}`
+ })
+ },
+
+
+ }
+ }
+</script>
+
+<style lang="scss">
+ page {
+ background-color: #f5f5f5;
+ }
+
+ .item-row {
+ width: 100%;
+ padding: 30rpx;
+ box-sizing: border-box;
+ border-bottom: 1px solid #f5f5f5;
+ font-size: 28rpx;
+ background-color: #fff;
+
+ .item-content {
+ width: 70%;
+ text-align: right;
+ }
+
+ .item-left {
+ width: 70%;
+ }
+ }
+
+ .image-wrap {
+ margin-top: 20rpx;
+ padding: 20rpx;
+
+ .image-item {
+ margin-right: 20rpx;
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/subPackage/school/troubleList.vue b/subPackage/school/troubleList.vue
new file mode 100644
index 0000000..1e6a0e8
--- /dev/null
+++ b/subPackage/school/troubleList.vue
@@ -0,0 +1,112 @@
+<template>
+ <view class="">
+ <view class="list">
+ <view class="list-item bgc-ff mb-20" v-for="(i,k) in list" :key="k" @click="navTo(i.id)">
+ <view class="item-title flex a-i-c j-c-s-b mb-20">
+ <text class="f-32 fw">{{i.type ==1?"安全隐患排查":"矛盾纠纷排查"}}</text>
+ <!-- <text class="f-32 fw" v-if="i.eventType == 3">二手车交易</text>id
+ <text class="f-32 fw" v-if="i.eventType == 2">二手手机维修</text> -->
+ <u-tag v-if="i.confirmFlag == 4" text="待完成" type="warning" plain plainFill></u-tag>
+ <u-tag v-if="i.confirmFlag == 1" text="待审批" type="warning" plain plainFill></u-tag>
+ <u-tag v-if="i.confirmFlag == 2" text="审核通过" type="success" plain plainFill></u-tag>
+ <u-tag v-if="i.confirmFlag == 3" text="审核拒绝" type="error" plain plainFill></u-tag>
+ </view>
+ <view class="item-row flex a-i-c j-c-s-b">
+ <text class="f-28">时间</text>
+ <text class="f-28 c-66">{{i.createTime}}</text>
+ </view>
+ </view>
+ </view>
+ <u-loadmore :status="loadingStatus" loadmoreText="开始加载" loadingText="数据加载中" nomoreText="没有更多了" line />
+ </view>
+</template>
+
+<script>
+ import {
+ getTroubleReportList
+ } from "@/api/school/school.js";
+
+ export default {
+ data() {
+ return {
+ list: [],
+ currentPage: 1,
+ loadingStatus: 'nomore',
+ }
+ },
+
+ onLoad(option) {
+ if (option.type == 1) {
+ uni.setNavigationBarTitle({
+ title: "安全隐患排查"
+ })
+ } else {
+ uni.setNavigationBarTitle({
+ title: "矛盾纠纷排查"
+ })
+ }
+ this.getList(option.type)
+ },
+ onReachBottom() {
+ this.currentPage++
+ this.getList()
+ },
+
+ methods: {
+ getList() {
+ getTroubleReportList({
+ createUser: uni.getStorageSync("userInfo").user_id,
+ current: this.currentPage,
+ size: 10,
+ houseCode: uni.getStorageSync("curHouseCode")
+ // reportType: 2
+ // eventType: type
+ }).then(res => {
+ if (res.code != 200) {
+ uni.showToast({
+ title: '数据请求失败',
+ icon: 'error'
+ })
+ return
+ }
+ let records = res.data.records;
+ this.list = [...this.list, ...records]
+ this.loadingStatus = 'nomore'
+ })
+ },
+ navTo(id) {
+ uni.navigateTo({
+ url: `troubleDetail?id=${id}`
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="scss">
+ page {
+ background-color: #F5F5F5;
+ }
+
+ .list {
+ margin: 20rpx 30rpx 0;
+ }
+
+ .list-item {
+ padding: 0 30rpx 20rpx;
+ border-radius: 8rpx;
+
+ .item-title {
+ padding: 30rpx 0;
+ border-bottom: 1px solid #F5F5F5;
+ }
+
+ .item-row {
+ padding: 10rpx 0;
+
+ .address {
+ width: 65%;
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/subPackage/workbench/views/cscj.vue b/subPackage/workbench/views/cscj.vue
index c93bf57..2c4556b 100644
--- a/subPackage/workbench/views/cscj.vue
+++ b/subPackage/workbench/views/cscj.vue
@@ -2,7 +2,6 @@
<view class="container">
<view class="wrap">
<u-form labelWidth="70" :model="form" :rules="rules" ref="form">
-
<view class="top item flex j-c-s-b a-i-c" @click="onScan()" v-if="!currentId">
<view class="flex a-i-c">
<u-icon name="/static/icon/nav-05.png" width="90rpx" height="90rpx"></u-icon>
--
Gitblit v1.9.3