From 43dc204f89527ba402666ba92345efbfe751f297 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期四, 09 十月 2025 18:32:22 +0800
Subject: [PATCH] 钥匙柜、钥匙

---
 admin/src/components/business/OperaJkCabinetWindow.vue |  225 +++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 159 insertions(+), 66 deletions(-)

diff --git a/admin/src/components/business/OperaJkCabinetWindow.vue b/admin/src/components/business/OperaJkCabinetWindow.vue
index ee63049..7817588 100644
--- a/admin/src/components/business/OperaJkCabinetWindow.vue
+++ b/admin/src/components/business/OperaJkCabinetWindow.vue
@@ -1,29 +1,13 @@
 <template>
   <GlobalWindow
+    width="50%"
     :title="title"
     :visible.sync="visible"
     :confirm-working="isWorking"
     @confirm="confirm"
   >
     <el-form :model="form" ref="form" :rules="rules">
-      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
-        <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
-        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
-      </el-form-item>
-      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
-        <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
-      </el-form-item>
-      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
-        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
-      </el-form-item>
-      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
-        <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
-      </el-form-item>
-      <el-form-item label="澶囨敞" prop="info">
-        <el-input v-model="form.info" placeholder="璇疯緭鍏ュ娉�" v-trim/>
-      </el-form-item>
+      <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>
@@ -39,53 +23,97 @@
       <el-form-item label="閫氳鍦板潃" prop="linkAddr">
         <el-input v-model="form.linkAddr" placeholder="璇疯緭鍏ラ�氳鍦板潃" v-trim/>
       </el-form-item>
-      <el-form-item label="鐘舵�� 0鏈粦瀹� 1鍦ㄤ綅 2鍊熷嚭" prop="status">
-        <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0鏈粦瀹� 1鍦ㄤ綅 2鍊熷嚭" v-trim/>
+      <el-form-item label="绔彛鍙�" prop="port">
+        <el-input v-model="form.port" placeholder="璇疯緭鍏ョ鍙e彿" v-trim/>
       </el-form-item>
-      <el-form-item label="绔彛" prop="port">
-        <el-input v-model="form.port" placeholder="璇疯緭鍏ョ鍙�" v-trim/>
+      <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="item.id">
+          </el-option>
+        </el-select>
       </el-form-item>
-      <el-form-item label="璁惧绠$悊鍛樼紪鐮侊紙鍏宠仈member)" prop="managerId">
-        <el-input v-model="form.managerId" placeholder="璇疯緭鍏ヨ澶囩鐞嗗憳缂栫爜锛堝叧鑱攎ember)" v-trim/>
+      <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="useTime">
-        <el-input v-model="form.useTime" placeholder="璇疯緭鍏ヤ娇鐢ㄦ椂闀�(绉�)" v-trim/>
+      <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="鏄惁鍙岄噸楠岃瘉 0鍚� 1鏄�" prop="doubleAuth">
-        <el-input v-model="form.doubleAuth" placeholder="璇疯緭鍏ユ槸鍚﹀弻閲嶉獙璇� 0鍚� 1鏄�" v-trim/>
-      </el-form-item>
-      <el-form-item label="楠岃瘉浜虹紪鐮侊紙鍏宠仈member)" prop="authMemberId">
-        <el-input v-model="form.authMemberId" placeholder="璇疯緭鍏ラ獙璇佷汉缂栫爜锛堝叧鑱攎ember)" v-trim/>
-      </el-form-item>
-      <el-form-item label="鎺掓暟" prop="rowNum">
-        <el-input v-model="form.rowNum" placeholder="璇疯緭鍏ユ帓鏁�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍒楁暟" prop="columnNum">
-        <el-input v-model="form.columnNum" placeholder="璇疯緭鍏ュ垪鏁�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鏈�鍚庨�氳鏃堕棿" prop="haertTime">
-        <el-date-picker v-model="form.haertTime" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ渶鍚庨�氳鏃堕棿"></el-date-picker>
+      <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="item.id">
+          </el-option>
+        </el-select>
       </el-form-item>
       <el-form-item label="鎵�鍦ㄤ綅缃�" prop="lacation">
         <el-input v-model="form.lacation" placeholder="璇疯緭鍏ユ墍鍦ㄤ綅缃�" v-trim/>
       </el-form-item>
