From 6fa42e992669e6c1b5d4be14e83e1a730ec36c40 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期五, 22 十二月 2023 09:11:23 +0800
Subject: [PATCH] Mr.Shi
---
admin/src/components/business/OperaDeviceRoleFWindow.vue | 10
admin/src/views/business/problems.vue | 44 ++
admin/src/views/business/laborSource.vue | 101 +++++--
admin/src/views/business/deviceRole.vue | 44 ++
admin/src/views/business/deviceRole_f.vue | 50 ++-
admin/vue.config.js | 2
admin/src/views/business/problemLog.vue | 24 +
admin/src/views/business/visitorSources.vue | 83 ++++-
admin/src/api/system/common.js | 20 +
admin/src/views/business/device.vue | 20
admin/src/components/business/OperaDeviceRoleWindow.vue | 140 +++++++++-
admin/src/api/business/deviceRole.js | 10
admin/src/api/business/device.js | 7
admin/src/components/business/OperaProblemsWindow.vue | 171 ++++++++++--
14 files changed, 569 insertions(+), 157 deletions(-)
diff --git a/admin/src/api/business/device.js b/admin/src/api/business/device.js
index 221ac0f..16cb174 100644
--- a/admin/src/api/business/device.js
+++ b/admin/src/api/business/device.js
@@ -9,7 +9,12 @@
// 鍚屾
export function syncDevices (data) {
- return request.post('/business/erpsync/syncDevices', data)
+ return request.post('/business/hksync/syncDevices', data)
+}
+
+// 鑾峰彇闂ㄧ闆嗗悎-鎻愪緵缁欓棬绂佺粍
+export function getList (data) {
+ return request.post('/business/device/getList', data)
}
// 淇敼
diff --git a/admin/src/api/business/deviceRole.js b/admin/src/api/business/deviceRole.js
index 420d6bc..5e5578d 100644
--- a/admin/src/api/business/deviceRole.js
+++ b/admin/src/api/business/deviceRole.js
@@ -17,6 +17,16 @@
return request.post('/business/deviceRole/updateById', data)
}
+// 鏍规嵁ID淇敼榛樿闂ㄧ缁勭姸鎬�
+export function updateStatusById (data) {
+ return request.post('/business/deviceRole/updateStatusById', data)
+}
+
+// 銆愭捣搴枫�戝叏閲忓悓姝ヨ瀹㈡潈闄愮粍鎺ュ彛
+export function syncPrivilege (data) {
+ return request.post('/business/hksync/syncPrivilege', data)
+}
+
// 鍒犻櫎
export function deleteById (id) {
return request.get(`/business/deviceRole/delete/${id}`)
diff --git a/admin/src/api/system/common.js b/admin/src/api/system/common.js
index eed43bd..b116149 100644
--- a/admin/src/api/system/common.js
+++ b/admin/src/api/system/common.js
@@ -26,3 +26,23 @@
autoLogin: false
})
}
+
+// 璁垮鏉ヨ閰嶇疆
+export function getVisitConfigDTO () {
+ return request.get('/system/dictData/getVisitConfigDTO')
+}
+
+// 鍔冲姟鏉ヨ閰嶇疆
+export function getLaborConfigDTO () {
+ return request.get('/system/dictData/getLaborConfigDTO')
+}
+
+// 淇敼璁垮鏉ヨ閰嶇疆
+export function updateVisitConfig (data) {
+ return request.post('/system/dictData/updateVisitConfig', data)
+}
+
+// 淇敼鍔冲姟鏉ヨ閰嶇疆
+export function updateLaborConfigDTO (data) {
+ return request.post('/system/dictData/updateLaborConfigDTO', data)
+}
diff --git a/admin/src/components/business/OperaDeviceRoleFWindow.vue b/admin/src/components/business/OperaDeviceRoleFWindow.vue
index 9b5e912..9474f55 100644
--- a/admin/src/components/business/OperaDeviceRoleFWindow.vue
+++ b/admin/src/components/business/OperaDeviceRoleFWindow.vue
@@ -9,10 +9,10 @@
<el-form-item label="闂ㄧ缁勫悕绉�" prop="name">
<el-input v-model="form.name" placeholder="璇疯緭鍏ラ棬绂佺粍鍚嶇О" v-trim/>
</el-form-item>
- <el-form-item label="鎺堟潈闂ㄧ" prop="doorIds">
- <el-radio-group v-model="form.doorIds">
- <el-radio :label="3">璁垮</el-radio>
- <el-radio :label="6">鍔冲姟浜哄憳</el-radio>
+ <el-form-item label="閫傜敤鐢ㄦ埛" prop="type">
+ <el-radio-group v-model="form.type">
+ <el-radio label="0">鍔冲姟璁垮</el-radio>
+ <el-radio label="1">鏅�氳瀹�</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
@@ -32,7 +32,7 @@
form: {
id: null,
name: '',
- doorIds: ''
+ type: ''
},
// 楠岃瘉瑙勫垯
rules: {
diff --git a/admin/src/components/business/OperaDeviceRoleWindow.vue b/admin/src/components/business/OperaDeviceRoleWindow.vue
index 76ddcfb..4910ac9 100644
--- a/admin/src/components/business/OperaDeviceRoleWindow.vue
+++ b/admin/src/components/business/OperaDeviceRoleWindow.vue
@@ -6,27 +6,25 @@
@confirm="confirm"
>
<el-form :model="form" ref="form" :rules="rules">
- <el-form-item label="鍚嶇О" prop="name">
+ <el-form-item label="闂ㄧ缁勫悕绉�" prop="name">
<el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
</el-form-item>
- <el-form-item label="鏄惁榛樿" prop="isDefault">
+ <el-form-item label="榛樿闂ㄧ缁�" prop="isDefault">
<el-switch
v-model="form.isDefault"
active-color="#13ce66"
inactive-color="#ff4949"
- :active-value="1"
- :inactive-value="0">
+ :active-value="0"
+ :inactive-value="1">
</el-switch>
</el-form-item>
<el-form-item label="鎺堟潈闂ㄧ" prop="doorIds">
- <el-radio-group v-model="form.doorIds">
- <el-radio :label="3">鍏ㄩ儴闂ㄧ</el-radio>
- <el-radio :label="6">閮ㄥ垎闂ㄧ</el-radio>
+ <el-radio-group v-model="form.radio" @input="changeRadio">
+ <el-radio :label="0">鍏ㄩ儴闂ㄧ</el-radio>
+ <el-radio :label="1">閮ㄥ垎闂ㄧ</el-radio>
</el-radio-group>
- <el-checkbox-group v-model="form.doorIds">
- <el-checkbox label="闂ㄧA"></el-checkbox>
- <el-checkbox label="闂ㄧB"></el-checkbox>
- <el-checkbox label="闂ㄧC"></el-checkbox>
+ <el-checkbox-group v-model="form.doorIds" v-if="form.radio === 1">
+ <el-checkbox :label="item.id" v-for="(item, index) in device" :key="index">{{item.name}}</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-form>
@@ -36,21 +34,39 @@
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
+import { getList } from '@/api/business/device'
export default {
name: 'OperaDeviceRoleWindow',
extends: BaseOpera,
components: { GlobalWindow },
data () {
+ var validatePass = (rule, value, callback) => {
+ if (this.form.radio === 1) {
+ if (value.length === 0) {
+ callback(new Error('璇烽�夋嫨闂ㄧ璁惧'))
+ }
+ }
+ callback()
+ }
return {
// 琛ㄥ崟鏁版嵁
form: {
id: null,
name: '',
- isDefault: '',
- doorIds: ''
+ isDefault: 1,
+ doorIds: [],
+ status: 1,
+ radio: 0
},
+ device: [],
// 楠岃瘉瑙勫垯
rules: {
+ name: [
+ { required: true, message: '璇疯緭鍏ラ棬绂佺粍鍚嶇О' }
+ ],
+ doorIds: [
+ { validator: validatePass, trigger: 'blur' }
+ ]
}
}
},
@@ -59,6 +75,104 @@
api: '/business/deviceRole',
'field.id': 'id'
})
+ },
+ methods: {
+ confirm () {
+ this.$refs.form.validate((valid) => {
+ if (!valid) {
+ return
+ }
+ // 璋冪敤鏂板缓鎺ュ彛
+ this.isWorking = true
+ if (this.form.id == null || this.form.id === '') {
+ const doorNames = []
+ this.form.doorIds.forEach(item => {
+ this.device.forEach(row => {
+ if (item === row.id) {
+ doorNames.push(row.name)
+ }
+ })
+ })
+ this.api.create({
+ name: this.form.name,
+ status: this.form.status,
+ doorNames: doorNames.join(','),
+ type: 2,
+ isDefault: this.form.isDefault,
+ doorIds: this.form.doorIds.join(',')
+ })
+ .then(() => {
+ this.visible = false
+ this.$tip.apiSuccess('鏂板缓鎴愬姛')
+ this.$emit('success')
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.isWorking = false
+ })
+ } else {
+ const doorNames = []
+ this.form.doorIds.forEach(item => {
+ this.device.forEach(row => {
+ if (item === row.id) {
+ doorNames.push(row.name)
+ }
+ })
+ })
+ this.api.updateById({
+ id: this.form.id,
+ name: this.form.name,
+ status: this.form.status,
+ isDefault: this.form.isDefault,
+ type: 2,
+ doorNames: doorNames.join(','),
+ doorIds: this.form.doorIds.join(',')
+ })
+ .then(() => {
+ this.visible = false
+ this.$tip.apiSuccess('淇敼鎴愬姛')
+ this.$emit('success')
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.isWorking = false
+ })
+ }
+ })
+ },
+ // 鑾峰彇璁惧
+ getLists () {
+ getList({})
+ .then(res => {
+ this.device = res
+ })
+ },
+ changeRadio (e) {
+ this.form.doorIds = []
+ },
+ open (title, target) {
+ this.getLists()
+ this.title = title
+ this.visible = true
+ // 鏂板缓
+ if (target == null) {
+ this.$nextTick(() => {
+ this.$refs.form.resetFields()
+ this.form[this.configData['field.id']] = null
+ })
+ return
+ }
+ // 缂栬緫
+ this.$nextTick(() => {
+ for (const key in this.form) {
+ this.form[key] = target[key]
+ }
+ })
+ }
}
}
</script>
diff --git a/admin/src/components/business/OperaProblemsWindow.vue b/admin/src/components/business/OperaProblemsWindow.vue
index 5fb5b7c..abd0aae 100644
--- a/admin/src/components/business/OperaProblemsWindow.vue
+++ b/admin/src/components/business/OperaProblemsWindow.vue
@@ -1,50 +1,63 @@
<template>
<GlobalWindow
- :title="title"
- :visible.sync="visible"
- :confirm-working="isWorking"
- @confirm="confirm"
+ :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>
<el-form-item label="棰樼洰绫诲瀷" prop="type">
- <el-select v-model="form.type" placeholder="璇烽�夋嫨">
- <el-option label="鍒ゆ柇" value="0"></el-option>
- <el-option label="鍗曢��" value="1"></el-option>
- <el-option label="澶氶��" value="2"></el-option>
+ <el-select v-model="form.type" @change="changeType" placeholder="璇烽�夋嫨">
+ <el-option label="鍒ゆ柇" :value="0"></el-option>
+ <el-option label="鍗曢��" :value="1"></el-option>
+ <el-option label="澶氶��" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="閫傜敤鐢ㄦ埛" prop="useType">
<el-radio-group v-model="form.useType">
- <el-radio :label="0">鍔冲姟浜哄憳</el-radio>
- <el-radio :label="1">鏅�氳瀹�</el-radio>
+ <el-radio :label="0">璁垮鍜屽姵鍔�</el-radio>
+ <el-radio :label="1">浠呰瀹�</el-radio>
+ <el-radio :label="2">浠呭姵鍔�</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="棰樼洰椤哄簭(鍗囧簭)" prop="sortnu">
<el-input v-model="form.sortnu" placeholder="璇疯緭鍏�" v-trim/>
</el-form-item>
- <el-form-item label="閫夐」闆嗗悎" prop="options" v-if="form.type === '1' || form.type === '2'">
+ <el-form-item label="閫夐」闆嗗悎" prop="objectList" v-if="form.type === 1 || form.type === 2">
<el-button type="primary" style="width: 120px; margin-bottom: 15px;" @click="add" icon="el-icon-plus">娣诲姞閫夐」</el-button>
<el-tabs v-model="editableTabsValue" type="card" closable @tab-remove="removeTab">
<el-tab-pane
- v-for="item in problems"
- :key="item.name"
- :label="item.name"
+ v-for="item in form.objectList"
+ :key="item.code"
+ :label="item.sort"
:name="item.id"
>
- <el-input v-model="item.val" placeholder="璇疯緭鍏�" v-trim/>
+ <el-input v-model="item.value" placeholder="璇疯緭鍏�" v-trim/>
</el-tab-pane>
</el-tabs>
</el-form-item>
<el-form-item label="姝g‘绛旀" prop="answer">
- <el-select v-model="form.answer" multiple placeholder="璇烽�夋嫨姝g‘绛旀">
+ <el-select v-model="form.answer" v-if="form.type === 0" placeholder="璇烽�夋嫨姝g‘绛旀">
+ <el-option label="姝g‘" value="姝g‘"></el-option>
+ <el-option label="閿欒" value="閿欒"></el-option>
+ </el-select>
+ <el-select v-model="form.answer" v-if="form.type === 1" placeholder="璇烽�夋嫨姝g‘绛旀">
<el-option
- v-for="item in problems"
+ v-for="item in form.objectList"
:key="item.id"
- :label="item.name"
- :value="item.id">
+ :label="item.sort"
+ :value="item.code">
+ </el-option>
+ </el-select>
+ <el-select v-model="form.answer" v-if="form.type === 2" multiple placeholder="璇烽�夋嫨姝g‘绛旀">
+ <el-option
+ v-for="item in form.objectList"
+ :key="item.id"
+ :label="item.sort"
+ :value="item.code">
</el-option>
</el-select>
</el-form-item>
@@ -65,19 +78,30 @@
form: {
id: null,
title: '',
- options: '',
+ objectList: [
+ { code: 'A', value: '', sort: '閫夐」A', id: '0' }
+ ],
answer: '',
sortnu: '',
- type: '',
- useType: ''
+ type: 0,
+ useType: 0
},
// 楠岃瘉瑙勫垯
rules: {
+ title: [
+ { required: true, message: '璇疯緭鍏ラ鐩悕绉�' }
+ ],
+ type: [
+ { required: true, message: '璇烽�夋嫨棰樼洰绫诲瀷' }
+ ],
+ useType: [
+ { required: true, message: '璇烽�夋嫨閫傜敤鐢ㄦ埛' }
+ ],
+ answer: [
+ { required: true, message: '璇烽�夋嫨姝g‘绛旀' }
+ ]
},
editableTabsValue: '0',
- problems: [
- { name: '閫夋嫨A', val: '', id: '0' }
- ],
arr: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
}
},
@@ -88,19 +112,106 @@
})
},
methods: {
+ open (title, target) {
+ this.title = title
+ this.editableTabsValue = '0'
+ this.visible = true
+ // 鏂板缓
+ if (target == null) {
+ this.$nextTick(() => {
+ this.$refs.form.resetFields()
+ this.form[this.configData['field.id']] = null
+ })
+ return
+ }
+ // 缂栬緫
+ this.$nextTick(() => {
+ for (const key in this.form) {
+ this.form[key] = target[key]
+ }
+ })
+ },
+ confirm () {
+ this.$refs.form.validate((valid) => {
+ if (!valid) {
+ return
+ }
+ // 璋冪敤鏂板缓鎺ュ彛
+ this.isWorking = true
+ if (this.form.id == null || this.form.id === '') {
+ this.api.create({
+ // eslint-disable-next-line valid-typeof
+ answer: typeof this.form.answer === 'object' ? this.form.answer.join(',') : this.form.answer,
+ title: this.form.title,
+ sortnu: this.form.sortnu,
+ type: this.form.type,
+ useType: this.form.useType,
+ objectList: this.form.objectList
+ })
+ .then(() => {
+ this.visible = false
+ this.$tip.apiSuccess('鏂板缓鎴愬姛')
+ this.$emit('success')
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.isWorking = false
+ })
+ } else {
+ this.api.updateById({
+ id: this.form.id,
+ // eslint-disable-next-line valid-typeof
+ answer: typeof this.form.answer === 'object' ? this.form.answer.join(',') : this.form.answer,
+ title: this.form.title,
+ sortnu: this.form.sortnu,
+ type: this.form.type,
+ useType: this.form.useType,
+ objectList: this.form.objectList
+ })
+ .then(() => {
+ this.visible = false
+ this.$tip.apiSuccess('淇敼鎴愬姛')
+ this.$emit('success')
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.isWorking = false
+ })
+ }
+ })
+ },
+ changeType (e) {
+ this.editableTabsValue = '0'
+ this.form.objectList = [
+ { code: 'A', value: '', sort: '閫夐」A', id: '0' }
+ ]
+ this.$nextTick(() => {
+ if (e === '0' || e === '1') {
+ this.form.answer = ''
+ } else {
+ this.form.answer = []
+ }
+ })
+ this.$forceUpdate()
+ },
removeTab (e) {
- this.problems.splice(e, 1)
+ this.form.objectList.splice(e, 1)
if (e === this.editableTabsValue) {
this.editableTabsValue = '0'
}
- this.problems.forEach((item, index) => {
- item.name = '閫夐」' + this.arr[index]
+ this.form.objectList.forEach((item, index) => {
+ item.code = this.arr[index]
+ item.sort = '閫夐」' + this.arr[index]
item.id = index.toString()
})
},
add () {
- const name = '閫夐」' + this.arr[this.problems.length]
- this.problems.push({ name, val: '', id: this.problems.length.toString() })
+ const sort = '閫夐」' + this.arr[this.form.objectList.length]
+ this.form.objectList.push({ sort, value: '', code: this.arr[this.form.objectList.length], id: this.form.objectList.length.toString() })
}
}
}
diff --git a/admin/src/views/business/device.vue b/admin/src/views/business/device.vue
index dc6a3de..38dc143 100644
--- a/admin/src/views/business/device.vue
+++ b/admin/src/views/business/device.vue
@@ -37,16 +37,16 @@
<span v-if="row.status === 1">鍚敤</span>
</template>
</el-table-column>
- <el-table-column
- v-if="containPermissions(['business:device:update'])"
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
- <template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaDeviceWindow.open('缂栬緫璁惧淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:company:update']">缂栬緫</el-button>
- </template>
- </el-table-column>
+<!-- <el-table-column-->
+<!-- v-if="containPermissions(['business:device:update'])"-->
+<!-- label="鎿嶄綔"-->
+<!-- min-width="120"-->
+<!-- fixed="right"-->
+<!-- >-->
+<!-- <template slot-scope="{row}">-->
+<!-- <el-button type="text" @click="$refs.operaDeviceWindow.open('缂栬緫璁惧淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:company:update']">缂栬緫</el-button>-->
+<!-- </template>-->
+<!-- </el-table-column>-->
</el-table>
<pagination
@size-change="handleSizeChange"
diff --git a/admin/src/views/business/deviceRole.vue b/admin/src/views/business/deviceRole.vue
index 2b69060..221feb0 100644
--- a/admin/src/views/business/deviceRole.vue
+++ b/admin/src/views/business/deviceRole.vue
@@ -1,5 +1,5 @@
<template>
- <TableLayout :permissions="['business:company:query']">
+ <TableLayout :permissions="['business:devicerole:query']">
<!-- 鎼滅储琛ㄥ崟 -->
<el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
<el-form-item label="闂ㄧ缁勫悕绉�" prop="name">
@@ -12,9 +12,9 @@
</el-form>
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
- <ul class="toolbar" v-permissions="['business:company:create', 'business:company:delete']">
- <li><el-button type="primary" @click="$refs.operaDeviceRoleWindow.open('鏂板缓闂ㄧ瑙掕壊淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:company:create']">鏂板缓</el-button></li>
- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:company:delete']">鍒犻櫎</el-button></li>
+ <ul class="toolbar" v-permissions="['business:devicerole:create', 'business:devicerole:delete']">
+ <li><el-button type="primary" @click="$refs.operaDeviceRoleWindow.open('鏂板缓闂ㄧ瑙掕壊')" icon="el-icon-plus" v-permissions="['business:devicerole:create']">鏂板缓</el-button></li>
+ <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:devicerole:delete']">鍒犻櫎</el-button></li>
</ul>
<el-table
v-loading="isWorking.search"
@@ -24,27 +24,28 @@
>
<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="name" label="浣跨敤浜烘暟" min-width="100px"></el-table-column>
+ <el-table-column prop="memberNum" label="浣跨敤浜烘暟" min-width="100px"></el-table-column>
<el-table-column prop="isDefault" label="鏄惁榛樿" min-width="100px">
<template slot-scope="{row}">
<el-switch
+ @change="changeIsDefault"
v-model="row.isDefault"
active-color="#13ce66"
inactive-color="#ff4949"
- :active-value="1"
- :inactive-value="0">
+ :active-value="0"
+ :inactive-value="1">
</el-switch>
</template>
</el-table-column>
<el-table-column
- v-if="containPermissions(['business:company:update', 'business:company:delete'])"
+ v-if="containPermissions(['business:devicerole:update', 'business:devicerole:delete'])"
label="鎿嶄綔"
min-width="120"
fixed="right"
>
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaDeviceRoleWindow.open('缂栬緫闂ㄧ瑙掕壊淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:company:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:company:delete']">鍒犻櫎</el-button>
+ <el-button type="text" @click="edit(row)" icon="el-icon-edit" v-permissions="['business:devicerole:update']">缂栬緫</el-button>
+ <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:devicerole:delete']">鍒犻櫎</el-button>
</template>
</el-table-column>
</el-table>
@@ -65,6 +66,7 @@
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaDeviceRoleWindow from '@/components/business/OperaDeviceRoleWindow'
+import { updateStatusById } from '@/api/business/deviceRole'
export default {
name: 'DeviceRole',
extends: BaseTable,
@@ -74,18 +76,38 @@
// 鎼滅储
searchForm: {
name: '',
+ isdeleted: 0,
type: '2'
}
}
},
created () {
this.config({
- module: '闂ㄧ瑙掕壊淇℃伅琛�',
+ module: '闂ㄧ瑙掕壊',
api: '/business/deviceRole',
'field.id': 'id',
'field.main': 'id'
})
this.search()
+ },
+ methods: {
+ changeIsDefault (r) {
+ updateStatusById({ isDefault: r, type: 2 })
+ .finally(() => {
+ this.search()
+ })
+ },
+ edit (row) {
+ if (row.doorIds) {
+ row.radio = 1
+ row.doorIds = row.doorIds.split(',')
+ row.doorIds = row.doorIds.map(item => Number(item))
+ } else {
+ row.radio = 0
+ row.doorIds = []
+ }
+ this.$refs.operaDeviceRoleWindow.open('缂栬緫闂ㄧ瑙掕壊', row)
+ }
}
}
</script>
diff --git a/admin/src/views/business/deviceRole_f.vue b/admin/src/views/business/deviceRole_f.vue
index f1c14f0..97f58ab 100644
--- a/admin/src/views/business/deviceRole_f.vue
+++ b/admin/src/views/business/deviceRole_f.vue
@@ -1,5 +1,5 @@
<template>
- <TableLayout :permissions="['business:company:query']">
+ <TableLayout :permissions="['business:devicerole:query']">
<!-- 鎼滅储琛ㄥ崟 -->
<el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
<el-form-item label="闂ㄧ缁勫悕绉�" prop="name">
@@ -13,32 +13,38 @@
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
<ul class="toolbar">
- <li><el-button type="primary">鍚屾</el-button></li>
+ <li><el-button type="primary" @click="synchronousData">鍚屾</el-button></li>
</ul>
<el-table
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
+ 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="name" label="閫傜敤鐢ㄦ埛绫诲瀷" min-width="100px"></el-table-column>
- <el-table-column prop="name" label="浣跨敤浜烘暟" min-width="100px"></el-table-column>
+ <el-table-column label="閫傜敤鐢ㄦ埛绫诲瀷" min-width="100px">
+ <template slot-scope="{row}">
+ <span v-if="row.type === '0'">鍔冲姟璁垮</span>
+ <span v-if="row.type === '1'">鏅�氳瀹�</span>
+ <span v-if="row.type === '2'">鍐呴儴浜哄憳</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="memberNum" label="浣跨敤浜烘暟" min-width="100px"></el-table-column>
<el-table-column prop="isDefault" label="鏄惁榛樿" min-width="100px">
<template slot-scope="{row}">
- <span v-if="row.isDefault === 1">鏄�</span>
- <span v-if="row.isDefault === 0">鍚�</span>
+ <span v-if="row.isDefault === 0">鏄�</span>
+ <span v-if="row.isDefault === 1">鍚�</span>
</template>
</el-table-column>
<el-table-column
- v-if="containPermissions(['business:company:update', 'business:company:delete'])"
+ v-if="containPermissions(['business:devicerole:update'])"
label="鎿嶄綔"
min-width="120"
fixed="right"
>
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaDeviceRoleWindow.open('缂栬緫闂ㄧ瑙掕壊淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:company:update']">缂栬緫</el-button>
+ <el-button type="text" @click="$refs.operaDeviceRoleWindow.open('缂栬緫闂ㄧ瑙掕壊淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:devicerole:update']">缂栬緫</el-button>
</template>
</el-table-column>
</el-table>
@@ -59,6 +65,7 @@
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaDeviceRoleWindow from '@/components/business/OperaDeviceRoleFWindow'
+import { syncPrivilege } from '@/api/business/deviceRole'
export default {
name: 'DeviceRole',
extends: BaseTable,
@@ -68,7 +75,7 @@
// 鎼滅储
searchForm: {
name: '',
- type: '1'
+ type: '0,1'
}
}
},
@@ -80,6 +87,23 @@
'field.main': 'id'
})
this.search()
+ },
+ methods: {
+ synchronousData () {
+ this.$confirm('纭鍚屾鍚�?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ syncPrivilege({})
+ .then(res => {
+ this.$message({ type: 'success', message: '鍚屾鎴愬姛' })
+ this.search()
+ })
+ }).catch(() => {
+
+ })
+ }
}
}
</script>
diff --git a/admin/src/views/business/laborSource.vue b/admin/src/views/business/laborSource.vue
index d78362e..7575406 100644
--- a/admin/src/views/business/laborSource.vue
+++ b/admin/src/views/business/laborSource.vue
@@ -1,58 +1,99 @@
<template>
<div class="box">
<el-form :model="form" ref="form" label-width="140px">
- <el-form-item label="鏉ヨ棰勭害鏂瑰紡:" prop="doorIds">
- <el-radio-group v-model="form.doorIds">
- <el-radio :label="3">棰勭害鍏嶇櫥璁�</el-radio>
- <el-radio :label="6">棰勭害鍚庣櫥璁�(闇�瑕侀厤澶囪瀹㈡満)</el-radio>
+ <el-form-item label="鏉ヨ棰勭害鏂瑰紡:" prop="reservationWay">
+ <el-radio-group v-model="form.reservationWay">
+ <el-radio :label="0">棰勭害鍏嶇櫥璁�</el-radio>
+ <el-radio :label="1">棰勭害鍚庣櫥璁�(闇�瑕侀厤澶囪瀹㈡満)</el-radio>
</el-radio-group>
</el-form-item>
- <el-form-item label="琚浜烘牎楠屾柟寮�:" prop="doorIds">
- <el-radio-group v-model="form.doorIds">
- <el-radio :label="3">浠呮墜鏈哄彿</el-radio>
- <el-radio :label="6">鎵嬫満鍙�&濮撳悕</el-radio>
+ <el-form-item label="琚浜烘牎楠屾柟寮�:" prop="checkVisit">
+ <el-radio-group v-model="form.checkVisit">
+ <el-radio :label="0">浠呮墜鏈哄彿</el-radio>
+ <el-radio :label="1">鎵嬫満鍙�&濮撳悕</el-radio>
</el-radio-group>
</el-form-item>
- <el-form-item label="鍋ュ悍璇佹槸鍚﹀繀濉�:" prop="doorIds">
- <el-radio-group v-model="form.doorIds">
- <el-radio :label="3">鍚�</el-radio>
- <el-radio :label="6">鏄�</el-radio>
+ <el-form-item label="鍋ュ悍璇佹槸鍚﹀繀濉�:" prop="healthCard">
+ <el-radio-group v-model="form.healthCard">
+ <el-radio :label="0">鍚�</el-radio>
+ <el-radio :label="1">鏄�</el-radio>
</el-radio-group>
</el-form-item>
- <el-form-item label="璁垮鏄惁绛旈:" prop="doorIds">
+ <el-form-item label="璁垮鏄惁绛旈:" prop="isAnswer">
<el-switch
- v-model="form.doorIds"
- active-color="#13ce66"
- inactive-color="#ff4949"
- :active-value="1"
- :inactive-value="0">
+ v-model="form.isAnswer"
+ active-color="#13ce66"
+ inactive-color="#ff4949"
+ :active-value="1"
+ :inactive-value="0">
</el-switch>
</el-form-item>
- <el-form-item label="璁垮绛旈涓婚:" prop="doorIds">
- <el-input style="width: 50%;" v-model="form.doorIds" placeholder="璇疯緭鍏ョ瓟棰樻爣棰�" v-trim/>
+ <el-form-item label="璁垮绛旈涓婚:" prop="theme">
+ <el-input style="width: 50%;" v-model="form.theme" placeholder="璇疯緭鍏ョ瓟棰樻爣棰�" v-trim/>
</el-form-item>
- <el-form-item label="璁垮绛旈璇存槑:" prop="doorIds">
- <el-input style="width: 50%;" type="textarea" v-model="form.doorIds" placeholder="璇疯緭鍏�" v-trim/>
+ <el-form-item label="璁垮绛旈璇存槑:" prop="description">
+ <el-input style="width: 50%;" type="textarea" v-model="form.description" placeholder="璇疯緭鍏�" v-trim/>
</el-form-item>
<el-form-item>
- <el-button type="primary">淇濆瓨閰嶇疆椤�</el-button>
+ <el-button type="primary" @click="submit">淇濆瓨閰嶇疆椤�</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
- export default {
- name: 'visitorSources',
+import { getLaborConfigDTO, updateLaborConfigDTO } from '@/api/system/common'
+export default {
+ name: 'visitorSources',
- data() {
- return {
- form: {
- doorIds: ''
- }
+ data () {
+ return {
+ form: {
+ id: null,
+ checkVisit: 0,
+ reservationWay: 0,
+ healthCard: 0,
+ isAnswer: 0,
+ theme: '',
+ description: ''
}
}
+ },
+
+ created () {
+ this.getData()
+ },
+
+ methods: {
+ getData () {
+ getLaborConfigDTO({})
+ .then(res => {
+ this.form.id = res.id
+ this.form.checkVisit = res.LaborConfigParam.checkVisit
+ this.form.description = res.description
+ this.form.healthCard = res.LaborConfigParam.healthCard
+ this.form.isAnswer = res.LaborConfigParam.isAnswer
+ this.form.reservationWay = res.LaborConfigParam.reservationWay
+ this.form.theme = res.theme
+ })
+ },
+ submit () {
+ updateLaborConfigDTO({
+ LaborConfigParam: {
+ isAnswer: this.form.isAnswer,
+ healthCard: this.form.healthCard,
+ checkVisit: this.form.checkVisit,
+ reservationWay: this.form.reservationWay
+ },
+ description: this.form.description,
+ theme: this.form.theme
+ }).then(res => {
+ this.$message.success('淇濆瓨鎴愬姛')
+ this.getData()
+ })
+ }
}
+}
</script>
<style lang="scss" scoped>
diff --git a/admin/src/views/business/problemLog.vue b/admin/src/views/business/problemLog.vue
index 546d7f4..0154749 100644
--- a/admin/src/views/business/problemLog.vue
+++ b/admin/src/views/business/problemLog.vue
@@ -8,14 +8,11 @@
<el-form-item label="鍏徃鍚嶇О" prop="companyName">
<el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
</el-form-item>
- <el-form-item label="浜哄憳绫诲瀷" prop="companyId">
- <el-select v-model="searchForm.code" placeholder="璇烽�夋嫨">
- <el-option
- v-for="item in options"
- :key="item.value"
- :label="item.label"
- :value="item.value">
- </el-option>
+ <el-form-item label="浜哄憳绫诲瀷" prop="type">
+ <el-select v-model="searchForm.type" placeholder="璇烽�夋嫨">
+ <el-option label="鍔冲姟璁垮" value="0"></el-option>
+ <el-option label="鏅�氳瀹�" value="1"></el-option>
+ <el-option label="鍐呴儴浜哄憳" value="2"></el-option>
</el-select>
</el-form-item>
<section>
@@ -36,7 +33,13 @@
<el-table-column prop="name" label="绛旈浜�" min-width="100px"></el-table-column>
<el-table-column prop="phone" label="鑱旂郴鐢佃瘽" min-width="100px"></el-table-column>
<el-table-column prop="companyName" label="鍏徃鍚嶇О" min-width="100px"></el-table-column>
- <el-table-column prop="phone" label="鐢ㄦ埛绫诲瀷" min-width="100px"></el-table-column>
+ <el-table-column label="鐢ㄦ埛绫诲瀷" min-width="100px">
+ <template slot-scope="{row}">
+ <span v-if="row.type === 0">鍔冲姟璁垮</span>
+ <span v-if="row.type === 1">鏅�氳瀹�</span>
+ <span v-if="row.type === 2">鍐呴儴浜哄憳</span>
+ </template>
+ </el-table-column>
<el-table-column prop="createDate" label="绛旈鏃堕棿" min-width="100px"></el-table-column>
</el-table>
<pagination
@@ -62,7 +65,8 @@
// 鎼滅储
searchForm: {
name: '',
- companyName: ''
+ companyName: '',
+ type: ''
},
options: []
}
diff --git a/admin/src/views/business/problems.vue b/admin/src/views/business/problems.vue
index b701349..948c825 100644
--- a/admin/src/views/business/problems.vue
+++ b/admin/src/views/business/problems.vue
@@ -1,5 +1,5 @@
<template>
- <TableLayout :permissions="['business:company:query']">
+ <TableLayout :permissions="['business:problems:query']">
<!-- 鎼滅储琛ㄥ崟 -->
<el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
<el-form-item label="棰樼洰鍚嶇О" prop="title">
@@ -7,8 +7,9 @@
</el-form-item>
<el-form-item label="浜哄憳绫诲瀷" prop="useType">
<el-select v-model="searchForm.useType" placeholder="璇烽�夋嫨" @keypress.enter.native="search">
- <el-option label="鍔冲姟浜哄憳" value="0"></el-option>
- <el-option label="鏅�氳瀹�" value="1"></el-option>
+ <el-option label="璁垮鍜屽姵鍔�" value="0"></el-option>
+ <el-option label="浠呰瀹�" value="1"></el-option>
+ <el-option label="浠呭姵鍔�" value="2"></el-option>
</el-select>
</el-form-item>
<section>
@@ -18,30 +19,32 @@
</el-form>
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
- <ul class="toolbar" v-permissions="['business:company:create']">
- <li><el-button type="primary" @click="$refs.operaProblemsWindow.open('鏂板缓璇曢淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:company:create']">鏂板缓</el-button></li>
+ <ul class="toolbar" v-permissions="['business:problems:create']">
+ <li><el-button type="primary" @click="$refs.operaProblemsWindow.open('鏂板缓璇曢淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:problems:create']">鏂板缓</el-button></li>
</ul>
<el-table
v-loading="isWorking.search"
:data="tableData.list"
stripe
>
- <el-table-column prop="title" label="棰樼洰鍚嶇О" min-width="100px"></el-table-column>
+ <el-table-column prop="title" label="棰樼洰鍚嶇О" min-width="150px"></el-table-column>
<el-table-column prop="useType" label="閫傜敤浜哄憳绫诲瀷" min-width="100px">
<template slot-scope="{row}">
- <span v-if="row.useType === 0">鍔冲姟浜哄憳</span>
- <span v-if="row.useType === 1">鏅�氳瀹�</span>
+ <span v-if="row.useType === 0">璁垮鍜屽姵鍔�</span>
+ <span v-if="row.useType === 1">浠呰瀹�</span>
+ <span v-if="row.useType === 2">浠呭姵鍔�</span>
</template>
</el-table-column>
<el-table-column prop="type" label="棰樼洰绫诲瀷" min-width="100px">
<template slot-scope="{row}">
- <span v-if="row.useType === 0">鍗曢��</span>
- <span v-if="row.useType === 1">澶氶��</span>
+ <span v-if="row.type === 0">鍒ゆ柇</span>
+ <span v-if="row.type === 1">鍗曢��</span>
+ <span v-if="row.type === 2">澶氶��</span>
</template>
</el-table-column>
<el-table-column prop="sortnu" label="棰樼洰椤哄簭(鍗囧簭)" min-width="100px"></el-table-column>
<el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="creator" label="鍒涘缓浜虹紪鐮�" min-width="100px"></el-table-column>
+ <el-table-column prop="creatorName" label="鍒涘缓浜�" min-width="100px"></el-table-column>
<el-table-column
v-if="containPermissions(['business:company:update', 'business:company:delete'])"
label="鎿嶄綔"
@@ -49,7 +52,7 @@
fixed="right"
>
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaProblemsWindow.open('缂栬緫璇曢淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:company:update']">缂栬緫</el-button>
+ <el-button type="text" @click="edit(row)" icon="el-icon-edit" v-permissions="['business:company:update']">缂栬緫</el-button>
<el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:company:delete']">鍒犻櫎</el-button>
</template>
</el-table-column>
@@ -92,6 +95,23 @@
'field.main': 'id'
})
this.search()
+ },
+ methods: {
+ edit (row) {
+ if (row.objectList && row.objectList.length > 0) {
+ row.objectList = row.objectList.map((item, index) => {
+ return {
+ code: item.code,
+ value: item.value,
+ sort: '閫夐」' + item.code,
+ id: index.toString()
+ }
+ })
+ } else {
+ row.objectList = []
+ }
+ this.$refs.operaProblemsWindow.open('缂栬緫璇曢淇℃伅', row)
+ }
}
}
</script>
diff --git a/admin/src/views/business/visitorSources.vue b/admin/src/views/business/visitorSources.vue
index 129b678..6dfe77f 100644
--- a/admin/src/views/business/visitorSources.vue
+++ b/admin/src/views/business/visitorSources.vue
@@ -1,56 +1,97 @@
<template>
<div class="box">
<el-form :model="form" ref="form" label-width="140px">
- <el-form-item label="鏉ヨ棰勭害鏂瑰紡:" prop="doorIds">
- <el-radio-group v-model="form.doorIds">
- <el-radio :label="3">棰勭害鍏嶇櫥璁�</el-radio>
- <el-radio :label="6">棰勭害鍚庣櫥璁�(闇�瑕侀厤澶囪瀹㈡満)</el-radio>
+ <el-form-item label="鏉ヨ棰勭害鏂瑰紡:" prop="reservationWay">
+ <el-radio-group v-model="form.reservationWay">
+ <el-radio :label="0">棰勭害鍏嶇櫥璁�</el-radio>
+ <el-radio :label="1">棰勭害鍚庣櫥璁�(闇�瑕侀厤澶囪瀹㈡満)</el-radio>
</el-radio-group>
</el-form-item>
- <el-form-item label="琚浜烘牎楠屾柟寮�:" prop="doorIds">
- <el-radio-group v-model="form.doorIds">
- <el-radio :label="3">浠呮墜鏈哄彿</el-radio>
- <el-radio :label="6">鎵嬫満鍙�&濮撳悕</el-radio>
+ <el-form-item label="琚浜烘牎楠屾柟寮�:" prop="checkVisit">
+ <el-radio-group v-model="form.checkVisit">
+ <el-radio :label="0">浠呮墜鏈哄彿</el-radio>
+ <el-radio :label="1">鎵嬫満鍙�&濮撳悕</el-radio>
</el-radio-group>
</el-form-item>
- <el-form-item label="鍋ュ悍璇佹槸鍚﹀繀濉�:" prop="doorIds">
- <el-radio-group v-model="form.doorIds">
- <el-radio :label="3">鍚�</el-radio>
- <el-radio :label="6">鏄�</el-radio>
+ <el-form-item label="鍋ュ悍璇佹槸鍚﹀繀濉�:" prop="healthCard">
+ <el-radio-group v-model="form.healthCard">
+ <el-radio :label="0">鍚�</el-radio>
+ <el-radio :label="1">鏄�</el-radio>
</el-radio-group>
</el-form-item>
- <el-form-item label="璁垮鏄惁绛旈:" prop="doorIds">
+ <el-form-item label="璁垮鏄惁绛旈:" prop="isAnswer">
<el-switch
- v-model="form.doorIds"
+ v-model="form.isAnswer"
active-color="#13ce66"
inactive-color="#ff4949"
:active-value="1"
:inactive-value="0">
</el-switch>
</el-form-item>
- <el-form-item label="璁垮绛旈涓婚:" prop="doorIds">
- <el-input style="width: 50%;" v-model="form.doorIds" placeholder="璇疯緭鍏ョ瓟棰樻爣棰�" v-trim/>
+ <el-form-item label="璁垮绛旈涓婚:" prop="theme">
+ <el-input style="width: 50%;" v-model="form.theme" placeholder="璇疯緭鍏ョ瓟棰樻爣棰�" v-trim/>
</el-form-item>
- <el-form-item label="璁垮绛旈璇存槑:" prop="doorIds">
- <el-input style="width: 50%;" type="textarea" v-model="form.doorIds" placeholder="璇疯緭鍏�" v-trim/>
+ <el-form-item label="璁垮绛旈璇存槑:" prop="description">
+ <el-input style="width: 50%;" type="textarea" v-model="form.description" placeholder="璇疯緭鍏�" v-trim/>
</el-form-item>
<el-form-item>
- <el-button type="primary">淇濆瓨閰嶇疆椤�</el-button>
+ <el-button type="primary" @click="submit">淇濆瓨閰嶇疆椤�</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
+import { getVisitConfigDTO, updateVisitConfig } from '@/api/system/common'
export default {
name: 'visitorSources',
- data() {
+ data () {
return {
form: {
- doorIds: ''
+ id: null,
+ checkVisit: 0,
+ reservationWay: 0,
+ healthCard: 0,
+ isAnswer: 0,
+ theme: '',
+ description: ''
}
}
+ },
+
+ created () {
+ this.getData()
+ },
+
+ methods: {
+ getData () {
+ getVisitConfigDTO({})
+ .then(res => {
+ this.form.id = res.id
+ this.form.checkVisit = res.VisitConfigParam.checkVisit
+ this.form.description = res.description
+ this.form.healthCard = res.VisitConfigParam.healthCard
+ this.form.isAnswer = res.VisitConfigParam.isAnswer
+ this.form.reservationWay = res.VisitConfigParam.reservationWay
+ this.form.theme = res.theme
+ })
+ },
+ submit () {
+ updateVisitConfig({
+ VisitConfigParam: {
+ isAnswer: this.form.isAnswer,
+ healthCard: this.form.healthCard,
+ checkVisit: this.form.checkVisit,
+ reservationWay: this.form.reservationWay
+ },
+ description: this.form.description,
+ theme: this.form.theme
+ }).then(res => {
+ this.$message.success('淇濆瓨鎴愬姛')
+ this.getData()
+ })
+ }
}
}
</script>
diff --git a/admin/vue.config.js b/admin/vue.config.js
index 66f1a74..f1d1370 100644
--- a/admin/vue.config.js
+++ b/admin/vue.config.js
@@ -14,7 +14,7 @@
// 192.168.0.110:10013 192.168.0.110:10013
// http://192.168.0.101:10013
// http://192.168.0.132:10013
- target: 'http://192.168.0.108:10013',
+ target: 'http://192.168.0.132:10013',
changeOrigin: true,
pathRewrite: {
[`^${[process.env.VUE_APP_API_PREFIX]}`]: ''
--
Gitblit v1.9.3