| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426 |
- <template>
- <el-dialog
- :title="title"
- :visible.sync="dialogVisible"
- :close-on-click-modal="false"
- :close-on-press-escape="false"
- :show-close="false"
- append-to-body
- fullscreen
- class="dialog paper-detail-dialog"
- top="0"
- >
- <div slot="title" class="dialog-title">
- <span class="dialogtitle">{{ title }}</span>
- <div>
- <ibps-toolbar :actions="toolbars" @action-event="handleActionEvent" />
- </div>
- </div>
- <div class="container">
- <div class="main">
- <div class="form">
- <el-form
- ref="form"
- :model="form"
- label-width="74px"
- :rules="rules"
- :hide-required-asterisk="true"
- >
- <el-row>
- <el-col :span="12">
- <el-form-item label="类型:" prop="lei_xing_">
- <template slot="label">
- <span class="required">类型:</span>
- </template>
- <el-select
- v-model="form.lei_xing_"
- placeholder="请选择"
- size="mini"
- style="width: 80%"
- :disabled="isEdit"
- >
- <el-option
- v-for="(value, key) in config"
- :key="key"
- :label="value['label'] || key.split('-')[1]"
- :value="key"
- />
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- </div>
- <!-- <el-divider /> -->
- <div class="table">
- <el-alert type="success" title="配置详情" :closable="false" />
- <div class="hearder">
- <div class="search">
- <div class="search-item">
- <span class="label">部门:</span>
- <ibps-user-selector
- v-model="search.buMen"
- type="position"
- readonly-text="text"
- :disabled="false"
- :multiple="false"
- :filter="filter"
- filtrate
- size="mini"
- />
- </div>
- <div class="search-item">
- <span class="label">区域:</span>
- <el-input
- v-model="search.quYu"
- size="mini"
- placeholder="请输入"
- @keyup.enter.native="goSearch"
- />
- </div>
- <div class="search-item">
- <span class="label">房间:</span>
- <el-input
- v-model="search.fangJian"
- size="mini"
- placeholder="请输入"
- @keyup.enter.native="goSearch"
- />
- </div>
- <div class="search-item">
- <span class="label">监测周期:</span>
- <el-select
- v-model="search.zhouQi"
- placeholder="请选择"
- size="mini"
- :clearable="true"
- >
- <el-option
- v-for="item in [
- '每日',
- '每周',
- '每月',
- '每季度',
- '每半年',
- '每年',
- '按需'
- ]"
- :key="item"
- :label="item"
- :value="item"
- />
- </el-select>
- </div>
- <div class="search-item">
- <span class="label">监测岗位:</span>
- <el-select
- v-model="search.gangWei"
- placeholder="请选择"
- size="mini"
- :clearable="true"
- >
- <el-option
- v-for="item in jianCeGangWeiList"
- :key="item.positionId"
- :label="item.positionName"
- :value="item.positionName"
- />
- </el-select>
- </div>
- <div class="search-item" style="width: 70px">
- <el-button
- size="mini"
- type="primary"
- icon="el-icon-search"
- @click="goSearch"
- >查询</el-button
- >
- </div>
- <div class="search-item" style="width: 68px">
- <el-button
- type="success"
- size="mini"
- icon="ibps-icon-plus"
- @click="openDialog"
- >添加</el-button
- >
- </div>
- <div class="search-item" style="width: 100px">
- <el-button
- type="info"
- size="mini"
- icon="el-icon-setting"
- @click="settingData"
- >批量配置</el-button
- >
- </div>
- <div class="search-item" style="width: 70px">
- <el-button
- type="danger"
- size="mini"
- icon="ibps-icon-close"
- @click="removeItem"
- >删除</el-button
- >
- </div>
- </div>
- </div>
- <el-table
- :data="showPaperList"
- style="width: 100%"
- @selection-change="handleSelectionChange"
- >
- <el-table-column width="50" type="selection" />
- <el-table-column
- prop=""
- label="序号"
- width="50"
- type="index"
- :index="showIndex"
- />
- <el-table-column prop="bu_men_" label="部门" width="100">
- <template slot-scope="{ row }">
- <ibps-user-selector
- type="position"
- :value="row.bu_men_"
- readonly-text="text"
- :disabled="true"
- :multiple="true"
- />
- </template>
- </el-table-column>
- <el-table-column prop="qu_yu_" label="区域" />
- <el-table-column prop="fang_jian_" label="房间" />
- <el-table-column
- v-if="shouldShowColumn('deviceno1_')"
- prop="deviceno1_"
- label="被控设备编号"
- />
- <el-table-column
- v-if="shouldShowColumn('devicename1_')"
- prop="devicename1_"
- label="被控设备名称"
- />
- <el-table-column
- v-if="shouldShowColumn('deviceno3_')"
- prop="deviceno1_"
- label="被控试剂耗材编号"
- />
- <el-table-column
- v-if="shouldShowColumn('devicename3_')"
- prop="devicename1_"
- label="被控试剂耗材名称"
- />
- <el-table-column prop="deviceno2_" label="监控设备" />
- <el-table-column
- prop="jian_ce_zhou_qi_"
- label="监测周期"
- width="80"
- />
- <el-table-column
- prop="jian_ce_ri_qi_"
- label="监测日期"
- width="110"
- />
- <el-table-column prop="jian_ce_gang_wei_" label="监测岗位" />
- <el-table-column
- prop="shi_fou_qi_yong_"
- label="是否启用"
- width="80"
- >
- <template slot-scope="{ row }">
- <el-tag v-if="row.shi_fou_qi_yong_ === '1'">启用</el-tag>
- <el-tag v-if="row.shi_fou_qi_yong_ === '0'" type="danger"
- >停用</el-tag
- >
- </template>
- </el-table-column>
- <el-table-column fixed="right" prop="" label="操作栏目">
- <template slot-scope="{ row }">
- <el-button
- type="primary"
- icon="el-icon-edit"
- size="mini"
- @click="openDialog(row)"
- >编辑</el-button
- >
- </template>
- </el-table-column>
- </el-table>
- <el-pagination
- style="margin-top: 5px; padding-bottom: 10px"
- :current-page="currentPage"
- :page-sizes="[10, 20, 30, 50]"
- :page-size="pageSize"
- layout="prev,pager,next,jumper,sizes,->,total"
- :total="trueList.length"
- @size-change="handleSizeChange"
- @current-change="handleCurrentChange"
- />
- </div>
- </div>
- <FecDialog
- v-if="subDialogVisible"
- ref="FecDialogRef"
- @onSubmit="sonSubmit"
- @onClose="sonClose"
- />
- <DefaultSettingDialog
- ref="DefaultSettingDialogRef"
- :dialog-visible.sync="defultdialogVisible"
- :jian-ce-gang-wei-list="jianCeGangWeiList"
- :params="form"
- :day="dayCheck"
- :week="weekCheck"
- :month="monthCheck"
- :quarter="quarterCheck"
- :half-year="halfYearCheck"
- :year="yearCheck"
- :sep="sepCheck"
- @emitParent="handleSetting"
- />
- </div>
- </el-dialog>
- </template>
- <script>
- import { getSetting } from '@/utils/query'
- import ibpsUserSelector from '@/business/platform/org/selector'
- import FecDialog from './fecDialog.vue'
- import FacilityData from '@/views/component/facility/facilityData.vue'
- import DefaultSettingDialog from './defaultSettingDialog.vue'
- export default {
- components: {
- DefaultSettingDialog,
- FacilityData,
- ibpsUserSelector,
- FecDialog,
- IbpsCustomDialog: () =>
- import('@/business/platform/data/templaterender/custom-dialog')
- },
- props: {
- parentData: {
- type: [Object, Array],
- default: () => {}
- },
- visible: {
- type: Boolean,
- default: false
- }
- },
- data() {
- const { userId, level = {}, position } = this.$store.getters || {}
- return {
- defultdialogVisible: false,
- filter: [
- {
- descVal: '1',
- includeSub: true,
- old: 'position',
- partyId: this.$store.getters.userInfo.employee.positions,
- partyName: '',
- scriptContent: '',
- type: 'user',
- userType: 'position'
- }
- ],
- search: {
- buMen: '',
- quYu: '',
- fangJian: '',
- gangWei: '',
- zhouQi: ''
- },
- searchData: [],
- isSearch: false,
- level: level.second || level.first,
- userId: userId,
- pageSize: 10,
- currentPage: 1,
- multipleSelection: [],
- nextDate: '',
- rules: {
- lei_xing_: [{ required: true, message: '请选择类型', trigger: 'blur' }]
- },
- jianCeGangWeiList: [],
- dialogVisible: true,
- subDialogVisible: false,
- title: '设施环境配置表',
- toolbars: [
- { key: 'save', label: '保存' },
- {
- key: 'cancel',
- label: '退出',
- type: 'danger',
- icon: 'ibps-icon-close'
- }
- ],
- dayCheck: [],
- weekCheck: '',
- monthCheck: '',
- quarterCheck: '',
- halfYearCheck: '',
- yearCheck: '',
- sepCheck: '',
- form: {
- di_dian_: level.second || level.first,
- bian_zhi_ren_: userId,
- lei_xing_: '',
- bian_zhi_bu_men_: position && position.split(',').at(-1),
- zhou_qi_: '',
- gang_wei_: '',
- tiao_jian_: '',
- she_bei_bian_hao_: '', // 设备编号
- jian_ce_ri_qi_: '',
- ri_qi_lie_biao_: '',
- mo_kuai_lu_jing_: '',
- lie_biao_shu_ju_: '',
- kai_shi_shi_jian_: '',
- kong_zhi_biao_zhu: ''
- },
- subForm: [],
- period: [
- { label: '日监测', value: '每日' },
- { label: '周监测', value: '每周' },
- { label: '月监测', value: '每月' },
- { label: '季度监测', value: '每季度' },
- { label: '半年监测', value: '每半年' },
- { label: '年监测', value: '每年' }
- ],
- config: {
- '01-室内温湿度监控': {
- label: '室内温湿度监控',
- path: '/sshjgl/wdjc/snwsdjkcd',
- showDevice: false,
- displayField: [],
- requireField: ['fang_jian_']
- },
- '02-冰箱温度监控': {
- label: '冰箱温度监控',
- path: '/sshjgl/wdjc/bxwdjc',
- showDevice: true,
- displayField: ['deviceno1_', 'devicename1_'],
- requireField: ['deviceno1_', 'devicename1_']
- },
- '03-温浴箱温度监控': {
- label: '温浴箱温度监控',
- path: '/sshjgl/wdjc/wyxwdjkywh',
- showDevice: true,
- displayField: ['deviceno1_', 'devicename1_'],
- requireField: ['deviceno1_', 'devicename1_']
- },
- '04-阴凉柜温度监控': {
- label: '阴凉柜温度监控',
- path: '/sshjgl/wdjc/ylgwdjc',
- showDevice: true,
- displayField: ['deviceno1_', 'devicename1_'],
- requireField: ['deviceno1_', 'devicename1_']
- },
- '05-纯水机水质监测': {
- label: '纯水机水质监测',
- path: '/sshjgl/csjszjcb',
- showDevice: true,
- displayField: ['deviceno1_', 'devicename1_'],
- requireField: ['deviceno1_', 'devicename1_']
- },
- '06-每日安全检查': {
- label: '每日安全检查',
- path: '/sshjgl/aqgl/mraqjc',
- showDevice: false,
- displayField: [],
- requireField: []
- },
- '07-每月安全检查': {
- label: '每月安全检查',
- path: '/sshjgl/aqgl/myaqjc',
- showDevice: true,
- displayField: [],
- requireField: []
- },
- '08-含氯有效性监测': {
- label: '含氯有效性监测',
- path: '/sshjgl/aqgl/hlyxxjc',
- showDevice: false,
- displayField: [],
- requireField: []
- },
- // '09-紫外灯辐照测定': {
- // path: '/sshjgl/aqgl/zwdfzd',
- // },
- '10-洗眼器检查': {
- label: '洗眼器检查',
- path: '/sshjgl/aqgl/xyqjc',
- showDevice: true,
- displayField: ['deviceno1_', 'devicename1_'],
- requireField: []
- },
- '11-紧急淋浴器检查': {
- label: '紧急淋浴器检查',
- path: '/sshjgl/aqgl/jjlyqjc',
- showDevice: true,
- displayField: ['deviceno1_', 'devicename1_'],
- requireField: []
- },
- '12-紫外灯消毒': {
- label: '紫外灯消毒',
- path: '/sshjgl/aqgl/jykzwdxdjlb',
- showDevice: true,
- displayField: ['deviceno1_', 'devicename1_'],
- requireField: []
- },
- '13-高压灭菌': {
- label: '高压灭菌',
- path: '/sshjgl/aqgl/gymjjlb',
- showDevice: true,
- displayField: ['deviceno1_', 'devicename1_'],
- requireField: []
- },
- '14-空气消毒机': {
- label: '空气消毒机',
- path: '/sshjgl/aqgl/xdjsyjlb',
- showDevice: true,
- displayField: ['deviceno1_', 'devicename1_'],
- requireField: []
- },
- '15-日常防护消毒': {
- label: '日常防护消毒',
- path: '/sshjgl/aqgl/rcfhxd',
- showDevice: false,
- displayField: [],
- requireField: []
- },
- '16-设备排出废液': {
- label: '设备排出废液',
- path: '/sshjgl/aqgl/sbpcfyxd',
- showDevice: true,
- displayField: ['deviceno1_', 'devicename1_'],
- requireField: ['deviceno1_', 'devicename1_']
- },
- '17-医疗废物收集交接': {
- label: '医疗废物收集交接',
- path: '/sshjgl/aqgl/ylfwjjdj',
- showDevice: false,
- displayField: [],
- requireField: []
- },
- '18-试剂耗材监控': {
- label: '试剂耗材监控',
- path: '/sshjgl/aqgl/sjhcjk',
- showDevice: true,
- displayField: ['deviceno3_', 'devicename3_'],
- requireField: ['deviceno3_', 'devicename3_']
- }
- },
- subIdList: [],
- isFirstLieBiao: true,
- settig: false
- }
- },
- computed: {
- // 分页结果
- showPaperList() {
- const start = (this.currentPage - 1) * this.pageSize
- const end = start + this.pageSize
- return this.trueList.slice(start, end)
- },
- // 过滤结果
- trueList() {
- return this.isSearch ? this.searchData : this.subForm
- },
- shouldShowColumn() {
- return (columnName) => {
- return this.config[this.form.lei_xing_]?.displayField?.includes(
- columnName
- )
- }
- },
- shouldRequired() {
- return (columnName) => {
- return this.config[this.form.lei_xing_]?.requireField?.includes(
- columnName
- )
- }
- },
- isEdit() {
- return !!(this.parentData instanceof Object && this.parentData.mainId)
- }
- },
- watch: {
- 'form.lei_xing_'(val) {
- if (this.isEdit) return
- this.form.mo_kuai_lu_jing_ = this.config[val].path
- if (!this.isFirstLieBiao) {
- this.subForm = []
- switch (val) {
- case '01-室内温湿度监控':
- this.form.lie_biao_shu_ju_ = JSON.stringify([
- {
- label: '上午温度',
- range: [],
- fixValue: '',
- value: '',
- result: '',
- status: '',
- unit: '℃'
- },
- {
- label: '上午湿度',
- range: [],
- fixValue: '',
- value: '',
- result: '',
- status: '',
- unit: '%'
- },
- {
- label: '下午温度',
- range: [],
- fixValue: '',
- value: '',
- result: '',
- status: '',
- unit: '℃'
- },
- {
- label: '下午湿度',
- range: [],
- fixValue: '',
- value: '',
- result: '',
- status: '',
- unit: '%'
- }
- ])
- break
- case '02-冰箱温度监控':
- this.form.lie_biao_shu_ju_ = JSON.stringify([
- {
- label: '冷藏',
- range: [],
- fixValue: '',
- value: '',
- result: '',
- status: '',
- unit: '℃'
- },
- {
- label: '冷冻',
- range: [],
- fixValue: '',
- value: '',
- result: '',
- status: '',
- unit: '℃'
- }
- ])
- break
- case '03-温浴箱温度监控':
- this.form.lie_biao_shu_ju_ = JSON.stringify([
- {
- label: '温度',
- range: [],
- fixValue: '',
- value: '',
- result: '',
- status: '',
- unit: '℃'
- }
- ])
- break
- case '04-阴凉柜温度监控':
- this.form.lie_biao_shu_ju_ = JSON.stringify([
- {
- label: '温度',
- range: [],
- fixValue: '',
- value: '',
- result: '',
- status: '',
- unit: '℃'
- }
- ])
- break
- case '05-纯水机水质监测':
- this.form.lie_biao_shu_ju_ = JSON.stringify([
- {
- label: '电阻率',
- range: [10, null],
- fixValue: '',
- value: '',
- result: '',
- status: '',
- unit: 'MΩ·CM'
- },
- {
- label: '电导率',
- range: [0, 1],
- fixValue: '',
- value: '',
- result: '',
- status: '',
- unit: 'uS/cm'
- },
- {
- label: '微生物含量',
- range: [0, 10],
- fixValue: '',
- value: '',
- result: '',
- status: '',
- unit: 'cfu/ml'
- }
- ])
- break
- default:
- this.form.lie_biao_shu_ju_ = ''
- break
- }
- }
- }
- },
- async mounted() {
- const config = await getSetting('facilityEnv', 'typeList')
- const settig = await getSetting('postJob', 'allocation')
- if (this.$utils.isNotEmpty(config)) {
- this.config = config
- }
- if (this.$utils.isNotEmpty(settig)) {
- this.settig = settig
- }
- this.init()
- if (this.isEdit) {
- this.loadData()
- this.loadSubData()
- } else {
- this.isFirstLieBiao = false
- }
- },
- methods: {
- init() {
- this.loadSelectorData()
- },
- loadSelectorData() {
- const { first, second } = this.$store.getters.level || {}
- // const sql = `select * from t_sbwhgwpzb where di_dian_='${second || first}'`
- this.$common
- .request('query', {
- key: this.settig ? 'gwzzzha' : 'getPositionList',
- params: [second || first]
- })
- .then((res) => {
- const { data = [] } = res.variables || {}
- this.jianCeGangWeiList = data
- })
- },
- loadData() {
- // const sql = `select * from t_sshjpzb where id_='${this.parentData.mainId}'`
- this.$common
- .request('query', {
- key: 'getFacsConfigById',
- params: [this.parentData.mainId]
- })
- .then((res) => {
- const { data = [] } = res.variables || {}
- // console.log('主表', data)
- if (!data.length) {
- return this.$message.warning(``)
- }
- Object.assign(this.form, data[0])
- // this.form = data[0]
- const jian_ce_ri_qi_ = data[0].jian_ce_ri_qi_
- const ri_qi_lie_biao_ = data[0].ri_qi_lie_biao_
- if (this.form.jian_ce_ri_qi_) {
- this.$nextTick(() => {
- switch (this.form.zhou_qi_) {
- case '每日':
- if (jian_ce_ri_qi_ === '每天') {
- this.dayCheck = [1, 2, 3, 4, 5, 6, 7]
- } else {
- this.dayCheck = jian_ce_ri_qi_
- .split('每周')[1]
- .split(',')
- .map((item) => +item)
- }
- break
- case '每周':
- this.weekCheck = +jian_ce_ri_qi_.split('每周')[1]
- break
- case '每月':
- this.monthCheck = +jian_ce_ri_qi_
- .split('每个月第')[1]
- .split('天')[0]
- break
- case '每季度':
- this.quarterCheck = +jian_ce_ri_qi_
- .split('每季度第')[1]
- .split('个月')[0]
- break
- case '每半年':
- this.halfYearCheck = +jian_ce_ri_qi_
- .split('每半年第')[1]
- .split('个月')[0]
- break
- case '每年':
- this.yearCheck = +jian_ce_ri_qi_
- .split('每年第')[1]
- .split('个月')[0]
- break
- case '间隔':
- this.sepCheck = +ri_qi_lie_biao_
- break
- default:
- break
- }
- })
- }
- this.$nextTick(() => {
- this.isFirstLieBiao = false
- })
- })
- },
- loadSubData() {
- // const sql = `select * from t_sshjpzxq where parent_id_='${this.parentData.mainId}' and (shi_fou_shan_chu_ !='1' OR shi_fou_shan_chu_ IS NULL OR shi_fou_shan_chu_='')`
- this.$common
- .request('query', {
- key: 'getSubFacsConfig',
- params: [this.parentData.mainId]
- })
- .then((res) => {
- const { data = [] } = res.variables || {}
- // console.log('子表', data)
- if (!data.length) {
- return this.$message.warning(``)
- }
- this.subForm = data
- this.subIdList = data.map((item) => item.zi_wai_deng_wai_j)
- })
- },
- handleSetting(type) {
- this.form = this.$refs.DefaultSettingDialogRef.form
- if (this.subForm.length === 0)
- return this.$message.warning('配置详情列表中无数据,请先添加数据!')
- if (type === 'settingEmpty') this.settingEmpty()
- else if (type === 'settingAll') this.settingAll()
- this.defultdialogVisible = false
- },
- // 使用默认数据
- settingData() {
- if (this.form.lei_xing_ === '') {
- return this.$message.warning('请先选择类型!')
- }
- this.defultdialogVisible = true
- },
- settingAll() {
- this.subForm.forEach((item) => {
- item.bu_men_ = this.form.bian_zhi_bu_men_
- item.jian_ce_gang_wei_ = this.form.gang_wei_
- item.kong_zhi_tiao_jia = this.form.tiao_jian_
- item.kong_zhi_biao_zhu = this.form.kong_zhi_biao_zhu
- item.jian_ce_ri_qi_ = this.form.jian_ce_ri_qi_
- item.ri_qi_lie_biao_ = this.form.ri_qi_lie_biao_
- item.jian_ce_zhou_qi_ = this.form.zhou_qi_
- item.lie_biao_shu_ju_ = this.form.lie_biao_shu_ju_
- item.kai_shi_shi_jian_ = this.form.kai_shi_shi_jian_
- })
- this.$message.success('完全批量替换成功!')
- this.defultdialogVisible = false
- },
- // 使用默认数据
- settingEmpty() {
- this.subForm.forEach((item) => {
- if (item.bu_men_ === '') {
- item.bu_men_ = this.form.bian_zhi_bu_men_
- }
- if (item.jian_ce_gang_wei_ === '') {
- item.jian_ce_gang_wei_ = this.form.gang_wei_
- }
- if (item.kong_zhi_tiao_jia === '') {
- item.kong_zhi_tiao_jia = this.form.tiao_jian_
- }
- if (item.kong_zhi_biao_zhu === '') {
- item.kong_zhi_biao_zhu = this.form.kong_zhi_biao_zhu
- }
- if (item.jian_ce_ri_qi_ === '') {
- item.jian_ce_ri_qi_ = this.form.jian_ce_ri_qi_
- }
- if (item.ri_qi_lie_biao_ === '') {
- item.ri_qi_lie_biao_ = this.form.ri_qi_lie_biao_
- }
- if (item.jian_ce_zhou_qi_ === '') {
- item.jian_ce_zhou_qi_ = this.form.zhou_qi_
- }
- if (item.kai_shi_shi_jian_ === '') {
- item.kai_shi_shi_jian_ = this.form.kai_shi_shi_jian_
- }
- if (this.form.lie_biao_shu_ju_) {
- if (item.lie_biao_shu_ju_) {
- const main = JSON.parse(this.form.lie_biao_shu_ju_)
- const sub = JSON.parse(item.lie_biao_shu_ju_)
- if (sub.length === 0) {
- item.lie_biao_shu_ju_ = JSON.stringify(sub)
- }
- if (sub.length > 0) {
- sub.forEach((i, index) => {
- if (
- i.label === main[index].label &&
- (i.range.length === 0 ||
- i.range.join(',') === [null, null].join(',') ||
- i.range.join(',') === ['', ''].join(','))
- ) {
- i.range = main[index].range
- }
- if (i.label === main[index].label && i.fixValue === '') {
- i.fixValue = main[index].fixValue
- }
- if (i.label === main[index].label && i.unit === '') {
- i.unit = main[index].unit
- }
- })
- item.lie_biao_shu_ju_ = JSON.stringify(sub)
- } else {
- item.lie_biao_shu_ju_ = this.form.lie_biao_shu_ju_
- }
- } else {
- item.lie_biao_shu_ju_ = this.form.lie_biao_shu_ju_
- }
- }
- })
- this.$message.success('空值批量替换成功!')
- this.defultdialogVisible = false
- },
- // 当前页码改变
- handleCurrentChange(val) {
- this.currentPage = val
- },
- // 页码选择器改变
- handleSizeChange(val) {
- this.pageSize = val
- this.currentPage = 1
- },
- // 分页连续序号
- showIndex(index) {
- return index + 1 + (this.currentPage - 1) * this.pageSize
- },
- handleActionEvent({ key }) {
- switch (key) {
- case 'cancel':
- this.dialogVisible = false
- break
- case 'save':
- this.saveResult()
- break
- default:
- break
- }
- },
- // 子表关闭事件
- sonClose() {
- this.subDialogVisible = false
- },
- // 子表单添加/编辑按钮
- openDialog(row) {
- if (this.form.lei_xing_ === '') {
- return this.$message.warning('请先选择类型!')
- }
- this.subDialogVisible = true
- this.$nextTick(() => {
- this.$refs.FecDialogRef.open(
- row,
- this.jianCeGangWeiList,
- this.form,
- this.config
- )
- })
- },
- // 子表的提交事件
- sonSubmit(data) {
- const { form, isEdit } = data
- if (isEdit) {
- const sub = this.subForm.find(
- (item) => item.zi_wai_deng_wai_j === form.zi_wai_deng_wai_j
- )
- if (sub) {
- Object.assign(sub, form)
- }
- } else {
- this.subForm.push(form)
- }
- this.isEdit && this.goSearch()
- this.sonClose()
- },
- // 关闭当前窗口
- closeDialog() {
- this.dialogVisible = false
- this.$emit('close', false)
- },
- // 子表删除
- removeItem() {
- if (this.multipleSelection.length === 0) {
- return this.$message.warning('请选择要删除的数据!')
- } else {
- this.$confirm('请确认是否删除所选项?', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(() => {
- this.multipleSelection.forEach((item) => {
- const index = this.subForm.indexOf(item)
- this.subForm.splice(index, 1)
- })
- this.isEdit && this.goSearch()
- this.$message.success('删除成功!')
- this.multipleSelection = []
- })
- .catch(() => {
- this.$message({
- type: 'info',
- message: '已取消删除'
- })
- })
- }
- },
- // table复选框
- handleSelectionChange(val) {
- this.multipleSelection = val
- },
- async submit() {
- if (this.subForm.length === 0) {
- return this.$message.warning('请添加子表数据')
- }
- for (var i = 0; i < this.subForm.length; i++) {
- const item = this.subForm[i]
- if (item.bu_men_ === '') {
- return this.$message.warning(`子表第${i + 1}行部门信息缺失!`)
- }
- if (item.jian_ce_ri_qi_ === '' && item.jian_ce_zhou_qi_ !== '按需') {
- return this.$message.warning(`子表第${i + 1}行监测日期信息缺失!`)
- }
- if (item.jian_ce_gang_wei_ === '') {
- return this.$message.warning(`子表第${i + 1}行监测岗位信息缺失!`)
- }
- if (this.shouldRequired('deviceno1_') && item.deviceno1_ === '') {
- return this.$message.warning(`子表第${i + 1}行设备信息缺失!`)
- }
- if (this.shouldRequired('fang_jian_') && item.fang_jian_ === '') {
- return this.$message.warning(`子表第${i + 1}行房间信息缺失!`)
- }
- if (item.lie_biao_shu_ju_) {
- const lie_biao_shu_ju_ = JSON.parse(item.lie_biao_shu_ju_)
- for (let i = 0; i < lie_biao_shu_ju_.length; i++) {
- const item = lie_biao_shu_ju_[i]
- if (
- !item.label &&
- (item.range.length !== 2 ||
- item.range[0] === null ||
- item.range[1] === null) &&
- !item.fixValue &&
- !item.unit
- ) {
- return this.$message.warning(`第${i + 1}行数据非法!`)
- }
- }
- }
- }
- // console.log('主表', this.form)
- // console.log('子表', this.subForm)
- const allUid = this.subForm.map((item) => item.zi_wai_deng_wai_j)
- const existUid = this.subIdList
- const addList = this.subForm.filter(
- (item) => !existUid.includes(item.zi_wai_deng_wai_j)
- )
- const deleteList = existUid.filter((item) => !allUid.includes(item))
- const updateList = this.subForm.filter((item) =>
- existUid.includes(item.zi_wai_deng_wai_j)
- )
- // 主表修改
- if (this.isEdit) {
- const params = {
- tableName: 't_sshjpzb',
- updList: [
- {
- where: {
- id_: this.parentData.mainId
- },
- param: {
- lei_xing_: this.form.lei_xing_,
- bian_zhi_bu_men_: this.form.bian_zhi_bu_men_,
- zhou_qi_: this.form.zhou_qi_,
- gang_wei_: this.form.gang_wei_,
- tiao_jian_: this.form.tiao_jian_,
- kong_zhi_biao_zhu: this.form.kong_zhi_biao_zhu,
- she_bei_bian_hao_: this.form.she_bei_bian_hao_,
- jian_ce_ri_qi_: this.form.jian_ce_ri_qi_,
- ri_qi_lie_biao_: this.form.ri_qi_lie_biao_,
- mo_kuai_lu_jing_: this.form.mo_kuai_lu_jing_,
- lie_biao_shu_ju_: this.form.lie_biao_shu_ju_,
- kai_shi_shi_jian_: this.form.kai_shi_shi_jian_
- }
- }
- ]
- }
- await this.$common.request('update', params).then(async () => {
- console.log('主表更新数据成功')
- if (addList.length) {
- const params = {
- tableName: 't_sshjpzxq',
- paramWhere: addList.map((item) => {
- return {
- parent_id_: this.parentData.mainId,
- bu_men_: item.bu_men_,
- devicename1_: item.devicename1_,
- deviceno1_: item.deviceno1_,
- deviceid1_: item.deviceid1_,
- deviceno2_: item.deviceno2_,
- deviceid2_: item.deviceid2_,
- fang_jian_: item.fang_jian_,
- fang_jian_id_: item.fang_jian_id_,
- jian_ce_gang_wei_: item.jian_ce_gang_wei_,
- jian_ce_ri_qi_: item.jian_ce_ri_qi_,
- jian_ce_zhou_qi_: item.jian_ce_zhou_qi_,
- kong_zhi_tiao_jia: item.kong_zhi_tiao_jia,
- kong_zhi_biao_zhu: item.kong_zhi_biao_zhu,
- lie_biao_shu_ju_: item.lie_biao_shu_ju_,
- qu_yu_: item.qu_yu_,
- ri_qi_lie_biao_: item.ri_qi_lie_biao_,
- shi_fou_qi_yong_: item.shi_fou_qi_yong_,
- zi_wai_deng_wai_j: item.zi_wai_deng_wai_j,
- kai_shi_shi_jian_: item.kai_shi_shi_jian_
- }
- })
- }
- await this.$common.request('add', params).then(() => {
- console.log('子表添加数据成功')
- })
- }
- if (updateList.length) {
- const params = {
- tableName: 't_sshjpzxq',
- updList: updateList.map((item) => ({
- where: {
- zi_wai_deng_wai_j: item.zi_wai_deng_wai_j
- },
- param: {
- qu_yu_: item.qu_yu_,
- fang_jian_: item.fang_jian_,
- fang_jian_id_: item.fang_jian_id_,
- bu_men_: item.bu_men_,
- deviceno1_: item.deviceno1_,
- deviceid1_: item.deviceid1_,
- devicename1_: item.devicename1_,
- deviceno2_: item.deviceno2_, // 监控设备
- deviceid2_: item.deviceid2_,
- jian_ce_zhou_qi_: item.jian_ce_zhou_qi_,
- jian_ce_gang_wei_: item.jian_ce_gang_wei_,
- shi_fou_qi_yong_: item.shi_fou_qi_yong_,
- kong_zhi_tiao_jia: item.kong_zhi_tiao_jia,
- kong_zhi_biao_zhu: item.kong_zhi_biao_zhu,
- jian_ce_ri_qi_: item.jian_ce_ri_qi_,
- ri_qi_lie_biao_: item.ri_qi_lie_biao_,
- lie_biao_shu_ju_: item.lie_biao_shu_ju_,
- kai_shi_shi_jian_: item.kai_shi_shi_jian_
- }
- }))
- }
- await this.$common.request('update', params).then(() => {
- console.log('子表更新数据成功')
- })
- }
- if (deleteList.length) {
- // const params = {
- // tableName: 't_sshjpzxq',
- // paramWhere: { zi_wai_deng_wai_j: deleteList.join(',') }
- // }
- // await this.$common.request('delete', params).then(() => { console.log('子表删除数据成功') })
- // 调整为软删除
- const params = {
- tableName: 't_sshjpzxq',
- updList: deleteList.map((item) => ({
- where: {
- zi_wai_deng_wai_j: item
- },
- param: {
- shi_fou_shan_chu_: '1'
- }
- }))
- }
- await this.$common.request('update', params).then(() => {
- console.log('子表软删除数据成功')
- })
- }
- this.$nextTick(() => {
- this.$message.success('修改成功!')
- this.closeDialog()
- })
- })
- } else {
- const params = {
- tableName: 't_sshjpzb',
- paramWhere: [
- {
- ...this.form
- }
- ]
- }
- await this.$common.request('add', params).then(async (res) => {
- console.log('主表新增数据成功')
- const { cont = [] } = res.variables || {}
- if (addList.length) {
- const params = {
- tableName: 't_sshjpzxq',
- paramWhere: addList.map((item) => {
- return {
- parent_id_: cont[0].id_,
- bu_men_: item.bu_men_,
- devicename1_: item.devicename1_,
- deviceno1_: item.deviceno1_,
- deviceid1_: item.deviceid1_,
- deviceno2_: item.deviceno2_,
- deviceid2_: item.deviceid2_,
- fang_jian_: item.fang_jian_,
- fang_jian_id_: item.fang_jian_id_,
- jian_ce_gang_wei_: item.jian_ce_gang_wei_,
- jian_ce_ri_qi_: item.jian_ce_ri_qi_,
- jian_ce_zhou_qi_: item.jian_ce_zhou_qi_,
- kong_zhi_tiao_jia: item.kong_zhi_tiao_jia,
- kong_zhi_biao_zhu: item.kong_zhi_biao_zhu,
- lie_biao_shu_ju_: item.lie_biao_shu_ju_,
- qu_yu_: item.qu_yu_,
- ri_qi_lie_biao_: item.ri_qi_lie_biao_,
- shi_fou_qi_yong_: item.shi_fou_qi_yong_,
- zi_wai_deng_wai_j: item.zi_wai_deng_wai_j,
- kai_shi_shi_jian_: item.kai_shi_shi_jian_
- }
- })
- }
- await this.$common.request('add', params).then(() => {
- this.$message.success('添加成功!')
- console.log('子表添加数据成功')
- this.closeDialog()
- })
- }
- })
- }
- // 紫外灯数据同步更新紫外灯消毒记录表
- if (this.form.lei_xing_.includes('12')) {
- const tableName = 't_jykzwdxdjlbsc'
- // 生成添加请求参数
- const addParams = addList.length
- ? {
- tableName,
- paramWhere: addList.map((item) => ({
- di_dian_: this.level,
- bian_zhi_bu_men_: item.bu_men_,
- bian_zhi_ren_: this.userId,
- zi_wai_deng_ming_: item.devicename1_,
- she_shi_id_: item.zi_wai_deng_wai_j,
- gang_wei_: item.jian_ce_gang_wei_,
- shi_fou_ting_yong: item.shi_fou_qi_yong_
- }))
- }
- : null
- // 生成更新请求参数
- const updateParams = updateList.length
- ? {
- tableName,
- updList: updateList.map((item) => ({
- where: {
- she_shi_id_: item.zi_wai_deng_wai_j
- },
- param: {
- bian_zhi_bu_men_: item.bu_men_,
- zi_wai_deng_ming_: item.devicename1_,
- gang_wei_: item.jian_ce_gang_wei_,
- shi_fou_ting_yong: item.shi_fou_qi_yong_
- }
- }))
- }
- : null
- // 生成删除请求参数
- // const deleteParams = deleteList.length ? {
- // tableName,
- // paramWhere: { she_shi_id_: deleteList.join(',') }
- // } : null
- // 调整为软删除
- const deleteParams = deleteList.length
- ? {
- tableName,
- updList: deleteList.map((item) => ({
- where: {
- she_shi_id_: item
- },
- param: {
- shi_fou_shan_chu_: '1'
- }
- }))
- }
- : null
- // 合并所有请求
- const allRequests = []
- if (addParams) {
- allRequests.push(
- this.$common
- .request('add', addParams)
- .then(() => console.log('添加紫外灯数据成功'))
- )
- }
- if (updateParams) {
- allRequests.push(
- this.$common
- .request('update', updateParams)
- .then(() => console.log('更新紫外灯数据成功'))
- )
- }
- if (deleteParams) {
- // allRequests.push(this.$common.request('delete', deleteParams).then(() => console.log('删除紫外灯数据成功')))
- allRequests.push(
- this.$common
- .request('update', deleteParams)
- .then(() => console.log('软删除紫外灯数据成功'))
- )
- }
- // 执行所有请求
- await Promise.all(allRequests)
- .then(() => console.log('所有请求完成'))
- .catch((error) => console.error('请求出错:', error))
- }
- },
- saveResult() {
- this.$refs.form.validate((valid) => {
- if (valid) {
- this.submit()
- } else {
- this.$message.warning('请填写必填项')
- return false
- }
- })
- },
- // 查询
- goSearch() {
- console.log(this.search)
- if (
- !this.search.buMen &&
- !this.search.quYu &&
- !this.search.fangJian &&
- !this.search.zhouQi &&
- !this.search.gangWei
- ) {
- this.isSearch = false
- } else {
- // 条件过滤
- const searchData = this.subForm
- .filter((item) => item.bu_men_.indexOf(this.search.buMen) > -1)
- .filter((item) => item.qu_yu_.indexOf(this.search.quYu) > -1)
- .filter((item) => item.fang_jian_.indexOf(this.search.fangJian) > -1)
- .filter(
- (item) => item.jian_ce_zhou_qi_.indexOf(this.search.zhouQi) > -1
- )
- .filter(
- (item) => item.jian_ce_gang_wei_.indexOf(this.search.gangWei) > -1
- )
- this.isSearch = true
- this.searchData = searchData
- }
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- .sub-dialog {
- .contain {
- padding: 20px;
- }
- }
- .paper-detail-dialog {
- ::v-deep {
- .el-dialog__header {
- text-align: center;
- }
- }
- .dialog-title {
- display: flex;
- align-items: center;
- justify-content: center;
- div {
- position: absolute;
- right: 8vw;
- }
- .dialogtitle {
- font-size: 22px;
- font-family: SimHei;
- font-weight: bold;
- color: #222;
- }
- }
- .container {
- display: flex;
- width: 100%;
- justify-content: center;
- .el-row {
- margin: 0 !important;
- }
- .required {
- color: #606266 !important;
- &::before {
- content: '*';
- margin: 0 4px 0 -7.5px;
- color: #f56c6c;
- }
- }
- .main {
- width: 80%;
- height: calc(100vh - 100px);
- box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
- padding: 20px;
- overflow-y: auto;
- .form {
- .el-row {
- margin: 10px 0;
- }
- }
- }
- .table {
- margin-top: 20px;
- .el-alert {
- margin-bottom: 20px;
- }
- .search {
- display: flex;
- flex-wrap: wrap;
- align-items: center;
- .search-item {
- .label {
- font-size: 12px;
- min-width: 74px;
- }
- display: flex;
- align-items: center;
- width: 240px;
- margin: 0 10px 8px 0;
- }
- }
- }
- }
- }
- ::v-deep {
- .el-form-item__label {
- text-align: left;
- }
- .el-form-item__content {
- font-size: 12px !important;
- display: flex;
- }
- }
- </style>
|