From 760f528e53aafdd061daae9a2c4ad6062b923d6e Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期五, 22 十一月 2024 18:20:34 +0800
Subject: [PATCH] ll
---
admin/src/views/contract/components/contractEdit.vue | 376 +++++
admin/src/views/workorder/workorderCate.vue | 14
admin/src/views/Inspection/components/areaCate.vue | 74 +
admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue | 69
admin/src/views/Inspection/task.vue | 88
admin/src/views/finance/payments.vue | 137 +
admin/src/api/Inspection/ywPatrolPoint.js | 7
admin/src/assets/style/style.scss | 3
admin/src/views/Inspection/dot.vue | 67
admin/src/views/contract/components/contractDetail.vue | 226 +++
admin/src/views/client/staffList.vue | 6
admin/src/views/finance/account.vue | 138 ++
admin/src/views/operation/category.vue | 109 +
admin/src/views/operation/components/maintain.vue | 222 +++
admin/src/views/workorder/workorderList.vue | 96
admin/src/views/Inspection/components/taskDetail.vue | 98 +
admin/src/views/operation/components/deviceEdit.vue | 137 +
admin/src/views/operation/device.vue | 138 ++
admin/src/components/common/MemberSearch/index.js | 3
admin/src/views/finance/bull.vue | 194 ++
admin/src/components/common/MemberSearch/src/index.vue | 155 ++
admin/src/views/finance/components/accountEdit.vue | 104 +
admin/src/views/workorder/components/OperaCategoryWindow.vue | 21
admin/src/components/common/QueryForm/queryForm.vue | 16
admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue | 97 +
admin/src/views/operation/record.vue | 138 ++
admin/src/views/contract/contractList.vue | 147 ++
admin/src/views/Inspection/plan.vue | 97
admin/src/views/finance/company.vue | 132 +
admin/src/views/operation/components/OperaCategoryWindow.vue | 74 +
admin/src/api/Inspection/device.js | 40
admin/src/views/Inspection/area.vue | 107 +
admin/src/views/project/components/OperaYwBuildingWindow.vue | 2
admin/src/views/contract/components/config.js | 3
admin/src/views/finance/components/companyEdit.vue | 93 +
admin/src/views/project/buildingList.vue | 63
admin/src/views/Inspection/components/OperaYwPatrolLineWindow.vue | 175 +
admin/src/views/Inspection/path.vue | 75
admin/src/views/finance/components/deviceEdit.vue | 137 +
admin/src/views/workorder/components/OperaYwWorkorderWindow.vue | 226 ++-
40 files changed, 3,665 insertions(+), 439 deletions(-)
diff --git a/admin/src/api/Inspection/device.js b/admin/src/api/Inspection/device.js
new file mode 100644
index 0000000..5098bb4
--- /dev/null
+++ b/admin/src/api/Inspection/device.js
@@ -0,0 +1,40 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywDevice/page', data, {
+ trim: true
+ })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywDevice/exportExcel', data, {
+ trim: true,
+ download: true
+ })
+}
+
+// 鍒涘缓
+export function create (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywDevice/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywDevice/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+ return request.get(`/visitsAdmin/cloudService/business/ywDevice/delete/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+ return request.get('/visitsAdmin/cloudService/business/ywDevice/delete/batch', {
+ params: {
+ ids
+ }
+ })
+}
diff --git a/admin/src/api/Inspection/ywPatrolPoint.js b/admin/src/api/Inspection/ywPatrolPoint.js
index 933179d..92dfde0 100644
--- a/admin/src/api/Inspection/ywPatrolPoint.js
+++ b/admin/src/api/Inspection/ywPatrolPoint.js
@@ -6,7 +6,12 @@
trim: true
})
}
-
+// 鏌ヨ
+export function getFetchList (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywPatrolPoint/list', data, {
+ trim: true
+ })
+}
// 瀵煎嚭Excel
export function exportExcel (data) {
return request.post('/visitsAdmin/cloudService/business/ywPatrolPoint/exportExcel', data, {
diff --git a/admin/src/assets/style/style.scss b/admin/src/assets/style/style.scss
index 310a553..afecdf3 100644
--- a/admin/src/assets/style/style.scss
+++ b/admin/src/assets/style/style.scss
@@ -50,6 +50,9 @@
.green{
color: #75a236;
}
+.gary{
+ color: #aaaaaa;
+}
.cu{
cursor: pointer;
}
diff --git a/admin/src/components/common/MemberSearch/index.js b/admin/src/components/common/MemberSearch/index.js
new file mode 100644
index 0000000..9f1e88f
--- /dev/null
+++ b/admin/src/components/common/MemberSearch/index.js
@@ -0,0 +1,3 @@
+import Index from './src'
+
+export default Index
diff --git a/admin/src/components/common/MemberSearch/src/index.vue b/admin/src/components/common/MemberSearch/src/index.vue
new file mode 100644
index 0000000..f3db2c9
--- /dev/null
+++ b/admin/src/components/common/MemberSearch/src/index.vue
@@ -0,0 +1,155 @@
+<template>
+ <GlobalWindow title="閫夋嫨瀹㈡埛" width="1000px" @close="close" :visible.sync="isShowMemberList">
+ <div>
+ <div class="df_ac mb20">
+ <el-input v-model="modalSearchValue" placeholder="璇疯緭鍏ュ鎴峰悕绉�" class="w400" @keyup.enter.native="queryList">
+ <!-- <el-button slot="append" icon="el-icon-search" @click="queryList()" /> -->
+ </el-input>
+ <el-button class="ml10" type="primary" @click="queryList()">鏌ヨ</el-button>
+ </div>
+ <el-table ref="table" v-loading="listLoading" :data="list" element-loading-text="Loading" border fit
+ :header-row-class-name="'table-header'" class="doumee-element-table doumee-element-tableb"
+ @row-click="rowClick">
+
+ <el-table-column align="center" label="瀹㈡埛绫诲瀷" prop="cardName" show-overflow-tooltip min-width="80" />
+ <el-table-column align="center" label="瀹㈡埛鍚嶇О" show-overflow-tooltip prop="remainingMoney" min-width="80" />
+ <el-table-column align="center" label="鑱旂郴浜�" show-overflow-tooltip prop="remainingGiveMoney" min-width="80" />
+ <el-table-column label="鑱旂郴鐢佃瘽" prop="createTime" min-width="100" align="center" />
+ <el-table-column label="缁熶竴淇$敤浠g爜" prop="createTime" min-width="120" align="center" />
+ <el-table-column label="钀ヤ笟鏈熼檺" prop="createTime" min-width="100" align="center" />
+ <el-table-column label="榛樿鍙戠エ绫诲瀷" prop="createTime" min-width="100" align="center" />
+ </el-table>
+ <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
+ </div>
+ </GlobalWindow>
+</template>
+
+<script>
+import { memberList, memberDetailInfo } from '@/api'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import dayjs from 'dayjs'
+// import { debounce } from '@/utils/debounce'
+
+import Pagination from '@/components/common/Pagination'
+export default {
+ components: {
+ Pagination,
+ GlobalWindow
+ },
+ props: {
+ isShowChooseBtn: {
+ type: Boolean,
+ default: () => true
+ },
+ type: { // (10: 鍟嗗搧鎶樻墸 20: 璁㈠満鎶樻墸 30: 闂ㄧエ鎶樻墸 40: 濂楅鎶樻墸 50锛氭椿鍔ㄦ姌鎵� 60锛氳绋嬫姌鎵�)
+ type: String,
+ default: 'default'
+ }
+ },
+ data() {
+ return {
+ searchValue: '',
+ isShowMemberList: false,
+ modalSearchValue: '',
+ list: [],
+ totalCount: 0,
+ pagination: {
+ pageSize: 10,
+ page: 1,
+ total: 0
+ },
+ listLoading: false,
+
+ }
+ },
+ created() {
+ // (10: 鍟嗗搧鎶樻墸 20: 璁㈠満鎶樻墸 30: 闂ㄧエ鎶樻墸 40: 濂楅鎶樻墸 50锛氭椿鍔ㄦ姌鎵� 60锛氳绋嬫姌鎵�)
+ },
+ methods: {
+ clearSearch() {
+ this.searchValue = ''
+ this.modalSearchValue = ''
+ },
+ handleMemberSelect(item) {
+ memberDetailInfo({ param: { memberId: item.id } }).then((res) => {
+ if (res.errorCode !== '000000') return
+ const obj = res.record || {}
+ obj.searchValue = this.searchValue
+ this.$emit('select', obj)
+ })
+ },
+ clear() {
+ this.searchValue = ''
+ setTimeout(() => {
+ this.$refs.searchValueRef.focus()
+ })
+ this.$emit('clear')
+ },
+ rowClick(item) {
+ memberDetailInfo({ param: { memberId: item.id } }).then((res) => {
+ if (res.errorCode !== '000000') return
+ const obj = res.record || {}
+ this.searchValue = obj.nickName
+ obj.searchValue = this.modalSearchValue
+ if (item.phone) {
+ this.searchValue += '-' + item.phone
+ }
+ if (item.number) {
+ this.searchValue += '锛�' + item.number + '锛�'
+ }
+ this.$emit('select', obj)
+ })
+ this.isShowMemberList = false
+ },
+ getList() {
+ const { pagination, modalSearchValue } = this
+ this.listLoading = true
+ memberList({ pagination, param: { keyword: modalSearchValue } }).then((res) => {
+ this.listLoading = false
+ if (res.errorCode !== '000000') return
+ this.list = res.recordList
+ this.pagination.total = res.total || 0
+ this.totalCount = res.totalCount
+ }, () => {
+ this.listLoading = false
+ })
+ },
+ openModal() {
+ this.modalSearchValue = ''
+ // this.queryList()
+ this.isShowMemberList = true
+ },
+ queryList() {
+ this.pagination.page = 1
+ this.getList()
+ },
+ currentChange(val) {
+ this.pagination.page = val
+ this.getList()
+ },
+ clear() {
+ this.filters = {}
+ this.pagination.pageSize = 10
+ this.pagination.page = 1
+ this.getList()
+ },
+ handleSizeChange(capacity) {
+ this.pagination.pageSize = capacity
+ this.getList()
+ },
+ close() {
+ this.isShowMemberList = false
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+.member_search_wrap {
+ display: flex;
+
+ ::v-deep .el-input__validateIcon {
+ display: none !important;
+ }
+}
+</style>
diff --git a/admin/src/components/common/QueryForm/queryForm.vue b/admin/src/components/common/QueryForm/queryForm.vue
index c56d064..80e9fc1 100644
--- a/admin/src/components/common/QueryForm/queryForm.vue
+++ b/admin/src/components/common/QueryForm/queryForm.vue
@@ -2,13 +2,13 @@
<div class="doumee-filter">
<el-form inline label-suffix="锛�" @submit.native.prevent>
<template v-for="(item, index) in queryFormConfig.formItems">
- <el-form-item v-if="item.type === 'input' && (showZk || index < listLength)" :key="item.filed">
+ <el-form-item v-if="item.type === 'input' && (showZk || index < listLength)" :label="item.label" :key="item.filed">
<el-input v-model="searchForm[item.filed]"
:clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true"
:placeholder="item.label" class="w200"
@change="changeForm(item.filed)" @keyup.enter.native="handlekeyup(item.keyup || false)" />
</el-form-item>
- <el-form-item v-if="item.type === 'moneySelect' && (showZk || index < listLength)" :key="item.label">
+ <el-form-item v-if="item.type === 'moneySelect' && (showZk || index < listLength)" :label="item.label" :key="item.label">
<el-input v-model="searchForm[item.filedStrt]"
:clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true"
:placeholder="item.start" style="width: 150px" />
@@ -17,7 +17,7 @@
:clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true"
:placeholder="item.end" style="width: 150px" />
</el-form-item>
- <el-form-item v-if="item.type === 'select' && (showZk || index < listLength)" :key="item.filed">
+ <el-form-item v-if="item.type === 'select' && (showZk || index < listLength)" :label="item.label" :key="item.filed">
<el-select v-model="searchForm[item.filed]" :filterable="item.filterable || true"
:clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true"
:placeholder="item.label" class="w200"
@@ -26,25 +26,25 @@
:label="item.labelCode ? opt[item.labelCode] : opt.label" />
</el-select>
</el-form-item>
- <el-form-item v-if="item.type === 'date' && (showZk || index < listLength)" :key="item.filed">
+ <el-form-item v-if="item.type === 'date' && (showZk || index < listLength)" :label="item.label" :key="item.filed">
<el-date-picker v-model="searchForm[item.filed]" type="date" value-format="yyyy-MM-dd" class="w200"
:clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true"
:placeholder="item.label" :picker-options="item.pickerOptions || {}"
@change="changeForm(item.filed)" />
</el-form-item>
- <el-form-item v-if="item.type === 'daterange' && (showZk || index < listLength)" :key="item.filed">
+ <el-form-item v-if="item.type === 'daterange' && (showZk || index < listLength)" :label="item.label" :key="item.filed">
<el-date-picker v-model="searchForm[item.filed]" value-format="yyyy-MM-dd" type="daterange"
range-separator="鑷�"
:clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true"
:start-placeholder="item.start || ''" :end-placeholder="item.end || ''"
:picker-options="item.pickerOptions || {}" class="w400" @change="changeForm(item.filed)" />
</el-form-item>
- <el-form-item v-if="item.type === 'timePicker' && (showZk || index < listLength)" :key="item.filed">
+ <el-form-item v-if="item.type === 'timePicker' && (showZk || index < listLength)" :label="item.label" :key="item.filed">
<el-time-picker v-model="searchForm[item.filed]" is-range range-separator="鑷�" format="HH:mm"
value-format="HH:mm" start-placeholder="寮�濮嬫椂闂�" end-placeholder="缁撴潫鏃堕棿" placeholder="閫夋嫨鏃堕棿鑼冨洿" class="w400"
@change="changeForm(item.filed)" />
</el-form-item>
- <el-form-item v-if="item.type === 'datetimerange' && (showZk || index < listLength)" :key="item.filed">
+ <el-form-item v-if="item.type === 'datetimerange' && (showZk || index < listLength)" :label="item.label" :key="item.filed">
<el-date-picker v-model="searchForm[item.filed]" format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange" :default-time="['00:00:00', '23:59:59']"
:picker-options="item.pickerOptions || pickerOptions" range-separator="鑷�"
@@ -52,7 +52,7 @@
:start-placeholder="item.start || '寮�濮嬫椂闂�'" :end-placeholder="item.end || '缁撴潫鏃堕棿'" class="w400"
@change="changeForm(item.filed)" />
</el-form-item>
- <el-form-item v-if="item.type === 'slot' && (showZk || index < listLength)" :key="item.filed">
+ <el-form-item v-if="item.type === 'slot' && (showZk || index < listLength)" :label="item.label" :key="item.filed">
<slot :name="item.filed" />
</el-form-item>
</template>
diff --git a/admin/src/views/Inspection/area.vue b/admin/src/views/Inspection/area.vue
index e69de29..1068c9c 100644
--- a/admin/src/views/Inspection/area.vue
+++ b/admin/src/views/Inspection/area.vue
@@ -0,0 +1,107 @@
+<template>
+ <TableLayout>
+ <template v-slot:table-wrap>
+ <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
+ <li><el-button type="primary" @click="handleEdit()" icon="el-icon-plus"
+ v-permissions="['business:category:create']">鏂板缓</el-button></li>
+ </ul>
+ <el-table row-key="id" :tree-props="{ children: 'childCategoryList' }" v-loading="isWorking.search"
+ :data="dataList" stripe @selection-change="handleSelectionChange">
+ <el-table-column prop="name" label="宸ュ崟鍖哄煙" min-width="100px"></el-table-column>
+ <!-- <el-table-column prop="parentName" label="鎵�灞炲垎绫�" min-width="100px"></el-table-column> -->
+ <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
+ <el-table-column v-if="containPermissions(['business:category:update', 'business:category:delete'])" label="鎿嶄綔"
+ min-width="120" fixed="right">
+ <template slot-scope="{row}">
+ <el-button type="text" @click="handleEdit(row)" icon="el-icon-edit"
+ v-permissions="['business:category:update']">缂栬緫</el-button>
+ <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
+ v-permissions="['business:category:delete']">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination @size-change="handleSizeChange" @current-change="getList" :pagination="tableData.pagination">
+ </pagination>
+ </template>
+ <!-- 鏂板缓/淇敼 -->
+ <OperaCategoryWindow v-if="isShowEdit" @close="isShowEdit = false" ref="operaCategoryWindow" @success="getList" />
+ </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaCategoryWindow from './components/areaCate.vue'
+import { fetchList, deleteById } from '@/api/business/category.js'
+export default {
+ name: 'Category',
+ extends: BaseTable,
+ components: { TableLayout, Pagination, OperaCategoryWindow },
+ data() {
+ return {
+ // 鎼滅储
+ filters: {
+ parentId: ''
+ },
+ isShowEdit: false,
+ loading: false,
+ pagination: {
+ pageSize: 10,
+ page: 1,
+ total: 0,
+ },
+ dataList: []
+ }
+ },
+ created() {
+ this.config({
+ module: '杞﹁締淇℃伅琛�',
+ api: '/business/category',
+ 'field.id': 'id',
+ 'field.main': 'id'
+ })
+ this.getList()
+ },
+ methods: {
+ handleEdit(row) {
+ this.isShowEdit = true
+ let str = row && row.id ? '缂栬緫鍖哄煙' : '鏂板缓鍖哄煙'
+ this.$nextTick(() => {
+ this.$refs.operaCategoryWindow.open(str)
+ this.$refs.operaCategoryWindow.getList()
+ if (row && row.id) {
+ this.$refs.operaCategoryWindow.getDetail(row.id)
+ }
+ })
+ },
+ deleteById(row) {
+ this.$confirm(`鎮ㄧ‘璁よ鍒犻櫎璇ュ尯鍩熷悧`, '娓╅Θ鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ deleteById(row.id).then(res => {
+ this.getList()
+ })
+ })
+
+ },
+ getList() {
+ const { pagination, filters } = this
+ this.loading = true
+ fetchList({
+ model: { ...filters, type: 4 },
+ capacity: pagination.pageSize,
+ page: pagination.page,
+ }).then(res => {
+ this.loading = false
+ this.dataList = res.records || []
+ this.pagination.total = res.total || 0
+ }, () => {
+ this.loading = false
+ })
+ },
+ }
+}
+</script>
diff --git a/admin/src/views/Inspection/components/OperaYwPatrolLineWindow.vue b/admin/src/views/Inspection/components/OperaYwPatrolLineWindow.vue
index abbc222..d936c67 100644
--- a/admin/src/views/Inspection/components/OperaYwPatrolLineWindow.vue
+++ b/admin/src/views/Inspection/components/OperaYwPatrolLineWindow.vue
@@ -1,78 +1,157 @@
<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="creator">
- <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
+ <el-form-item label="绾胯矾鍚嶇О" prop="name">
+ <el-input v-model="form.name" placeholder="璇疯緭鍏ョ嚎璺悕绉�" v-trim />
</el-form-item>
- <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
- <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
- </el-form-item>
- <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
- <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
- </el-form-item>
- <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
- <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
- </el-form-item>
- <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
- <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
- </el-form-item>
- <el-form-item label="鍚嶇О" prop="name">
- <el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
- </el-form-item>
- <el-form-item label="澶囨敞" prop="remark">
- <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
- </el-form-item>
- <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status">
- <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" v-trim/>
- </el-form-item>
- <el-form-item label="鎺掑簭鐮�" prop="sortnum">
- <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
- </el-form-item>
- <el-form-item label="鍥炬爣" prop="imgurl">
- <el-input v-model="form.imgurl" placeholder="璇疯緭鍏ュ浘鏍�" v-trim/>
- </el-form-item>
+ <div class="head">
+ <div class="title">宸℃鐐�</div>
+ <el-button type="primary" @click="openModal">娣诲姞宸℃鐐�</el-button>
+ </div>
+ <el-table v-loading="isWorking.search" :data="list" stripe>
+ <el-table-column prop="code" label="宸℃鐐圭紪鐮�" min-width="100px"></el-table-column>
+ <el-table-column prop="pointName" label="宸℃鐐瑰悕绉�" min-width="100px"></el-table-column>
+ <el-table-column prop="name" label="鎵爜鎵撳崱" min-width="100px">
+ <template v-slot="scope">
+ <el-switch v-model="scope.row.needScancode" @change="changeStatus" active-value="0"
+ inactive-value="1"></el-switch>
+ </template>
+ </el-table-column>
+ <el-table-column prop="name" label="鎺掑簭鐮�" min-width="100px">
+ <template v-slot="scope">
+ <el-input v-model="scope.row.sortnum" class="w100"></el-input>
+ </template>
+ </el-table-column>
+ <el-table-column prop="name" label="鎿嶄綔" min-width="100px">
+ <template v-slot="scope">
+ <span class="red cu" @click="handleDel(scope)">鍒犻櫎</span>
+ </template>
+ </el-table-column>
+ </el-table>
+
+
</el-form>
+ <!-- -->
+ <el-dialog title="娣诲姞宸℃鐐�" :close-on-click-modal="false" append-to-body :visible.sync="isShowModal" width="500px">
+ <el-select class="w400" v-model="selPoint" clearable multiple filterable>
+ <el-option v-for="item in pointList" :value="item.id" :label="item.name"></el-option>
+ </el-select>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="isShowModal = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="subModal">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
</GlobalWindow>
</template>
<script>
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 { Message } from 'element-ui'
export default {
name: 'OperaYwPatrolLineWindow',
extends: BaseOpera,
components: { GlobalWindow },
- data () {
+ data() {
return {
// 琛ㄥ崟鏁版嵁
form: {
- id: null,
- creator: '',
- createDate: '',
- editor: '',
- editDate: '',
- isdeleted: '',
name: '',
- remark: '',
- status: '',
- sortnum: '',
- imgurl: ''
},
+ selPoint: [],
+ pointList: [],
+ list: [],
+ isShowModal: false,
// 楠岃瘉瑙勫垯
rules: {
+ name: [{ required: true, message: '璇疯緭鍏�' }],
+ selPoint: [{ type: 'array', required: true, message: '璇疯緭鍏�' }],
}
}
},
- created () {
+ created() {
this.config({
api: '/Inspection/ywPatrolLine',
- 'field.id': 'id'
})
+ },
+ methods: {
+ confirm() {
+ const { form, list } = this
+ if (list.length == 0) return Message.warning('璇峰厛閫夋嫨宸℃鐐�')
+ form.linePointList = list
+ create({ ...form }).then(res => {
+ if (res.code == 200) {
+ Message.success('淇濆瓨鎴愬姛')
+ this.close()
+ }
+ })
+ },
+ initData() {
+ getFetchList({}).then(res => {
+ this.pointList = res || []
+ })
+ },
+ handleDel(row) {
+ this.list.splice(row.$index, 1)
+
+ },
+ changeStatus(row) {
+
+ },
+ openModal() {
+ this.selPoint = this.list.map(i => i.id)
+ this.isShowModal = true
+ },
+ subModal() {
+ const { selPoint, pointList, list } = this
+ if (selPoint.length == 0) return Message.warning('璇峰厛閫夋嫨宸℃鐐�')
+ let arr = []
+ // 鍙栧嚭閫変腑鍒楄〃
+ pointList.forEach(item => {
+ selPoint.forEach(item2 => {
+ if (item.id === item2) {
+ arr.push(item)
+ }
+ })
+ })
+ // 鍚宭ist鍘婚噸
+ list.forEach(item => {
+ arr.forEach((item2, i) => {
+ if (item.id === item2.id) {
+ arr.splice(i, 1)
+ }
+ })
+ })
+ // 娣诲姞
+ arr.forEach(i => {
+ this.list.push({
+ needScancode: '1',
+ pointName: i.name,
+ pointId: i.id,
+ code: i.code,
+ id: i.id
+ })
+ })
+ this.isShowModal = false
+ },
+ close(){
+ this.visible = false
+ this.$emit('success')
+ }
}
}
</script>
+<style lang="scss" scoped>
+.head {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 20px;
+
+ div {
+ font-weight: 500;
+ }
+}
+</style>
diff --git a/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue b/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue
index 4d0089b..8674bad 100644
--- a/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue
+++ b/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue
@@ -1,22 +1,36 @@
<template>
- <GlobalWindow
- :title="title"
- :visible.sync="visible"
- :confirm-working="isWorking"
- @confirm="confirm"
- >
+ <GlobalWindow :title="title" :visible.sync="visible" width="620px" :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-form-item label="宸℃鐐圭紪鐮�" prop="code">
+ <el-input v-model="form.code" placeholder="璇疯緭鍏ュ悕绉�" v-trim />
</el-form-item>
- <el-form-item label="鍥炬爣" prop="imgurl">
- <el-input v-model="form.imgurl" placeholder="璇疯緭鍏ュ浘鏍�" v-trim/>
+ <el-form-item label="宸℃鐐瑰悕绉�" prop="name">
+ <el-input v-model="form.name" placeholder="璇疯緭鍏ュ贰妫�鐐瑰悕绉�" v-trim />
</el-form-item>
- <el-form-item label="鍖哄煙缂栫爜锛堝叧鑱攃ategory)" prop="areaId">
- <el-input v-model="form.areaId" placeholder="璇疯緭鍏ュ尯鍩熺紪鐮侊紙鍏宠仈category)" v-trim/>
+ <el-form-item label="宸℃璁惧">
+ <el-select v-model="form.deviceId">
+ <el-option v-for="item in deviceList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+ </el-select>
</el-form-item>
- <el-form-item label="鍦板潃" prop="addr">
- <el-input v-model="form.addr" placeholder="璇疯緭鍏ュ湴鍧�" v-trim/>
+ <el-form-item label="鎵�灞炲尯鍩�" prop="areaId">
+ <el-cascader v-model="form.areaIds" @change="changeSel" placeholder="璇烽�夋嫨宸℃鍖哄煙" clearable :options="cateList"
+ :props="{
+ label: 'name',
+ value: 'id',
+ children: 'childCategoryList',
+ checkStrictly: true
+ }"></el-cascader>
+ </el-form-item>
+ <el-form-item label="缁忕含搴�">
+
+ </el-form-item>
+ <el-form-item label="宸℃鍐呭" prop="content">
+ <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 }"
+ :uploadData="{ folder: 'projects' }" @uploadSuccess="uploadAvatarSuccess" @uploadEnd="isUploading = false"
+ @uploadBegin="isUploading = true" />
</el-form-item>
</el-form>
</GlobalWindow>
@@ -25,38 +39,67 @@
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
+import UploadAvatarImage from '@/components/common/UploadAvatarImage'
+import { fetchList } from '@/api/business/category'
export default {
name: 'OperaYwPatrolPointWindow',
extends: BaseOpera,
- components: { GlobalWindow },
- data () {
+ components: { GlobalWindow, UploadAvatarImage },
+ data() {
return {
// 琛ㄥ崟鏁版嵁
form: {
- id: null,
- creator: '',
- createDate: '',
- editor: '',
- editDate: '',
- isdeleted: '',
name: '',
- remark: '',
- status: '',
- sortnum: '',
+ code: '',
+ content: '',
imgurl: '',
areaId: '',
addr: ''
},
+ deviceList: [],
+ cateList: [],
// 楠岃瘉瑙勫垯
rules: {
- }
+ name: [{ required: true, message: '璇疯緭鍏�' }],
+ code: [{ required: true, message: '璇疯緭鍏�' }],
+ },
+ isUploading: false,
}
},
- created () {
+ created() {
this.config({
api: '/Inspection/ywPatrolPoint',
'field.id': 'id'
})
+ },
+ methods: {
+ initData() {
+ fetchList({
+ model: { type: 4 },
+ capacity: 1000,
+ page: 1,
+ }).then(res => {
+ this.cateList = res.records || []
+ })
+
+ },
+ changeSel(e) {
+ if (e && e.length == 1) {
+ this.$set(this.form, 'catePId', e[0])
+ this.$set(this.form, 'cateId', '')
+ } else if (e && e.length == 2) {
+ this.$set(this.form, 'catePId', e[0])
+ this.$set(this.form, 'cateId', e[1])
+ } else {
+ this.$set(this.form, 'catePId', '')
+ this.$set(this.form, 'cateId', '')
+ }
+ this.search()
+ },
+ uploadAvatarSuccess(file) {
+ this.form.imgurl = file.imgurl
+ this.form.imgurlfull = file.imgurlfull
+ },
}
}
</script>
diff --git a/admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue b/admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue
index 2f13c0e..0f933b6 100644
--- a/admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue
+++ b/admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue
@@ -1,38 +1,37 @@
<template>
- <GlobalWindow
- :title="title"
- :visible.sync="visible"
- :confirm-working="isWorking"
- @confirm="confirm"
- >
+ <GlobalWindow width="520px" :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
<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 label="璁″垝鍚嶇О" prop="title">
+ <el-input v-model="form.title" placeholder="璇疯緭鍏ユ爣棰�" v-trim />
</el-form-item>
-
-
- <el-form-item label="宸℃璐熻矗浜虹紪鐮侀泦鍚堬紝澶氫釜浣跨敤鑻辨枃閫楀彿闅斿紑" prop="userIds">
- <el-input v-model="form.userIds" placeholder="璇疯緭鍏ュ贰妫�璐熻矗浜虹紪鐮侀泦鍚堬紝澶氫釜浣跨敤鑻辨枃閫楀彿闅斿紑" v-trim/>
+ <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-select>
</el-form-item>
-
- <el-form-item label="寰幆鍛ㄦ湡 0姣忓ぉ 1姣忓懆 2姣忓ぉ" prop="circleType">
- <el-input v-model="form.circleType" placeholder="璇疯緭鍏ュ惊鐜懆鏈� 0姣忓ぉ 1姣忓懆 2姣忓ぉ" v-trim/>
+ <el-form-item label="宸℃璐熻矗浜�">
+ <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-select>
</el-form-item>
- <el-form-item label="寰幆閲嶅瑙勫垯 1-31锛屽涓嫳鏂囬�楀彿闅斿紑" prop="circleDays">
- <el-input v-model="form.circleDays" placeholder="璇疯緭鍏ュ惊鐜噸澶嶈鍒� 1-31锛屽涓嫳鏂囬�楀彿闅斿紑" v-trim/>
+ <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>
- <el-form-item label="寮�濮嬫棩鏈�" prop="startDate">
- <el-date-picker v-model="form.startDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ紑濮嬫棩鏈�"></el-date-picker>
+ <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-form-item>
- <el-form-item label="缁撴潫鏃ユ湡" prop="endDate">
- <el-date-picker v-model="form.endDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ョ粨鏉熸棩鏈�"></el-date-picker>
- </el-form-item>
- <el-form-item label="寮�濮嬫椂闂寸偣" prop="startTime">
- <el-input v-model="form.startTime" placeholder="璇疯緭鍏ュ紑濮嬫椂闂寸偣" v-trim/>
- </el-form-item>
- <el-form-item label="缁撴潫鏃堕棿鐐�" prop="endTime">
- <el-input v-model="form.endTime" placeholder="璇疯緭鍏ョ粨鏉熸椂闂寸偣" v-trim/>
+ <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-select>
</el-form-item>
</el-form>
</GlobalWindow>
@@ -45,7 +44,7 @@
name: 'OperaYwPatrolSchemeWindow',
extends: BaseOpera,
components: { GlobalWindow },
- data () {
+ data() {
return {
// 琛ㄥ崟鏁版嵁
form: {
@@ -70,18 +69,26 @@
endDate: '',
startTime: '',
endTime: '',
- processStatus: ''
+ processStatus: '',
+ selDate: [],
+ selTime: [],
},
// 楠岃瘉瑙勫垯
rules: {
}
}
},
- created () {
+ created() {
this.config({
api: '/Inspection/ywPatrolScheme',
'field.id': 'id'
})
+ },
+ methods: {
+ initData() {
+
+ }
}
+
}
</script>
diff --git a/admin/src/views/Inspection/components/areaCate.vue b/admin/src/views/Inspection/components/areaCate.vue
new file mode 100644
index 0000000..ebe0534
--- /dev/null
+++ b/admin/src/views/Inspection/components/areaCate.vue
@@ -0,0 +1,74 @@
+<template>
+ <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" width="600px" @close="close" @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-form-item>
+ <el-form-item label="鎵�灞炲尯鍩�" prop="parentId">
+ <el-select :disabled="form.id" v-model="form.parentId" placeholder="涓嶅~涓哄垯涓�绾у尯鍩�">
+ <el-option v-for="op in dataList" :key="op.id" :label="op.name" :value="op.id"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="sortnum">
+ <el-input v-model="form.sortnum" oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 6)" v-trim />
+ </el-form-item>
+ </el-form>
+ </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { create, fetchCateList, getInfoById } from '@/api/business/category.js'
+export default {
+ name: 'OperaCategoryWindow',
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data() {
+ return {
+ // 琛ㄥ崟鏁版嵁
+ form: {
+ parentId: null,
+ name: '',
+ remark: '',
+ status: '',
+ sortnum: '',
+ type: 4
+ },
+ // 楠岃瘉瑙勫垯
+ rules: {
+ name: [
+ { required: true, message: '璇疯緭鍏ュ尯鍩熷悕绉�', trigger: 'blur' }
+ ],
+ status: [
+ { required: true, message: '璇烽�夋嫨鏄惁鍚敤', trigger: 'change' }
+ ]
+ },
+ dataList: []
+ }
+ },
+ created() {
+ this.config({
+ api: '/business/category',
+ 'field.id': 'id'
+ })
+ },
+ methods: {
+ getList() {
+ fetchCateList({ type: 4 }).then(res => {
+ this.dataList = res || []
+
+ })
+ },
+ close() {
+ this.visible = false
+ this.$emit('close')
+ },
+ getDetail(id) {
+ getInfoById(id).then(res => {
+ this.form = res
+ })
+ },
+ }
+}
+</script>
diff --git a/admin/src/views/Inspection/components/taskDetail.vue b/admin/src/views/Inspection/components/taskDetail.vue
new file mode 100644
index 0000000..dfe59dc
--- /dev/null
+++ b/admin/src/views/Inspection/components/taskDetail.vue
@@ -0,0 +1,98 @@
+<template>
+ <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>
+ </template>
+ </el-table-column>
+ </el-table>
+ <div class="mt20">
+ <Pagination @size-change="handleSizeChange" @current-change="getDetail" :pagination="pagination" />
+ </div>
+ </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import QueryForm from '@/components/common/QueryForm'
+import Pagination from '@/components/common/Pagination'
+export default {
+ components: { GlobalWindow, QueryForm, Pagination },
+ data() {
+ return {
+ isShowModal: true,
+ id: '',
+ pagination: {
+ pageSize: 10,
+ page: 1,
+ total: 0
+ },
+ filters: {},
+ list: [],
+ total: 0,
+ queryFormConfig: {
+ formItems: [
+ {
+ filed: 'name',
+ type: 'input',
+ label: '宸℃鐐瑰悕绉�'
+ },
+ {
+ filed: 'status',
+ type: 'select',
+ label: '鎵ц鐘舵��',
+ placeholder: '鍏ㄩ儴',
+ options: []
+ },
+ ],
+ online: true
+ }
+ }
+ },
+ methods: {
+ getDetail(page) {
+ const { pagination, filters, id } = this
+ this.loading = true
+ platformLogPage({
+ model: {
+ ...filters,
+ id,
+ },
+ sorts: [{ direction: 'DESC', property: 'param1' }],
+ capacity: pagination.pageSize,
+ page: page || pagination.page,
+ }).then(res => {
+ this.loading = false
+ this.list = res.records || []
+ this.list.forEach(item => {
+ item.inTypeTemp = item.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'
+ item.taskOrigin = 'WMS鑾峰彇'
+ item.workTime = dayjs.duration(item.param3, 'seconds').format('H鏃秏鍒唖绉�')
+ })
+ this.pagination.total = res.total || 0
+ }, () => {
+ this.loading = false
+ })
+ },
+ clear() {
+ this.filters = {}
+ this.pagination.pageSize = 10
+ this.pagination.page = 1
+ this.getDetail()
+ },
+ handleSizeChange(capacity) {
+ this.pagination.pageSize = capacity
+ this.getDetail()
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped></style>
\ No newline at end of file
diff --git a/admin/src/views/Inspection/dot.vue b/admin/src/views/Inspection/dot.vue
index 0db2bf6..790a839 100644
--- a/admin/src/views/Inspection/dot.vue
+++ b/admin/src/views/Inspection/dot.vue
@@ -1,22 +1,44 @@
<template>
<TableLayout :permissions="['business:ywpatrolpoint:query']">
<!-- 鎼滅储琛ㄥ崟 -->
+ <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+ <el-form-item label="宸℃鐐�" prop="name">
+ <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ贰妫�鐐瑰悕绉�/缂栫爜" @keypress.enter.native="search"></el-input>
+ </el-form-item>
+ <el-form-item label="宸℃鍖哄煙">
+ <el-cascader v-model="searchForm.areaIds" @change="changeSel" placeholder="璇烽�夋嫨宸℃鍖哄煙" clearable
+ :options="areaList" :props="{
+ label: 'name',
+ value: 'id',
+ children: 'childCategoryList',
+ checkStrictly: true
+ }"></el-cascader>
+ </el-form-item>
+ <section>
+ <el-button type="primary" @click="search">鎼滅储</el-button>
+ <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywpatrolline:exportExcel']"
+ @click="exportExcel">瀵煎嚭</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
<ul class="toolbar" v-permissions="['business:ywpatrolpoint:create', 'business:ywpatrolpoint:delete']">
- <li><el-button type="primary" @click="$refs.operaYwPatrolPointWindow.open('鏂板缓宸℃鐐�')" icon="el-icon-plus"
+ <li><el-button type="primary" @click="editClick()" icon="el-icon-plus"
v-permissions="['business:ywpatrolpoint:create']">鏂板缓</el-button></li>
<li><el-button @click="deleteByIdInBatch" icon="el-icon-delete"
v-permissions="['business:ywpatrolpoint:delete']">鍒犻櫎</el-button></li>
</ul>
<el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55"></el-table-column>
- <el-table-column prop="name" label="鍚嶇О" min-width="100px"></el-table-column>
- <el-table-column prop="status" label="鐘舵�� 0鍚敤 1绂佺敤" min-width="100px"></el-table-column>
+ <el-table-column prop="code" label="宸℃鐐圭紪鐮�" min-width="100px"></el-table-column>
+ <el-table-column prop="name" label="宸℃鐐瑰悕绉�" min-width="100px"></el-table-column>
+ <el-table-column prop="deviceName" label="鍏宠仈璁惧" min-width="100px"></el-table-column>
+ <el-table-column prop="areaName" label="宸℃鍖哄煙" min-width="100px"></el-table-column>
<el-table-column v-if="containPermissions(['business:ywpatrolpoint:update', 'business:ywpatrolpoint:delete'])"
label="鎿嶄綔" min-width="120" fixed="right">
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaYwPatrolPointWindow.open('缂栬緫宸℃鐐�', row)" icon="el-icon-edit"
+ <el-button type="text" @click="editClick(row)" icon="el-icon-edit"
v-permissions="['business:ywpatrolpoint:update']">缂栬緫</el-button>
<el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
v-permissions="['business:ywpatrolpoint:delete']">鍒犻櫎</el-button>
@@ -36,6 +58,7 @@
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaYwPatrolPointWindow from './components/OperaYwPatrolPointWindow'
+import { fetchList } from '@/api/business/category'
export default {
name: 'YwPatrolPoint',
extends: BaseTable,
@@ -57,7 +80,8 @@
imgurl: '',
areaId: '',
addr: ''
- }
+ },
+ areaList: []
}
},
created() {
@@ -68,6 +92,39 @@
'field.main': 'id'
})
this.search()
+ this.getProject()
+ },
+ methods: {
+ getProject() {
+ fetchList({
+ model: {type: 4},
+ capacity: 1000,
+ page: 1,
+ }).then(res => {
+ this.areaList = res.records || []
+ })
+ },
+ editClick(row) {
+ if (row && row.id) {
+ this.$refs.operaYwPatrolPointWindow.open('缂栬緫宸℃鐐�')
+ } else {
+ this.$refs.operaYwPatrolPointWindow.open('鏂板缓宸℃鐐�')
+ }
+ this.$refs.operaYwPatrolPointWindow.initData()
+ },
+ changeSel(e) {
+ if (e && e.length == 1) {
+ this.$set(this.searchForm, 'catePId', e[0])
+ this.$set(this.searchForm, 'cateId', '')
+ } else if (e && e.length == 2) {
+ this.$set(this.searchForm, 'catePId', e[0])
+ this.$set(this.searchForm, 'cateId', e[1])
+ } else {
+ this.$set(this.searchForm, 'catePId', '')
+ this.$set(this.searchForm, 'cateId', '')
+ }
+ this.search()
+ },
}
}
</script>
diff --git a/admin/src/views/Inspection/path.vue b/admin/src/views/Inspection/path.vue
index a426856..4854c6b 100644
--- a/admin/src/views/Inspection/path.vue
+++ b/admin/src/views/Inspection/path.vue
@@ -2,54 +2,49 @@
<TableLayout :permissions="['business:ywpatrolline:query']">
<!-- 鎼滅储琛ㄥ崟 -->
<el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="鍚嶇О" prop="name">
- <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="璁″垝鏃ユ湡">
- <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
+ <el-form-item label="宸℃绾胯矾" prop="name">
+ <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ贰妫�绾胯矾鍚嶇О" @keypress.enter.native="search"></el-input>
</el-form-item>
<section>
<el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywpatrolline:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
+ <!-- <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywpatrolline:exportExcel']"
+ @click="exportExcel">瀵煎嚭</el-button> -->
<el-button @click="reset">閲嶇疆</el-button>
</section>
</el-form>
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
<ul class="toolbar" v-permissions="['business:ywpatrolline:create', 'business:ywpatrolline:delete']">
- <li><el-button type="primary" @click="$refs.operaYwPatrolLineWindow.open('鏂板缓宸℃绾胯矾')" icon="el-icon-plus" v-permissions="['business:ywpatrolline:create']">鏂板缓</el-button></li>
- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:ywpatrolline:delete']">鍒犻櫎</el-button></li>
+ <li><el-button type="primary" @click="editClick()" icon="el-icon-plus"
+ v-permissions="['business:ywpatrolline:create']">鏂板缓</el-button></li>
+ <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete"
+ v-permissions="['business:ywpatrolline:delete']">鍒犻櫎</el-button></li>
</ul>
- <el-table
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
- >
- <el-table-column type="selection" width="55"></el-table-column>
- <el-table-column prop="name" label="鍚嶇О" min-width="100px"></el-table-column>
- <el-table-column prop="status" label="鐘舵�� 0鍚敤 1绂佺敤" min-width="100px"></el-table-column>
- <el-table-column
- v-if="containPermissions(['business:ywpatrolline:update', 'business:ywpatrolline:delete'])"
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
+ <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
+ <el-table-column type="selection" width="55"></el-table-column>
+ <el-table-column prop="name" label="绾胯矾鍚嶇О" min-width="100px"></el-table-column>
+ <el-table-column prop="lineAmount" label="宸℃鐐规暟閲�" min-width="100px"></el-table-column>
+ <el-table-column prop="status" 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>
+ </template>
+ </el-table-column>
+ <el-table-column v-if="containPermissions(['business:ywpatrolline:update', 'business:ywpatrolline:delete'])"
+ label="鎿嶄綔" min-width="120" fixed="right">
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaYwPatrolLineWindow.open('缂栬緫宸℃绾胯矾', row)" icon="el-icon-edit" v-permissions="['business:ywpatrolline:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:ywpatrolline:delete']">鍒犻櫎</el-button>
+ <el-button type="text" @click="editClick(row)" icon="el-icon-edit"
+ v-permissions="['business:ywpatrolline:update']">缂栬緫</el-button>
+ <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
+ v-permissions="['business:ywpatrolline:delete']">鍒犻櫎</el-button>
</template>
</el-table-column>
</el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
+ <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
</pagination>
</template>
<!-- 鏂板缓/淇敼 -->
- <OperaYwPatrolLineWindow ref="operaYwPatrolLineWindow" @success="handlePageChange"/>
+ <OperaYwPatrolLineWindow ref="operaYwPatrolLineWindow" @success="handlePageChange" />
</TableLayout>
</template>
@@ -62,7 +57,7 @@
name: 'YwPatrolLine',
extends: BaseTable,
components: { TableLayout, Pagination, OperaYwPatrolLineWindow },
- data () {
+ data() {
return {
// 鎼滅储
searchForm: {
@@ -80,7 +75,7 @@
}
}
},
- created () {
+ created() {
this.config({
module: '杩愮淮宸℃璺嚎淇℃伅琛�',
api: '/Inspection/ywPatrolLine',
@@ -88,6 +83,20 @@
'field.main': 'id'
})
this.search()
+ },
+ methods: {
+ changeStatus() {
+
+ },
+ editClick(row) {
+ if (row && row.id) {
+ this.$refs.operaYwPatrolLineWindow.open('缂栬緫宸℃绾胯矾')
+ } else {
+ this.$refs.operaYwPatrolLineWindow.open('鏂板缓宸℃绾胯矾')
+ }
+ this.$refs.operaYwPatrolLineWindow.initData()
+
+ },
}
}
</script>
diff --git a/admin/src/views/Inspection/plan.vue b/admin/src/views/Inspection/plan.vue
index 1fa37c1..55fa79a 100644
--- a/admin/src/views/Inspection/plan.vue
+++ b/admin/src/views/Inspection/plan.vue
@@ -2,69 +2,73 @@
<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-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-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-date-picker v-model="searchForm.endDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ョ粨鏉熸棩鏈�" @change="search" />
</el-form-item>
-
+
<section>
<el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywpatrolscheme:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
+ <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywpatrolscheme:exportExcel']"
+ @click="exportExcel">瀵煎嚭</el-button>
<el-button @click="reset">閲嶇疆</el-button>
</section>
</el-form>
<!-- 琛ㄦ牸鍜屽垎椤� -->
<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" 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>
+ <li><el-button type="primary" @click="$refs.operaYwPatrolSchemeWindow.open('鏂板缓宸℃璁″垝')" 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>
</ul>
- <el-table
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
- >
+ <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55"></el-table-column>
-
- <el-table-column prop="title" label="鏍囬" min-width="100px"></el-table-column>
- <el-table-column prop="status" label="鐘舵�� 0鍚敤 1绂佺敤" min-width="100px"></el-table-column>
- <el-table-column prop="lineId" label="宸℃鐐圭紪鐮�(鍏宠仈yw_patrol_line)" min-width="100px"></el-table-column>
-
- <el-table-column prop="dealDate" label="澶勭悊鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="dealInfo" label="澶勭悊澶囨敞" min-width="100px"></el-table-column>
- <el-table-column prop="startDate" label="寮�濮嬫棩鏈�" min-width="100px"></el-table-column>
- <el-table-column prop="endDate" label="缁撴潫鏃ユ湡" min-width="100px"></el-table-column>
- <el-table-column prop="startTime" label="寮�濮嬫椂闂寸偣" min-width="100px"></el-table-column>
- <el-table-column prop="endTime" label="缁撴潫鏃堕棿鐐�" min-width="100px"></el-table-column>
- <el-table-column prop="processStatus" label="鎵ц杩涘害 0寰呭紑濮� 1杩涜涓� 2瓒呮湡 3宸插畬鎴�" min-width="100px"></el-table-column>
- <el-table-column
- v-if="containPermissions(['business:ywpatrolscheme:update', 'business:ywpatrolscheme:delete'])"
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
+
+ <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="startDate" label="璁″垝鏃ユ湡" min-width="100px">
+ <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">
+ <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 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>
+ </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" 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>
+ <el-button type="text" @click="$refs.operaYwPatrolSchemeWindow.open('缂栬緫宸℃璁″垝', 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>
</template>
</el-table-column>
</el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
+ <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
</pagination>
</template>
<!-- 鏂板缓/淇敼 -->
- <OperaYwPatrolSchemeWindow ref="operaYwPatrolSchemeWindow" @success="handlePageChange"/>
+ <OperaYwPatrolSchemeWindow ref="operaYwPatrolSchemeWindow" @success="handlePageChange" />
</TableLayout>
</template>
@@ -77,7 +81,7 @@
name: 'YwPatrolScheme',
extends: BaseTable,
components: { TableLayout, Pagination, OperaYwPatrolSchemeWindow },
- data () {
+ data() {
return {
// 鎼滅储
searchForm: {
@@ -106,7 +110,7 @@
}
}
},
- created () {
+ created() {
this.config({
module: '杩愮淮宸℃璁″垝淇℃伅琛�',
api: '/Inspection/ywPatrolScheme',
@@ -114,6 +118,17 @@
'field.main': 'id'
})
this.search()
+ },
+ methods: {
+ editClick(row) {
+ if (row && row.id) {
+ this.$refs.operaYwPatrolSchemeWindow.open('缂栬緫宸℃璁″垝')
+ } else {
+ this.$refs.operaYwPatrolSchemeWindow.open('鏂板缓宸℃璁″垝')
+ }
+ this.$refs.operaYwPatrolSchemeWindow.initData()
+
+ },
}
}
</script>
diff --git a/admin/src/views/Inspection/task.vue b/admin/src/views/Inspection/task.vue
index 9544842..99b3ea0 100644
--- a/admin/src/views/Inspection/task.vue
+++ b/admin/src/views/Inspection/task.vue
@@ -2,15 +2,17 @@
<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="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 >
+ <el-select v-model="searchForm.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-option value="3" label="宸插畬鎴�"></el-option>
+ <el-option value="4" label="宸插彇娑�"></el-option>
+ </el-select>
</el-form-item>
<section>
<el-button type="primary" @click="search">鎼滅储</el-button>
@@ -20,10 +22,6 @@
</el-form>
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
- <ul class="toolbar" v-permissions="['business:ywpatroltask:create', 'business:ywpatroltask:delete']">
- <li><el-button type="primary" @click="$refs.operaYwPatrolTaskWindow.open('鏂板缓宸℃浠诲姟')" icon="el-icon-plus" v-permissions="['business:ywpatroltask:create']">鏂板缓</el-button></li>
- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:ywpatroltask:delete']">鍒犻櫎</el-button></li>
- </ul>
<el-table
v-loading="isWorking.search"
:data="tableData.list"
@@ -31,16 +29,25 @@
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55"></el-table-column>
- <el-table-column prop="title" label="鏍囬" min-width="100px"></el-table-column>
- <el-table-column prop="status" label="鐘舵�� 0寰呭紑濮� 1杩涜涓� 2宸茶秴鏈� 3宸插畬鎴� 4宸插彇娑�" min-width="100px"></el-table-column>
- <el-table-column prop="schemeId" label="宸℃璁″垝缂栫爜(鍏宠仈yw_patrol_scheme)" min-width="100px"></el-table-column>
-
- <el-table-column prop="dealUserId" label="澶勭悊浜虹紪鐮�(鍏宠仈system_user)" min-width="100px"></el-table-column>
- <el-table-column prop="dealDate" label="澶勭悊鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="dealInfo" label="澶勭悊澶囨敞" min-width="100px"></el-table-column>
- <el-table-column prop="startDate" label="寮�濮嬫棩鏈�" min-width="100px"></el-table-column>
- <el-table-column prop="endDate" label="缁撴潫鏃ユ湡" min-width="100px"></el-table-column>
- <el-table-column prop="dealStatus" label="宸℃缁撴灉 0姝e父 1寮傚父" min-width="100px"></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="code" label="浠诲姟缂栧彿" min-width="100px"></el-table-column>
+ <el-table-column prop="dealDate" label="浠诲姟鏃堕棿" min-width="100px">
+ <template v-slot="scope">
+ <span>{{ scope.row.startDate }} {{ scope.row.endDate }}</span>
+ </template>
+ </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="dealStatus" label="浠诲姟鐘舵��" min-width="100px">
+ <template v-slot="scope">
+ <span class="primaryColor" v-if="scope.row.status == 0">寰呭紑濮�</span>
+ <span class="green" v-if="scope.row.status == 1">杩涜涓�</span>
+ <span class="red" v-if="scope.row.status == 2">宸茶秴鏈�</span>
+ <span class="gray" v-if="scope.row.status == 3">宸插畬鎴�</span>
+ <span class="gray" v-if="scope.row.status == 4">宸插彇娑�</span>
+ </template>
+ </el-table-column>
<el-table-column
v-if="containPermissions(['business:ywpatroltask:update', 'business:ywpatroltask:delete'])"
label="鎿嶄綔"
@@ -48,8 +55,7 @@
fixed="right"
>
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaYwPatrolTaskWindow.open('缂栬緫宸℃浠诲姟', row)" icon="el-icon-edit" v-permissions="['business:ywpatroltask:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:ywpatroltask:delete']">鍒犻櫎</el-button>
+ <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:ywpatroltask:delete']">鍙栨秷</el-button>
</template>
</el-table-column>
</el-table>
@@ -60,7 +66,8 @@
>
</pagination>
</template>
-
+ <!-- -->
+ <TaskDetail ref="TaskDetailRef" />
</TableLayout>
</template>
@@ -68,33 +75,17 @@
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
+import TaskDetail from './components/taskDetail'
export default {
name: 'YwPatrolTask',
extends: BaseTable,
- components: { TableLayout, Pagination },
+ components: { TableLayout, Pagination, TaskDetail },
data () {
return {
// 鎼滅储
searchForm: {
- id: '',
- creator: '',
- createDate: '',
- editor: '',
- editDate: '',
- isdeleted: '',
- title: '',
- remark: '',
- status: '',
- sortnum: '',
- schemeId: '',
- pointId: '',
- dealUserId: '',
- dealDate: '',
- dealInfo: '',
- circleType: '',
- startDate: '',
- endDate: '',
- dealStatus: ''
+ title:'',
+ status: ''
}
}
},
@@ -106,6 +97,13 @@
'field.main': 'id'
})
this.search()
+ },
+ methods: {
+ handleDetail(row) {
+ this.$refs.TaskDetailRef.isShowModal = true
+ this.$refs.TaskDetailRef.id = row.id
+ this.$refs.TaskDetailRef.getDetail()
+ },
}
}
</script>
diff --git a/admin/src/views/client/staffList.vue b/admin/src/views/client/staffList.vue
index 05d7c12..3012931 100644
--- a/admin/src/views/client/staffList.vue
+++ b/admin/src/views/client/staffList.vue
@@ -5,6 +5,9 @@
<el-form-item label="瀹㈡埛鍚嶇О" prop="name">
<el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ鎴峰悕绉�" @keypress.enter.native="search"></el-input>
</el-form-item>
+ <el-form-item prop="name">
+ <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ヤ汉鍛樺鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
+ </el-form-item>
<section>
<el-button type="primary" @click="search">鎼滅储</el-button>
<el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywcustomer:exportExcel']"
@@ -21,10 +24,11 @@
v-permissions="['business:ywcustomer:delete']">鍒犻櫎</el-button></li>
</ul>
<el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
- <el-table-column type="selection" width="55"></el-table-column>
<el-table-column prop="name" label="瀹㈡埛鍚嶇О" min-width="100px"></el-table-column>
<el-table-column prop="memberName" label="鑱旂郴浜�" min-width="100px"></el-table-column>
<el-table-column prop="phone" label="鑱旂郴鐢佃瘽" min-width="100px"></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 v-if="containPermissions(['business:ywcustomer:update', 'business:ywcustomer:delete'])"
label="鎿嶄綔" min-width="120" fixed="right">
<template slot-scope="{row}">
diff --git a/admin/src/views/contract/components/config.js b/admin/src/views/contract/components/config.js
new file mode 100644
index 0000000..7d3be5d
--- /dev/null
+++ b/admin/src/views/contract/components/config.js
@@ -0,0 +1,3 @@
+export const rules = {
+ name: [{ required: true, message: '璇疯緭鍏�' }]
+}
\ No newline at end of file
diff --git a/admin/src/views/contract/components/contractDetail.vue b/admin/src/views/contract/components/contractDetail.vue
new file mode 100644
index 0000000..f8504a5
--- /dev/null
+++ b/admin/src/views/contract/components/contractDetail.vue
@@ -0,0 +1,226 @@
+<template>
+ <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @close="close"
+ @confirm="confirm">
+ <div class="home_title">
+ <div class="left">
+ <span class="mr10">鍗曚綅鍚嶇О锛歺xx</span>
+ <span class="status">status</span>
+ </div>
+ <el-button plain type="danger">閫�绉�</el-button>
+ </div>
+ <div class="remark">鍚堝悓鎽樿锛歺xxx</div>
+ <div class="tabs">
+ <div class="tab" :class="{ active: activeTabs == 0 }" @click="tabsClick(0)">鍚堝悓淇℃伅</div>
+ <div class="tab" :class="{ active: activeTabs == 1 }" @click="tabsClick(1)">鍏宠仈璐﹀崟</div>
+ <div class="tab" :class="{ active: activeTabs == 2 }" @click="tabsClick(2)">鎿嶄綔璁板綍</div>
+ </div>
+ <div class="main">
+ <div class="title">鍩虹淇℃伅</div>
+ <div class="list">
+ <div class="item">
+ <div class="la">鍚堝悓缂栧彿</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">缁忓姙浜�</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">鍒涘缓浜�</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">鍚堝悓绉熻祦鏁�</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">鎵�灞炲叕鍙�</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">绛捐鏃ユ湡</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">寮�濮嬫棩鏈�</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">缁撴潫鏃ユ湡</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">鎵�灞為」鐩�</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">缁撴灉鍙栨暣(鍥涜垗浜斿叆)</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ </div>
+ <div class="title">鎴挎簮淇℃伅</div>
+ <div class="list">
+ <div class="item">
+ <div class="la">椤圭洰鍚嶇О</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">妤煎畤鍚嶇О</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">妤煎眰/鎴垮彿</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">闈㈢Н</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ </div>
+ <div class="title">绉熷淇℃伅</div>
+ <div class="list">
+ <div class="item">
+ <div class="la">绉熷</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">缁忓姙浜�</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ </div>
+ <div class="title">绉熻祦鏉℃</div>
+ <div class="list">
+ <div class="item">
+ <div class="la">鎶奸噾閲戦</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">浠樻鏂瑰紡</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">鍏嶇鏈�</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ </div>
+ <el-table :data="info.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>
+ </div>
+ </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import BaseOpera from '@/components/base/BaseOpera'
+export default {
+ components: {
+ GlobalWindow
+ },
+ extends: BaseOpera,
+ data() {
+ return {
+ id: '',
+ visible: false,
+ activeTabs: '',
+ info: {}
+ }
+ },
+ methods: {
+ tabsClick(val) {
+ this.activeTabs = val
+ },
+ getDetail() {
+
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import '@/assets/style/variables.scss';
+.home_title {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ .left {
+ font-weight: 500;
+ font-size: 16px;
+ margin-right: 10px;
+ display: flex;
+ align-items: center;
+
+ .status {
+ padding: 0 6px;
+ height: 22px;
+ line-height: 22px;
+ border-radius: 2px;
+ border: 1px solid #00BA92;
+ color: #00BA92;
+ font-weight: 400;
+ font-size: 12px;
+ color: #00BA92;
+ }
+ }
+}
+
+.remark {
+ background: #E8EBF7;
+ border-radius: 2px;
+ padding: 10px 20px;
+ font-size: 16px;
+ margin: 20px 0
+}
+
+.tabs {
+ border-bottom: 1px solid #DFE2E8;
+ display: flex;
+ margin-bottom: 20px;
+ .tab {
+ height: 58px;
+ line-height: 58px;
+ font-size: 16px;
+ color: #666666;
+ margin-right: 30px;
+ cursor: pointer;
+ }
+
+ .active {
+ font-weight: 500;
+ color: $primary-color;
+ border-bottom: 2px solid $primary-color;
+ }
+}
+
+.main {
+ .title {
+ font-weight: 500;
+ font-size: 18px;
+ color: $primary-color;
+ margin-bottom: 15px;
+ }
+
+ .list {
+ display: flex;
+ flex-wrap: wrap;
+ background: #F7F7F7;
+ border-radius: 2px;
+ padding: 15px 20px;
+ margin-bottom: 20px;
+
+ .item {
+ width: 25%;
+ margin-bottom: 16px;
+
+ .la {
+ color: #7f7f7f;
+ margin-top: 2px;
+ }
+ }
+ }
+}
+</style>
diff --git a/admin/src/views/contract/components/contractEdit.vue b/admin/src/views/contract/components/contractEdit.vue
new file mode 100644
index 0000000..8e79bce
--- /dev/null
+++ b/admin/src/views/contract/components/contractEdit.vue
@@ -0,0 +1,376 @@
+<template>
+ <GlobalWindow width="1000px" :title="title" :visible.sync="showModal" :confirm-working="isWorking" @close="close" @confirm="confirm">
+ <div class="tabs">
+ <div class="tab" :class="{ active: activeTabs == 0 }" @click="tabsClick(0)">1銆佸熀鏈俊鎭�</div>
+ <div class="tab" :class="{ active: activeTabs == 1 }" @click="tabsClick(1)">2銆佽垂鐢ㄦ潯娆�</div>
+ </div>
+ <template v-if="activeTabs == 0">
+ <div class="main">
+ <div class="main_content">
+ <el-form :model="param" ref="paramRef" :rules="rules">
+ <div class="m_title">鍩虹淇℃伅</div>
+ <div class="list">
+ <el-form-item label="鍚堝悓绫诲瀷" prop="type">
+ <el-select v-model="param.type" placeholder="璇烽�夋嫨" clearable>
+ <el-option v-for="item in types" :value="item.value" :label="item.name"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍚堝悓缂栧彿" prop="code">
+ <el-input v-model="param.code" placeholder="璇疯緭鍏ュ悎鍚岀紪鍙�" v-trim />
+ </el-form-item>
+ <el-form-item label="缁忓姙浜�" prop="aaa">
+ <el-select v-model="param.aaa" placeholder="璇烽�夋嫨" clearable>
+ <el-option v-for="item in agentList" :value="item.id" :label="item.name"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍚堝悓绛捐鏃ユ湡" prop="">
+ <el-date-picker type="date" v-model="param.getDate" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+ </el-form-item>
+ <el-form-item label="鍚堝悓寮�濮嬫棩鏈�" prop="">
+ <el-date-picker type="date" v-model="param.getDate" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+ </el-form-item>
+ <el-form-item label="鍚堝悓缁撴潫鏃ユ湡" prop="">
+ <el-date-picker type="date" v-model="param.getDate" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+ </el-form-item>
+ <el-form-item label="褰掑睘椤圭洰" prop="">
+ <el-select v-model="param.aaa" placeholder="璇烽�夋嫨" clearable>
+ <el-option v-for="item in projectList" :value="item.id" :label="item.name"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="缁撴灉鍙栨暣(鍥涜垗浜斿叆)" prop="">
+ <el-select v-model="param.aaa" placeholder="璇烽�夋嫨" clearable>
+ <el-option :value="0" label="鍚�"></el-option>
+ <el-option :value="1" label="鏄�"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鎵�灞炲叕鍙�" prop="">
+ <el-select v-model="param.aaa" placeholder="璇烽�夋嫨" clearable>
+ <el-option v-for="item in comparyList" :value="item.id" :label="item.name"></el-option>
+ </el-select>
+ </el-form-item>
+ </div>
+ <div class="m_title">绉熷淇℃伅</div>
+ <div class="list">
+ <el-form-item label="绉熷" prop="">
+ <el-button @click="handleRent" type="primary">閫夋嫨绉熷</el-button>
+ <el-select v-model="param.aaa" placeholder="璇烽�夋嫨" clearable>
+ <el-option v-for="item in renterList" :value="item.id" :label="item.name"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鑱旂郴浜�" prop="">
+ <el-select v-model="param.aaa" placeholder="璇烽�夋嫨" clearable>
+ <el-option v-for="item in contacts" :value="item.id" :label="item.name"></el-option>
+ </el-select>
+ </el-form-item>
+ </div>
+ </el-form>
+ </div>
+ <div class="main_house">
+ <div class="title">璇烽�夋嫨鎴挎簮</div>
+ <el-cascader style="width: 300px" v-model="value" @change="houseChange" :options="options"
+ :props="{ multiple: true }" collapse-tags clearable />
+ </div>
+ </div>
+ <div class="file_wrap">
+ <div class="head">
+ <div>鍚堝悓闄勪欢</div>
+ <el-button icon="el-icon-plus" plain>娣诲姞闄勪欢</el-button>
+ </div>
+ <el-table :data="param.list" stripe>
+ <el-table-column prop="" label="闄勪欢鍚嶇О" align="center" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="鎿嶄綔浜�" align="center" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="鎿嶄綔鏃堕棿" align="center" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="鎿嶄綔" align="center" min-width="100">
+ <template v-slot="scope">
+ <span class="cu red">鍒犻櫎</span>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </template>
+ <template v-if="activeTabs == 1">
+ <div class="tabs cost_tabs">
+ <div class="tab" :class="{ active: cactiveTabs == 0 }" @click="ctabsClick(0)">绉熻祦鏉℃</div>
+ <div class="tab" :class="{ active: cactiveTabs == 1 }" @click="ctabsClick(1)">鐗╀笟鏉℃</div>
+ </div>
+ <div class="main">
+ <div class="main_content">
+ <el-form :model="paramCost" ref="paramCostRef" :rules="rules">
+ <div class="m_title">绉熻祦淇℃伅</div>
+ <div class="list">
+ <el-form-item label="鎶奸噾閲戦(鍏�)" prop="type">
+ <el-input v-model="paramCost.code" placeholder="璇疯緭鍏�" v-trim />
+ </el-form-item>
+ <el-form-item label="浠樻鏂瑰紡" prop="code">
+ <el-select v-model="paramCost.type" placeholder="璇烽�夋嫨" clearable>
+ <el-option v-for="item in payMethods" :value="item.value" :label="item.name"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍏嶇鏈�" prop="aaa">
+ <el-date-picker type="daterange" v-model="paramCost.getDate" value-format="yyyy-MM-dd"
+ placeholder="璇烽�夋嫨" />
+ </el-form-item>
+ </div>
+ <div class="m_title">绉熻祦鏉℃</div>
+ <div class="list">
+ <el-form-item label="璧峰鏃ユ湡" prop="">
+ <el-date-picker type="date" v-model="paramCost.getDate" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+ </el-form-item>
+ <el-form-item label="鍚堝悓鍗曚环" prop="">
+ <el-input placeholder="璇疯緭鍏ュ唴瀹�" v-model="paramCost.aaa">
+ <el-select v-model="paramCost.ddd" slot="append" placeholder="璇烽�夋嫨" clearable>
+ <el-option v-for="item in unitOps" :value="item.value" :label="item.name"></el-option>
+ </el-select>
+ </el-input>
+ </el-form-item>
+ <el-form-item label="浠樻鎻愬墠澶╂暟" prop="">
+ <el-input v-model="paramCost.aaa" placeholder="璇疯緭鍏�" v-trim />
+ </el-form-item>
+ </div>
+ </el-form>
+ </div>
+ </div>
+ <el-button style="width: 100%;height: 48px;" type="primary" plain>鐢熸垚璐﹀崟鏄庣粏</el-button>
+ <el-table :data="paramCost.list" class="mt20" stripe>
+ <el-table-column prop="" label="璐圭敤绫诲瀷" align="center" width="160px" show-overflow-tooltip />
+ <el-table-column prop="" label="鎸囨暟"align="center" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="鍖洪棿" align="center" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="浠樻鏃�" align="center" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="搴旀敹" align="center" min-width="100" show-overflow-tooltip />
+ </el-table>
+ <div class="total">
+ <span>鎬昏</span>
+ <div>璐圭敤搴旀敹鎬昏锛氾紝鎶奸噾搴旀敹鎬昏锛�</div>
+ </div>
+ </template>
+ <!-- -->
+ <MemberSearch ref="MemberSearchRef" />
+ </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import BaseOpera from '@/components/base/BaseOpera'
+import MemberSearch from '@/components/common/MemberSearch'
+import { rules } from './config'
+export default {
+ components: {
+ GlobalWindow,
+ MemberSearch
+ },
+ extends: BaseOpera,
+ data() {
+ return {
+ showModal: false,
+ title: '鍒涘缓鍚堝悓',
+ activeTabs: '0',
+ param: {},
+ rules,
+
+ types: [
+ { name: '鐗╀笟+绉熻祦鍚堝悓', value: 0 },
+ { name: '绉熻祦鍚堝悓', value: 1 },
+ { name: '鐗╀笟鍚堝悓', value: 2 },
+ ],
+ agentList: [], //缁忓姙浜�
+ projectList: [],
+ comparyList: [], // 鍏徃
+ renterList: [], // 绉熷
+ contacts: [], // 鑱旂郴浜�
+ value: [],
+ options: [
+ {
+ value: 1,
+ label: '涓滃崡',
+ children: [{
+ value: 2,
+ label: '涓婃捣',
+ children: [
+ { value: 3, label: '鏅檧' },
+ { value: 4, label: '榛勫煍' },
+ { value: 5, label: '寰愭眹' }
+ ]
+ }, {
+ value: 7,
+ label: '姹熻嫃',
+ children: [
+ { value: 8, label: '鍗椾含' },
+ { value: 9, label: '鑻忓窞' },
+ { value: 10, label: '鏃犻敗' }
+ ]
+ }, {
+ value: 12,
+ label: '娴欐睙',
+ children: [
+ { value: 13, label: '鏉窞' },
+ { value: 14, label: '瀹佹尝' },
+ { value: 15, label: '鍢夊叴' }
+ ]
+ }]
+ },
+ {
+ value: 17,
+ label: '瑗垮寳',
+ children: [{
+ value: 18,
+ label: '闄曡タ',
+ children: [
+ { value: 19, label: '瑗垮畨' },
+ { value: 20, label: '寤跺畨' }
+ ]
+ }, {
+ value: 21,
+ label: '鏂扮枂缁村惥灏旀棌鑷不鍖�',
+ children: [
+ { value: 22, label: '涔岄瞾鏈ㄩ綈' },
+ { value: 23, label: '鍏嬫媺鐜涗緷' }
+ ]
+ }]
+ }
+ ],
+ cactiveTabs: 0,
+ paramCost: {},
+ payMethods: [
+ { name: '涓�娆℃�т粯娆�', value: 0 },
+ { name: '3涓湀涓�浠�', value: 1 },
+ { name: '6涓湀涓�浠�', value: 2 },
+ { name: '1骞翠竴浠�', value: 2 },
+ ],
+ unitOps: [
+ { name: '鍏�/m虏路澶�', value: 0 },
+ { name: '鍏�/m虏路鏈�', value: 1 },
+ { name: '鍏�/澶�', value: 2 },
+ { name: '鍏�/鏈�', value: 3 },
+ { name: '鍏�/骞�', value: 4 },
+ { name: '鍏�/m虏路骞�', value: 5 },
+ { name: '鍏�/鍦�', value: 6 },
+ ],
+ }
+ },
+ methods: {
+ tabsClick(val) {
+ this.activeTabs = val
+ },
+ ctabsClick(val) {
+ this.cactiveTabs = val
+ },
+ getDetail() {
+
+ },
+ handleRent() {
+ this.$refs.MemberSearchRef.openModal()
+ },
+ houseChange(e) {
+ console.log(e)
+ console.log(this.value)
+
+ },
+ close() {
+ this.showModal = false
+ this.$emit('close')
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import '@/assets/style/variables.scss';
+
+.tabs {
+ border-bottom: 1px solid #DFE2E8;
+ display: flex;
+ margin-bottom: 20px;
+ display: flex;
+ justify-content: center;
+
+ .tab {
+ height: 58px;
+ line-height: 58px;
+ font-size: 16px;
+ color: #666666;
+ margin: 0 30px;
+ cursor: pointer;
+ }
+
+ .active {
+ font-weight: 500;
+ color: $primary-color;
+ border-bottom: 2px solid $primary-color;
+ }
+}
+
+.cost_tabs {
+ justify-content: flex-start;
+ border: none;
+
+ .tab {
+ height: 36px;
+ line-height: 36px;
+ font-size: 14px;
+ }
+}
+
+.main {
+ display: flex;
+ margin-bottom: 20px;
+
+ .main_content {
+ flex: 1;
+ margin-right: 20px;
+
+ .list {
+ display: flex;
+ flex-wrap: wrap;
+
+ .el-form-item {
+ width: 33.33%;
+ box-sizing: border-box;
+ padding: 0 12px;
+ }
+ }
+ }
+
+ .main_house {
+ width: 420px;
+ padding: 24px 12px;
+ border: 1px solid #c3c6cd;
+ border-radius: 2px;
+
+ .title {
+ font-size: 16px;
+ font-weight: 500;
+ margin-bottom: 30px;
+ }
+ }
+
+}
+.total{
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ height: 32px;
+ background-color: #e7e9f5;
+ span{
+ width: 160px;
+ text-align: center;
+ }
+}
+.file_wrap {
+ padding: 20px 16px;
+ border: 1px solid #c3c6cd;
+ border-radius: 2px;
+
+ .head {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ }
+}
+
+.m_title {
+ font-weight: 500;
+ font-size: 14px;
+ margin-bottom: 15px;
+ margin-top: 10px;
+}
+</style>
diff --git a/admin/src/views/contract/contractList.vue b/admin/src/views/contract/contractList.vue
index e69de29..1309081 100644
--- a/admin/src/views/contract/contractList.vue
+++ b/admin/src/views/contract/contractList.vue
@@ -0,0 +1,147 @@
+<template>
+ <div class="main_app">
+ <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear">
+ <template #btns>
+ <el-button>瀵煎嚭</el-button>
+ </template>
+ </QueryForm>
+ <div class="mt10">
+ <el-button @click="handleEdit()" icon="el-icon-plus" type="primary">鏂板缓</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="" 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 />
+
+ <el-table-column prop="" label="鍚堝悓鐘舵��" min-width="100" show-overflow-tooltip>
+ <template v-slot="scope">
+ <span class="primaryColor">寰呮墽琛�</span>
+ <span class="green">姝e父鎵ц涓�</span>
+ <span class="gary">宸查��绉�</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="" label="鎿嶄綔" min-width="100" show-overflow-tooltip>
+ <template v-slot="scope">
+ <span class="primaryColor cu" @click="handleDetail(scope.row)">鏌ョ湅璇︽儏</span>
+ </template>
+ </el-table-column>
+ </el-table>
+ <div class="mt20">
+ <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
+ </div>
+ <ContractDetail ref="ContractDetailRef" />
+ <ContractEdit ref="ContractEditRef" v-if="showEdit" />
+ </div>
+</template>
+
+<script>
+import Pagination from '@/components/common/Pagination'
+import QueryForm from '@/components/common/QueryForm'
+import ContractDetail from './components/contractDetail'
+import ContractEdit from './components/contractEdit.vue'
+import dayjs from 'dayjs'
+import duration from 'dayjs/plugin/duration'
+dayjs.extend(duration)
+import { platformLogPage, getPlatformGroupList } from '@/api'
+export default {
+ components: {
+ Pagination,
+ QueryForm,
+ ContractEdit,
+ ContractDetail
+ },
+ data() {
+ return {
+ showEdit: false,
+ loading: false,
+ pagination: {
+ pageSize: 10,
+ page: 1,
+ total: 0
+ },
+ filters: {},
+ list: [],
+ total: 0,
+ queryFormConfig: {
+ formItems: [
+ {
+ filed: 'name',
+ type: 'input',
+ label: '鍚堝悓鍚嶇О'
+ },
+ {
+ filed: 'selDate',
+ type: 'datetimerange',
+ placeholder: '搴斿紑濮嬫椂闂�'
+ }
+ ],
+ online: true
+ }
+ }
+ },
+ created() {
+ // this.getList()
+ // this.getGroupList()
+ },
+ methods: {
+ handleEdit(row) {
+ this.showEdit = true
+ this.$nextTick(() => {
+ this.$refs.ContractEditRef.showModal = true
+ })
+ if(row && row.id){
+
+ }else{
+
+ }
+ },
+ handleDetail(row) {
+ this.$refs.ContractDetailRef.visible = true
+ this.$refs.ContractDetailRef.getDetail(row.id)
+ },
+
+ getList(page) {
+ const { pagination, filters } = this
+ this.loading = true
+ platformLogPage({
+ model: {
+ ...filters,
+ queryStatus: '6,7,8',
+ beginWorkDateStart: filters.selDate && filters.selDate.length > 0 ? filters.selDate[0] : null,
+ beginWorkDateEnd: filters.selDate && filters.selDate.length > 0 ? filters.selDate[1] : null,
+ },
+ sorts: [{ direction: 'DESC', property: 'param1' }],
+ capacity: pagination.pageSize,
+ page: page || pagination.page,
+ }).then(res => {
+ this.loading = false
+ this.list = res.records || []
+ this.list.forEach(item => {
+ item.inTypeTemp = item.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'
+ item.taskOrigin = 'WMS鑾峰彇'
+ item.workTime = dayjs.duration(item.param3, 'seconds').format('H鏃秏鍒唖绉�')
+ })
+ this.pagination.total = res.total || 0
+ }, () => {
+ this.loading = false
+ })
+ },
+ clear() {
+ this.filters = {}
+ this.pagination.pageSize = 10
+ this.pagination.page = 1
+ this.getList()
+ },
+ handleSizeChange(capacity) {
+ this.pagination.pageSize = capacity
+ }
+ }
+}
+</script>
+
+<style>
+</>
diff --git a/admin/src/views/finance/account.vue b/admin/src/views/finance/account.vue
new file mode 100644
index 0000000..3cb9a42
--- /dev/null
+++ b/admin/src/views/finance/account.vue
@@ -0,0 +1,138 @@
+<template>
+ <div class="main_app">
+ <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" />
+ <div class="mt20">
+ <el-button type="primary" @click="handleEdit()" icon="el-icon-plus"
+ v-permissions="['business:ywpatrolline:create']">鏂板缓</el-button>
+ </div>
+ <el-table v-loading="loading" :data="list" stripe>
+ <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="" label="璐︽埛绫诲瀷" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="modelNo" label="璐︽埛鍚嶇О" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="realName" label="寮�鎴烽摱琛�" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="realName" label="閾惰璐﹀彿" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="status" label="鐘舵��" min-width="100" show-overflow-tooltip>
+ <template v-slot="scope">
+ <el-switch v-model="scope.row.status" active-value="0" inactive-value="1">
+ </el-switch>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔" min-width="120" fixed="right">
+ <template slot-scope="{row}">
+ <el-button type="text" @click="handleEdit(row)" icon="el-icon-edit"
+ v-permissions="['business:category:update']">缂栬緫</el-button>
+ <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
+ v-permissions="['business:category:delete']">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <div class="mt20">
+ <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
+ </div>
+ <Edit v-if="showEdit" ref="EditRef" @success="getList" @close="showEdit = false" />
+ </div>
+</template>
+
+<script>
+import Pagination from '@/components/common/Pagination'
+import QueryForm from '@/components/common/QueryForm'
+import Edit from './components/accountEdit.vue'
+import { companyGetList, deleteById } from '@/api/business/company'
+export default {
+ components: {
+ Pagination,
+ QueryForm,
+ Edit
+ },
+ data() {
+ return {
+ loading: false,
+ showEdit: false,
+ pagination: {
+ pageSize: 10,
+ page: 1,
+ total: 0
+ },
+ filters: {},
+ list: [],
+ total: 0,
+ queryFormConfig: {
+ formItems: [
+ {
+ filed: 'name',
+ type: 'input',
+ label: '鏀舵敮鏉$洰'
+ },
+ {
+ filed: 'name',
+ type: 'select',
+ label: '鏀舵鍏徃'
+ },
+ ],
+ online: true
+ }
+ }
+ },
+ created() {
+ this.getList()
+ },
+ methods: {
+ getList(page) {
+ const { pagination, filters } = this
+ this.loading = true
+ companyGetList({
+ model: {
+ ...filters,
+ type: 2
+ },
+ capacity: pagination.pageSize,
+ page: page || pagination.page,
+ }).then(res => {
+ this.loading = false
+ this.list = res.records || []
+ this.list.forEach(item => {
+ item.stautsName = item.status == 0 ? '姝e父' : item.status == 1 ? '鎹熷潖' : '鎶ュ簾'
+ })
+ this.pagination.total = res.total || 0
+ }, () => {
+ this.loading = false
+ })
+ },
+ handleEdit(row) {
+ this.showEdit = true
+ this.$nextTick(() => {
+ this.$refs.EditRef.isShowModal = true
+ if (row && row.id) {
+ this.$refs.EditRef.getDetail(row.id)
+ }
+ })
+
+ },
+ handleDel(row) {
+ let message = `纭鍒犻櫎璇ヨ褰曞悧?`
+ this.$dialog.deleteConfirm(message)
+ .then(() => {
+ this.isWorking.delete = true
+ deleteById(row.id)
+ .then(() => {
+ this.$tip.apiSuccess('鍒犻櫎鎴愬姛')
+ this.getList()
+ })
+ })
+ .catch(() => { })
+ },
+ clear() {
+ this.filters = {}
+ this.pagination.pageSize = 10
+ this.pagination.page = 1
+ this.getList()
+ },
+ handleSizeChange(capacity) {
+ this.pagination.pageSize = capacity
+ }
+ }
+}
+</script>
+
+<style></style>
diff --git a/admin/src/views/finance/bull.vue b/admin/src/views/finance/bull.vue
new file mode 100644
index 0000000..fef662a
--- /dev/null
+++ b/admin/src/views/finance/bull.vue
@@ -0,0 +1,194 @@
+<template>
+ <div class="main_app">
+ <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" />
+ <div class="df_sb mt20">
+ <div class="tabs">
+ <div class="tab" :class="{ active: activeTabs == 0 }" @click="tabsClick(0)">鏀舵璐﹀崟</div>
+ <div class="tab" :class="{ active: activeTabs == 1 }" @click="tabsClick(1)">浠樻璐﹀崟</div>
+ </div>
+ <div class="btns">
+ <el-button type="primary" @click="handleEdit()" icon="el-icon-plus"
+ v-permissions="['business:ywpatrolline:create']">鏂板缓</el-button>
+ <el-button @click="handleEx" v-permissions="['business:ywpatrolline:create']">瀵煎嚭</el-button>
+ </div>
+ </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 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>
+ </template>
+ </el-table-column>
+ </el-table>
+ <div class="mt20">
+ <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
+ </div>
+ <Edit v-if="showEdit" ref="EditRef" @success="getList" @close="showEdit = false" />
+ </div>
+</template>
+
+<script>
+import Pagination from '@/components/common/Pagination'
+import QueryForm from '@/components/common/QueryForm'
+import Edit from './components/deviceEdit.vue'
+import { fetchList, deleteById } from '@/api/Inspection/device'
+export default {
+ components: {
+ Pagination,
+ QueryForm,
+ Edit
+ },
+ data() {
+ return {
+ loading: false,
+ showEdit: false,
+ pagination: {
+ pageSize: 10,
+ page: 1,
+ total: 0
+ },
+ activeTabs: 0,
+ filters: {},
+ list: [],
+ total: 0,
+ statusMap: [
+ { value: 0, label: '寰呮敹娆�' },
+ { value: 1, label: '宸茬粨绠�' },
+ { value: 2, label: '閮ㄥ垎缁撴竻' },
+ { value: 3, label: '寰呴��娆�' },
+ { value: 4, label: '寰呬粯娆�' },
+ ],
+ queryFormConfig: {
+ formItems: [
+ {
+ filed: 'name',
+ type: 'input',
+ label: '瀹㈡埛鍚嶇О',
+ },
+ {
+ filed: 'status',
+ type: 'select',
+ label: '璐﹀崟鐘舵��',
+ options: [
+ { value: '0', label: '寮�鍚�' },
+ { value: '1', label: '鍏抽棴' },
+ ]
+ },
+ {
+ filed: 'status',
+ type: 'select',
+ label: '缁撴竻鐘舵��',
+ options: this.statusMap
+ },
+ {
+ filed: 'selDate',
+ type: 'daterange',
+ label: '搴旀敹/浠樻棩鏈�'
+ },
+ ],
+ online: true
+ }
+ }
+ },
+ created() {
+ this.getList()
+ },
+ methods: {
+ getList(page) {
+ const { pagination, filters } = this
+ this.loading = true
+ fetchList({
+ model: {
+ ...filters,
+ },
+ capacity: pagination.pageSize,
+ page: page || pagination.page,
+ }).then(res => {
+ this.loading = false
+ this.list = res.records || []
+ this.list.forEach(item => {
+ item.stautsName = item.status == 0 ? '姝e父' : item.status == 1 ? '鎹熷潖' : '鎶ュ簾'
+ })
+ this.pagination.total = res.total || 0
+ }, () => {
+ this.loading = false
+ })
+ },
+ handleEx() {
+
+ },
+ tabsClick(val) {
+ this.activeTabs = val
+ },
+ handleEdit(row) {
+ this.showEdit = true
+ this.$nextTick(() => {
+ this.$refs.EditRef.isShowModal = true
+ if (row && row.id) {
+ this.$refs.EditRef.getDetail(row.id)
+ }
+ })
+
+ },
+ handleDetail() {
+
+ },
+ handleDel(row) {
+ let message = `纭鍒犻櫎璇ヨ褰曞悧?`
+ this.$dialog.deleteConfirm(message)
+ .then(() => {
+ this.isWorking.delete = true
+ deleteById(row.id)
+ .then(() => {
+ this.$tip.apiSuccess('鍒犻櫎鎴愬姛')
+ this.getList()
+ })
+ })
+ .catch(() => { })
+ },
+ clear() {
+ this.filters = {}
+ this.pagination.pageSize = 10
+ this.pagination.page = 1
+ this.getList()
+ },
+ handleSizeChange(capacity) {
+ this.pagination.pageSize = capacity
+ this.getList()
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import '@/assets/style/variables.scss';
+
+.tabs {
+ border-bottom: 1px solid #DFE2E8;
+ display: flex;
+ margin-bottom: 20px;
+ display: flex;
+ justify-content: center;
+
+ .tab {
+ height: 58px;
+ line-height: 58px;
+ font-size: 16px;
+ color: #666666;
+ margin: 0 30px;
+ cursor: pointer;
+ }
+
+ .active {
+ font-weight: 500;
+ color: $primary-color;
+ border-bottom: 2px solid $primary-color;
+ }
+}
+</style>
diff --git a/admin/src/views/finance/company.vue b/admin/src/views/finance/company.vue
new file mode 100644
index 0000000..6397411
--- /dev/null
+++ b/admin/src/views/finance/company.vue
@@ -0,0 +1,132 @@
+<template>
+ <div class="main_app">
+ <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" />
+ <div class="mt20">
+ <el-button type="primary" @click="handleEdit()" icon="el-icon-plus"
+ v-permissions="['business:ywpatrolline:create']">鏂板缓</el-button>
+ </div>
+ <el-table v-loading="loading" :data="list" stripe>
+ <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="" label="绾崇◣璇嗗埆鍙�" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="modelNo" label="鍏徃鍦板潃" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="realName" label="鏀舵敮璐︽埛鏁伴噺" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="status" label="鐘舵��" min-width="100" show-overflow-tooltip>
+ <template v-slot="scope">
+ <el-switch v-model="scope.row.status" active-value="0" inactive-value="1">
+ </el-switch>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔" min-width="120" fixed="right">
+ <template slot-scope="{row}">
+ <el-button type="text" @click="handleEdit(row)" icon="el-icon-edit"
+ v-permissions="['business:category:update']">缂栬緫</el-button>
+ <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
+ v-permissions="['business:category:delete']">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <div class="mt20">
+ <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
+ </div>
+ <Edit v-if="showEdit" ref="EditRef" @success="getList" @close="showEdit = false" />
+ </div>
+</template>
+
+<script>
+import Pagination from '@/components/common/Pagination'
+import QueryForm from '@/components/common/QueryForm'
+import Edit from './components/companyEdit.vue'
+import { companyGetList, deleteById } from '@/api/business/company'
+export default {
+ components: {
+ Pagination,
+ QueryForm,
+ Edit
+ },
+ data() {
+ return {
+ loading: false,
+ showEdit: false,
+ pagination: {
+ pageSize: 10,
+ page: 1,
+ total: 0
+ },
+ filters: {},
+ list: [],
+ total: 0,
+ queryFormConfig: {
+ formItems: [
+ {
+ filed: 'name',
+ type: 'input',
+ label: '鍏徃鍚嶇О'
+ },
+ ],
+ online: true
+ }
+ }
+ },
+ created() {
+ this.getList()
+ },
+ methods: {
+ getList(page) {
+ const { pagination, filters } = this
+ this.loading = true
+ companyGetList({
+ model: {
+ ...filters,
+ type: 2
+ },
+ capacity: pagination.pageSize,
+ page: page || pagination.page,
+ }).then(res => {
+ this.loading = false
+ this.list = res.records || []
+ this.list.forEach(item => {
+ item.stautsName = item.status == 0 ? '姝e父' : item.status == 1 ? '鎹熷潖' : '鎶ュ簾'
+ })
+ this.pagination.total = res.total || 0
+ }, () => {
+ this.loading = false
+ })
+ },
+ handleEdit(row) {
+ this.showEdit = true
+ this.$nextTick(() => {
+ this.$refs.EditRef.isShowModal = true
+ if (row && row.id) {
+ this.$refs.EditRef.getDetail(row.id)
+ }
+ })
+
+ },
+ handleDel(row) {
+ let message = `纭鍒犻櫎璇ヨ褰曞悧?`
+ this.$dialog.deleteConfirm(message)
+ .then(() => {
+ this.isWorking.delete = true
+ deleteById(row.id)
+ .then(() => {
+ this.$tip.apiSuccess('鍒犻櫎鎴愬姛')
+ this.getList()
+ })
+ })
+ .catch(() => { })
+ },
+ clear() {
+ this.filters = {}
+ this.pagination.pageSize = 10
+ this.pagination.page = 1
+ this.getList()
+ },
+ handleSizeChange(capacity) {
+ this.pagination.pageSize = capacity
+ }
+ }
+}
+</script>
+
+<style></style>
diff --git a/admin/src/views/finance/components/accountEdit.vue b/admin/src/views/finance/components/accountEdit.vue
new file mode 100644
index 0000000..7a7fae4
--- /dev/null
+++ b/admin/src/views/finance/components/accountEdit.vue
@@ -0,0 +1,104 @@
+<template>
+ <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="name">
+ <el-input v-model="param.name" placeholder="璇疯緭鍏�" v-trim />
+ </el-form-item>
+ <el-form-item label="鏀舵鍏徃" prop="name">
+ <el-select v-model="param.realName" filterable clearable>
+ <el-option value="0" label="xxx"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鏀舵绫诲瀷" prop="name">
+ <el-radio-group v-model="param.radio">
+ <el-radio :label="0">瀵瑰叕</el-radio>
+ <el-radio :label="1">涓汉</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item label="璐︽埛鍚嶇О" prop="desc">
+ <el-input v-model="param.desc" placeholder="璇疯緭鍏�" v-trim />
+ </el-form-item>
+ <el-form-item label="寮�鎴峰悕绉�">
+ <el-input v-model="param.code" placeholder="璇疯緭鍏�" v-trim />
+ </el-form-item>
+ <el-form-item label="閾惰璐﹀彿">
+ <el-input v-model="param.addr" placeholder="璇疯緭鍏�" v-trim />
+ </el-form-item>
+ <el-form-item label="鐘舵��" prop="code">
+ <el-switch v-model="param.status" active-value="0" inactive-value="1">
+ </el-switch>
+ </el-form-item>
+ </el-form>
+ </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import UploadAvatarImage from '@/components/common/UploadAvatarImage'
+import { create, updateById } from '@/api/business/company'
+import { Message } from 'element-ui'
+export default {
+ components: { GlobalWindow, UploadAvatarImage },
+ data() {
+ return {
+ isShowModal: false,
+ subLoading: false,
+ param: {
+ type: 2,
+ status: '0'
+ },
+ cateList: [],
+ rules: {
+ name: [{ required: true, message: '璇疯緭鍏�' }],
+ desc: [{ required: true, message: '璇疯緭鍏�' }]
+ },
+
+ }
+ },
+ created() {
+ },
+ methods: {
+ handleSub() {
+ const { param, subLoading } = this
+ this.$refs['paramRef'].validate((valid) => {
+ if (valid) {
+ let fn = param.id ? updateById : create
+ this.subLoading = true
+ fn(param).then(res => {
+ this.subLoading = false
+ this.$emit('success')
+ Message.success('淇濆瓨鎴愬姛')
+ this.close()
+ }).catch(() => {
+ this.subLoading = false
+ })
+ }
+ })
+ },
+ changeSel(e) {
+ if (e && e.length == 1) {
+ this.$set(this.param, 'catePId', e[0])
+ this.$set(this.param, 'cateId', '')
+ } else if (e && e.length == 2) {
+ this.$set(this.param, 'catePId', e[0])
+ this.$set(this.param, 'cateId', e[1])
+ } else {
+ this.$set(this.param, 'catePId', '')
+ this.$set(this.param, 'cateId', '')
+ }
+ this.search()
+ },
+ uploadAvatarSuccess(file) {
+ this.$set(this.param, 'imgurl', file.imgurl)
+ this.$set(this.param, 'imgurlfull', file.imgurlfull)
+ },
+ close() {
+ this.isShowModal = false
+ this.$emit('close')
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped></style>
\ No newline at end of file
diff --git a/admin/src/views/finance/components/companyEdit.vue b/admin/src/views/finance/components/companyEdit.vue
new file mode 100644
index 0000000..6c378a8
--- /dev/null
+++ b/admin/src/views/finance/components/companyEdit.vue
@@ -0,0 +1,93 @@
+<template>
+ <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="name">
+ <el-input v-model="param.name" placeholder="璇疯緭鍏�" v-trim />
+ </el-form-item>
+ <el-form-item label="鍏徃绠�浠�" prop="desc">
+ <el-input v-model="param.desc" placeholder="璇疯緭鍏�" v-trim />
+ </el-form-item>
+ <el-form-item label="绾崇◣璇嗗埆鍙�">
+ <el-input v-model="param.code" placeholder="璇疯緭鍏�" v-trim />
+ </el-form-item>
+ <el-form-item label="鑱旂郴鍦板潃">
+ <el-input v-model="param.addr" placeholder="璇疯緭鍏�" v-trim />
+ </el-form-item>
+ <el-form-item label="鐘舵��" prop="code">
+ <el-switch v-model="param.status" active-value="0" inactive-value="1">
+ </el-switch>
+ </el-form-item>
+ </el-form>
+ </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import UploadAvatarImage from '@/components/common/UploadAvatarImage'
+import { create, updateById } from '@/api/business/company'
+import { Message } from 'element-ui'
+export default {
+ components: { GlobalWindow, UploadAvatarImage },
+ data() {
+ return {
+ isShowModal: false,
+ subLoading: false,
+ param: {
+ type: 2,
+ status: '0'
+ },
+ cateList: [],
+ rules: {
+ name: [{ required: true, message: '璇疯緭鍏�' }],
+ desc: [{ required: true, message: '璇疯緭鍏�' }]
+ },
+
+ }
+ },
+ created() {
+ },
+ methods: {
+ handleSub() {
+ const { param, subLoading } = this
+ this.$refs['paramRef'].validate((valid) => {
+ if (valid) {
+ let fn = param.id ? updateById : create
+ this.subLoading = true
+ fn(param).then(res => {
+ this.subLoading = false
+ this.$emit('success')
+ Message.success('淇濆瓨鎴愬姛')
+ this.close()
+ }).catch(() => {
+ this.subLoading = false
+ })
+ }
+ })
+ },
+ changeSel(e) {
+ if (e && e.length == 1) {
+ this.$set(this.param, 'catePId', e[0])
+ this.$set(this.param, 'cateId', '')
+ } else if (e && e.length == 2) {
+ this.$set(this.param, 'catePId', e[0])
+ this.$set(this.param, 'cateId', e[1])
+ } else {
+ this.$set(this.param, 'catePId', '')
+ this.$set(this.param, 'cateId', '')
+ }
+ this.search()
+ },
+ uploadAvatarSuccess(file) {
+ this.$set(this.param, 'imgurl', file.imgurl)
+ this.$set(this.param, 'imgurlfull', file.imgurlfull)
+ },
+ close() {
+ this.isShowModal = false
+ this.$emit('close')
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped></style>
\ No newline at end of file
diff --git a/admin/src/views/finance/components/deviceEdit.vue b/admin/src/views/finance/components/deviceEdit.vue
new file mode 100644
index 0000000..185fbdc
--- /dev/null
+++ b/admin/src/views/finance/components/deviceEdit.vue
@@ -0,0 +1,137 @@
+<template>
+ <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-input v-model="param.code" placeholder="璇疯緭鍏�" v-trim />
+ </el-form-item>
+ <el-form-item label="璁惧鍚嶇О" prop="name">
+ <el-input v-model="param.name" placeholder="璇疯緭鍏�" v-trim />
+ </el-form-item>
+ <el-form-item label="璁惧鍨嬪彿" prop="">
+ <el-input v-model="param.modelNo" placeholder="璇疯緭鍏�" v-trim />
+ </el-form-item>
+ <el-form-item label="璁惧鍒嗙被" prop="">
+ <el-cascader v-model="param.areaIds" @change="changeSel" placeholder="璇烽�夋嫨宸℃鍖哄煙" clearable :options="cateList"
+ :props="{
+ label: 'name',
+ value: 'id',
+ children: 'childCategoryList',
+ checkStrictly: true
+ }"></el-cascader>
+ </el-form-item>
+ <el-form-item label="璁惧绠$悊鍛�" prop="">
+ <el-select v-model="param.realName" filterable clearable>
+ <el-option value="0" label="xxx"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鎵�鍦ㄤ綅缃�" prop="">
+ <el-input v-model="param.addr" placeholder="璇疯緭鍏�" v-trim />
+
+ </el-form-item>
+ <el-form-item label="渚涘簲鍟�" prop="">
+ <el-input v-model="param.company" placeholder="璇疯緭鍏�" v-trim />
+
+ </el-form-item>
+ <el-form-item label="杩愮淮鍐呭" prop="">
+ <el-input type="textarea" :rows="4" v-model="param.content" placeholder="璇疯緭鍏�" />
+ </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-select>
+ </el-form-item>
+ <el-form-item label="鐓х墖" prop="">
+ <UploadAvatarImage :file="{ 'imgurlfull': param.imgurlfull, 'imgurl': param.imgurl }"
+ :uploadData="{ folder: 'projects' }" @uploadSuccess="uploadAvatarSuccess" @uploadEnd="isUploading = false"
+ @uploadBegin="isUploading = true" />
+ </el-form-item>
+
+
+
+ </el-form>
+ </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import UploadAvatarImage from '@/components/common/UploadAvatarImage'
+import { fetchList } from '@/api/business/category'
+import { create, updateById } from '@/api/Inspection/device'
+import { Message } from 'element-ui'
+export default {
+ components: { GlobalWindow, UploadAvatarImage },
+ data() {
+ return {
+ isShowModal: false,
+ subLoading: false,
+ param: {},
+ cateList: [],
+ rules: {
+ name: [{ required: true, message: '璇疯緭鍏�' }],
+ code: [{ required: true, message: '璇疯緭鍏�' }]
+ },
+
+ }
+ },
+ created() {
+ this.initData()
+ },
+ methods: {
+ handleSub() {
+ const { param, subLoading } = this
+ this.$refs['paramRef'].validate((valid) => {
+ if (valid) {
+ let fn = param.id ? updateById : create
+ this.subLoading = true
+ fn(param).then(res => {
+ if (res.code == 200) {
+ this.subLoading = false
+ this.$emit('success')
+ Message.success('淇濆瓨鎴愬姛')
+ this.close()
+ }
+ }).catch(() => {
+ this.subLoading = false
+ })
+ }
+ })
+ },
+ initData() {
+ fetchList({
+ model: { type: 5 },
+ capacity: 1000,
+ page: 1,
+ }).then(res => {
+ this.cateList = res.records || []
+ })
+
+ },
+ changeSel(e) {
+ if (e && e.length == 1) {
+ this.$set(this.param, 'catePId', e[0])
+ this.$set(this.param, 'cateId', '')
+ } else if (e && e.length == 2) {
+ this.$set(this.param, 'catePId', e[0])
+ this.$set(this.param, 'cateId', e[1])
+ } else {
+ this.$set(this.param, 'catePId', '')
+ this.$set(this.param, 'cateId', '')
+ }
+ this.search()
+ },
+ uploadAvatarSuccess(file) {
+ this.$set(this.param, 'imgurl', file.imgurl)
+ this.$set(this.param, 'imgurlfull', file.imgurlfull)
+ },
+ close() {
+ this.isShowModal = false
+ this.$emit('close')
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped></style>
\ No newline at end of file
diff --git a/admin/src/views/finance/payments.vue b/admin/src/views/finance/payments.vue
new file mode 100644
index 0000000..107c3a5
--- /dev/null
+++ b/admin/src/views/finance/payments.vue
@@ -0,0 +1,137 @@
+<template>
+ <div class="main_app">
+ <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" />
+ <div class="mt20">
+ <el-button type="primary" @click="handleEdit()" icon="el-icon-plus"
+ v-permissions="['business:ywpatrolline:create']">鏂板缓</el-button>
+ </div>
+ <el-table v-loading="loading" :data="list" stripe>
+ <el-table-column prop="code" label="shou" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="name" label="鍏徃绠�浠�" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="绾崇◣璇嗗埆鍙�" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="modelNo" label="鍏徃鍦板潃" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="realName" label="鏀舵敮璐︽埛鏁伴噺" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="status" label="鐘舵��" min-width="100" show-overflow-tooltip>
+ <template v-slot="scope">
+ <el-switch v-model="scope.row.status" active-value="0" inactive-value="1">
+ </el-switch>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔" min-width="120" fixed="right">
+ <template slot-scope="{row}">
+ <el-button type="text" @click="handleEdit(row)" icon="el-icon-edit"
+ v-permissions="['business:category:update']">缂栬緫</el-button>
+ <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
+ v-permissions="['business:category:delete']">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <div class="mt20">
+ <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
+ </div>
+ <Edit v-if="showEdit" ref="EditRef" @success="getList" @close="showEdit = false" />
+ </div>
+</template>
+
+<script>
+import Pagination from '@/components/common/Pagination'
+import QueryForm from '@/components/common/QueryForm'
+import Edit from './components/companyEdit.vue'
+import { companyGetList, deleteById } from '@/api/business/company'
+export default {
+ components: {
+ Pagination,
+ QueryForm,
+ Edit
+ },
+ data() {
+ return {
+ loading: false,
+ showEdit: false,
+ pagination: {
+ pageSize: 10,
+ page: 1,
+ total: 0
+ },
+ filters: {},
+ list: [],
+ total: 0,
+ queryFormConfig: {
+ formItems: [
+ {
+ filed: 'name',
+ type: 'input',
+ label: '鏀舵敮鏉$洰'
+ },
+ {
+ filed: 'name',
+ type: 'select',
+ label: '鏀舵鍏徃'
+ },
+ ],
+ online: true
+ }
+ }
+ },
+ created() {
+ this.getList()
+ },
+ methods: {
+ getList(page) {
+ const { pagination, filters } = this
+ this.loading = true
+ companyGetList({
+ model: {
+ ...filters,
+ type: 2
+ },
+ capacity: pagination.pageSize,
+ page: page || pagination.page,
+ }).then(res => {
+ this.loading = false
+ this.list = res.records || []
+ this.list.forEach(item => {
+ item.stautsName = item.status == 0 ? '姝e父' : item.status == 1 ? '鎹熷潖' : '鎶ュ簾'
+ })
+ this.pagination.total = res.total || 0
+ }, () => {
+ this.loading = false
+ })
+ },
+ handleEdit(row) {
+ this.showEdit = true
+ this.$nextTick(() => {
+ this.$refs.EditRef.isShowModal = true
+ if (row && row.id) {
+ this.$refs.EditRef.getDetail(row.id)
+ }
+ })
+
+ },
+ handleDel(row) {
+ let message = `纭鍒犻櫎璇ヨ褰曞悧?`
+ this.$dialog.deleteConfirm(message)
+ .then(() => {
+ this.isWorking.delete = true
+ deleteById(row.id)
+ .then(() => {
+ this.$tip.apiSuccess('鍒犻櫎鎴愬姛')
+ this.getList()
+ })
+ })
+ .catch(() => { })
+ },
+ clear() {
+ this.filters = {}
+ this.pagination.pageSize = 10
+ this.pagination.page = 1
+ this.getList()
+ },
+ handleSizeChange(capacity) {
+ this.pagination.pageSize = capacity
+ }
+ }
+}
+</script>
+
+<style></style>
diff --git a/admin/src/views/operation/category.vue b/admin/src/views/operation/category.vue
index e69de29..af61f66 100644
--- a/admin/src/views/operation/category.vue
+++ b/admin/src/views/operation/category.vue
@@ -0,0 +1,109 @@
+<template>
+ <TableLayout>
+ <template v-slot:table-wrap>
+ <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
+ <li><el-button type="primary" @click="handleEdit()" icon="el-icon-plus"
+ v-permissions="['business:category:create']">鏂板缓</el-button></li>
+ <li v-permissions="['business:category:exportExcel']"><el-button type="primary"
+ @click="exportExcel">瀵煎嚭</el-button></li>
+ </ul>
+ <el-table row-key="id" :tree-props="{ children: 'childCategoryList' }" v-loading="isWorking.search"
+ :data="dataList" stripe @selection-change="handleSelectionChange">
+ <el-table-column prop="name" label="璁惧鍒嗙被" min-width="100px"></el-table-column>
+ <!-- <el-table-column prop="parentName" label="鎵�灞炲垎绫�" min-width="100px"></el-table-column> -->
+ <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
+ <el-table-column v-if="containPermissions(['business:category:update', 'business:category:delete'])" label="鎿嶄綔"
+ min-width="120" fixed="right">
+ <template slot-scope="{row}">
+ <el-button type="text" @click="handleEdit(row)" icon="el-icon-edit"
+ v-permissions="['business:category:update']">缂栬緫</el-button>
+ <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
+ v-permissions="['business:category:delete']">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination @size-change="handleSizeChange" @current-change="getList" :pagination="tableData.pagination">
+ </pagination>
+ </template>
+ <!-- 鏂板缓/淇敼 -->
+ <OperaCategoryWindow v-if="isShowEdit" @close="isShowEdit = false" ref="operaCategoryWindow" @success="getList" />
+ </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaCategoryWindow from './components/OperaCategoryWindow'
+import { fetchList, deleteById } from '@/api/business/category.js'
+export default {
+ name: 'Category',
+ extends: BaseTable,
+ components: { TableLayout, Pagination, OperaCategoryWindow },
+ data() {
+ return {
+ // 鎼滅储
+ filters: {
+ parentId: ''
+ },
+ isShowEdit: false,
+ loading: false,
+ pagination: {
+ pageSize: 10,
+ page: 1,
+ total: 0,
+ },
+ dataList: []
+ }
+ },
+ created() {
+ this.config({
+ module: '杞﹁締淇℃伅琛�',
+ api: '/business/category',
+ 'field.id': 'id',
+ 'field.main': 'id'
+ })
+ this.getList()
+ },
+ methods: {
+ handleEdit(row) {
+ this.isShowEdit = true
+ let str = row && row.id ? '缂栬緫璁惧鍒嗙被' : '鏂板缓璁惧鍒嗙被'
+ this.$nextTick(() => {
+ this.$refs.operaCategoryWindow.open(str)
+ this.$refs.operaCategoryWindow.getList()
+ if (row && row.id) {
+ this.$refs.operaCategoryWindow.getDetail(row.id)
+ }
+ })
+ },
+ deleteById(row) {
+ this.$confirm(`鎮ㄧ‘璁よ鍒犻櫎璇ュ垎绫诲悧`, '娓╅Θ鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ deleteById(row.id).then(res => {
+ this.getList()
+ })
+ })
+
+ },
+ getList() {
+ const { pagination, filters } = this
+ this.loading = true
+ fetchList({
+ model: { ...filters, type: 5 },
+ capacity: pagination.pageSize,
+ page: pagination.page,
+ }).then(res => {
+ this.loading = false
+ this.dataList = res.records || []
+ this.pagination.total = res.total || 0
+ }, () => {
+ this.loading = false
+ })
+ },
+ }
+}
+</script>
diff --git a/admin/src/views/operation/components/OperaCategoryWindow.vue b/admin/src/views/operation/components/OperaCategoryWindow.vue
new file mode 100644
index 0000000..a066862
--- /dev/null
+++ b/admin/src/views/operation/components/OperaCategoryWindow.vue
@@ -0,0 +1,74 @@
+<template>
+ <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" width="600px" @close="close" @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-form-item>
+ <el-form-item label="鎵�灞炲垎绫�" prop="parentId">
+ <el-select :disabled="form.id" v-model="form.parentId" placeholder="涓嶅~涓哄垯涓�绾у垎绫�">
+ <el-option v-for="op in dataList" :key="op.id" :label="op.name" :value="op.id"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="sortnum">
+ <el-input v-model="form.sortnum" oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 6)" v-trim />
+ </el-form-item>
+ </el-form>
+ </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { create, fetchCateList, getInfoById } from '@/api/business/category.js'
+export default {
+ name: 'OperaCategoryWindow',
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data() {
+ return {
+ // 琛ㄥ崟鏁版嵁
+ form: {
+ parentId: null,
+ name: '',
+ remark: '',
+ status: '',
+ sortnum: '',
+ type: 5
+ },
+ // 楠岃瘉瑙勫垯
+ rules: {
+ name: [
+ { required: true, message: '璇疯緭鍏ヤ簩绾у垎绫诲悕绉�', trigger: 'blur' }
+ ],
+ status: [
+ { required: true, message: '璇烽�夋嫨鏄惁鍚敤', trigger: 'change' }
+ ]
+ },
+ dataList: []
+ }
+ },
+ created() {
+ this.config({
+ api: '/business/category',
+ 'field.id': 'id'
+ })
+ },
+ methods: {
+ getList() {
+ fetchCateList({ type: 5 }).then(res => {
+ this.dataList = res || []
+
+ })
+ },
+ close() {
+ this.visible = false
+ this.$emit('close')
+ },
+ getDetail(id) {
+ getInfoById(id).then(res => {
+ this.form = res
+ })
+ },
+ }
+}
+</script>
diff --git a/admin/src/views/operation/components/deviceEdit.vue b/admin/src/views/operation/components/deviceEdit.vue
new file mode 100644
index 0000000..185fbdc
--- /dev/null
+++ b/admin/src/views/operation/components/deviceEdit.vue
@@ -0,0 +1,137 @@
+<template>
+ <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-input v-model="param.code" placeholder="璇疯緭鍏�" v-trim />
+ </el-form-item>
+ <el-form-item label="璁惧鍚嶇О" prop="name">
+ <el-input v-model="param.name" placeholder="璇疯緭鍏�" v-trim />
+ </el-form-item>
+ <el-form-item label="璁惧鍨嬪彿" prop="">
+ <el-input v-model="param.modelNo" placeholder="璇疯緭鍏�" v-trim />
+ </el-form-item>
+ <el-form-item label="璁惧鍒嗙被" prop="">
+ <el-cascader v-model="param.areaIds" @change="changeSel" placeholder="璇烽�夋嫨宸℃鍖哄煙" clearable :options="cateList"
+ :props="{
+ label: 'name',
+ value: 'id',
+ children: 'childCategoryList',
+ checkStrictly: true
+ }"></el-cascader>
+ </el-form-item>
+ <el-form-item label="璁惧绠$悊鍛�" prop="">
+ <el-select v-model="param.realName" filterable clearable>
+ <el-option value="0" label="xxx"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鎵�鍦ㄤ綅缃�" prop="">
+ <el-input v-model="param.addr" placeholder="璇疯緭鍏�" v-trim />
+
+ </el-form-item>
+ <el-form-item label="渚涘簲鍟�" prop="">
+ <el-input v-model="param.company" placeholder="璇疯緭鍏�" v-trim />
+
+ </el-form-item>
+ <el-form-item label="杩愮淮鍐呭" prop="">
+ <el-input type="textarea" :rows="4" v-model="param.content" placeholder="璇疯緭鍏�" />
+ </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-select>
+ </el-form-item>
+ <el-form-item label="鐓х墖" prop="">
+ <UploadAvatarImage :file="{ 'imgurlfull': param.imgurlfull, 'imgurl': param.imgurl }"
+ :uploadData="{ folder: 'projects' }" @uploadSuccess="uploadAvatarSuccess" @uploadEnd="isUploading = false"
+ @uploadBegin="isUploading = true" />
+ </el-form-item>
+
+
+
+ </el-form>
+ </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import UploadAvatarImage from '@/components/common/UploadAvatarImage'
+import { fetchList } from '@/api/business/category'
+import { create, updateById } from '@/api/Inspection/device'
+import { Message } from 'element-ui'
+export default {
+ components: { GlobalWindow, UploadAvatarImage },
+ data() {
+ return {
+ isShowModal: false,
+ subLoading: false,
+ param: {},
+ cateList: [],
+ rules: {
+ name: [{ required: true, message: '璇疯緭鍏�' }],
+ code: [{ required: true, message: '璇疯緭鍏�' }]
+ },
+
+ }
+ },
+ created() {
+ this.initData()
+ },
+ methods: {
+ handleSub() {
+ const { param, subLoading } = this
+ this.$refs['paramRef'].validate((valid) => {
+ if (valid) {
+ let fn = param.id ? updateById : create
+ this.subLoading = true
+ fn(param).then(res => {
+ if (res.code == 200) {
+ this.subLoading = false
+ this.$emit('success')
+ Message.success('淇濆瓨鎴愬姛')
+ this.close()
+ }
+ }).catch(() => {
+ this.subLoading = false
+ })
+ }
+ })
+ },
+ initData() {
+ fetchList({
+ model: { type: 5 },
+ capacity: 1000,
+ page: 1,
+ }).then(res => {
+ this.cateList = res.records || []
+ })
+
+ },
+ changeSel(e) {
+ if (e && e.length == 1) {
+ this.$set(this.param, 'catePId', e[0])
+ this.$set(this.param, 'cateId', '')
+ } else if (e && e.length == 2) {
+ this.$set(this.param, 'catePId', e[0])
+ this.$set(this.param, 'cateId', e[1])
+ } else {
+ this.$set(this.param, 'catePId', '')
+ this.$set(this.param, 'cateId', '')
+ }
+ this.search()
+ },
+ uploadAvatarSuccess(file) {
+ this.$set(this.param, 'imgurl', file.imgurl)
+ this.$set(this.param, 'imgurlfull', file.imgurlfull)
+ },
+ close() {
+ this.isShowModal = false
+ this.$emit('close')
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped></style>
\ No newline at end of file
diff --git a/admin/src/views/operation/components/maintain.vue b/admin/src/views/operation/components/maintain.vue
new file mode 100644
index 0000000..5ec2b19
--- /dev/null
+++ b/admin/src/views/operation/components/maintain.vue
@@ -0,0 +1,222 @@
+<template>
+ <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-select v-model="param.deviceId" filterable clearable>
+ <el-option v-for="item in deviceList" :value="item" :label="item"></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-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-select>
+ </el-form-item>
+ <el-form-item label="鐜板満鐓х墖" prop="">
+ <div class="file_list">
+ <el-upload class="avatar-uploader" :data="uploadData" :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>
+ <div>鍥剧墖/瑙嗛</div>
+ </div>
+ </el-upload>
+ <div v-for="(item, i) in fileList" :key="i" class="item">
+ <i @click="handleDelImg(i)" class="el-icon-error close"></i>
+ <el-image :src="item.fileurlFull" :preview-src-list="[item.fileurlFull]" v-if="item.type == 0"
+ class="img"></el-image>
+ <video :src="item.fileurlFull" controls v-if="item.type == 1" class="img"></video>
+ </div>
+ </div>
+ </el-form-item>
+ <el-form-item label="杩愮淮澶囨敞" prop="">
+ <el-input type="textarea" :rows="4" v-model="param.remark" placeholder="璇疯緭鍏�" />
+ </el-form-item>
+ <el-form-item label="杩愮淮鏃堕棿" prop="">
+ <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>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import UploadAvatarImage from '@/components/common/UploadAvatarImage'
+import { fetchList } from '@/api/Inspection/device'
+import { Message, Loading } from 'element-ui'
+export default {
+ components: { GlobalWindow, UploadAvatarImage },
+ data() {
+ return {
+ isShowModal: false,
+ subLoading: false,
+ param: {},
+ deviceList: [],
+ rules: {
+ name: [{ required: true, message: '璇疯緭鍏�' }],
+ code: [{ required: true, message: '璇疯緭鍏�' }]
+ },
+
+ loadingInstance: null,
+ uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadBatch',
+ fileList: [],
+ uploadData: {
+ folder: 'HIDDEN_DANGER_FILE'
+ },
+
+ }
+ },
+ created() {
+ this.initData()
+ },
+ methods: {
+ handleSub() {
+ const { param, subLoading } = this
+ this.$refs['paramRef'].validate((valid) => {
+ if (valid) {
+ let fn = param.id ? updateById : create
+ this.subLoading = true
+ fn(param).then(res => {
+ if (res.code == 200) {
+ this.subLoading = false
+ this.$emit('success')
+ Message.success('淇濆瓨鎴愬姛')
+ this.close()
+ }
+ }).catch(() => {
+ this.subLoading = false
+ })
+ }
+ })
+ },
+ initData() {
+ fetchList({
+ model: {},
+ capacity: 1000,
+ page: 1,
+ }).then(res => {
+ this.deviceList = res || []
+ })
+
+ },
+ changeSel(e) {
+ if (e && e.length == 1) {
+ this.$set(this.param, 'catePId', e[0])
+ this.$set(this.param, 'cateId', '')
+ } else if (e && e.length == 2) {
+ this.$set(this.param, 'catePId', e[0])
+ this.$set(this.param, 'cateId', e[1])
+ } else {
+ this.$set(this.param, 'catePId', '')
+ this.$set(this.param, 'cateId', '')
+ }
+ this.search()
+ },
+ beforeUpload(file) {
+ if (['video/mp4', 'video/ogg', 'video/flv', 'video/avi', 'video/wmv', 'video/rmvb', 'image/jpeg', 'image/jpg', 'image/png', 'image/gif'].indexOf(file.type) == -1) {
+ this.$message.error('璇蜂笂浼犳纭殑瑙嗛/鍥剧墖鏍煎紡')
+ return false
+ }
+ this.loadingInstance = Loading.service({
+ lock: true,
+ text: 'Loading',
+ spinner: 'el-icon-loading',
+ background: 'rgba(0, 0, 0, 0.7)'
+ })
+ },
+ uploadError() {
+ this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
+ if (this.loadingInstance) {
+ this.loadingInstance.close()
+ }
+ })
+ },
+ uploadAvatarSuccess(file) {
+ this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
+ if (this.loadingInstance) {
+ this.loadingInstance.close()
+ }
+ })
+ console.log('file', file)
+ const item = file.data[0]
+ if (['.mp4', '.avi', '.flv', '.wmv'].some(char => item.imgaddr.includes(char))) {
+ this.fileList.push({
+ type: 1,
+ fileurl: item.imgaddr,
+ fileurlFull: item.url
+ })
+ } else {
+ this.fileList.push({
+ type: 0,
+ fileurl: item.imgaddr,
+ fileurlFull: item.url
+ })
+ }
+ console.log('file', this.fileList)
+ // this.$set(this.param, 'faceImg', file.imgurl)
+ // this.$set(this.param, 'faceImgUrl', file.imgurlfull)
+ },
+ handleDelImg(i) {
+ this.fileList.splice(i, 1)
+ },
+ close() {
+ this.isShowModal = false
+ this.$emit('close')
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+.file_list {
+ display: flex;
+ flex-wrap: wrap;
+ .avatar-uploader{
+ width: 92px;
+ height: 92px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border: 1px dashed #d9d9d9;
+ }
+ .item {
+ width: 92px;
+ max-height: 92px;
+ margin-left: 10px;
+ position: relative;
+ border: 1px dashed #d9d9d9;
+ border-radius: 4px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ .close {
+ font-size: 20px;
+ position: absolute;
+ right: -10px;
+ top: -10px;
+ z-index: 111;
+ color: red;
+ cursor: pointer;
+ }
+
+ .img {
+ width: 92px;
+ max-height: 92px;
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/admin/src/views/operation/device.vue b/admin/src/views/operation/device.vue
index e69de29..202eccd 100644
--- a/admin/src/views/operation/device.vue
+++ b/admin/src/views/operation/device.vue
@@ -0,0 +1,138 @@
+<template>
+ <div class="main_app">
+ <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" />
+ <div class="mt20">
+ <el-button type="primary" @click="handleEdit()" icon="el-icon-plus"
+ v-permissions="['business:ywpatrolline:create']">鏂板缓</el-button>
+ </div>
+ <el-table v-loading="loading" :data="list" stripe>
+ <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="" label="璁惧鍒嗙被" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="modelNo" label="璁惧鍨嬪彿" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="realName" label="绠$悊鍛�" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="company" label="璁惧渚涘簲鍟�" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="status" label="璁惧鐘舵��" min-width="100" show-overflow-tooltip />
+ <el-table-column label="鎿嶄綔" min-width="120" fixed="right">
+ <template slot-scope="{row}">
+ <el-button type="text" @click="handleEdit(row)" icon="el-icon-edit"
+ v-permissions="['business:category:update']">缂栬緫</el-button>
+ <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
+ v-permissions="['business:category:delete']">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <div class="mt20">
+ <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
+ </div>
+ <Edit v-if="showEdit" ref="EditRef" @success="getList" @close="showEdit = false" />
+ </div>
+</template>
+
+<script>
+import Pagination from '@/components/common/Pagination'
+import QueryForm from '@/components/common/QueryForm'
+import Edit from './components/deviceEdit'
+import { fetchList, deleteById } from '@/api/Inspection/device'
+export default {
+ components: {
+ Pagination,
+ QueryForm,
+ Edit
+ },
+ data() {
+ return {
+ loading: false,
+ showEdit: false,
+ pagination: {
+ pageSize: 10,
+ page: 1,
+ total: 0
+ },
+ filters: {},
+ list: [],
+ total: 0,
+ queryFormConfig: {
+ formItems: [
+ {
+ filed: 'name',
+ type: 'input',
+ label: '璁惧鍚嶇О',
+ placeholder: '璇疯緭鍏ヨ澶囧悕绉�/缂栫爜'
+ },
+ {
+ filed: 'status',
+ type: 'select',
+ label: '璁惧鐘舵��',
+ options: [
+ { value: 0, label: '姝e父' },
+ { value: 1, label: '鎹熷潖' },
+ { value: 2, label: '鎶ュ簾' },
+ ]
+ },
+ ],
+ online: true
+ }
+ }
+ },
+ created() {
+ this.getList()
+ },
+ methods: {
+ getList(page) {
+ const { pagination, filters } = this
+ this.loading = true
+ fetchList({
+ model: {
+ ...filters,
+ },
+ capacity: pagination.pageSize,
+ page: page || pagination.page,
+ }).then(res => {
+ this.loading = false
+ this.list = res.records || []
+ this.list.forEach(item => {
+ item.stautsName = item.status == 0 ? '姝e父' : item.status == 1 ? '鎹熷潖' : '鎶ュ簾'
+ })
+ this.pagination.total = res.total || 0
+ }, () => {
+ this.loading = false
+ })
+ },
+ handleEdit(row) {
+ this.showEdit = true
+ this.$nextTick(() => {
+ this.$refs.EditRef.isShowModal = true
+ if (row && row.id) {
+ this.$refs.EditRef.getDetail(row.id)
+ }
+ })
+
+ },
+ handleDel(row) {
+ let message = `纭鍒犻櫎璇ヨ褰曞悧?`
+ this.$dialog.deleteConfirm(message)
+ .then(() => {
+ this.isWorking.delete = true
+ deleteById(row.id)
+ .then(() => {
+ this.$tip.apiSuccess('鍒犻櫎鎴愬姛')
+ this.getList()
+ })
+ })
+ .catch(() => { })
+ },
+ clear() {
+ this.filters = {}
+ this.pagination.pageSize = 10
+ this.pagination.page = 1
+ this.getList()
+ },
+ handleSizeChange(capacity) {
+ this.pagination.pageSize = capacity
+ }
+ }
+}
+</script>
+
+<style></style>
diff --git a/admin/src/views/operation/record.vue b/admin/src/views/operation/record.vue
index e69de29..53e95ad 100644
--- a/admin/src/views/operation/record.vue
+++ b/admin/src/views/operation/record.vue
@@ -0,0 +1,138 @@
+<template>
+ <div class="main_app">
+ <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" />
+ <div class="mt20">
+ <el-button type="primary" @click="handleEdit()" icon="el-icon-plus"
+ v-permissions="['business:ywpatrolline:create']">鏂板缓</el-button>
+ <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 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>
+ </template>
+ </el-table-column>
+ </el-table>
+ <div class="mt20">
+ <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
+ </div>
+ <Edit v-if="showEdit" ref="EditRef" @success="getList" @close="showEdit = false" />
+ </div>
+</template>
+
+<script>
+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'
+export default {
+ components: {
+ Pagination,
+ QueryForm,
+ Edit
+ },
+ data() {
+ return {
+ loading: false,
+ showEdit: false,
+ pagination: {
+ pageSize: 10,
+ page: 1,
+ total: 0
+ },
+ filters: {},
+ list: [],
+ total: 0,
+ queryFormConfig: {
+ formItems: [
+ {
+ filed: 'name',
+ type: 'input',
+ label: '璁惧鍚嶇О',
+ placeholder: '璇疯緭鍏ヨ澶囧悕绉�/缂栫爜'
+ },
+ {
+ filed: 'selTime',
+ type: 'datetimerange',
+ label: '鍒涘缓鏃堕棿'
+ },
+ ],
+ online: true
+ }
+ }
+ },
+ created() {
+ this.getList()
+ },
+ methods: {
+ getList(page) {
+ const { pagination, filters } = this
+ this.loading = true
+ fetchList({
+ model: {
+ ...filters,
+ },
+ capacity: pagination.pageSize,
+ page: page || pagination.page,
+ }).then(res => {
+ this.loading = false
+ this.list = res.records || []
+ this.list.forEach(item => {
+ item.stautsName = item.status == 0 ? '姝e父' : item.status == 1 ? '鎹熷潖' : '鎶ュ簾'
+ })
+ this.pagination.total = res.total || 0
+ }, () => {
+ this.loading = false
+ })
+ },
+ handleEx() {
+
+ },
+ handleEdit(row) {
+ this.showEdit = true
+ this.$nextTick(() => {
+ this.$refs.EditRef.isShowModal = true
+ if (row && row.id) {
+ this.$refs.EditRef.getDetail(row.id)
+ }
+ })
+
+ },
+ handleDetail() {
+
+ },
+ handleDel(row) {
+ let message = `纭鍒犻櫎璇ヨ褰曞悧?`
+ this.$dialog.deleteConfirm(message)
+ .then(() => {
+ this.isWorking.delete = true
+ deleteById(row.id)
+ .then(() => {
+ this.$tip.apiSuccess('鍒犻櫎鎴愬姛')
+ this.getList()
+ })
+ })
+ .catch(() => { })
+ },
+ clear() {
+ this.filters = {}
+ this.pagination.pageSize = 10
+ this.pagination.page = 1
+ this.getList()
+ },
+ handleSizeChange(capacity) {
+ this.pagination.pageSize = capacity
+ this.getList()
+ }
+ }
+}
+</script>
+
+<style></style>
diff --git a/admin/src/views/project/buildingList.vue b/admin/src/views/project/buildingList.vue
index d84c6b1..b3dd1ec 100644
--- a/admin/src/views/project/buildingList.vue
+++ b/admin/src/views/project/buildingList.vue
@@ -6,28 +6,26 @@
<el-input v-model="searchForm.name" placeholder="璇疯緭鍏ユゼ瀹囧悕绉�" @keypress.enter.native="search"></el-input>
</el-form-item>
<el-form-item label="鎵�灞為」鐩�" prop="projectId">
- <el-select v-model="searchForm.projectId">
- <el-option v-for="item in projectList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
+ <el-select v-model="searchForm.projectId">
+ <el-option v-for="item in projectList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+ </el-select>
</el-form-item>
<section>
<el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywbuilding:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
+ <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywbuilding:exportExcel']"
+ @click="exportExcel">瀵煎嚭</el-button>
<el-button @click="reset">閲嶇疆</el-button>
</section>
</el-form>
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
<ul class="toolbar" v-permissions="['business:ywbuilding:create', 'business:ywbuilding:delete']">
- <li><el-button type="primary" @click="editClick()" icon="el-icon-plus" v-permissions="['business:ywbuilding:create']">鏂板缓</el-button></li>
- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:ywbuilding:delete']">鍒犻櫎</el-button></li>
+ <li><el-button type="primary" @click="editClick()" icon="el-icon-plus"
+ v-permissions="['business:ywbuilding:create']">鏂板缓</el-button></li>
+ <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete"
+ v-permissions="['business:ywbuilding:delete']">鍒犻櫎</el-button></li>
</ul>
- <el-table
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
- >
+ <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column prop="name" label="妤煎畤鍚嶇О" min-width="100px">
<template v-slot="scope">
@@ -39,30 +37,25 @@
<el-table-column prop="area" label="寤虹瓚闈㈢Н(m虏)" min-width="80px"></el-table-column>
<el-table-column prop="cqArea" label="绠$悊闈㈢Н(m虏)" min-width="80px"></el-table-column>
<el-table-column prop="" label="鎴块棿鎬绘暟(闂�)" min-width="80px"></el-table-column>
- <el-table-column prop="" label="鍙嫑鍟嗘埧婧愭暟閲�(闂�)" min-width="100px"></el-table-column>
- <el-table-column
- v-if="containPermissions(['business:ywbuilding:update', 'business:ywbuilding:delete'])"
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
+ <el-table-column prop="" label="鍙嫑鍟嗘埧婧愭暟閲�(闂�)" min-width="100px"></el-table-column>
+ <el-table-column v-if="containPermissions(['business:ywbuilding:update', 'business:ywbuilding:delete'])"
+ label="鎿嶄綔" min-width="120" fixed="right">
<template slot-scope="{row}">
- <el-button type="text" @click="editClick(row)" icon="el-icon-edit" v-permissions="['business:ywbuilding:update']">缂栬緫</el-button>
- <el-button type="text" @click="editFloor(row)" v-permissions="['business:ywbuilding:update']">妤煎眰绠$悊</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:ywbuilding:delete']">鍒犻櫎</el-button>
+ <el-button type="text" @click="editClick(row)" icon="el-icon-edit"
+ v-permissions="['business:ywbuilding:update']">缂栬緫</el-button>
+ <el-button type="text" @click="editFloor(row)"
+ v-permissions="['business:ywbuilding:update']">妤煎眰绠$悊</el-button>
+ <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
+ v-permissions="['business:ywbuilding:delete']">鍒犻櫎</el-button>
</template>
</el-table-column>
</el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
+ <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
</pagination>
</template>
<!-- 鏂板缓/淇敼 -->
- <OperaYwBuildingWindow ref="operaYwBuildingWindow" @success="handlePageChange"/>
- <FloorLevel ref="FloorLevelRef" @success="handlePageChange"/>
+ <OperaYwBuildingWindow ref="operaYwBuildingWindow" @success="handlePageChange" />
+ <FloorLevel ref="FloorLevelRef" @success="handlePageChange" />
<BuildingDetail ref="BuildingDetailRef" />
</TableLayout>
</template>
@@ -78,18 +71,18 @@
export default {
name: 'YwBuilding',
extends: BaseTable,
- components: { TableLayout, Pagination, OperaYwBuildingWindow ,BuildingDetail, FloorLevel},
- data () {
+ components: { TableLayout, Pagination, OperaYwBuildingWindow, BuildingDetail, FloorLevel },
+ data() {
return {
// 鎼滅储
- searchForm: {
+ searchForm: {
name: '',
projectId: ''
},
projectList: []
}
},
- created () {
+ created() {
this.config({
module: '杩愮淮妤煎畤淇℃伅琛�',
api: '/project/ywBuilding',
@@ -106,9 +99,9 @@
})
},
editClick(row) {
- if(row && row.id){
+ if (row && row.id) {
this.$refs.operaYwBuildingWindow.open('缂栬緫妤煎畤')
- }else{
+ } else {
this.$refs.operaYwBuildingWindow.open('鏂板缓妤煎畤')
}
this.$refs.operaYwBuildingWindow.getProject()
diff --git a/admin/src/views/project/components/OperaYwBuildingWindow.vue b/admin/src/views/project/components/OperaYwBuildingWindow.vue
index 2b92f59..d095dc0 100644
--- a/admin/src/views/project/components/OperaYwBuildingWindow.vue
+++ b/admin/src/views/project/components/OperaYwBuildingWindow.vue
@@ -2,7 +2,7 @@
<GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
<el-form :model="form" ref="form" :rules="rules">
<el-form-item label="鎵�灞為」鐩�" prop="projectId" clearable placeholder="璇烽�夋嫨椤圭洰">
- <el-select v-model="form.projectId">
+ <el-select v-model="form.projectId" filterable clearable>
<el-option v-for="item in projectList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
diff --git a/admin/src/views/workorder/components/OperaCategoryWindow.vue b/admin/src/views/workorder/components/OperaCategoryWindow.vue
index b3588eb..6b9bb0f 100644
--- a/admin/src/views/workorder/components/OperaCategoryWindow.vue
+++ b/admin/src/views/workorder/components/OperaCategoryWindow.vue
@@ -1,22 +1,16 @@
<template>
<GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" width="600px" @close="close" @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-form-item>
<el-form-item label="鎵�灞炲垎绫�" prop="parentId">
<el-select :disabled="form.id" v-model="form.parentId" placeholder="涓嶅~涓哄垯涓�绾у垎绫�">
<el-option v-for="op in dataList" :key="op.id" :label="op.name" :value="op.id"></el-option>
</el-select>
</el-form-item>
- <el-form-item label="鍒嗙被鍚嶇О" prop="name">
- <el-input v-model="form.name" placeholder="璇疯緭鍏ュ垎绫诲悕绉�" v-trim />
- </el-form-item>
- <!-- <el-form-item label="鐘舵��" prop="status">
- <el-select v-model="form.status" placeholder="璇烽�夋嫨">
- <el-option label="鍚敤" value="0"></el-option>
- <el-option label="绂佺敤" value="1"></el-option>
- </el-select>
- </el-form-item> -->
- <el-form-item label="澶囨敞" prop="remark">
- <el-input type="textarea" v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim />
+ <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="sortnum">
+ <el-input v-model="form.sortnum" oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 6)" v-trim />
</el-form-item>
</el-form>
</GlobalWindow>
@@ -38,7 +32,8 @@
name: '',
remark: '',
status: '',
- type: 1
+ sortnum: '',
+ type: 3
},
// 楠岃瘉瑙勫垯
rules: {
@@ -60,7 +55,7 @@
},
methods: {
getList() {
- fetchCateList({}).then(res => {
+ fetchCateList({ type: 3 }).then(res => {
this.dataList = res || []
})
diff --git a/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue b/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
index 1bdcfef..f292342 100644
--- a/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
+++ b/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
@@ -1,107 +1,60 @@
<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="creator">
- <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
+ <el-form-item label="浣嶇疆绫诲瀷" prop="areaType">
+ <el-select v-model="form.areaType">
+ <el-option label="瀹ゅ唴缁翠慨" value="0"></el-option>
+ <el-option label="鍏叡缁翠慨" value="1"></el-option>
+ </el-select>
</el-form-item>
- <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
- <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
+ <el-form-item label="鎶ヤ慨鍖哄煙">
+
</el-form-item>
- <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
- <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
- </el-form-item>
- <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
- <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
- </el-form-item>
- <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
- <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
- </el-form-item>
- <el-form-item label="鏍囬" prop="title">
- <el-input v-model="form.title" placeholder="璇疯緭鍏ユ爣棰�" v-trim/>
- </el-form-item>
- <el-form-item label="澶囨敞" prop="remark">
- <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
- </el-form-item>
- <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status">
- <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" v-trim/>
- </el-form-item>
- <el-form-item label="鎺掑簭鐮�" prop="sortnum">
- <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
- </el-form-item>
- <el-form-item label="鎯呭喌璇存槑" prop="content">
- <el-input v-model="form.content" placeholder="璇疯緭鍏ユ儏鍐佃鏄�" v-trim/>
+ <el-form-item label="鍒嗙被" prop="cateId">
+ <el-select v-model="form.cateId">
+ <el-option label="" value=""></el-option>
+ </el-select>
</el-form-item>
<el-form-item label="涓婇棬鏃堕棿" prop="getDate">
- <el-date-picker v-model="form.getDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ヤ笂闂ㄦ椂闂�"></el-date-picker>
+ <el-date-picker type="datetime" v-model="form.getDate" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss"
+ placeholder="璇烽�夋嫨涓婇棬鏃堕棿"></el-date-picker>
</el-form-item>
- <el-form-item label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_project)" prop="projectId">
- <el-input v-model="form.projectId" placeholder="璇疯緭鍏ユ墍灞為」鐩紪鐮侊紙鍏宠仈yw_project)" v-trim/>
+ <el-form-item label="鐜板満鍥剧墖">
+ <div class="file_list">
+ <el-upload class="avatar-uploader" :data="uploadData" :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>
+ <div>鍥剧墖/瑙嗛</div>
+ </div>
+ </el-upload>
+ <div v-for="(item, i) in fileList" :key="i" class="item">
+ <i @click="handleDelImg(i)" class="el-icon-error close"></i>
+ <el-image :src="item.fileurlFull" :preview-src-list="[item.fileurlFull]" v-if="item.type == 0"
+ class="img"></el-image>
+ <video :src="item.fileurlFull" controls v-if="item.type == 1" class="img"></video>
+ </div>
+ </div>
</el-form-item>
- <el-form-item label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_building)" prop="buildingId">
- <el-input v-model="form.buildingId" placeholder="璇疯緭鍏ユ墍灞為」鐩紪鐮侊紙鍏宠仈yw_building)" v-trim/>
- </el-form-item>
- <el-form-item label="鎵�灞炴埧闂寸紪鐮侊紙鍏宠仈yw_room)" prop="roomId">
- <el-input v-model="form.roomId" placeholder="璇疯緭鍏ユ墍灞炴埧闂寸紪鐮侊紙鍏宠仈yw_room)" v-trim/>
- </el-form-item>
- <el-form-item label="鎻愭姤浜虹紪鐮�" prop="userId">
- <el-input v-model="form.userId" placeholder="璇疯緭鍏ユ彁鎶ヤ汉缂栫爜" v-trim/>
- </el-form-item>
- <el-form-item label="鑱旂郴鐢佃瘽" prop="phone">
- <el-input v-model="form.phone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" v-trim/>
- </el-form-item>
- <el-form-item label="鎻愭姤鏃堕棿" prop="submitDate">
- <el-date-picker v-model="form.submitDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ彁鎶ユ椂闂�"></el-date-picker>
- </el-form-item>
- <el-form-item label="宸ュ崟鍒嗙被缂栫爜(鍏宠仈category锛�" prop="cateId">
- <el-input v-model="form.cateId" placeholder="璇疯緭鍏ュ伐鍗曞垎绫荤紪鐮�(鍏宠仈category锛�" v-trim/>
- </el-form-item>
- <el-form-item label="淇濅慨鍖哄煙绫诲瀷 0瀹ゅ唴缁翠慨 1鍏叡鍖哄煙" prop="areaType">
- <el-input v-model="form.areaType" placeholder="璇疯緭鍏ヤ繚淇尯鍩熺被鍨� 0瀹ゅ唴缁翠慨 1鍏叡鍖哄煙" v-trim/>
- </el-form-item>
- <el-form-item label="宸ュ崟缂栧彿" prop="code">
- <el-input v-model="form.code" placeholder="璇疯緭鍏ュ伐鍗曠紪鍙�" v-trim/>
- </el-form-item>
- <el-form-item label="澶勭悊鐘舵�� 0寰呭鐞� 1宸插垎娲� 2宸插鐞�" prop="dealStatus">
- <el-input v-model="form.dealStatus" placeholder="璇疯緭鍏ュ鐞嗙姸鎬� 0寰呭鐞� 1宸插垎娲� 2宸插鐞�" v-trim/>
- </el-form-item>
- <el-form-item label="鍒嗘淳浜虹紪鐮�(鍏宠仈system_user)" prop="dispatchUserId">
- <el-input v-model="form.dispatchUserId" placeholder="璇疯緭鍏ュ垎娲句汉缂栫爜(鍏宠仈system_user)" v-trim/>
- </el-form-item>
- <el-form-item label="鍒嗘淳鏃堕棿" prop="dispatchDate">
- <el-date-picker v-model="form.dispatchDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垎娲炬椂闂�"></el-date-picker>
- </el-form-item>
- <el-form-item label="鍒嗘淳澶勭悊璇存槑" prop="dispatchInfo">
- <el-input v-model="form.dispatchInfo" placeholder="璇疯緭鍏ュ垎娲惧鐞嗚鏄�" v-trim/>
- </el-form-item>
- <el-form-item label="澶勭悊浜虹紪鐮�(鍏宠仈system_user)" prop="dealUserId">
- <el-input v-model="form.dealUserId" placeholder="璇疯緭鍏ュ鐞嗕汉缂栫爜(鍏宠仈system_user)" v-trim/>
- </el-form-item>
- <el-form-item label="澶勭悊鏃堕棿" prop="dealDate">
- <el-date-picker v-model="form.dealDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ鐞嗘椂闂�"></el-date-picker>
- </el-form-item>
- <el-form-item label="澶勭悊澶囨敞" prop="dealInfo">
- <el-input v-model="form.dealInfo" placeholder="璇疯緭鍏ュ鐞嗗娉�" v-trim/>
- </el-form-item>
- <el-form-item label="澶勭悊鏂瑰紡 0鎸囨淳鍚庡鐞� 1鐩存帴鍥炲" prop="dealType">
- <el-input v-model="form.dealType" placeholder="璇疯緭鍏ュ鐞嗘柟寮� 0鎸囨淳鍚庡鐞� 1鐩存帴鍥炲" v-trim/>
+ <el-form-item label="鎯呭喌璇存槑" prop="content">
+ <el-input type="textarea" :rows="4" v-model="form.content" placeholder="璇疯緭鍏ユ儏鍐佃鏄�" v-trim />
</el-form-item>
</el-form>
+ <!-- -->
+
</GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
+import { Loading } from 'element-ui'
export default {
name: 'OperaYwWorkorderWindow',
extends: BaseOpera,
components: { GlobalWindow },
- data () {
+ data() {
return {
// 琛ㄥ崟鏁版嵁
form: {
@@ -124,7 +77,7 @@
phone: '',
submitDate: '',
cateId: '',
- areaType: '',
+ areaType: '0',
code: '',
dealStatus: '',
dispatchUserId: '',
@@ -135,16 +88,115 @@
dealInfo: '',
dealType: ''
},
+ loadingInstance: null,
// 楠岃瘉瑙勫垯
rules: {
- }
+ },
+ uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadBatch',
+ fileList: [],
+ uploadData: {
+ folder: 'HIDDEN_DANGER_FILE'
+ },
}
},
- created () {
+ created() {
this.config({
api: '/workorder/ywWorkorder',
'field.id': 'id'
})
+ },
+ methods: {
+ beforeUpload (file) {
+ if (['video/mp4', 'video/ogg', 'video/flv', 'video/avi', 'video/wmv', 'video/rmvb', 'image/jpeg','image/jpg', 'image/png', 'image/gif'].indexOf(file.type) == -1) {
+ this.$message.error('璇蜂笂浼犳纭殑瑙嗛/鍥剧墖鏍煎紡')
+ return false
+ }
+ this.loadingInstance = Loading.service({
+ lock: true,
+ text: 'Loading',
+ spinner: 'el-icon-loading',
+ background: 'rgba(0, 0, 0, 0.7)'
+ })
+ },
+ uploadError() {
+ this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
+ if(this.loadingInstance){
+ this.loadingInstance.close()
+ }
+ })
+ },
+ uploadAvatarSuccess (file) {
+ this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
+ if(this.loadingInstance){
+ this.loadingInstance.close()
+ }
+ })
+ console.log('file', file)
+ const item = file.data[0]
+ if (['.mp4', '.avi', '.flv', '.wmv'].some(char => item.imgaddr.includes(char))) {
+ this.fileList.push({
+ type: 1,
+ fileurl: item.imgaddr,
+ fileurlFull: item.url
+ })
+ } else {
+ this.fileList.push({
+ type: 0,
+ fileurl: item.imgaddr,
+ fileurlFull: item.url
+ })
+ }
+ console.log('file', this.fileList)
+ // this.$set(this.param, 'faceImg', file.imgurl)
+ // this.$set(this.param, 'faceImgUrl', file.imgurlfull)
+ },
+ handleDelImg (i) {
+ this.fileList.splice(i, 1)
+ },
+ close(){
+ this.isShowModal = false
+ this.$emit('close')
+ }
}
}
</script>
+<style lang="scss" scoped>
+.file_list {
+ display: flex;
+ flex-wrap: wrap;
+ .avatar-uploader{
+ width: 92px;
+ height: 92px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border: 1px dashed #d9d9d9;
+ }
+ .item {
+ width: 92px;
+ max-height: 92px;
+ margin-left: 10px;
+ position: relative;
+ border: 1px dashed #d9d9d9;
+ border-radius: 4px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ .close {
+ font-size: 20px;
+ position: absolute;
+ right: -10px;
+ top: -10px;
+ z-index: 111;
+ color: red;
+ cursor: pointer;
+ }
+
+ .img {
+ width: 92px;
+ max-height: 92px;
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/admin/src/views/workorder/workorderCate.vue b/admin/src/views/workorder/workorderCate.vue
index a86289e..394d168 100644
--- a/admin/src/views/workorder/workorderCate.vue
+++ b/admin/src/views/workorder/workorderCate.vue
@@ -9,15 +9,9 @@
</ul>
<el-table row-key="id" :tree-props="{ children: 'childCategoryList' }" v-loading="isWorking.search"
:data="dataList" stripe @selection-change="handleSelectionChange">
- <el-table-column prop="name" label="鍒嗙被鍚嶇О" min-width="100px"></el-table-column>
- <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
- <!-- <el-table-column prop="status" label="鐘舵��" min-width="100px">
- <template slot-scope="{row}">
- <span v-if="row.status === 0">鍚敤</span>
- <span v-if="row.status === 1">绂佺敤</span>
- </template>
-</el-table-column> -->
- <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+ <el-table-column prop="name" label="宸ュ崟鍒嗙被" min-width="100px"></el-table-column>
+ <!-- <el-table-column prop="parentName" label="鎵�灞炲垎绫�" min-width="100px"></el-table-column> -->
+ <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
<el-table-column v-if="containPermissions(['business:category:update', 'business:category:delete'])" label="鎿嶄綔"
min-width="120" fixed="right">
<template slot-scope="{row}">
@@ -99,7 +93,7 @@
const { pagination, filters } = this
this.loading = true
fetchList({
- model: { ...filters },
+ model: { ...filters, type: 3 },
capacity: pagination.pageSize,
page: pagination.page,
}).then(res => {
diff --git a/admin/src/views/workorder/workorderList.vue b/admin/src/views/workorder/workorderList.vue
index 7af17bb..1173e81 100644
--- a/admin/src/views/workorder/workorderList.vue
+++ b/admin/src/views/workorder/workorderList.vue
@@ -2,74 +2,65 @@
<TableLayout :permissions="['business:ywworkorder:query']">
<!-- 鎼滅储琛ㄥ崟 -->
<el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_project)" prop="projectId">
- <el-input v-model="searchForm.projectId" placeholder="璇疯緭鍏ユ墍灞為」鐩紪鐮侊紙鍏宠仈yw_project)" @keypress.enter.native="search"></el-input>
+ <el-form-item prop="areaType">
+ <el-select v-model="searchForm.areaType">
+ <el-option label="瀹ゅ唴缁翠慨" value="0"></el-option>
+ <el-option label="鍏叡缁翠慨" value="1"></el-option>
+ </el-select>
</el-form-item>
- <el-form-item label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_building)" prop="buildingId">
- <el-input v-model="searchForm.buildingId" placeholder="璇疯緭鍏ユ墍灞為」鐩紪鐮侊紙鍏宠仈yw_building)" @keypress.enter.native="search"></el-input>
+ <el-form-item label="璇烽�夋嫨鎶ヤ慨鍖哄煙" prop="buildingId">
+ <el-input v-model="searchForm.buildingId" placeholder="璇疯緭鍏ユ墍灞為」鐩紪鐮侊紙鍏宠仈yw_building)"
+ @keypress.enter.native="search"></el-input>
</el-form-item>
- <el-form-item label="鎵�灞炴埧闂寸紪鐮侊紙鍏宠仈yw_room)" prop="roomId">
- <el-input v-model="searchForm.roomId" placeholder="璇疯緭鍏ユ墍灞炴埧闂寸紪鐮侊紙鍏宠仈yw_room)" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="宸ュ崟鍒嗙被缂栫爜(鍏宠仈category锛�" prop="cateId">
- <el-input v-model="searchForm.cateId" placeholder="璇疯緭鍏ュ伐鍗曞垎绫荤紪鐮�(鍏宠仈category锛�" @keypress.enter.native="search"></el-input>
+ <el-form-item prop="cateId">
+ <el-input v-model="searchForm.cateId" placeholder="鎶ヤ慨鐗╁搧绫诲埆" @keypress.enter.native="search"></el-input>
</el-form-item>
<section>
<el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywworkorder:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
+ <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywworkorder:exportExcel']"
+ @click="exportExcel">瀵煎嚭</el-button>
<el-button @click="reset">閲嶇疆</el-button>
</section>
</el-form>
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
<ul class="toolbar" v-permissions="['business:ywworkorder:create', 'business:ywworkorder:delete']">
- <li><el-button type="primary" @click="$refs.operaYwWorkorderWindow.open('鏂板缓宸ュ崟')" icon="el-icon-plus" v-permissions="['business:ywworkorder:create']">鏂板缓</el-button></li>
- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:ywworkorder:delete']">鍒犻櫎</el-button></li>
+ <li><el-button type="primary" @click="$refs.operaYwWorkorderWindow.open('鏂板缓宸ュ崟')" icon="el-icon-plus"
+ v-permissions="['business:ywworkorder:create']">鏂板缓</el-button></li>
+ <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete"
+ v-permissions="['business:ywworkorder:delete']">鍒犻櫎</el-button></li>
</ul>
- <el-table
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
- >
- <el-table-column type="selection" width="55"></el-table-column>
-
-
-
- <el-table-column prop="projectId" label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_project)" min-width="100px"></el-table-column>
- <el-table-column prop="buildingId" label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_building)" min-width="100px"></el-table-column>
- <el-table-column prop="roomId" label="鎵�灞炴埧闂寸紪鐮侊紙鍏宠仈yw_room)" min-width="100px"></el-table-column>
- <el-table-column prop="userId" label="鎻愭姤浜虹紪鐮�" min-width="100px"></el-table-column>
- <el-table-column prop="phone" label="鑱旂郴鐢佃瘽" min-width="100px"></el-table-column>
- <el-table-column prop="submitDate" label="鎻愭姤鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="cateId" label="宸ュ崟鍒嗙被缂栫爜(鍏宠仈category锛�" min-width="100px"></el-table-column>
- <el-table-column prop="areaType" label="淇濅慨鍖哄煙绫诲瀷 0瀹ゅ唴缁翠慨 1鍏叡鍖哄煙" min-width="100px"></el-table-column>
-
- <el-table-column prop="dealStatus" label="澶勭悊鐘舵�� 0寰呭鐞� 1宸插垎娲� 2宸插鐞�" min-width="100px"></el-table-column>
-
- <el-table-column prop="dealUserId" label="澶勭悊浜虹紪鐮�(鍏宠仈system_user)" min-width="100px"></el-table-column>
- <el-table-column prop="dealType" label="澶勭悊鏂瑰紡 0鎸囨淳鍚庡鐞� 1鐩存帴鍥炲" min-width="100px"></el-table-column>
- <el-table-column
- v-if="containPermissions(['business:ywworkorder:update', 'business:ywworkorder:delete'])"
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
+ <el-table v-loading="isWorking.search" :data="tableData.list" stripe>
+ <el-table-column prop="areaType" label="浣嶇疆绫诲瀷" min-width="80px">
+ <template v-slot="scope">
+ <span v-if="scope.row.areaType == 0">瀹ゅ唴瑁呬慨</span>
+ <span v-if="scope.row.areaType == 1">鍏叡鍖哄煙</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="" label="鎶ヤ慨鍖哄煙" min-width="100px"></el-table-column>
+ <el-table-column prop="cateName" label="鎶ヤ慨鐗╁搧绫诲瀷" min-width="100px"></el-table-column>
+ <el-table-column prop="userName" label="涓婃姤浜�" min-width="100px"></el-table-column>
+ <el-table-column prop="submitDate" label="涓婃姤鏃堕棿" min-width="100px"></el-table-column>
+ <el-table-column prop="dealUserName" label="澶勭悊浜�" min-width="100px"></el-table-column>
+ <el-table-column label="澶勭悊缁撴灉" min-width="100px">
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaYwWorkorderWindow.open('缂栬緫宸ュ崟', row)" icon="el-icon-edit" v-permissions="['business:ywworkorder:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:ywworkorder:delete']">鍒犻櫎</el-button>
+ <span v-if="row.dealStatus == 0">寰呮寚娲�</span>
+ <span v-if="row.dealStatus == 1">宸叉寚娲�</span>
+ <span v-if="row.dealStatus == 2">宸插鐞�</span>
+ </template>
+ </el-table-column>
+ <el-table-column v-if="containPermissions(['business:ywworkorder:update'])"
+ label="鎿嶄綔" min-width="80" fixed="right">
+ <template slot-scope="{row}">
+ <span class="primaryColor cu">鏌ョ湅璇︽儏</span>
</template>
</el-table-column>
</el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
+ <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
</pagination>
</template>
<!-- 鏂板缓/淇敼 -->
- <OperaYwWorkorderWindow ref="operaYwWorkorderWindow" @success="handlePageChange"/>
+ <OperaYwWorkorderWindow ref="operaYwWorkorderWindow" @success="handlePageChange" />
</TableLayout>
</template>
@@ -82,11 +73,11 @@
name: 'YwWorkorder',
extends: BaseTable,
components: { TableLayout, Pagination, OperaYwWorkorderWindow },
- data () {
+ data() {
return {
// 鎼滅储
searchForm: {
- id: '',
+ areaType: '',
creator: '',
createDate: '',
editor: '',
@@ -105,7 +96,6 @@
phone: '',
submitDate: '',
cateId: '',
- areaType: '',
code: '',
dealStatus: '',
dispatchUserId: '',
@@ -118,7 +108,7 @@
}
}
},
- created () {
+ created() {
this.config({
module: '杩愮淮宸ュ崟淇℃伅琛�',
api: '/workorder/ywWorkorder',
--
Gitblit v1.9.3