123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448 |
- <template>
- <el-drawer
- :title="title"
- :modal-append-to-body="false"
- :modal="false"
- :wrapper-closable="false"
- size="36%"
- :visible.sync="dialogVisible"
- >
- <el-form
- ref="ruleForm"
- :model="formData"
- :rules="rules"
- label-position="right"
- label-width="160px"
- >
- <el-form-item label="设备名称" required>
- <el-input
- v-model="formData.goafDevName"
- placeholder="请输入设备名称"
- style="width: 260px"
- />
- </el-form-item>
- <el-form-item label="安装区域" required>
- <div class="safe-area">
- <el-select
- v-model="formData.goafOrebelt"
- class="safe-area-item"
- filterable
- placeholder="矿带"
- @change="changeArea(1)"
- >
- <el-option :value="0" label="请选择矿带" disabled />
- <el-option
- v-for="(item, index) in goafOrebelts"
- :key="index"
- :value="item.goafOrebelt"
- :label="item.goafOrebelt"
- />
- </el-select>
- <el-select
- v-model="formData.goafOrebody"
- class="safe-area-item"
- filterable
- placeholder="矿体"
- @change="changeArea(2)"
- >
- <el-option :value="0" label="请选择矿体" disabled />
- <el-option
- v-for="(item, index) in goafOrebodys"
- :key="index"
- :value="item.goafOrebody"
- :label="item.goafOrebody"
- />
- </el-select>
- <el-select
- v-model="formData.goafOreheight"
- class="safe-area-item"
- filterable
- placeholder="中段"
- @change="changeArea(3)"
- >
- <el-option :value="0" label="请选择中段" disabled />
- <el-option
- v-for="(item, index) in goafOreheights"
- :key="index"
- :value="item.goafOreheight"
- :label="item.goafOreheight"
- />
- </el-select>
- <el-select
- v-model="formData.goafId"
- class="safe-area-item"
- filterable
- placeholder="采空区名称"
- @change="changeArea(4)"
- >
- <el-option :value="0" label="请选择采空区" disabled />
- <el-option
- v-for="item in goafNames"
- :key="item.goafId"
- :value="item.goafId"
- :label="item.goafName"
- />
- </el-select>
- </div>
- </el-form-item>
- <el-form-item label="安装地点" required>
- <el-input v-model="formData.goafDevLocation" placeholder="请输入安装地点" style="width:260px" />
- </el-form-item>
- <el-form-item label="设备类型" required>
- <el-select
- v-model="formData.goafDevTypeId"
- style="width: 260px"
- >
- <el-option
- v-for="item in sensorCats"
- :key="item.sensorTypeId"
- :value="item.sensorTypeId"
- :label="item.sensorTypeName"
- />
- </el-select>
- </el-form-item>
- <el-form-item label="设备安装时间">
- <el-date-picker
- v-model="formData.goafInstallTime"
- type="date"
- placeholder="设备安装时间"
- format="yyyy-MM-dd"
- value-format="yyyy-MM-dd"
- style="width: 260px"
- />
- </el-form-item>
- <el-form-item label="设备负责人部门">
- <el-cascader
- v-model="formData.goafDevGroupid"
- :options="treeData"
- :props="{ checkStrictly: true, emitPath: false }"
- style="min-width: 260px"
- filterable
- clearable
- @change="handleChange"
- >
- <template slot-scope="{ node, data }">
- <span>{{ data.label }}</span>
- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
- </template>
- </el-cascader>
- </el-form-item>
- <el-form-item label="责任人员" prop="executeAccountId">
- <el-select v-model="formData.goafDevAccountId" style="width:260px" filterable clearable @change="handleUserSelect">
- <el-option v-for="item in userList" :key="item.accountId" :value="item.accountId" :label="item.accountName" />
- </el-select>
- </el-form-item>
- </el-form>
- <div class="btn-group">
- <el-button type="primary" @click="submitForm('ruleForm')">确定</el-button>
- <el-button class="cancel-btn" @click="dialogVisible = false">取消</el-button>
- </div>
- </el-drawer>
- </template>
- <script>
- import { toTree } from '@/utils/build-tree'
- import { getGroupByList } from '@/api/system/groupApi'
- import { getUserByPage } from '@/api/system/userApi'
- import { getSensorCat } from '@/api/goaf/sensorCatApi'
- import { getGoafBaseInfo } from '@/api/goaf/info'
- import { createSensor, updateSensor } from '@/api/goaf/sensor'
- export default {
- name: 'CameraModel',
- data() {
- return {
- title: '摄像头配置',
- ops: {
- bar: {
- keepShow: false,
- background: 'rgba(144, 147, 153, 0.4)',
- onlyShowBarOnScroll: false
- }
- },
- dialogVisible: false,
- sensorCats: [],
- goaf: [],
- formData: {
- goafOrebelt: 0,
- goafOrebody: 0,
- goafOreheight: 0,
- goafId: 0,
- goafName: '',
- goafDevLocation: '',
- ocId: undefined,
- goafDevName: '',
- goafDevTypename: '',
- goafDevTypeId: '',
- goafDevAccountId: undefined,
- goafDevGroupid: '',
- goafDevAccountName: '',
- goafInstallTime: ''
- },
- rules: {},
- ctrlLevelList: [],
- positionList: [],
- viewData: {},
- actionType: '',
- treeData: [],
- userList: [],
- goafOrebelts: [],
- goafOrebodys: [],
- goafOreheights: [],
- goafNames: [],
- groupList: []
- }
- },
- mounted() {
- this.init()
- },
- methods: {
- init() {
- getSensorCat().then((res) => {
- this.sensorCats = res.data.filter(item => item.sensorTypeName.includes('摄像头'))
- })
- getGoafBaseInfo().then((res) => {
- this.goaf = res.data
- this.goafOrebelts = res.data
- this.goafOrebodys = res.data
- this.goafOreheights = res.data
- this.goafNames = res.data
- })
- getGroupByList().then((resp) => {
- const { code, data } = resp
- if (code === 0) {
- const temp = toTree(
- data,
- {
- value: 'value',
- name: 'label',
- pValue: 'parentId'
- },
- {
- value: 'groupId',
- name: 'groupName',
- pValue: 'parentId'
- }
- )
- this.treeData = temp
- this.groupList = data
- }
- })
- getUserByPage({
- page: 1,
- limit: 999999
- }).then((resp) => {
- const { data } = resp
- this.userList = data
- })
- },
- handleChange(groupId) {
- this.formData.goafDevAccountId = ''
- this.formData.goafDevAccountName = ''
- getUserByPage({
- page: 1,
- limit: 999999,
- keyword: '',
- groupId
- }).then((resp) => {
- const { data } = resp
- this.userList = data
- })
- },
- changeArea(type) {
- const goafOrebelts = this.deeepClone(this.goafOrebelts)
- let goafOrebodys = this.deeepClone(this.goafOrebodys)
- let goafOreheights = this.deeepClone(this.goafOreheights)
- let goafNames = this.deeepClone(this.goafNames)
- if (type === 1) {
- goafOrebodys = goafOrebelts.filter(
- (item) => item.goafOrebelt === this.formData.goafOrebelt
- )
- // goafOrebodys = this.unique(goafOrebodys, 'goafOrebelt')
- this.goafOrebodys = goafOrebodys
- this.goafOreheights = []
- this.goafNames = []
- this.formData.goafOrebody = ''
- this.formData.goafOreheight = ''
- this.formData.goafId = ''
- } else if (type === 2) {
- goafOreheights = goafOrebodys.filter(
- (item) => item.goafOrebody === this.formData.goafOrebody
- )
- // goafOreheights = this.unique(goafOreheights, 'goafOreheight')
- this.goafOreheights = goafOreheights
- this.goafNames = []
- this.formData.goafOreheights = ''
- this.formData.goafId = ''
- } else if (type === 3) {
- goafNames = goafOreheights.filter(
- (item) => item.goafOreheight === this.formData.goafOreheight
- )
- // goafNames = this.unique(goafNames, 'goafName')
- this.goafNames = goafNames
- this.formData.goafId = ''
- } else {
- for (let i = 0; i < goafNames.length; i++) {
- if (this.formData.goafId === goafNames[i].goafId) {
- this.formData.goafName = goafNames[i].goafName
- }
- }
- }
- this.$forceUpdate()
- },
- // Show Add Dialog
- showAddModel() {
- this.resetFormData()
- this.actionType = 'ADD'
- this.title = '新增摄像头配置'
- this.dialogVisible = true
- },
- // Show Edit Dialog
- showEditModel(data) {
- this.resetFormData()
- this.actionType = 'UPDATE'
- this.title = '修改摄像头配置'
- this.dialogVisible = true
- // Life minus one
- const sensorCat = this.sensorCats.filter(
- (item) => item.sensorTypeName === data.goafDevTypename
- )[0]
- this.formData = {
- ...data,
- goafDevTypeId: sensorCat.sensorTypeId
- }
- },
- // Reset Form Data
- resetFormData() {
- this.formData = {
- goafOrebelt: 0,
- goafOrebody: 0,
- goafOreheight: 0,
- goafId: 0,
- goafName: '',
- goafDevLocation: '',
- ocId: undefined,
- goafDevName: '',
- goafDevTypename: '',
- goafDevAccountId: undefined,
- goafDevAccountName: '',
- goafInstallTime: '',
- goafDevGroupid: ''
- }
- },
- handleUserSelect(accountId) {
- const item = this.userList.filter((item) => item.accountId === accountId)
- const user = item[0]
- this.formData.groupId = user.groupId
- this.formData.goafDevGroupname = user.groupName
- this.formData.goafDevAccountName = user.accountName
- this.formData.positionId = user.positionId
- this.formData.positionName = user.positionName
- },
- // 提交
- submitForm(formName) {
- this.formData.goafDevGroupname = this.groupList.filter(item => item.groupId === this.formData.goafDevGroupid)[0].groupName
- const sensorCat = this.sensorCats.filter(
- (item) => item.sensorTypeId === this.formData.goafDevTypeId
- )[0]
- this.formData.goafDevTypename = sensorCat.sensorTypeName
- this.formData.ocId = sensorCat.ocId
- this.$refs[formName].validate((valid) => {
- if (valid) {
- if (
- this.formData.goafId === undefined ||
- this.formData.goafId === 'undefined' ||
- this.formData.goafId === ''
- ) {
- this.$message.error('请选择采空区!')
- return
- }
- switch (this.actionType) {
- case 'ADD':
- createSensor(this.formData)
- .then((resp) => {
- const { code, msg } = resp
- if (code === 0) {
- this.dialogVisible = false
- this.$message.success(msg)
- this.formSuccess()
- } else {
- this.$message.error(msg)
- }
- })
- .catch((error) => {
- console.log(error)
- })
- break
- case 'UPDATE':
- updateSensor(this.formData)
- .then((resp) => {
- const { code, msg } = resp
- if (code === 0) {
- this.dialogVisible = false
- this.$message.success(msg)
- this.formSuccess()
- } else {
- this.$message.error(msg)
- }
- })
- .catch((error) => {
- console.log(error)
- })
- break
- }
- } else {
- this.$message.error('error submit!!')
- return false
- }
- })
- },
- handleSelectUser(item) {
- console.log({ item })
- },
- formSuccess() {
- this.$emit('formSuccess')
- },
- resetFormField(formName) {
- this.$refs[formName].resetFields()
- },
- unique(arr = [], name = 'name') {
- const res = new Map()
- return arr.filter((item) => !res.has(item[name]) && res.set(item[name], 1))
- },
- deeepClone(params) {
- return JSON.parse(JSON.stringify(params))
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- .btn-group {
- padding-left: 160px;
- margin-top: 50px;
- }
- .safe-area {
- color: #fff;
- display: flex;
- flex-wrap: wrap;
- .safe-area-item {
- margin: 0 5px 10px 0;
- width: 20%;
- min-width: 120px;
- }
- .el-input__inner {
- text-align: left !important;
- }
- }
- ::v-deep.el-select-tree {
- .label {
- color: #606266 !important;
- }
- .el-tree-node.is-current > .el-tree-node__content,
- .el-tree-node__content:hover {
- background-color: #fff !important;
- color: #606266;
- }
- }
- </style>
|