Merge remote-tracking branch 'origin/master'
| | |
| | | |
| | | // 同步 |
| | | 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]}`]: '' |
| | |
| | | package com.doumee.api.business; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.doumee.api.BaseController; |
| | | import com.doumee.core.annotation.excel.ExcelExporter; |
| | | import com.doumee.core.annotation.pr.PreventRepeat; |
| | | import com.doumee.core.model.ApiResponse; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.dao.business.model.Problems; |
| | | import com.doumee.service.business.ProblemsService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.shiro.authz.annotation.RequiresPermissions; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | |
| | | |
| | | @ApiOperation("根据ID删除") |
| | | @GetMapping("/delete/{id}") |
| | | @RequiresPermissions("business:problems:delete") |
| | | //@RequiresPermissions("business:problems:delete") |
| | | public ApiResponse deleteById(@PathVariable Integer id) { |
| | | problemsService.deleteById(id); |
| | | return ApiResponse.success(null); |
| | |
| | | |
| | | @ApiOperation("批量删除") |
| | | @GetMapping("/delete/batch") |
| | | @RequiresPermissions("business:problems:delete") |
| | | //@RequiresPermissions("business:problems:delete") |
| | | public ApiResponse deleteByIdInBatch(@RequestParam String ids) { |
| | | String [] idArray = ids.split(","); |
| | | List<Integer> idList = new ArrayList<>(); |
| | |
| | | |
| | | @ApiOperation("分页查询") |
| | | @PostMapping("/page") |
| | | @RequiresPermissions("business:problems:query") |
| | | //@RequiresPermissions("business:problems:query") |
| | | public ApiResponse<PageData<Problems>> findPage (@RequestBody PageWrap<Problems> pageWrap) { |
| | | return ApiResponse.success(problemsService.findPage(pageWrap)); |
| | | } |
| | | |
| | | @ApiOperation("导出Excel") |
| | | @PostMapping("/exportExcel") |
| | | @RequiresPermissions("business:problems:exportExcel") |
| | | //@RequiresPermissions("business:problems:exportExcel") |
| | | public void exportExcel (@RequestBody PageWrap<Problems> pageWrap, HttpServletResponse response) { |
| | | ExcelExporter.build(Problems.class).export(problemsService.findPage(pageWrap).getRecords(), "试题信息表", response); |
| | | } |
| | |
| | | |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ExcelColumn(name="创建时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date createDate; |
| | | |
| | | @ApiModelProperty(value = "更新人编码", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "更新时间") |
| | | @ExcelColumn(name="更新时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date editDate; |
| | | |
| | | @ApiModelProperty(value = "是否删除0否 1是", example = "1") |
| | |
| | | @ExcelColumn(name="排序码") |
| | | private Integer sortnu; |
| | | |
| | | @ApiModelProperty(value = "类型 0单选 1多选 ", example = "1") |
| | | @ExcelColumn(name="类型 0单选 1多选 ") |
| | | @ApiModelProperty(value = "类型 0单选 1多选 2判断", example = "1") |
| | | @ExcelColumn(name="类型 0单选 1多选 2判断") |
| | | private Integer type; |
| | | |
| | | @ApiModelProperty(value = "分值", example = "1") |
| | | @ExcelColumn(name="分值") |
| | | private BigDecimal score; |
| | | |
| | | @ApiModelProperty(value = "使用场景 0劳务人员 1普通访客", example = "1") |
| | | @ExcelColumn(name="使用场景 0劳务人员 1普通访客") |
| | | @ApiModelProperty(value = "使用场景 0访客和劳务 1仅访客 2仅劳务", example = "1") |
| | | @ExcelColumn(name="使用场景 使用场景 0访客和劳务 1仅访客 2仅劳务") |
| | | private Integer useType; |
| | | |
| | | @ApiModelProperty(value = "选项集对象集合") |
| | |
| | | @Override |
| | | public Integer create(Problems problems) { |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | Problems insert = new Problems(); |
| | | Problems newProblems = new Problems(); |
| | | |
| | | insert.setCreator(loginUserInfo.getId()); |
| | | insert.setCreateDate(new Date()); |
| | | insert.setEditor(loginUserInfo.getId()); |
| | | insert.setEditDate(new Date()); |
| | | insert.setIsdeleted(Constants.ZERO); |
| | | insert.setRemark(problems.getRemark()); |
| | | insert.setTitle(problems.getTitle()); |
| | | newProblems.setCreator(loginUserInfo.getId()); |
| | | newProblems.setCreateDate(new Date()); |
| | | newProblems.setEditor(loginUserInfo.getId()); |
| | | newProblems.setEditDate(new Date()); |
| | | newProblems.setIsdeleted(Constants.ZERO); |
| | | newProblems.setRemark(problems.getRemark()); |
| | | newProblems.setTitle(problems.getTitle()); |
| | | if(null != problems.getObjectList() && problems.getObjectList().size() > 0) { |
| | | insert.setOptions(JSON.toJSONString(problems.getObjectList())); |
| | | newProblems.setOptions(JSON.toJSONString(problems.getObjectList())); |
| | | } |
| | | insert.setAnswer(problems.getAnswer()); |
| | | insert.setSortnu(problems.getSortnu()); |
| | | insert.setType(problems.getType()); |
| | | insert.setScore(problems.getScore()); |
| | | insert.setUseType(problems.getUseType()); |
| | | problemsMapper.insert(problems); |
| | | return insert.getId(); |
| | | newProblems.setAnswer(problems.getAnswer()); |
| | | newProblems.setSortnu(problems.getSortnu()); |
| | | newProblems.setType(problems.getType()); |
| | | newProblems.setScore(problems.getScore()); |
| | | newProblems.setUseType(problems.getUseType()); |
| | | problemsMapper.insert(newProblems); |
| | | return newProblems.getId(); |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | queryWrapper.lambda().orderByAsc(Problems::getSortnu); |
| | | queryWrapper.select("problems.*, (select REALNAME from system_user where system_user.id = problems.CREATOR) as creatorName"); |
| | | return PageData.from(problemsMapper.selectPage(page, queryWrapper)); |
| | | IPage<Problems> problemsIPage = problemsMapper.selectPage(page, queryWrapper); |
| | | if(null != problemsIPage && problemsIPage.getRecords().size() > 0) { |
| | | List<Problems> newProblems = new ArrayList<>(); |
| | | List<Problems> newDatas = problemsIPage.getRecords(); |
| | | for (Problems dto:newDatas) { |
| | | dto.setObjectList(JSON.parseArray(dto.getOptions(), OptionsObject.class)); |
| | | newProblems.add(dto); |
| | | } |
| | | problemsIPage.setRecords(newProblems); |
| | | } |
| | | return PageData.from(problemsIPage); |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | @Override |
| | | public PageData<Retention> findTrainTimePage(PageWrap<Retention> pageWrap) { |
| | | |
| | | Random random = new Random(); |
| | | int randomNumber = random.nextInt(999999); |
| | | String formattedNumber = String.format("%06d", randomNumber); |
| | | System.out.println(formattedNumber); |
| | | //是否是数字 |
| | | boolean number = Validator.isNumber(pageWrap.getModel().getKeyWords()); |
| | | //是否包含中文 |
| | |
| | | private void dealUserChangeList(List<ErpUserListResponse> list, List<Member> addList, List<Member> updateList, List<Member> delList, List<Member> allList) { |
| | | Date date = new Date(); |
| | | for(ErpUserListResponse response : list){ |
| | | Company company = new Company(); |
| | | if(StringUtils.isNotBlank(response.getOrgId())){ |
| | | company = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getErpId,response.getOrgId()).last("limit 1")); |
| | | if(Objects.isNull(company)){ |
| | | continue; |
| | | } |
| | | } |
| | | //根据 erpId 查询用户信息,判断是新增还是更新 |
| | | Member member = findUserByERPId(allList,response.getId()); |
| | | if(member == null){ |
| | |
| | | continue; |
| | | } |
| | | //封装新增组织对象数据 |
| | | addList.add(getAddMemberModel(response,date)); |
| | | addList.add(getAddMemberModel(response,date,company)); |
| | | }else{ |
| | | //如果是更新 |
| | | if(Constants.formatIntegerNum(response.getIsdeleted()) == Constants.ONE){ |
| | |
| | | // delIds.add(member.getId()); |
| | | continue; |
| | | } |
| | | updateList.add(addUpdateMemberModel(response,member,date)); |
| | | updateList.add(addUpdateMemberModel(response,member,date,company)); |
| | | } |
| | | } |
| | | if(allList!=null && allList.size()>0){ |
| | |
| | | } |
| | | } |
| | | |
| | | private Member getAddMemberModel(ErpUserListResponse param, Date date) { |
| | | private Member getAddMemberModel(ErpUserListResponse param, Date date,Company company) { |
| | | Member member = new Member(); |
| | | BeanUtils.copyProperties(param,member); |
| | | member.setCreateDate(new Date()); |
| | |
| | | String encryptIdNo = DESUtil.encrypt(Constants.EDS_PWD,param.getIdNo()); |
| | | member.setIdcardNo(encryptIdNo); |
| | | member.setIdcardDecode(Constants.getTuominStr(param.getIdNo())); |
| | | member.setErpOrgId(param.getOrgId()); |
| | | member.setHkStatus(Constants.ZERO); |
| | | member.setRoleIds(param.getRoleIds()); |
| | | member.setCompanyId(Objects.isNull(company)?null:company.getId()); |
| | | member.setErpOrgId(param.getOrgId()); |
| | | return member; |
| | | } |
| | | |
| | | private Member addUpdateMemberModel(ErpUserListResponse param, Member member, Date date) { |
| | | private Member addUpdateMemberModel(ErpUserListResponse param, Member member, Date date,Company company) { |
| | | BeanUtils.copyProperties(param,member); |
| | | String encryptIdNo = DESUtil.encrypt(Constants.EDS_PWD,param.getIdNo()); |
| | | member.setIdcardNo(encryptIdNo); |
| | |
| | | member.setErpDate(new Date()); |
| | | member.setHkStatus(Constants.ZERO); |
| | | member.setRoleIds(param.getRoleIds()); |
| | | member.setCompanyId(Objects.isNull(company)?null:company.getId()); |
| | | member.setErpOrgId(param.getOrgId()); |
| | | return member; |
| | | } |
| | | |
| | |
| | | result.setToken(token); |
| | | result.setExpireTime(Constants.RedisKeys.EXPIRE_TIME); |
| | | return result; |
| | | }catch (BusinessException e ){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),e.getMessage()); |
| | | }catch (BusinessException e){ |
| | | throw e; |
| | | }finally { |
| | | Map<String,String> param = new HashMap<>(); |
| | | param.put("accessKey",accessKey); |
| | |
| | | } |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | }catch (BusinessException e){ |
| | | throw e; |
| | | }finally { |
| | | saveInterfaceLog(param,"/visitBiz/resource/role/list",JSONObject.toJSONString(result),Constants.ZERO); |
| | | } |
| | |
| | | result.add(parkListResponse); |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | }catch (BusinessException e){ |
| | | throw e; |
| | | }finally { |
| | | saveInterfaceLog(param,"/visitBiz/resource/park/list",JSONObject.toJSONString(result),Constants.ZERO); |
| | | } |
| | |
| | | } |
| | | IPage<VisitEventListResponse> pageData = visitEventJoinMapper.selectJoinPage(page, VisitEventListResponse.class,queryWrapper); |
| | | result = PageData.from(pageData); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | }catch (BusinessException e){ |
| | | throw e; |
| | | }finally { |
| | | saveInterfaceLog(param,"/visitBiz/resource/visit/list",JSONObject.toJSONString(result),Constants.ZERO); |
| | | } |
| | |
| | | |
| | | IPage<DoorEventListResponse> pageData = deviceEventJoinMapper.selectJoinPage(page, DoorEventListResponse.class,queryWrapper); |
| | | result = PageData.from(pageData); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | }catch (BusinessException e){ |
| | | throw e; |
| | | }finally { |
| | | saveInterfaceLog(param,"/visitBiz/resource/doorEvent/list",JSONObject.toJSONString(result),Constants.ZERO); |
| | | } |
| | |
| | | i.setVehiclePicUrl(null); |
| | | } |
| | | }); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | }catch (BusinessException e){ |
| | | throw e; |
| | | }finally { |
| | | saveInterfaceLog(param,"/visitBiz/resource/carEventList",JSONObject.toJSONString(result),Constants.ZERO); |
| | | } |
| | |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | Company company = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getErpId,param.getId()).last("limit 1")); |
| | | Company parentCompany = new Company(); |
| | | if(StringUtils.isNotBlank(param.getParentId())){ |
| | | parentCompany = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getErpId,param.getParentId()).last("limit 1")); |
| | | if(Objects.isNull(parentCompany)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到上级组织数据"); |
| | | } |
| | | } |
| | | if(Objects.isNull(company)){ |
| | | company = new Company(); |
| | | // BeanUtils.copyProperties(param,company); |
| | | company.setId(null); |
| | | company.setCreateDate(new Date()); |
| | | company.setHkStatus(Constants.ZERO); |
| | |
| | | company.setErpDate(new Date()); |
| | | company.setErpId(param.getId()); |
| | | company.setErpParentId(param.getParentId()); |
| | | company.setParentId(Objects.isNull(parentCompany)?null:parentCompany.getId()); |
| | | company.setFsStatus(Constants.ZERO); |
| | | company.setType(Constants.ONE); |
| | | company.setLinkName(param.getLinkName()); |
| | |
| | | company.setHkStatus(Constants.ZERO); |
| | | company.setErpDate(new Date()); |
| | | company.setErpParentId(param.getParentId()); |
| | | company.setParentId(Objects.isNull(parentCompany)?null:parentCompany.getId()); |
| | | company.setLinkName(param.getLinkName()); |
| | | company.setLinkPhone(param.getLinkPhone()); |
| | | companyMapper.updateById(company); |
| | | //TODO 海康数据更新 |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | }catch (BusinessException e){ |
| | | throw e; |
| | | }finally { |
| | | saveInterfaceLog(param,"/visitBiz/resource/orgUpdate",null,Constants.ZERO); |
| | | } |
| | |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getErpId,param.getId()).last("limit 1")); |
| | | Company company = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getErpId,param.getOrgId()).last("limit 1")); |
| | | if(Objects.isNull(company)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到组织信息"); |
| | | } |
| | | List<Integer> doorIds = null; |
| | | if(Objects.isNull(member)){ |
| | | member = new Member(); |
| | |
| | | dealMemberRoleEmpower(member,doorIds,param.getValidStartTime(),param.getValidEndTime()); |
| | | //添加人员卡片数据 |
| | | dealMemberCard(member,param); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | }catch (BusinessException e){ |
| | | throw e; |
| | | }finally { |
| | | saveInterfaceLog(param,"/visitBiz/resource/userUpdate",null,Constants.ZERO); |
| | | } |
| | |
| | | visitsMapper.updateById(i); |
| | | }); |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | }catch (BusinessException e){ |
| | | throw e; |
| | | }finally { |
| | | saveInterfaceLog(param,"/visitBiz/resource/approveApply",null,Constants.ZERO); |
| | | } |