| | |
| | | |
| | | // 同步 |
| | | 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) |
| | | } |
| | | |
| | | // 修改 |
| | |
| | | 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}`) |
| | |
| | | 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) |
| | | } |
| | |
| | | <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> |
| | |
| | | form: { |
| | | id: null, |
| | | name: '', |
| | | doorIds: '' |
| | | type: '' |
| | | }, |
| | | // 验证规则 |
| | | rules: { |
| | |
| | | @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> |
| | |
| | | <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' } |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | |
| | | 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> |
| | |
| | | <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="正确答案" prop="answer"> |
| | | <el-select v-model="form.answer" multiple placeholder="请选择正确答案"> |
| | | <el-select v-model="form.answer" v-if="form.type === 0" placeholder="请选择正确答案"> |
| | | <el-option label="正确" value="正确"></el-option> |
| | | <el-option label="错误" value="错误"></el-option> |
| | | </el-select> |
| | | <el-select v-model="form.answer" v-if="form.type === 1" placeholder="请选择正确答案"> |
| | | <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="请选择正确答案"> |
| | | <el-option |
| | | v-for="item in form.objectList" |
| | | :key="item.id" |
| | | :label="item.sort" |
| | | :value="item.code"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | 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: '请选择正确答案' } |
| | | ] |
| | | }, |
| | | 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'] |
| | | } |
| | | }, |
| | |
| | | }) |
| | | }, |
| | | 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() }) |
| | | } |
| | | } |
| | | } |
| | |
| | | <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" |
| | |
| | | <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"> |
| | |
| | | </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" |
| | |
| | | > |
| | | <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> |
| | |
| | | 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, |
| | |
| | | // 搜索 |
| | | 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> |
| | |
| | | <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"> |
| | |
| | | <!-- 表格和分页 --> |
| | | <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> |
| | |
| | | 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, |
| | |
| | | // 搜索 |
| | | searchForm: { |
| | | name: '', |
| | | type: '1' |
| | | type: '0,1' |
| | | } |
| | | } |
| | | }, |
| | |
| | | '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> |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | <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 |
| | |
| | | // 搜索 |
| | | searchForm: { |
| | | name: '', |
| | | companyName: '' |
| | | companyName: '', |
| | | type: '' |
| | | }, |
| | | options: [] |
| | | } |
| | |
| | | <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"> |
| | |
| | | </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> |
| | |
| | | </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="操作" |
| | |
| | | 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> |
| | |
| | | '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> |
| | |
| | | <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> |
| | |
| | | // 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]}`]: '' |