From c14da121eb41234a0a9016596b07592a564a212b Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 10 七月 2025 08:58:50 +0800
Subject: [PATCH] ss
---
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