-      <el-form-item label="缁忓害" prop="longitude">
-        <el-input v-model="form.longitude" placeholder="璇疯緭鍏ョ粡搴�" v-trim/>
+      <el-form-item label="缁忕含搴�" prop="longitude">
+        <div style="width: 100%; display: flex; align-items: center;">
+          <el-input v-model="form.longitude" 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="latitude">
-        <el-input v-model="form.latitude" placeholder="璇疯緭鍏ョ淮搴�" v-trim/>
+      <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="缂栫爜鏂瑰紡 0鑷姩缂栫爜 1鎵嬪姩缂栫爜" prop="noType">
-        <el-input v-model="form.noType" placeholder="璇疯緭鍏ョ紪鐮佹柟寮� 0鑷姩缂栫爜 1鎵嬪姩缂栫爜" v-trim/>
+      <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" type="number" placeholder="璇疯緭鍏ユ帓鏁�" v-trim>
+            <template slot="append">鎺�</template>
+          </el-input>
+          <span style="margin: 0 20px;">x</span>
+          <el-input v-model="form.columnNum" type="number" placeholder="璇疯緭鍏ュ垪鏁�" v-trim>
+            <template slot="append">鍒�</template>
+          </el-input>
+        </div>
       </el-form-item>
-      <el-form-item label="缂栫爜鍓嶇紑" prop="noPrefix">
-        <el-input v-model="form.noPrefix" placeholder="璇疯緭鍏ョ紪鐮佸墠缂�" v-trim/>
+      <el-form-item label="缂栫爜" prop="noType">
+        <el-radio-group v-model="form.noType" @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="noLength">
-        <el-input v-model="form.noLength" placeholder="璇疯緭鍏ョ紪鐮佷綅鏁�" v-trim/>
+      <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" placeholder="璇疯緭鍏ユ暟瀛楁垨瀛楁瘝" v-trim/>
+          <span style="margin: 0 20px;">浣嶆暟</span>
+          <el-input style="flex: 1;" v-model="form.noLength" placeholder="璇疯緭鍏ユ暟瀛�" v-trim/>
+          <span style="margin: 0 20px;">璧峰缂栧彿</span>
+          <el-input style="flex: 1;" v-model="form.noIndex" placeholder="璇疯緭鍏ユ暟瀛�" v-trim/>
+        </div>
       </el-form-item>
-      <el-form-item label="璧峰缂栫爜" prop="noIndex">
-        <el-input v-model="form.noIndex" placeholder="璇疯緭鍏ヨ捣濮嬬紪鐮�" v-trim/>
+      <el-form-item label="鎺掑垪椤哄簭" prop="sortType" v-if="form.noType === 1">
+        <el-radio-group v-model="form.sortType">
+          <el-radio :label="0">浠庡乏寰�鍙�</el-radio>
+          <el-radio :label="1">浠庝笂鍚戜笅</el-radio>
+        </el-radio-group>
       </el-form-item>
     </el-form>
   </GlobalWindow>
@@ -94,6 +122,7 @@
 <script>
 import BaseOpera from '@/components/base/BaseOpera'
 import GlobalWindow from '@/components/common/GlobalWindow'
+import { allList } from '@/api/business/member'
 export default {
   name: 'OperaJkCabinetWindow',
   extends: BaseOpera,
@@ -103,37 +132,65 @@
       // 琛ㄥ崟鏁版嵁
       form: {
         id: null,
-        creator: '',
-        createDate: '',
-        editor: '',
-        editDate: '',
-        isdeleted: '',
-        info: '',
         code: '',
         name: '',
         devId: '',
         serialNo: '',
         linkAddr: '',
-        status: '',
+        status: 0,
         port: '',
-        managerId: '',
+        managerIdList: '',
         useTime: '',
-        doubleAuth: '',
-        authMemberId: '',
+        doubleAuth: 0,
+        authMemberIdList: '',
         rowNum: '',
         columnNum: '',
-        haertTime: '',
         lacation: '',
         longitude: '',
         latitude: '',
-        noType: '',
+        noType: 0,
         noPrefix: '',
         noLength: '',
-        noIndex: ''
+        noIndex: '',
+        sortType: 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, message: '璇疯緭鍏ュ墠缂�', trigger: 'blur' }
+        ],
+        sortType: [
+          { required: true, message: '璇疯緭鍏ユ帓鍒楅『搴�', trigger: 'blur' }
+        ]
+      },
+      memberList: []
     }
   },
   created () {
@@ -141,6 +198,42 @@
       api: '/business/jkCabinet',
       'field.id': 'id'
     })
+  },
+  methods: {
+    open (title, target) {
+      this.title = title
+      this.loadMember()
+      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]
+        }
+      })
+    },
+    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