From e36eed2cdc9335fc4d1b84c8e4e306422638542f Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期三, 27 十一月 2024 08:53:51 +0800
Subject: [PATCH] ll
---
admin/src/api/Inspection/ywPatrolScheme.js | 8
admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue | 196 ++++++++++-
admin/src/views/Inspection/task.vue | 20
admin/src/views/project/projectList.vue | 14
admin/src/views/workorder/components/detail.vue | 154 ++++++---
admin/src/views/client/staffList.vue | 16
admin/src/views/operation/components/maintain.vue | 55 +-
admin/src/api/system/common.js | 4
admin/src/api/Inspection/ywPatrolTask.js | 3
admin/src/views/Inspection/components/taskDetail.vue | 41 +-
admin/src/views/operation/components/deviceEdit.vue | 7
admin/src/api/business/member.js | 4
admin/src/components/common/QueryForm/queryForm.vue | 4
admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue | 54 +-
admin/src/api/project/ywProject.js | 4
admin/src/views/operation/record.vue | 33 +
admin/src/views/Inspection/plan.vue | 83 ++--
admin/src/views/project/components/OperaYwProjectWindow.vue | 73 +++
admin/src/views/operation/components/maintainDetail.vue | 104 ++++++
admin/src/api/Inspection/ywPatrolLine.js | 5
admin/src/api/business/company.js | 7
admin/src/views/finance/components/companyEdit.vue | 4
admin/src/views/Inspection/components/OperaYwPatrolLineWindow.vue | 23
admin/src/views/Inspection/path.vue | 1
admin/src/views/business/internalMember.vue | 2
admin/src/views/client/components/staffEdit.vue | 4
26 files changed, 691 insertions(+), 232 deletions(-)
diff --git a/admin/src/api/Inspection/ywPatrolLine.js b/admin/src/api/Inspection/ywPatrolLine.js
index 88ee422..b4ebbd5 100644
--- a/admin/src/api/Inspection/ywPatrolLine.js
+++ b/admin/src/api/Inspection/ywPatrolLine.js
@@ -24,7 +24,10 @@
export function updateById (data) {
return request.post('/visitsAdmin/cloudService/business/ywPatrolLine/updateById', data)
}
-
+// 璇︽儏
+export function detailById (id) {
+ return request.get(`/visitsAdmin/cloudService/business/ywPatrolLine/${id}`)
+}
// 鍒犻櫎
export function deleteById (id) {
return request.get(`/visitsAdmin/cloudService/business/ywPatrolLine/delete/${id}`)
diff --git a/admin/src/api/Inspection/ywPatrolScheme.js b/admin/src/api/Inspection/ywPatrolScheme.js
index e644a9b..4b67ede 100644
--- a/admin/src/api/Inspection/ywPatrolScheme.js
+++ b/admin/src/api/Inspection/ywPatrolScheme.js
@@ -24,11 +24,19 @@
export function updateById (data) {
return request.post('/visitsAdmin/cloudService/business/ywPatrolScheme/updateById', data)
}
+// 淇敼
+export function updateStatusById (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywPatrolScheme/updateStatus', data)
+}
// 鍒犻櫎
export function deleteById (id) {
return request.get(`/visitsAdmin/cloudService/business/ywPatrolScheme/delete/${id}`)
}
+// 鍒犻櫎
+export function detailById (id) {
+ return request.get(`/visitsAdmin/cloudService/business/ywPatrolScheme/${id}`)
+}
// 鎵归噺鍒犻櫎
export function deleteByIdInBatch (ids) {
diff --git a/admin/src/api/Inspection/ywPatrolTask.js b/admin/src/api/Inspection/ywPatrolTask.js
index d247bf3..81be50a 100644
--- a/admin/src/api/Inspection/ywPatrolTask.js
+++ b/admin/src/api/Inspection/ywPatrolTask.js
@@ -29,6 +29,9 @@
export function deleteById (id) {
return request.get(`/visitsAdmin/cloudService/business/ywPatrolTask/delete/${id}`)
}
+export function getDetail (data) {
+ return request.post(`/visitsAdmin/cloudService/business/ywPatrolTaskRecord/page`, data)
+}
// 鎵归噺鍒犻櫎
export function deleteByIdInBatch (ids) {
diff --git a/admin/src/api/business/company.js b/admin/src/api/business/company.js
index da1ff1a..0e179b0 100644
--- a/admin/src/api/business/company.js
+++ b/admin/src/api/business/company.js
@@ -24,6 +24,13 @@
export function create (data) {
return request.post('/visitsAdmin/cloudService/business/company/create', data)
}
+// 鍒涘缓璐㈠姟鍏徃
+export function createFinanceCompany (data) {
+ return request.post('/visitsAdmin/cloudService/business/company/createFinanceCompany', data)
+}
+export function updateFinanceCompany (data) {
+ return request.post('/visitsAdmin/cloudService/business/company/updateFinanceCompany', data)
+}
// 淇敼
export function updateById (data) {
diff --git a/admin/src/api/business/member.js b/admin/src/api/business/member.js
index b83f2b1..1410cc2 100644
--- a/admin/src/api/business/member.js
+++ b/admin/src/api/business/member.js
@@ -46,6 +46,10 @@
export function updateById (data) {
return request.post('/visitsAdmin/cloudService/business/member/updateById', data)
}
+export function updateStatusById (data) {
+ return request.post('/visitsAdmin/cloudService/business/member/updateStatusById', data)
+}
+
export function updateHead (data) {
return request.post('/visitsAdmin/cloudService/business/member/updateHead', data)
}
diff --git a/admin/src/api/project/ywProject.js b/admin/src/api/project/ywProject.js
index bfb6927..e65071f 100644
--- a/admin/src/api/project/ywProject.js
+++ b/admin/src/api/project/ywProject.js
@@ -34,6 +34,10 @@
export function deleteById (id) {
return request.get(`/visitsAdmin/cloudService/business/ywProject/delete/${id}`)
}
+// 鍒犻櫎
+export function detailById (id) {
+ return request.get(`/visitsAdmin/cloudService/business/ywProject/${id}`)
+}
// 鎵归噺鍒犻櫎
export function deleteByIdInBatch (ids) {
diff --git a/admin/src/api/system/common.js b/admin/src/api/system/common.js
index 0c4b120..0e99bcf 100644
--- a/admin/src/api/system/common.js
+++ b/admin/src/api/system/common.js
@@ -71,3 +71,7 @@
export function upload (data) {
return request.post('/visitsAdmin/cloudService/public/upload', data)
}
+// 鑾峰彇鐪佸競鍖烘爲
+export function getCityTree (data) {
+ return request.post('/visitsAdmin/cloudService/business/areas/treeList', data)
+}
diff --git a/admin/src/components/common/QueryForm/queryForm.vue b/admin/src/components/common/QueryForm/queryForm.vue
index 80e9fc1..a59f002 100644
--- a/admin/src/components/common/QueryForm/queryForm.vue
+++ b/admin/src/components/common/QueryForm/queryForm.vue
@@ -58,8 +58,8 @@
</template>
<!-- 鎿嶄綔 -->
<el-form-item>
- <el-button type="primary" @click="handleQuery">鎼滅储</el-button>
- <el-button v-if="showQk" @click="clear">閲嶇疆</el-button>
+ <el-button style="width: 56px" type="primary" @click="handleQuery">鎼滅储</el-button>
+ <el-button style="width: 56px" v-if="showQk" @click="clear">閲嶇疆</el-button>
<slot name="btns" />
<template v-if="queryFormConfig.formItems.length > listLength">
<el-button v-if="!showZk" type="text" @click="zkBtn">灞曞紑<i
diff --git a/admin/src/views/Inspection/components/OperaYwPatrolLineWindow.vue b/admin/src/views/Inspection/components/OperaYwPatrolLineWindow.vue
index d936c67..86de3cb 100644
--- a/admin/src/views/Inspection/components/OperaYwPatrolLineWindow.vue
+++ b/admin/src/views/Inspection/components/OperaYwPatrolLineWindow.vue
@@ -48,7 +48,7 @@
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import { getFetchList } from '@/api/Inspection/ywPatrolPoint'
-import { create } from '@/api/Inspection/ywPatrolLine'
+import { create,detailById } from '@/api/Inspection/ywPatrolLine'
import { Message } from 'element-ui'
export default {
name: 'OperaYwPatrolLineWindow',
@@ -82,13 +82,21 @@
if (list.length == 0) return Message.warning('璇峰厛閫夋嫨宸℃鐐�')
form.linePointList = list
create({ ...form }).then(res => {
- if (res.code == 200) {
- Message.success('淇濆瓨鎴愬姛')
- this.close()
- }
+ Message.success('淇濆瓨鎴愬姛')
+ this.$emit('success')
+ this.close()
+
+ })
+ },
+ getDetail(row) {
+ detailById(row.id).then(res => {
+ this.form = res
+ this.list = res.linePointList || []
})
},
initData() {
+ this.list = []
+
getFetchList({}).then(res => {
this.pointList = res || []
})
@@ -130,13 +138,12 @@
needScancode: '1',
pointName: i.name,
pointId: i.id,
- code: i.code,
- id: i.id
+ code: i.code
})
})
this.isShowModal = false
},
- close(){
+ close() {
this.visible = false
this.$emit('success')
}
diff --git a/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue b/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue
index 00acdd2..ca12d05 100644
--- a/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue
+++ b/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue
@@ -30,7 +30,7 @@
<el-input type="textarea" :rows="4" v-model="form.content" placeholder="璇疯緭鍏�" />
</el-form-item>
<el-form-item label="涓婁紶鍥剧墖" prop="imgurl">
- <UploadAvatarImage :file="{ 'imgurlfull': form.imgurlfull, 'imgurl': form.imgurl }"
+ <UploadAvatarImage :file="{ 'imgurlfull': form.fileFullUrl, 'imgurl': form.fileurl }"
:uploadData="{ folder: 'ywPatrol/' }" @uploadSuccess="uploadAvatarSuccess" @uploadEnd="isUploading = false"
@uploadBegin="isUploading = true" />
</el-form-item>
@@ -45,6 +45,7 @@
import mapDrag from '@/components/common/map/mapDrag.vue'
import { fetchList } from '@/api/business/category'
import { detail } from '@/api/Inspection/ywPatrolPoint'
+import { fetchList as getDeiceList } from '@/api/Inspection/device'
export default {
name: 'OperaYwPatrolPointWindow',
extends: BaseOpera,
@@ -81,50 +82,57 @@
open(title, row) {
this.title = title
this.visible = true
+ this.initData()
if (row && row.id) {
this.getDetail(row)
}
},
getDetail(row) {
detail(row.id).then(res => {
- this.form = { ...res }
+ this.form = { ...res }
// this.$set(this.form, 'areaId', res.areaId)
// console.log('res', res)
// console.log('res', this.form)
- this.initData(res.areaId)
+
})
},
- initData(areaId) {
+ initData() {
fetchList({
model: { type: 4 },
capacity: 1000,
page: 1,
}).then(res => {
this.cateList = res.records || []
- console.log('this.form.areaId', this.form)
-
- if (areaId) {
- this.cateList.forEach(item => {
- if (item.childCategoryList) {
- item.childCategoryList.forEach(item2 => {
- if (item2.id == areaId) {
- this.$set(this.form, 'areaIds', [item.id, item2.id])
- console.log('areaIds', this.form)
-
- }
- })
- }
- })
- }
+ setTimeout(() => {
+ const areaId = this.form.areaId
+ if (areaId) {
+ this.cateList.forEach(item => {
+ if (item.childCategoryList) {
+ item.childCategoryList.forEach(item2 => {
+ if (item2.id == areaId) {
+ this.$set(this.form, 'areaIds', [item.id, item2.id])
+ }
+ })
+ }
+ })
+ }
+ }, 1300)
+ })
+ getDeiceList({
+ model: {},
+ capacity: 1000,
+ page: 1,
+ }).then(res => {
+ this.deviceList = res.records
})
},
getCenter(data) {
// console.log(data)
// this.$set(this.form, 'postion', data.address)
- if(data.lng){
+ if (data.lng) {
this.$set(this.form, 'lnglat', data.lng + ',' + data.lat)
- }else{
+ } else {
this.$set(this.form, 'lnglat', '')
}
this.$set(this.form, 'longitude', data.lng)
@@ -138,8 +146,8 @@
}
},
uploadAvatarSuccess(file) {
- this.form.imgurl = file.imgurl
- this.form.imgurlfull = file.imgurlfull
+ this.form.fileurl = file.imgurl
+ this.form.fileFullUrl = file.imgurlfull
},
}
}
diff --git a/admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue b/admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue
index 0f933b6..0e58415 100644
--- a/admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue
+++ b/admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue
@@ -1,38 +1,52 @@
<template>
- <GlobalWindow width="520px" :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
+ <GlobalWindow width="520px" :title="title" @close="close" :visible.sync="visible" :confirm-working="isWorking"
+ @confirm="confirm">
+ <div class="warnning">
+ {{ form.id ? '缂栬緫璁″垝瀵瑰凡鐢熸垚鐨勪换鍔℃棤鏁堬紝浼氬湪涓嬫鐢熸垚浠诲姟鏃剁敓鏁堬紝涓斿綋澶╀笉浼氱敓鎴愪袱涓换鍔�' : '鏂板缓宸℃璁″垝浼氫粠褰撳ぉ寮�濮嬶紝鎸夌収閰嶇疆瑙勫垯浜х敓瀵瑰簲鐨勫贰妫�浠诲姟' }}
+ </div>
<el-form :model="form" ref="form" :rules="rules">
<el-form-item label="璁″垝鍚嶇О" prop="title">
<el-input v-model="form.title" placeholder="璇疯緭鍏ユ爣棰�" v-trim />
</el-form-item>
- <el-form-item label="宸℃绾胯矾">
- <el-select v-model="form.status" filterable clearable>
- <el-option value="0" label="姣忓ぉ"></el-option>
- <el-option value="1" label="姣忓懆"></el-option>
- <el-option value="2" label="姣忔湀"></el-option>
+ <el-form-item label="宸℃绾胯矾" prop="lineId">
+ <el-select v-model="form.lineId" filterable clearable>
+ <el-option v-for="item in lineList" :value="item.id" :label="item.name"></el-option>
</el-select>
</el-form-item>
- <el-form-item label="宸℃璐熻矗浜�">
+ <el-form-item label="宸℃璐熻矗浜�" prop="userIds">
<el-select v-model="form.userIds" filterable clearable>
- <el-option value="0" label="姣忓ぉ"></el-option>
- <el-option value="1" label="姣忓懆"></el-option>
- <el-option value="2" label="姣忔湀"></el-option>
+ <el-option v-for="item in staffList" :value="item.id" :label="item.realname"></el-option>
</el-select>
</el-form-item>
- <el-form-item label="璁″垝寮�濮嬫棩鏈�-缁撴潫鏃ユ湡">
- <el-date-picker v-model="form.selDate" is-range range-separator="-" value-format="yyyy-MM-dd" type="daterange"
- start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" class="w400" />
+ <el-form-item label="璁″垝寮�濮嬫棩鏈�-缁撴潫鏃ユ湡" prop="selDate">
+ <el-date-picker v-model="form.selDate" @change="changeDate" is-range range-separator="-"
+ value-format="yyyy-MM-dd" type="daterange" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" />
</el-form-item>
<el-form-item label="璁″垝鎵ц鏃堕棿">
- <el-time-picker v-model="form.selTime" is-range range-separator="-" format="HH:mm" value-format="HH:mm:ss"
- start-placeholder="寮�濮嬫椂闂�" end-placeholder="缁撴潫鏃堕棿" placeholder="閫夋嫨鏃堕棿鑼冨洿" class="w400" />
+ <el-time-picker v-model="form.selTime" @change="changeTime" is-range range-separator="-" format="HH:mm"
+ value-format="HH:mm:ss" start-placeholder="寮�濮嬫椂闂�" end-placeholder="缁撴潫鏃堕棿" placeholder="閫夋嫨鏃堕棿鑼冨洿" />
</el-form-item>
- <el-form-item label="寰幆鍛ㄦ湡">
- <el-select v-model="form.circleType" filterable clearable>
- <el-option value="0" label="姣忓ぉ"></el-option>
- <el-option value="1" label="姣忓懆"></el-option>
- <el-option value="2" label="姣忔湀"></el-option>
+ <el-form-item label="閲嶅棰戠巼">
+ <el-select v-model="form.circleType" @change="changeType" filterable>
+ <el-option :value="0" label="姣忓ぉ"></el-option>
+ <el-option :value="1" label="姣忓懆"></el-option>
+ <el-option :value="2" label="姣忔湀"></el-option>
</el-select>
</el-form-item>
+ <el-form-item v-if="form.circleType == 1" prop="circleDays" label="閲嶅瑙勫垯">
+ <div class="weeks">
+ <div class="week" @click="weekClick(i)" :class="{ active: item.sel }" v-for="item, i in weeks">{{ item.la }}
+ </div>
+ </div>
+ </el-form-item>
+ <el-form-item v-if="form.circleType == 2" prop="circleDays" label="閲嶅瑙勫垯">
+ <div class="weeks">
+ <div class="week" @click="monthClick(i)" :class="{ active: item.sel }" v-for="item, i in monthsList">{{
+ item.la
+ }}</div>
+ </div>
+ </el-form-item>
+
</el-form>
</GlobalWindow>
</template>
@@ -40,6 +54,9 @@
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
+import { fetchList as getLineList } from '@/api/Inspection/ywPatrolLine'
+import { detailById } from '@/api/Inspection/ywPatrolScheme'
+import { getUserList } from '@/api/system/user'
export default {
name: 'OperaYwPatrolSchemeWindow',
extends: BaseOpera,
@@ -63,7 +80,7 @@
dealUserId: '',
dealDate: '',
dealInfo: '',
- circleType: '',
+ circleType: 0,
circleDays: '',
startDate: '',
endDate: '',
@@ -71,10 +88,26 @@
endTime: '',
processStatus: '',
selDate: [],
- selTime: [],
},
- // 楠岃瘉瑙勫垯
+ lineList: [],
+ staffList: [],
+ weeks: [
+ { la: '鍛ㄤ竴', va: 1, sel: false },
+ { la: '鍛ㄤ簩', va: 2, sel: false },
+ { la: '鍛ㄤ笁', va: 3, sel: false },
+ { la: '鍛ㄥ洓', va: 4, sel: false },
+ { la: '鍛ㄤ簲', va: 5, sel: false },
+ { la: '鍛ㄥ叚', va: 6, sel: false },
+ { la: '鍛ㄦ棩', va: 7, sel: false },
+ ],
+ monthsList: [],
+ selCircleDays: [],
rules: {
+ title: [{ required: true, message: '璇疯緭鍏�' }],
+ lineId: [{ required: true, message: '璇烽�夋嫨' }],
+ userIds: [{ required: true, message: '璇烽�夋嫨' }],
+ selDate: [{ type: 'array', required: true, message: '璇烽�夋嫨' }],
+ circleDays: [{ required: true, message: '璇烽�夋嫨' }],
}
}
},
@@ -85,10 +118,125 @@
})
},
methods: {
+ weekClick(i) {
+ this.weeks.forEach((item, index) => {
+ if (i == index) { item.sel = !item.sel }
+ })
+ this.$set(this.form, 'circleDays', this.weeks.filter(j => j.sel).map(a => a.va).join(','))
+ },
+ monthClick(i) {
+ this.monthsList.forEach((item, index) => {
+ if (i == index) { item.sel = !item.sel }
+ })
+ this.$set(this.form, 'circleDays', this.monthsList.filter(j => j.sel).map(a => a.va).join(','))
+ },
+ changeTime(e) {
+ if (e && e.length > 0) {
+ this.$set(this.form, 'startTime', e[0])
+ this.$set(this.form, 'endTime', e[1])
+ } else {
+ this.$set(this.form, 'startTime', '')
+ this.$set(this.form, 'endTime', '')
+ }
+ },
+ changeDate(e) {
+ if (e && e.length > 0) {
+ this.$set(this.form, 'startDate', e[0])
+ this.$set(this.form, 'endDate', e[1])
+ } else {
+ this.$set(this.form, 'startDate', '')
+ this.$set(this.form, 'endDate', '')
+ }
+ },
+ changeType() {
+ this.$set(this.form, 'circleDays', '')
+ },
+ getDetail(id) {
+ detailById(id).then(res => {
+ this.form = res
+ if (res.userIds) {
+ this.$set(this.form, 'userIds', Number(res.userIds))
+ }
+ if (res.startTime) {
+ this.$set(this.form, 'selTime', [res.startTime, res.endTime])
+ }
+ if (res.circleDays) {
+ const circleDays = res.circleDays.split(',')
+ if (res.circleType == 1) {
+ circleDays.forEach(i => {
+ this.weeks.forEach(j => {
+ if (i == j.va) {
+ j.sel = true
+ }
+ })
+ })
+ } else {
+ setTimeout(() => {
+ circleDays.forEach(i => {
+ this.monthsList.forEach(j => {
+ if (i == j.va) {
+ j.sel = true
+ }
+ })
+ })
+ }, 500)
+ }
+ }
+ this.$set(this.form, 'selDate', [res.startDate, res.endDate])
+ })
+ },
initData() {
-
+ getLineList({
+ model: {},
+ capacity: 9999,
+ page: 1,
+ }).then(res => {
+ this.lineList = res.records
+ })
+ getUserList({}).then(res => {
+ this.staffList = res
+ })
+ this.monthsList = []
+ for (let i = 1; i < 32; i++) {
+ this.monthsList.push({ la: i, va: i, sel: false })
+ }
+ },
+ close() {
+ this.$refs.form.resetFields()
+ this.visible = false
}
}
}
</script>
+<style lang="scss" scoped>
+@import '@/assets/style/variables.scss';
+.warnning{
+ padding: 6px 10px;
+ background-color: #fcf3e6;
+ font-size: 12px;
+ color: #333333;
+}
+.weeks {
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+
+ .week {
+ border: 1px solid #999999;
+ width: 40px;
+ height: 18px;
+ text-align: center;
+ line-height: 18px;
+ font-size: 12px;
+ margin-right: 8px;
+ cursor: pointer;
+ margin-bottom: 6px;
+ }
+
+ .active {
+ color: $primary-color;
+ border: 1px solid $primary-color;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/admin/src/views/Inspection/components/taskDetail.vue b/admin/src/views/Inspection/components/taskDetail.vue
index dfe59dc..79fd9ca 100644
--- a/admin/src/views/Inspection/components/taskDetail.vue
+++ b/admin/src/views/Inspection/components/taskDetail.vue
@@ -2,16 +2,22 @@
<GlobalWindow title="宸℃浠诲姟璇︽儏" :showConfirm="false" :visible.sync="isShowModal">
<QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" />
<el-table v-loading="loading" :data="list" stripe>
- <el-table-column prop="" label="宸℃鐐瑰悕绉�" min-width="100" show-overflow-tooltip />
- <el-table-column prop="" label="鐘舵��" min-width="100" show-overflow-tooltip />
- <el-table-column prop="" label="宸℃浜�" min-width="100" show-overflow-tooltip />
- <el-table-column prop="" label="宸℃鏃堕棿" min-width="100" show-overflow-tooltip />
- <el-table-column prop="" label="宸℃缁撴灉" min-width="100" show-overflow-tooltip />
- <el-table-column prop="" label="宸℃璇存槑" min-width="100" show-overflow-tooltip>
- <template v-slot="scope">
- <span>{{ scope.row.billCode || scope.row.contractNum }}</span>
+ <el-table-column prop="pointName" label="宸℃鐐瑰悕绉�" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="鐘舵��" min-width="100" show-overflow-tooltip>
+ <template v-slot="{ row }">
+ <span v-if="row.status == 0">寰呭紑濮�</span>
+ <span v-if="row.status == 1">宸插贰妫�</span>
</template>
</el-table-column>
+ <el-table-column prop="editor" label="宸℃浜�" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="editDate" label="宸℃鏃堕棿" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="宸℃缁撴灉" min-width="100" show-overflow-tooltip>
+ <template v-slot="{ row }">
+ <span class="gray" v-if="row.dealStatus == 0">姝e父</span>
+ <span class="red" v-if="row.dealStatus == 1">寮傚父</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="dealInfo" label="宸℃璇存槑" min-width="100" show-overflow-tooltip />
</el-table>
<div class="mt20">
<Pagination @size-change="handleSizeChange" @current-change="getDetail" :pagination="pagination" />
@@ -23,11 +29,12 @@
import GlobalWindow from '@/components/common/GlobalWindow'
import QueryForm from '@/components/common/QueryForm'
import Pagination from '@/components/common/Pagination'
+import { getDetail } from '@/api/Inspection/ywPatrolTask'
export default {
components: { GlobalWindow, QueryForm, Pagination },
data() {
return {
- isShowModal: true,
+ isShowModal: false,
id: '',
pagination: {
pageSize: 10,
@@ -40,16 +47,19 @@
queryFormConfig: {
formItems: [
{
- filed: 'name',
+ filed: 'pointName',
type: 'input',
label: '宸℃鐐瑰悕绉�'
},
{
filed: 'status',
type: 'select',
- label: '鎵ц鐘舵��',
+ label: '鐘舵��',
placeholder: '鍏ㄩ儴',
- options: []
+ options: [
+ { label: '寰呭紑濮�', value: 0 },
+ { label: '宸插贰妫�', value: 1 },
+ ]
},
],
online: true
@@ -60,10 +70,10 @@
getDetail(page) {
const { pagination, filters, id } = this
this.loading = true
- platformLogPage({
+ getDetail({
model: {
...filters,
- id,
+ taskId: id,
},
sorts: [{ direction: 'DESC', property: 'param1' }],
capacity: pagination.pageSize,
@@ -71,6 +81,7 @@
}).then(res => {
this.loading = false
this.list = res.records || []
+ this.pagination.total = res.total
this.list.forEach(item => {
item.inTypeTemp = item.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'
item.taskOrigin = 'WMS鑾峰彇'
@@ -94,5 +105,3 @@
}
}
</script>
-
-<style lang="scss" scoped></style>
\ No newline at end of file
diff --git a/admin/src/views/Inspection/path.vue b/admin/src/views/Inspection/path.vue
index 4854c6b..03e8b95 100644
--- a/admin/src/views/Inspection/path.vue
+++ b/admin/src/views/Inspection/path.vue
@@ -91,6 +91,7 @@
editClick(row) {
if (row && row.id) {
this.$refs.operaYwPatrolLineWindow.open('缂栬緫宸℃绾胯矾')
+ this.$refs.operaYwPatrolLineWindow.getDetail(row)
} else {
this.$refs.operaYwPatrolLineWindow.open('鏂板缓宸℃绾胯矾')
}
diff --git a/admin/src/views/Inspection/plan.vue b/admin/src/views/Inspection/plan.vue
index 55fa79a..2ae79a1 100644
--- a/admin/src/views/Inspection/plan.vue
+++ b/admin/src/views/Inspection/plan.vue
@@ -2,16 +2,12 @@
<TableLayout :permissions="['business:ywpatrolscheme:query']">
<!-- 鎼滅储琛ㄥ崟 -->
<el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-
- <el-form-item label="鏍囬" prop="title">
+ <el-form-item label="璁″垝鏍囬" prop="title">
<el-input v-model="searchForm.title" placeholder="璇疯緭鍏ユ爣棰�" @keypress.enter.native="search"></el-input>
</el-form-item>
- <el-form-item label="寮�濮嬫棩鏈�" prop="startDate">
- <el-date-picker v-model="searchForm.startDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ紑濮嬫棩鏈�"
- @change="search" />
- </el-form-item>
- <el-form-item label="缁撴潫鏃ユ湡" prop="endDate">
- <el-date-picker v-model="searchForm.endDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ョ粨鏉熸棩鏈�" @change="search" />
+ <el-form-item label="璁″垝鏃ユ湡" prop="selDate">
+ <el-date-picker type="daterange" v-model="searchForm.selDate" clearable value-format="yyyy-MM-dd"
+ @change="changeDate" />
</el-form-item>
<section>
@@ -24,7 +20,7 @@
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
<ul class="toolbar" v-permissions="['business:ywpatrolscheme:create', 'business:ywpatrolscheme:delete']">
- <li><el-button type="primary" @click="$refs.operaYwPatrolSchemeWindow.open('鏂板缓宸℃璁″垝')" icon="el-icon-plus"
+ <li><el-button type="primary" @click="editClick()" icon="el-icon-plus"
v-permissions="['business:ywpatrolscheme:create']">鏂板缓</el-button></li>
<li><el-button @click="deleteByIdInBatch" icon="el-icon-delete"
v-permissions="['business:ywpatrolscheme:delete']">鍒犻櫎</el-button></li>
@@ -34,30 +30,36 @@
<el-table-column prop="title" label="璁″垝鍚嶇О" min-width="100px"></el-table-column>
<el-table-column prop="lineId" label="璁″垝缂栧彿" min-width="100px"></el-table-column>
- <el-table-column prop="dealDate" label="璐熻矗浜哄憳" min-width="100px"></el-table-column>
+ <el-table-column prop="userName" label="璐熻矗浜哄憳" min-width="100px"></el-table-column>
- <el-table-column prop="startDate" label="璁″垝鏃ユ湡" min-width="100px">
+ <el-table-column prop="startDate" label="璁″垝鏃ユ湡" min-width="150px">
<template v-slot="scope">
<span>{{ scope.row.startDate }} - {{ scope.row.endDate }}</span>
</template>
</el-table-column>
- <el-table-column prop="startDate" label="鎵ц鏃堕棿" min-width="100px">
+ <el-table-column prop="startDate" label="鎵ц鏃堕棿" min-width="130px">
<template v-slot="scope">
<span>{{ scope.row.startTime }} - {{ scope.row.endTime }}</span>
</template>
</el-table-column>
- <el-table-column prop="" label="鍒涘缓浜�" min-width="100px"></el-table-column>
- <el-table-column prop="" label="鎵ц缁撴灉" min-width="100px"></el-table-column>
+ <el-table-column prop="createUserName" label="鍒涘缓浜�" min-width="100px"></el-table-column>
+ <el-table-column prop="" label="鎵ц缁撴灉" min-width="100px">
+ <template v-slot="scope">
+ <span v-if="scope.row.schemeStatus == 0">寰呭紑濮�</span>
+ <span v-if="scope.row.schemeStatus == 1">杩涜涓�</span>
+ <span v-if="scope.row.schemeStatus == 2">宸茬粨鏉�</span>
+ </template>
+ </el-table-column>
<el-table-column label="鐘舵��" min-width="100px">
<template v-slot="scope">
- <el-switch v-model="scope.row.status" @change="changeStatus" active-value="0" inactive-value="1">
+ <el-switch v-model="scope.row.status" @change="e => changeStatus(scope.row)" :active-value="0" :inactive-value="1">
</el-switch>
</template>
</el-table-column>
<el-table-column v-if="containPermissions(['business:ywpatrolscheme:update', 'business:ywpatrolscheme:delete'])"
label="鎿嶄綔" min-width="120" fixed="right">
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaYwPatrolSchemeWindow.open('缂栬緫宸℃璁″垝', row)" icon="el-icon-edit"
+ <el-button type="text" @click="editClick(row)" icon="el-icon-edit"
v-permissions="['business:ywpatrolscheme:update']">缂栬緫</el-button>
<el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
v-permissions="['business:ywpatrolscheme:delete']">鍒犻櫎</el-button>
@@ -77,6 +79,8 @@
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaYwPatrolSchemeWindow from './components/OperaYwPatrolSchemeWindow'
+import { updateStatusById } from '@/api/Inspection/ywPatrolScheme'
+import { Message } from 'element-ui'
export default {
name: 'YwPatrolScheme',
extends: BaseTable,
@@ -85,28 +89,7 @@
return {
// 鎼滅储
searchForm: {
- id: '',
- creator: '',
- createDate: '',
- editor: '',
- editDate: '',
- isdeleted: '',
- title: '',
- remark: '',
- status: '',
- sortnum: '',
- lineId: '',
- userIds: '',
- dealUserId: '',
- dealDate: '',
- dealInfo: '',
- circleType: '',
- circleDays: '',
- startDate: '',
- endDate: '',
- startTime: '',
- endTime: '',
- processStatus: ''
+ title: ''
}
}
},
@@ -120,9 +103,33 @@
this.search()
},
methods: {
+ changeStatus(e) {
+ console.log(e);
+ updateStatusById(e).then(res => {
+ this.search()
+ Message.success('鐘舵�佷慨鏀规垚鍔�')
+ }, () => {
+ this.search()
+ })
+ },
+ changeDate(e) {
+ if(e && e.length > 0){
+ this.$set(this.searchForm, 'startDate', e[0])
+ this.$set(this.searchForm, 'endDate', e[1])
+ }else{
+ this.$set(this.searchForm, 'startDate', '')
+ this.$set(this.searchForm, 'endDate', '')
+ }
+
+ },
+ reset() {
+ this.searchForm = {}
+ this.search()
+ },
editClick(row) {
if (row && row.id) {
this.$refs.operaYwPatrolSchemeWindow.open('缂栬緫宸℃璁″垝')
+ this.$refs.operaYwPatrolSchemeWindow.getDetail(row.id)
} else {
this.$refs.operaYwPatrolSchemeWindow.open('鏂板缓宸℃璁″垝')
}
diff --git a/admin/src/views/Inspection/task.vue b/admin/src/views/Inspection/task.vue
index 99b3ea0..e3a57eb 100644
--- a/admin/src/views/Inspection/task.vue
+++ b/admin/src/views/Inspection/task.vue
@@ -2,11 +2,11 @@
<TableLayout :permissions="['business:ywpatroltask:query']">
<!-- 鎼滅储琛ㄥ崟 -->
<el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="璁″垝鍚嶇О" prop="title">
- <el-input v-model="searchForm.title" placeholder="璇疯緭鍏ヨ鍒掑悕绉�" @keypress.enter.native="search"></el-input>
+ <el-form-item label="璁″垝鍚嶇О" prop="planTitle">
+ <el-input v-model="searchForm.planTitle" placeholder="璇疯緭鍏ヨ鍒掑悕绉�" @keypress.enter.native="search"></el-input>
</el-form-item>
- <el-form-item >
- <el-select v-model="searchForm.status" filterable clearable>
+ <el-form-item label="浠诲姟鐘舵��">
+ <el-select v-model="searchForm.status" label="浠诲姟鐘舵��" filterable clearable>
<el-option value="0" label="寰呭紑濮�"></el-option>
<el-option value="1" label="杩涜涓�"></el-option>
<el-option value="2" label="宸茶秴鏈�"></el-option>
@@ -30,11 +30,11 @@
>
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column prop="planTitle" label="璁″垝鍚嶇О" min-width="100px"></el-table-column>
- <el-table-column prop="schemeId" label="璁″垝缂栧彿" min-width="100px"></el-table-column>
+ <el-table-column prop="planCode" label="璁″垝缂栧彿" min-width="100px"></el-table-column>
<el-table-column prop="code" label="浠诲姟缂栧彿" min-width="100px"></el-table-column>
- <el-table-column prop="dealDate" label="浠诲姟鏃堕棿" min-width="100px">
+ <el-table-column prop="dealDate" label="浠诲姟鏃堕棿" min-width="140px">
<template v-slot="scope">
- <span>{{ scope.row.startDate }} {{ scope.row.endDate }}</span>
+ <span v-if="scope.row.startDate && scope.row.endDate">{{ scope.row.startDate.slice(0, 16) }} - {{ scope.row.endDate.slice(11, 16) }}</span>
</template>
</el-table-column>
<el-table-column prop="dealDate" label="瀹為檯瀹屾垚鏃堕棿" min-width="100px"></el-table-column>
@@ -55,7 +55,8 @@
fixed="right"
>
<template slot-scope="{row}">
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:ywpatroltask:delete']">鍙栨秷</el-button>
+ <el-button type="text" @click="handleDetail(row)">鏌ョ湅璇︽儏</el-button>
+ <el-button type="text" @click="cancelById(row)" v-permissions="['business:ywpatroltask:delete']">鍙栨秷</el-button>
</template>
</el-table-column>
</el-table>
@@ -104,6 +105,9 @@
this.$refs.TaskDetailRef.id = row.id
this.$refs.TaskDetailRef.getDetail()
},
+ cancelById() {
+
+ },
}
}
</script>
diff --git a/admin/src/views/business/internalMember.vue b/admin/src/views/business/internalMember.vue
index 956a89c..20b95b9 100644
--- a/admin/src/views/business/internalMember.vue
+++ b/admin/src/views/business/internalMember.vue
@@ -171,8 +171,6 @@
<template slot-scope="{row}">
<el-button type="text" icon="el-icon-edit" @click="$refs.OperaMemberWindow.open('缂栬緫鍛樺伐淇℃伅', row, department)"
v-permissions="['business:empower:update']">缂栬緫</el-button>
- <el-button type="text" icon="el-icon-plus" @click="empower(row.id)"
- v-permissions="['business:empower:create']">閲嶆柊鎺堟潈</el-button>
<el-button type="text" :loading="heading" style="color: red" icon="el-icon-delete"
@click="updateHead(row, 0)" v-if="row.headStatus == 1"
v-permissions="['business:member:head']">鍙栨秷涓荤</el-button>
diff --git a/admin/src/views/client/components/staffEdit.vue b/admin/src/views/client/components/staffEdit.vue
index f74bff5..c85f098 100644
--- a/admin/src/views/client/components/staffEdit.vue
+++ b/admin/src/views/client/components/staffEdit.vue
@@ -1,6 +1,6 @@
<template>
- <GlobalWindow :title="title" width="900px" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
- <el-form :model="form" ref="form" :rules="rules">
+ <GlobalWindow :title="title" width="820px" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
+ <el-form :model="form" ref="form" label-position="top" :rules="rules">
<div class="list">
<el-form-item label="瀹㈡埛鍚嶇О" prop="customerId">
<el-select v-model="form.customerId" clearable filterable>
diff --git a/admin/src/views/client/staffList.vue b/admin/src/views/client/staffList.vue
index 6117255..e3be587 100644
--- a/admin/src/views/client/staffList.vue
+++ b/admin/src/views/client/staffList.vue
@@ -37,8 +37,12 @@
</template>
</el-table-column>
<el-table-column prop="status" label="鐘舵��" min-width="100px">
+
<template slot-scope="{row}">
- <span :class="{ red: row.status == 1 }">{{ row.status == '0' ? '姝e父' : '绂佺敤' }}</span>
+ <el-switch v-model="row.status" @change="e => changeStatus(row)" :active-value="0"
+ :inactive-value="1">
+ </el-switch>
+ <!-- <span :class="{ red: row.status == 1 }">{{ row.status == '0' ? '姝e父' : '绂佺敤' }}</span> -->
</template>
</el-table-column>
<el-table-column v-if="containPermissions(['business:ywcustomer:update', 'business:ywcustomer:delete'])"
@@ -65,6 +69,8 @@
import Pagination from '@/components/common/Pagination'
import OperaYwCustomerWindow from './components/staffEdit.vue'
import { fetchList } from '@/api/client/ywCustomer'
+import { updateStatusById } from '@/api/business/member'
+import { Message } from 'element-ui'
export default {
name: 'YwCustomer',
extends: BaseTable,
@@ -90,6 +96,14 @@
this.initData()
},
methods: {
+ changeStatus(e) {
+ updateStatusById(e).then(res => {
+ this.search()
+ Message.success('鐘舵�佷慨鏀规垚鍔�')
+ }, () => {
+ this.search()
+ })
+ },
initData() {
fetchList({
capacity: 9000,
diff --git a/admin/src/views/finance/components/companyEdit.vue b/admin/src/views/finance/components/companyEdit.vue
index 6c378a8..22c1e7f 100644
--- a/admin/src/views/finance/components/companyEdit.vue
+++ b/admin/src/views/finance/components/companyEdit.vue
@@ -25,7 +25,7 @@
<script>
import GlobalWindow from '@/components/common/GlobalWindow'
import UploadAvatarImage from '@/components/common/UploadAvatarImage'
-import { create, updateById } from '@/api/business/company'
+import { createFinanceCompany, updateFinanceCompany } from '@/api/business/company'
import { Message } from 'element-ui'
export default {
components: { GlobalWindow, UploadAvatarImage },
@@ -52,7 +52,7 @@
const { param, subLoading } = this
this.$refs['paramRef'].validate((valid) => {
if (valid) {
- let fn = param.id ? updateById : create
+ let fn = param.id ? updateFinanceCompany : createFinanceCompany
this.subLoading = true
fn(param).then(res => {
this.subLoading = false
diff --git a/admin/src/views/operation/components/deviceEdit.vue b/admin/src/views/operation/components/deviceEdit.vue
index 4b24b38..129cc6d 100644
--- a/admin/src/views/operation/components/deviceEdit.vue
+++ b/admin/src/views/operation/components/deviceEdit.vue
@@ -43,7 +43,7 @@
</el-select>
</el-form-item>
<el-form-item label="鐓х墖" prop="">
- <UploadAvatarImage :file="{ 'imgurlfull': param.imgurlfull, 'imgurl': param.imgurl }"
+ <UploadAvatarImage :file="{ 'imgurlfull': param.fileFullUrl, 'imgurl': param.fileUrl }"
:uploadData="{ folder: 'ywDevice/' }" @uploadSuccess="uploadAvatarSuccess" @uploadEnd="isUploading = false"
@uploadBegin="isUploading = true" />
</el-form-item>
@@ -109,7 +109,6 @@
if (item2.id == cateId) {
this.$set(this.param, 'cateIds', [item.id, item2.id])
console.log('cateId', this.form)
-
}
})
}
@@ -141,8 +140,8 @@
}
},
uploadAvatarSuccess(file) {
- this.$set(this.param, 'imgurl', file.imgurl)
- this.$set(this.param, 'imgurlfull', file.imgurlfull)
+ this.$set(this.param, 'fileUrl', file.imgurl)
+ this.$set(this.param, 'fileFullUrl', file.imgurlfull)
},
close() {
this.isShowModal = false
diff --git a/admin/src/views/operation/components/maintain.vue b/admin/src/views/operation/components/maintain.vue
index 5ec2b19..a1d0879 100644
--- a/admin/src/views/operation/components/maintain.vue
+++ b/admin/src/views/operation/components/maintain.vue
@@ -2,21 +2,21 @@
<GlobalWindow :title="param.id ? '缂栬緫杩愮淮璁板綍' : '鏂板缓杩愮淮璁板綍'" :confirmWorking="subLoading" :visible.sync="isShowModal"
width="600px" @close="close" @confirm="handleSub">
<el-form :model="param" ref="paramRef" :rules="rules">
- <el-form-item label="閫夋嫨璁惧" prop="code">
+ <el-form-item label="閫夋嫨璁惧" prop="deviceId">
<el-select v-model="param.deviceId" filterable clearable>
- <el-option v-for="item in deviceList" :value="item" :label="item"></el-option>
+ <el-option v-for="item in deviceList" :value="item.id" :label="item.name"></el-option>
</el-select>
</el-form-item>
- <el-form-item label="杩愮淮浜哄憳" prop="code">
- <el-select v-model="param.realName" filterable clearable>
- <el-option v-for="item in 10" :value="item" :label="item"></el-option>
+ <el-form-item label="杩愮淮浜哄憳" prop="userId">
+ <el-select v-model="param.userId" filterable clearable>
+ <el-option v-for="item in staffList" :value="item.id" :label="item.realname"></el-option>
</el-select>
</el-form-item>
<el-form-item label="璁惧鐘舵��" prop="">
<el-select v-model="param.status" filterable clearable>
- <el-option value="0" label="姝e父"></el-option>
- <el-option value="1" label="鎹熷潖"></el-option>
- <el-option value="2" label="鎶ュ簾"></el-option>
+ <el-option :value="0" label="姝e父"></el-option>
+ <el-option :value="1" label="鎹熷潖"></el-option>
+ <el-option :value="2" label="鎶ュ簾"></el-option>
</el-select>
</el-form-item>
<el-form-item label="鐜板満鐓х墖" prop="">
@@ -37,17 +37,13 @@
</div>
</div>
</el-form-item>
- <el-form-item label="杩愮淮澶囨敞" prop="">
- <el-input type="textarea" :rows="4" v-model="param.remark" placeholder="璇疯緭鍏�" />
+ <el-form-item label="杩愮淮澶囨敞" prop="content">
+ <el-input type="textarea" :rows="4" v-model="param.content" placeholder="璇疯緭鍏�" />
</el-form-item>
- <el-form-item label="杩愮淮鏃堕棿" prop="">
+ <el-form-item label="杩愮淮鏃堕棿" prop="dealDate">
<el-date-picker v-model="param.dealDate" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"></el-date-picker>
</el-form-item>
-
-
-
-
</el-form>
</GlobalWindow>
</template>
@@ -56,6 +52,8 @@
import GlobalWindow from '@/components/common/GlobalWindow'
import UploadAvatarImage from '@/components/common/UploadAvatarImage'
import { fetchList } from '@/api/Inspection/device'
+import { getUserList } from '@/api/system/user'
+import { create, updateById } from '@/api/Inspection/deviceRecord'
import { Message, Loading } from 'element-ui'
export default {
components: { GlobalWindow, UploadAvatarImage },
@@ -65,9 +63,11 @@
subLoading: false,
param: {},
deviceList: [],
+ staffList: [],
rules: {
- name: [{ required: true, message: '璇疯緭鍏�' }],
- code: [{ required: true, message: '璇疯緭鍏�' }]
+ deviceId: [{ required: true, message: '璇烽�夋嫨' }],
+ content: [{ required: true, message: '璇疯緭鍏�' }],
+ // code: [{ required: true, message: '璇疯緭鍏�' }],
},
loadingInstance: null,
@@ -84,18 +84,19 @@
},
methods: {
handleSub() {
- const { param, subLoading } = this
+ const { param, subLoading, fileList } = this
this.$refs['paramRef'].validate((valid) => {
if (valid) {
let fn = param.id ? updateById : create
+ if(fileList && fileList.length > 0){
+ param.multifileList = fileList
+ }
this.subLoading = true
fn(param).then(res => {
- if (res.code == 200) {
- this.subLoading = false
+ this.subLoading = false
this.$emit('success')
Message.success('淇濆瓨鎴愬姛')
this.close()
- }
}).catch(() => {
this.subLoading = false
})
@@ -108,9 +109,11 @@
capacity: 1000,
page: 1,
}).then(res => {
- this.deviceList = res || []
+ this.deviceList = res.records
})
-
+ getUserList({}).then(res => {
+ this.staffList = res
+ })
},
changeSel(e) {
if (e && e.length == 1) {
@@ -155,12 +158,14 @@
if (['.mp4', '.avi', '.flv', '.wmv'].some(char => item.imgaddr.includes(char))) {
this.fileList.push({
type: 1,
+ objType: 6,
fileurl: item.imgaddr,
fileurlFull: item.url
})
} else {
this.fileList.push({
type: 0,
+ objType: 6,
fileurl: item.imgaddr,
fileurlFull: item.url
})
@@ -184,7 +189,8 @@
.file_list {
display: flex;
flex-wrap: wrap;
- .avatar-uploader{
+
+ .avatar-uploader {
width: 92px;
height: 92px;
display: flex;
@@ -192,6 +198,7 @@
align-items: center;
border: 1px dashed #d9d9d9;
}
+
.item {
width: 92px;
max-height: 92px;
diff --git a/admin/src/views/operation/components/maintainDetail.vue b/admin/src/views/operation/components/maintainDetail.vue
new file mode 100644
index 0000000..e9d85b1
--- /dev/null
+++ b/admin/src/views/operation/components/maintainDetail.vue
@@ -0,0 +1,104 @@
+<template>
+ <GlobalWindow title="璁惧杩愮淮璇︽儏" :showConfirm="false" :visible.sync="visible" width="800px">
+ <div class="model_wrap">
+ <div class="list">
+ <div class="item">
+ <div class="la">璁惧鍚嶇О</div>
+ <div class="val">{{ info.deviceName }}</div>
+ </div>
+ <div class="item">
+ <div class="la">璁惧缂栧彿</div>
+ <div class="val">{{ info.deviceCode }}</div>
+ </div>
+ <div class="item">
+ <div class="la">璁惧鐘舵��</div>
+ <div class="val" v-if="info.status == 0">姝e父</div>
+ <div class="val" v-if="info.status == 1">鎹熷潖</div>
+ <div class="val" v-if="info.status == 2">鎶ュ簾</div>
+ </div>
+ <div class="item">
+ <div class="la">杩愮淮浜�</div>
+ <div class="val">{{ info.realName }}</div>
+ </div>
+ <div class="item">
+ <div class="la">杩愮淮浜虹數璇�</div>
+ <div class="val">{{ info.mobile }}</div>
+ </div>
+ <div class="item">
+ <div class="la">杩愮淮鏃堕棿</div>
+ <div class="val">{{ info.dealDate }}</div>
+ </div>
+ <div class="item max">
+ <div class="la">杩愮淮澶囨敞</div>
+ <div class="val">{{ info.content }}</div>
+ </div>
+ <div class="item max">
+ <div class="la">鐜板満鐓х墖</div>
+ <div class="value" v-if="info.multifileList == null || !info.multifileList.length">鏃�</div>
+ <div class="value" v-if="info.multifileList != null && info.multifileList.length">
+ <div v-for="item in info.multifileList" :key="item.id" style="display: inline;margin-right: 20px">
+ <video v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')" ref="videoRef" controls preload="auto"
+ style="width: 80px;height: 80px;object-fit: contain;" :src="item.fileurlFull" />
+ <el-image v-else-if="item.fileurlFull" style="width:80px; height: 80px" :src="item.fileurlFull"
+ :preview-src-list="[item.fileurlFull]">
+ </el-image>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { detailById } from '@/api/Inspection/deviceRecord'
+export default {
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data() {
+ return {
+ // 琛ㄥ崟鏁版嵁
+ info: {},
+ }
+ },
+ created() {
+
+ },
+ methods: {
+ getDetail(id) {
+ detailById(id).then(res => {
+ this.info = res
+ })
+ }
+ }
+}
+</script>
+<style lang="scss" scoped>
+.model_wrap {
+ padding-top: 20px;
+ .title {
+ font-size: 18px;
+ font-weight: 600;
+ margin-bottom: 16px;
+ }
+
+ .list {
+ display: flex;
+ flex-wrap: wrap;
+
+ .item {
+ width: 33.33%;
+ margin-bottom: 8px;
+
+ .la {
+ color: #7f7f7f
+ }
+ }
+ .max{
+ width: 100%;
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/admin/src/views/operation/record.vue b/admin/src/views/operation/record.vue
index 53e95ad..37c421a 100644
--- a/admin/src/views/operation/record.vue
+++ b/admin/src/views/operation/record.vue
@@ -7,16 +7,21 @@
<el-button type="primary" @click="handleEx" v-permissions="['business:ywpatrolline:create']">瀵煎嚭</el-button>
</div>
<el-table v-loading="loading" :data="list" stripe>
- <el-table-column prop="" label="杩愮淮浜�" min-width="100" show-overflow-tooltip />
- <el-table-column prop="code" label="璁惧缂栧彿" min-width="100" show-overflow-tooltip />
- <el-table-column prop="name" label="璁惧鍚嶇О" min-width="100" show-overflow-tooltip />
- <el-table-column prop="stautsName" label="璁惧鐘舵��" min-width="100" show-overflow-tooltip />
- <el-table-column prop="remark" label="杩愮淮澶囨敞" min-width="100" show-overflow-tooltip />
- <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="realName" label="杩愮淮浜�" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="deviceCode" label="璁惧缂栧彿" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="deviceName" label="璁惧鍚嶇О" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="status" label="璁惧鐘舵��" min-width="100" show-overflow-tooltip>
+ <template slot-scope="{row}">
+ <span v-if="row.status == 0">姝e父</span>
+ <span v-if="row.status == 1">鎹熷潖</span>
+ <span v-if="row.status == 2">鎶ュ簾</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="content" label="杩愮淮澶囨敞" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="140" show-overflow-tooltip />
<el-table-column label="鎿嶄綔" min-width="120" fixed="right">
<template slot-scope="{row}">
- <el-button type="text" @click="handleDetail(row)" icon="el-icon-edit"
- v-permissions="['business:category:update']">鏌ョ湅</el-button>
+ <el-button type="text" @click="handleDetail(row)" v-permissions="['business:category:update']">鏌ョ湅</el-button>
</template>
</el-table-column>
</el-table>
@@ -24,6 +29,7 @@
<Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
</div>
<Edit v-if="showEdit" ref="EditRef" @success="getList" @close="showEdit = false" />
+ <Detail ref="DetailRef" />
</div>
</template>
@@ -31,12 +37,14 @@
import Pagination from '@/components/common/Pagination'
import QueryForm from '@/components/common/QueryForm'
import Edit from './components/maintain.vue'
-import { fetchList, deleteById } from '@/api/Inspection/device'
+import Detail from './components/maintainDetail.vue'
+import { fetchList, deleteById } from '@/api/Inspection/deviceRecord'
export default {
components: {
Pagination,
QueryForm,
- Edit
+ Edit,
+ Detail
},
data() {
return {
@@ -105,8 +113,9 @@
})
},
- handleDetail() {
-
+ handleDetail(row) {
+ this.$refs.DetailRef.visible = true
+ this.$refs.DetailRef.getDetail(row.id)
},
handleDel(row) {
let message = `纭鍒犻櫎璇ヨ褰曞悧?`
diff --git a/admin/src/views/project/components/OperaYwProjectWindow.vue b/admin/src/views/project/components/OperaYwProjectWindow.vue
index 82aba77..70ea6e0 100644
--- a/admin/src/views/project/components/OperaYwProjectWindow.vue
+++ b/admin/src/views/project/components/OperaYwProjectWindow.vue
@@ -1,23 +1,22 @@
<template>
- <GlobalWindow
- :title="title"
- :visible.sync="visible"
- :confirm-working="isWorking"
- @confirm="confirm"
- >
+ <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
<el-form :model="form" ref="form" :rules="rules">
-
+
<el-form-item label="椤圭洰鍚嶇О" prop="name">
- <el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
+ <el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim />
</el-form-item>
- <el-form-item label="鎵�灞炲湴鍧�" prop="addr">
- <el-input v-model="form.addr" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�"/>
+ <el-form-item label="鎵�灞炲湴鍖�" prop="addr">
+ <el-cascader v-model="form.areaIdT" :props="{
+ label: 'name',
+ value: 'id',
+ children: 'childList'
+ }" :options="treeList" @change="handleChange"></el-cascader>
</el-form-item>
<el-form-item label="璇︾粏鍦板潃" prop="addr">
- <el-input v-model="form.addr" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�"/>
+ <el-input v-model="form.addr" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�" />
</el-form-item>
<el-form-item label="椤圭洰绠�浠�" prop="remark">
- <el-input type="textarea" :rows="4" v-model="form.remark" placeholder="璇疯緭鍏�"/>
+ <el-input type="textarea" :rows="4" v-model="form.remark" placeholder="璇疯緭鍏�" />
</el-form-item>
</el-form>
</GlobalWindow>
@@ -26,11 +25,13 @@
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
+import { getCityTree } from '@/api/system/common'
+import { detailById } from '@/api/project/ywProject'
export default {
name: 'OperaYwProjectWindow',
extends: BaseOpera,
components: { GlobalWindow },
- data () {
+ data() {
return {
// 琛ㄥ崟鏁版嵁
form: {
@@ -45,23 +46,65 @@
status: '',
sortnum: '',
imgurl: '',
+ areaIdT: '',
+ cityId: '',
areaId: '',
+ provinceId: '',
addr: ''
},
// 楠岃瘉瑙勫垯
rules: {
name: [{ required: true, message: '璇疯緭鍏ラ」鐩悕绉�', trigger: 'blur' }]
},
- projectList: []
+ projectList: [],
+ treeList: []
}
},
- created () {
+ created() {
this.config({
api: '/project/ywProject',
'field.id': 'id'
})
},
methods: {
+ open(title, target) {
+ this.title = title
+ this.visible = true
+ this.initData()
+ this.$nextTick(() => {
+ for (const key in this.form) {
+ this.form[key] = target[key]
+ }
+ this.$set(this.form, 'areaIdT', [target.provinceId, target.cityId, target.areaId,])
+ // console.log(this.form)
+ })
+
+
+
+ },
+ handleChange(e) {
+ if (e && e.length > 0) {
+ if (e.length == 3) {
+ this.$set(this.form, 'areaId', e[2])
+ } else if (e.length == 2) {
+ this.$set(this.form, 'areaId', e[1])
+ } else {
+ this.$set(this.form, 'areaId', e[0])
+ }
+ }
+ },
+ getDetail(id) {
+ detailById(id).then(res => {
+ this.form = res
+ })
+ },
+ initData() {
+ getCityTree({
+ "type": 0
+ }).then(res => {
+ this.treeList = res
+ })
+ }
}
}
</script>
diff --git a/admin/src/views/project/projectList.vue b/admin/src/views/project/projectList.vue
index a6c0ba5..c816ca7 100644
--- a/admin/src/views/project/projectList.vue
+++ b/admin/src/views/project/projectList.vue
@@ -15,7 +15,7 @@
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
<ul class="toolbar" v-permissions="['business:ywproject:create', 'business:ywproject:delete']">
- <li><el-button type="primary" @click="$refs.operaYwProjectWindow.open('鏂板缓椤圭洰')" icon="el-icon-plus" v-permissions="['business:ywproject:create']">鏂板缓</el-button></li>
+ <li><el-button type="primary" @click="handleEdit()" icon="el-icon-plus" v-permissions="['business:ywproject:create']">鏂板缓</el-button></li>
<li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:ywproject:delete']">鍒犻櫎</el-button></li>
</ul>
<el-table
@@ -36,7 +36,7 @@
fixed="right"
>
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaYwProjectWindow.open('缂栬緫椤圭洰', row)" icon="el-icon-edit" v-permissions="['business:ywproject:update']">缂栬緫</el-button>
+ <el-button type="text" @click="handleEdit(row)" icon="el-icon-edit" v-permissions="['business:ywproject:update']">缂栬緫</el-button>
<el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:ywproject:delete']">鍒犻櫎</el-button>
</template>
</el-table-column>
@@ -90,6 +90,16 @@
'field.main': 'id'
})
this.search()
+ },
+ methods: {
+ handleEdit(row){
+ if(row && row.id){
+ this.$refs.operaYwProjectWindow.open('缂栬緫椤圭洰', row)
+ }else{
+ this.$refs.operaYwProjectWindow.open('鏂板缓椤圭洰')
+ // this.$refs.operaYwProjectWindow.open('鏂板缓椤圭洰')
+ }
+ }
}
}
</script>
diff --git a/admin/src/views/workorder/components/detail.vue b/admin/src/views/workorder/components/detail.vue
index 7246837..32eea5f 100644
--- a/admin/src/views/workorder/components/detail.vue
+++ b/admin/src/views/workorder/components/detail.vue
@@ -1,5 +1,5 @@
<template>
- <GlobalWindow width="820px" title="宸ュ崟璇︽儏" :visible.sync="visible" :confirm-working="isWorking" @close="close"
+ <GlobalWindow width="900px" title="宸ュ崟璇︽儏" :visible.sync="visible" :confirm-working="isWorking" @close="close"
@confirm="confirm">
<div class="main">
<div class="title">
@@ -10,50 +10,68 @@
<div class="status gray" v-if="info.dealStatus == 2">宸插鐞�</div>
</div>
</div>
- <div class="list">
- <div class="item">
- <div class="la">浣嶇疆绫诲瀷</div>
- <div class="val">{{ info.areaType == 0 ? '瀹ゅ唴缁翠慨' : '鍏叡缁翠慨' }}</div>
- </div>
- <div class="item">
- <div class="la">瀵瑰簲浣嶇疆</div>
- <div class="val">{{ info.buildingName }} / {{ info.roomNum || info.floorName }}</div>
- </div>
- <div class="item">
- <div class="la">宸ュ崟绫诲埆</div>
- <div class="val">{{ info.categoryName }}</div>
- </div>
- <div class="item">
- <div class="la">涓婃姤浜�</div>
- <div class="val">{{ info.creatorName }}</div>
- </div>
- <div class="item">
- <div class="la">涓婃姤浜虹數璇�</div>
- <div class="val">{{ info.creatorPhone }}</div>
- </div>
- <div class="item">
- <div class="la">涓婃姤鏃堕棿</div>
- <div class="val">{{ info.createDate }}</div>
- </div>
- <div class="item max">
- <div class="la">涓婇棬鏃堕棿</div>
- <div class="val">{{ info.getDate }}</div>
- </div>
- <div class="item max">
- <div class="la">闂鎻忚堪</div>
- <div class="val">{{ info.content }}</div>
- </div>
- <div class="item max">
- <div class="la">闂鍥剧墖</div>
- <div class="value" v-if="info.fileList == null || !info.fileList.length">鏃�</div>
- <div class="value" v-if="info.fileList != null && info.fileList.length">
- <div v-for="item in info.fileList" :key="item.id" style="display: inline;margin-right: 20px">
- <video v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')" ref="videoRef" controls preload="auto"
- style="width: 80px;height: 80px;object-fit: contain;" :src="item.fileurlFull" />
- <el-image v-else-if="item.fileurlFull" style="width:80px; height: 80px" :src="item.fileurlFull"
- :preview-src-list="[item.fileurlFull]">
- </el-image>
+ <div class="main_content">
+ <div class="list">
+ <div class="item">
+ <div class="la">浣嶇疆绫诲瀷</div>
+ <div class="val">{{ info.areaType == 0 ? '瀹ゅ唴缁翠慨' : '鍏叡缁翠慨' }}</div>
+ </div>
+ <div class="item">
+ <div class="la">瀵瑰簲浣嶇疆</div>
+ <div class="val">{{ info.buildingName }} / {{ info.roomNum || info.floorName }}</div>
+ </div>
+ <div class="item">
+ <div class="la">宸ュ崟绫诲埆</div>
+ <div class="val">{{ info.categoryName }}</div>
+ </div>
+ <div class="item">
+ <div class="la">涓婃姤浜�</div>
+ <div class="val">{{ info.creatorName }}</div>
+ </div>
+ <div class="item">
+ <div class="la">涓婃姤浜虹數璇�</div>
+ <div class="val">{{ info.creatorPhone }}</div>
+ </div>
+ <div class="item">
+ <div class="la">涓婃姤鏃堕棿</div>
+ <div class="val">{{ info.createDate }}</div>
+ </div>
+ <div class="item max">
+ <div class="la">涓婇棬鏃堕棿</div>
+ <div class="val">{{ info.getDate }}</div>
+ </div>
+ <div class="item max">
+ <div class="la">闂鎻忚堪</div>
+ <div class="val">{{ info.content }}</div>
+ </div>
+ <div class="item max">
+ <div class="la">闂鍥剧墖</div>
+ <div class="value" v-if="info.fileList == null || !info.fileList.length">鏃�</div>
+ <div class="value" v-if="info.fileList != null && info.fileList.length">
+ <div v-for="item in info.fileList" :key="item.id" style="display: inline;margin-right: 20px">
+ <video v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')" ref="videoRef" controls
+ preload="auto" style="width: 80px;height: 80px;object-fit: contain;" :src="item.fileurlFull" />
+ <el-image v-else-if="item.fileurlFull" style="width:80px; height: 80px" :src="item.fileurlFull"
+ :preview-src-list="[item.fileurlFull]">
+ </el-image>
+ </div>
</div>
+ </div>
+ </div>
+ <div class="side">
+ <div class="title">宸ュ崟娴佽浆璁板綍鍛�</div>
+ <div class="flow_list">
+ <div class="item" v-for="item,i in info.logList">
+ <div class="icon">
+ <div class="dian"></div>
+ <div v-if="i < info.logList.length - 1" class="line"></div>
+ </div>
+ <div class="content">
+ <div class="name">{{ item.title }}</div>
+ <div class="time">鎿嶄綔鏃堕棿锛歿{ item.createDate }}</div>
+ <div class="creator">鎿嶄綔浜猴細{{ item.param1 }}</div>
+ </div>
+ </div>
</div>
</div>
</div>
@@ -85,8 +103,8 @@
</el-form-item>
<el-form-item label="鐜板満鍥剧墖">
<div class="file_list">
- <el-upload class="avatar-uploader" :data="uploadData" multiple :limit="6" :auto-upload="true" :action="uploadImgUrl"
- :show-file-list="false" :on-success="uploadAvatarSuccess" :on-error="uploadError"
+ <el-upload class="avatar-uploader" :data="uploadData" multiple :limit="6" :auto-upload="true"
+ :action="uploadImgUrl" :show-file-list="false" :on-success="uploadAvatarSuccess" :on-error="uploadError"
:before-upload="beforeUpload">
<div class="upload_wrap">
<i class="el-icon-plus avatar-uploader-icon"></i>
@@ -178,9 +196,9 @@
if (valid) {
const { param, id, dealFileList, info } = this
let fn = null
- if(info.dealStatus == 0 || info.dealStatus == null){
+ if (info.dealStatus == 0 || info.dealStatus == null) {
fn = param.dealType == 0 ? dispatchOrder : dealOrder
- }else{
+ } else {
fn = dealOrder
}
fn({
@@ -326,6 +344,46 @@
width: 100%;
}
}
+ .main_content{
+ display: flex;
+ .side{
+ width: 240px;
+ .title{
+ font-size: 14px;
+ }
+ .flow_list{
+ .item{
+ display: flex;
+ .icon{
+ width: 28px;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ .dian{
+ width: 12px;
+ height: 12px;
+ border-radius: 50%;
+ background-color: #e89e42;
+ }
+ .line{
+ width: 1px;
+ height: 100%;
+ background-color: #e89e42;
+ }
+ }
+ .content{
+ font-size: 12px;
+ color: #999999;
+ padding-bottom: 12px;
+ .name{
+ font-size: 13px;
+ color: #333333;
+ }
+ }
+ }
+ }
+ }
+ }
}
.file_list {
--
Gitblit v1.9.3