From 9057e04efad1b7d61c77a72e5c37a504d0aee935 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期五, 26 九月 2025 09:24:03 +0800
Subject: [PATCH] H5静态化

---
 admin/src/components/system/permission/OperaPermissionWindow.vue |  140 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 140 insertions(+), 0 deletions(-)

diff --git a/admin/src/components/system/permission/OperaPermissionWindow.vue b/admin/src/components/system/permission/OperaPermissionWindow.vue
new file mode 100644
index 0000000..27968cf
--- /dev/null
+++ b/admin/src/components/system/permission/OperaPermissionWindow.vue
@@ -0,0 +1,140 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    @confirm="confirm"
+  >
+    <el-form :model="form" ref="form" :rules="rules">
+      <el-form-item label="鏉冮檺缂栫爜" prop="code" required>
+        <el-input v-model="form.code" placeholder="璇疯緭鍏ユ潈闄愮紪鐮�" v-trim maxlength="50"/>
+      </el-form-item>
+      <el-form-item label="鏉冮檺鍚嶇О" prop="name" required>
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ユ潈闄愬悕绉�" v-trim maxlength="50"/>
+      </el-form-item>
+      <el-form-item label="鏉冮檺妯″潡" prop="module">
+        <el-input v-model="form.module" placeholder="璇疯緭鍏ユ潈闄愭ā鍧�" v-trim maxlength="500"/>
+        <FormItemTip>澶氫釜妯″潡鍙互閫氳繃"/"鍒嗗壊锛屼緥濡�"鏃ュ織绠$悊/鎿嶄綔鏃ュ織"</FormItemTip>
+      </el-form-item>
+      <el-form-item label="鏉冮檺澶囨敞" prop="remark">
+        <el-input v-model="form.remark" placeholder="璇疯緭鍏ユ潈闄愬娉�" type="textarea" :rows="3" v-trim maxlength="500"/>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import FormItemTip from '@/components/common/FormItemTip'
+export default {
+  name: 'OperaPermissionWindow',
+  extends: BaseOpera,
+  components: { FormItemTip, GlobalWindow },
+  data () {
+    return {
+      // 鍘熸潈闄愮爜
+      originPermissionCode: '',
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        code: '',
+        name: '',
+        module: '',
+        remark: ''
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+        code: [
+          { required: true, message: '璇疯緭鍏ユ潈闄愮紪鐮�' }
+        ],
+        name: [
+          { required: true, message: '璇疯緭鍏ユ潈闄愬悕绉�' }
+        ],
+        module: [
+          { validator: this.__checkModule, trigger: 'blur' }
+        ]
+      }
+    }
+  },
+  methods: {
+    /**
+     * 鎵撳紑绐楀彛
+     *
+     * @param title 绐楀彛鏍囬
+     * @param target 琛屽璞★紙浠呯紪杈戦渶璇ュ弬鏁帮級
+     */
+    open (title, target) {
+      this.title = title
+      this.visible = true
+      // 鏂板缓
+      if (target == null || target.type === 'module') {
+        this.$nextTick(() => {
+          this.$refs.form.resetFields()
+          this.form[this.configData['field.id']] = null
+          if (target.type === 'module') {
+            this.form.module = target.modulePath
+          }
+        })
+        return
+      }
+      // 缂栬緫
+      this.$nextTick(() => {
+        this.originPermissionCode = target.code
+        for (const key in this.form) {
+          this.form[key] = target[key]
+        }
+      })
+    },
+    /**
+     * 纭
+     */
+    confirm () {
+      if (this.form.id == null || this.form.id === '') {
+        this.__confirmCreate()
+        return
+      }
+      if (this.originPermissionCode === this.form.code) {
+        this.__confirmEdit()
+        return
+      }
+      // 淇敼浜嗘潈闄愮紪鐮�
+      this.$dialog.confirm('妫�娴嬪埌鎮ㄤ慨鏀逛簡鏉冮檺缂栫爜锛屾潈闄愮紪鐮佷慨鏀瑰悗鍓嶅悗绔潎鍙兘闇�瑕佽皟鏁翠唬鐮侊紝纭淇敼鍚楋紵', '鎻愮ず', {
+        confirmButtonText: '纭淇敼',
+        type: 'warning'
+      })
+        .then(() => {
+          this.__confirmEdit()
+        })
+    },
+    /**
+     * 楠岃瘉妯″潡
+     *
+     * @param rule 瑙勫垯
+     * @param value 鍊�
+     * @param callback 鍥炶皟
+     * @returns {*}
+     * @private
+     */
+    __checkModule (rule, value, callback) {
+      if (value == null || value === '') {
+        return callback()
+      }
+      // 涓嶅厑璁稿寘鍚┖鏍�
+      if (value.indexOf(' ') !== -1) {
+        return callback(new Error('涓嶅厑璁稿寘鍚┖鏍�'))
+      }
+      // 涓嶅厑璁镐娇鐢�"/"寮�澶存垨缁撳熬
+      if (value.startsWith('/') || value.endsWith('/')) {
+        return callback(new Error('璇峰嬁浣跨敤"/"寮�澶存垨缁撳熬'))
+      }
+      return callback()
+    }
+  },
+  created () {
+    this.config({
+      api: '/system/permission'
+    })
+  }
+}
+</script>

--
Gitblit v1.9.3