From 3a154bdb0a5aaa2c0ac3eac95a6ba747068bd454 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期二, 13 一月 2026 10:00:37 +0800
Subject: [PATCH] 优化
---
admin/src/components/business/OperaJkCabinetWindow.vue | 327 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 327 insertions(+), 0 deletions(-)
diff --git a/admin/src/components/business/OperaJkCabinetWindow.vue b/admin/src/components/business/OperaJkCabinetWindow.vue
new file mode 100644
index 0000000..5372648
--- /dev/null
+++ b/admin/src/components/business/OperaJkCabinetWindow.vue
@@ -0,0 +1,327 @@
+<template>
+ <GlobalWindow
+ width="50%"
+ :title="title"
+ :visible.sync="visible"
+ :confirm-working="isWorking"
+ @confirm="confirm"
+ >
+ <el-form :model="form" ref="form" :rules="rules">
+ <h3 style="margin: 0 0 20px 0;">璁惧淇℃伅</h3>
+ <el-form-item label="璁惧缂栧彿" prop="code">
+ <el-input v-model="form.code" placeholder="璇疯緭鍏ヨ澶囩紪鍙�" v-trim/>
+ </el-form-item>
+ <el-form-item label="璁惧鍚嶇О" prop="name">
+ <el-input v-model="form.name" placeholder="璇疯緭鍏ヨ澶囧悕绉�" v-trim/>
+ </el-form-item>
+ <el-form-item label="璁惧ID" prop="devId">
+ <el-input v-model="form.devId" placeholder="璇疯緭鍏ヨ澶嘔D" v-trim/>
+ </el-form-item>
+ <el-form-item label="搴忓垪鍙�" prop="serialNo">
+ <el-input v-model="form.serialNo" placeholder="璇疯緭鍏ュ簭鍒楀彿" v-trim/>
+ </el-form-item>
+ <el-form-item label="閫氳鍦板潃" prop="linkAddr">
+ <el-input v-model="form.linkAddr" placeholder="璇疯緭鍏ラ�氳鍦板潃" v-trim/>
+ </el-form-item>
+ <el-form-item label="绔彛鍙�" prop="port">
+ <el-input v-model="form.port" placeholder="璇疯緭鍏ョ鍙e彿" v-trim/>
+ </el-form-item>
+ <el-form-item label="璁惧绠$悊鍛�" prop="managerIdList">
+ <el-select v-model="form.managerIdList" filterable multiple placeholder="璇烽�夋嫨璁惧绠$悊鍛�">
+ <el-option
+ v-for="item in memberList"
+ :key="item.id"
+ :label="item.name+'-'+item.companyName"
+ :value="Number(item.id)">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="浣跨敤鏃堕暱" prop="useTime">
+ <div style="width: 100%; display: flex; align-items: center;">
+ <el-input v-model="form.useTime" placeholder="璇疯緭鍏ュ崟娆℃嬁鍙栭挜鍖欏彲浣跨敤鏃堕暱" v-trim style="flex: 1;"/>
+ <span style="margin-left: 20px;">鍗曚綅锛氬垎閽�</span>
+ </div>
+ </el-form-item>
+ <el-form-item label="閰掔簿妫�娴�" prop="doubleAuth">
+ <div style="width: 100%; display: flex; align-items: center;">
+ <el-switch
+ v-model="form.alcoholStatus"
+ active-color="#13ce66"
+ inactive-color="#ff4949"
+ :active-value="0"
+ :inactive-value="1">
+ </el-switch>
+ <span style="margin-left: 20px; color: #999999;">寮�鍚悗锛岄渶瑕侀厭绮炬娴嬮�氳繃鍚庯紝鎵嶈兘寮�闂�</span>
+ </div>
+ </el-form-item>
+ <el-form-item label="鍙岄噸楠岃瘉" prop="doubleAuth">
+ <div style="width: 100%; display: flex; align-items: center;">
+ <el-switch
+ v-model="form.doubleAuth"
+ active-color="#13ce66"
+ inactive-color="#ff4949"
+ :active-value="1"
+ :inactive-value="0">
+ </el-switch>
+ <span style="margin-left: 20px; color: #999999;">寮�鍚弻閲嶈璇佸悗锛岄挜鍖欓鍙栨椂鍏堟牎楠岄獙璇佷汉韬唤锛屽啀鏍¢獙鍙告満韬唤</span>
+ </div>
+ </el-form-item>
+ <el-form-item label="楠岃瘉浜�" prop="authMemberIdList">
+ <el-select v-model="form.authMemberIdList" filterable multiple placeholder="璇烽�夋嫨楠岃瘉浜�">
+ <el-option
+ v-for="item in memberList"
+ :key="item.id"
+ :label="item.name+'-'+item.companyName"
+ :value="Number(item.id)">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鎵�鍦ㄤ綅缃�" prop="location">
+ <el-input v-model="form.location" placeholder="璇疯緭鍏ユ墍鍦ㄤ綅缃�" v-trim/>
+ </el-form-item>
+ <el-form-item label="缁忕含搴�" prop="jwd">
+ <div style="width: 100%; display: flex; align-items: center;">
+ <el-input v-model="form.jwd" placeholder="璇疯緭鍏ョ粡绾害" v-trim/>
+ <a style="margin-left: 20px; flex-shrink: 0;" href="https://lbs.amap.com/tools/picker" target="_blank">缁忕含搴﹀湪绾挎嬀鍙栧湴鍧�</a>
+ </div>
+ </el-form-item>
+ <el-form-item label="鐘舵��" prop="status">
+ <el-switch
+ v-model="form.status"
+ active-color="#13ce66"
+ inactive-color="#ff4949"
+ :active-value="0"
+ :inactive-value="1">
+ </el-switch>
+ </el-form-item>
+ <el-form-item label="婵�娲绘枃浠�" prop="activateFile">
+ <el-upload
+ accept=".zip"
+ class="upload-demo"
+ :action="base"
+ :limit="1"
+ :data="{ folder: 'activate' }"
+ :file-list="fileList"
+ :on-success="getFile"
+ :on-remove="removeFile">
+ <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button>
+ <div slot="tip" class="el-upload__tip">鍙兘涓婁紶zip鏂囦欢</div>
+ </el-upload>
+ </el-form-item>
+ <h3 style="margin: 20px 0;">鏌滅粍淇℃伅</h3>
+ <el-form-item label="鎺掑垪" prop="rowNum">
+ <div style="width: 100%; display: flex; align-items: center;">
+ <el-input v-model="form.rowNum" :disabled="form.id ? true : false" type="number" placeholder="璇疯緭鍏ユ帓鏁�" v-trim>
+ <template slot="append">鎺�</template>
+ </el-input>
+ <span style="margin: 0 20px;">x</span>
+ <el-input v-model="form.columnNum" :disabled="form.id ? true : false" type="number" placeholder="璇疯緭鍏ュ垪鏁�" v-trim>
+ <template slot="append">鍒�</template>
+ </el-input>
+ </div>
+ </el-form-item>
+ <el-form-item label="缂栫爜" prop="noType">
+ <el-radio-group v-model="form.noType" :disabled="form.id ? true : false" @change="changeNoType">
+ <el-radio :label="0">鑷姩缂栫爜</el-radio>
+ <el-radio :label="1">鎵嬪姩缂栫爜</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item label="鍓嶇紑" prop="noPrefix" v-if="form.noType === 1">
+ <div style="width: 100%; display: flex; align-items: center;">
+ <el-input style="flex: 1;" v-model="form.noPrefix" :disabled="form.id ? true : false" placeholder="璇疯緭鍏ユ暟瀛楁垨瀛楁瘝" v-trim/>
+ <span style="margin: 0 20px;">浣嶆暟</span>
+ <el-input style="flex: 1;" v-model="form.noLength" :disabled="form.id ? true : false" placeholder="璇疯緭鍏ユ暟瀛�" v-trim/>
+ <span style="margin: 0 20px;">璧峰缂栧彿</span>
+ <el-input style="flex: 1;" v-model="form.noIndex" :disabled="form.id ? true : false" placeholder="璇疯緭鍏ユ暟瀛�" v-trim/>
+ </div>
+ </el-form-item>
+ <el-form-item label="鎺掑垪椤哄簭" prop="sortType" v-if="form.noType === 1">
+ <el-radio-group v-model="form.sortType" :disabled="form.id ? true : false">
+ <el-radio :label="0">浠庡乏寰�鍙�</el-radio>
+ <el-radio :label="1">浠庝笂鍚戜笅</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-form>
+ </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { allList } from '@/api/business/member'
+import { getInfoById } from '@/api/business/jkCabinet'
+export default {
+ name: 'OperaJkCabinetWindow',
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data () {
+ var validate = (rule, value, callback) => {
+ if (this.form.noType === 1 && this.form.noLength === '' || this.form.noIndex === '') {
+ callback(new Error('浣嶆暟鍜岃捣濮嬬紪鍙蜂笉鑳戒负绌猴紒'));
+ } else {
+ callback();
+ }
+ };
+ return {
+ base: process.env.VUE_APP_API_PREFIX + 'visitsAdmin/cloudService/public/upload',
+ fileList: [],
+ // 琛ㄥ崟鏁版嵁
+ form: {
+ id: null,
+ code: '',
+ name: '',
+ devId: '',
+ serialNo: '',
+ linkAddr: '',
+ status: 0,
+ port: '',
+ managerIdList: '',
+ location: '',
+ useTime: '',
+ doubleAuth: 0,
+ authMemberIdList: '',
+ rowNum: '',
+ columnNum: '',
+ jwd: '',
+ latitude: '',
+ noType: 0,
+ noPrefix: '',
+ noLength: '',
+ noIndex: '',
+ sortType: 0,
+ activateFile: null,
+ alcoholStatus: 0
+ },
+ // 楠岃瘉瑙勫垯
+ rules: {
+ code: [
+ { required: true, message: '璇疯緭鍏ヨ澶囩紪鍙�', trigger: 'blur' }
+ ],
+ name: [
+ { required: true, message: '璇疯緭鍏ヨ澶囧悕绉�', trigger: 'blur' }
+ ],
+ devId: [
+ { required: true, message: '璇疯緭鍏ヨ澶嘔D', trigger: 'blur' }
+ ],
+ linkAddr: [
+ { required: true, message: '璇疯緭鍏ラ�氳鍦板潃', trigger: 'blur' }
+ ],
+ port: [
+ { required: true, message: '璇疯緭鍏ョ鍙e彿', trigger: 'blur' }
+ ],
+ managerIdList: [
+ { required: true, message: '璇烽�夋嫨璁惧绠$悊鍛�', trigger: 'blur' }
+ ],
+ authMemberIdList: [
+ { required: true, message: '璇烽�夋嫨楠岃瘉浜�', trigger: 'blur' }
+ ],
+ rowNum: [
+ { required: true, message: '璇疯緭鍏ユ帓鍒�', trigger: 'blur' }
+ ],
+ noType: [
+ { required: true, message: '璇烽�夋嫨缂栫爜', trigger: 'blur' }
+ ],
+ noPrefix: [
+ { required: true, validator: validate, trigger: 'blur' }
+ ],
+ sortType: [
+ { required: true, message: '璇疯緭鍏ユ帓鍒楅『搴�', trigger: 'blur' }
+ ]
+ },
+ memberList: []
+ }
+ },
+ created () {
+ this.config({
+ api: '/business/jkCabinet',
+ 'field.id': 'id'
+ })
+ },
+ methods: {
+ getFile(response) {
+ this.fileList = [{
+ name: response.data.originname,
+ fileurl: response.data.imgaddr,
+ ...response.data
+ }]
+ this.form.activateFile = {
+ name: response.data.originname,
+ fileurl: response.data.imgaddr,
+ ...response.data
+ }
+ },
+ removeFile() {
+ this.form.activateFile = null
+ this.fileList = []
+ },
+ open (title, target) {
+ this.title = title
+ this.loadMember()
+ if (target) {
+ getInfoById(target.id)
+ .then(res => {
+ res.managerIdList = res.managerIdList.map(item => Number(item))
+ res.authMemberIdList = res.authMemberIdList.map(item => Number(item))
+ this.$nextTick(() => {
+ for (const key in this.form) {
+ this.form[key] = res[key]
+ }
+ if (res.activateFile) {
+ this.fileList = [{
+ name: res.activateFile.name,
+ url: res.activateFile.fileurlFull,
+ ...res.activateFile
+ }]
+ }
+ this.visible = true
+ })
+ })
+ } else {
+ this.$nextTick(() => {
+ this.form = {
+ id: null,
+ code: '',
+ name: '',
+ devId: '',
+ serialNo: '',
+ linkAddr: '',
+ status: 0,
+ port: '',
+ managerIdList: '',
+ useTime: '',
+ doubleAuth: 0,
+ authMemberIdList: '',
+ rowNum: '',
+ columnNum: '',
+ jwd: '',
+ latitude: '',
+ noType: 0,
+ noPrefix: '',
+ noLength: '',
+ noIndex: '',
+ sortType: 0
+ }
+ this.$refs.form.resetFields()
+ this.form[this.configData['field.id']] = null
+ })
+ this.visible = true
+ }
+ },
+ loadMember () {
+ allList({
+ type: 2
+ }).then(res => {
+ this.memberList = res
+ })
+ },
+ changeNoType() {
+ if (this.form.noType === 0) {
+ this.form.noPrefix = ''
+ this.form.noLength = ''
+ this.form.noIndex = ''
+ this.form.sortType = 0
+ }
+ }
+ }
+}
+</script>
--
Gitblit v1.9.3