Przeglądaj źródła

Signed-off-by: zhaobao <528046418@qq.com>

zhaobao 3 lat temu
rodzic
commit
41d59c9113

+ 2 - 2
src/router/modules/daas.ts

@@ -22,9 +22,9 @@ const routes: RouteRecordRaw[] = [
         },
       },
       {
-        path: 'daas/object/:modelId/:ObjectId',
+        path: 'daas/object/:modelId/:objectId',
         name: 'daasObjectEdit',
-        component: () => import('@/views/daas/model/index.vue'),
+        component: () => import('@/views/daas/object/index.vue'),
         meta: {
           title: '对象编辑',
           sidebar: false,

+ 34 - 9
src/views/app_center/app_store/index.vue

@@ -9,11 +9,17 @@ import App from './components/App.vue'
 import { getAppByList, updateApp } from '@/api/apps/appApi'
 const tabbar = useTabbar()
 
+interface TABLE_ITEM {
+  appTitle: string
+  appDesc: string
+  appLogo: string
+}
+
 const state = reactive({
   title: '',
   dialogVisible: false,
   loading: false,
-  dataList: {},
+  dataList: [] as TABLE_ITEM[],
   actionType: 1,
 })
 
@@ -24,10 +30,7 @@ const getData = async () => {
   state.dataList = data
 }
 
-onMounted(() => {
-  getData()
-})
-
+const getDataList = () => {}
 const appRef = ref()
 
 const onAppEdit = (data: any) => {
@@ -61,6 +64,9 @@ const onAppRemove = (data: any) => {
     })
   }).catch(() => {})
 }
+onMounted(() => {
+  getData()
+})
 </script>
 
 <template>
@@ -88,8 +94,8 @@ const onAppRemove = (data: any) => {
       <el-col v-for="(item, index) in state.dataList" :key="index" :lg="6" :md="8" :sm="12">
         <el-card shadow="hover" class="action-card">
           <div class="content">
-            <div class="item">
-              <img src="item.appLogo" style="width: 80%;">
+            <div class="item app_logo-wrap">
+              <img :src="item.appLogo" class="app_logo">
             </div>
             <div class="item">
               <div class="name">
@@ -140,11 +146,30 @@ const onAppRemove = (data: any) => {
         color: var(--el-text-color-secondary);
         transition: var(--el-transition-color);
         font-size: 14px;
-        height: 66px;
+        height: 44px;
         line-height: 22px;
 
-        @include text-overflow(3);
+        @include text-overflow(2);
       }
+      &.app_logo-wrap{
+        &{
+          width: 80px;
+          height: 80px;
+          box-shadow:1px 1px 4px rgba(0,0,0,0.6);
+          border: 1px solid #eaeaea;
+          border-radius: 1em;
+          display: flex;
+          justify-content: center;
+          align-items: center;
+        }
+          .app_logo{
+          display: block;
+          width: 60px;
+          height: 60px;
+          border-radius: 50%;
+        }
+      }
+
     }
   }
 

+ 146 - 0
src/views/app_center/permit/components/Permit.vue

@@ -0,0 +1,146 @@
+<route lang="yaml">
+meta:
+  enabled: false
+    </route>
+
+<script lang="ts" setup>
+import { ElMessage } from 'element-plus'
+import type { FormInstance, FormRules } from 'element-plus'
+import { createAppPermit, getAppPermitById, updateAppPermit } from '@/api/apps/appPermitApi'
+const emit = defineEmits(['success'])
+
+const formRef = ref<FormInstance>()
+const formRules = ref<FormRules>({
+  permitTitle: [{ required: true, message: '请输入标题', trigger: 'blur' }],
+  permitDesc: [{ required: true, message: '请输入说明', trigger: 'blur' }],
+  permitCode: [{ required: true, message: '请输入编码', trigger: 'blur' }],
+})
+
+const state = reactive({
+  title: '',
+  dialogVisible: false,
+  loading: false,
+  formData: {
+    appId: undefined,
+    roleId: undefined,
+    permitId: undefined,
+    permitType: 1,
+    permitTitle: '',
+    permitCode: '',
+    permitDesc: '',
+    sortNo: undefined,
+    parentId: undefined,
+  },
+  actionType: 1,
+})
+
+onMounted(() => {})
+
+const getData = async (appId: number, roleId: number, permitId: number) => {
+  state.loading = true
+  const { data } = await getAppPermitById(appId, roleId, permitId)
+  state.loading = false
+  state.formData = data
+}
+
+function onSubmit() {
+  formRef.value && formRef.value.validate(async (valid) => {
+    if (valid) {
+      if (state.actionType === 1) {
+        await createAppPermit(state.formData)
+        state.dialogVisible = false
+        emit('success')
+      }
+      else {
+        await updateAppPermit(state.formData)
+        state.dialogVisible = false
+        emit('success')
+      }
+      ElMessage.success({
+        message: '保存成功',
+        center: true,
+      })
+    }
+  })
+}
+
+function onCancel() {
+  state.dialogVisible = false
+}
+
+function resetFormData() {
+  state.formData = {
+    appId: undefined,
+    roleId: undefined,
+    permitId: undefined,
+    permitType: 1,
+    permitTitle: '',
+    permitCode: '',
+    permitDesc: '',
+    sortNo: undefined,
+    parentId: undefined,
+  }
+}
+
+defineExpose({
+  showAddModel() {
+    resetFormData()
+    state.title = '新增'
+    state.actionType = 1
+    state.dialogVisible = true
+  },
+  showEditModel(appId: number, roleId: number, permitId: number) {
+    resetFormData()
+    state.title = '编辑'
+    state.actionType = 2
+    state.dialogVisible = true
+    getData(appId, roleId, permitId)
+  },
+
+})
+</script>
+
+<template>
+  <div>
+    <el-dialog v-model="state.dialogVisible" :title="state.title" width="600px" :close-on-click-modal="false" append-to-body destroy-on-close>
+      <div v-loading="state.loading">
+        <el-form ref="formRef" :model="state.formData" :rules="formRules" label-width="120px" label-suffix=":">
+          <el-form-item label="标题" prop="permitTitle">
+            <el-input v-model="state.formData.permitTitle" />
+          </el-form-item>
+
+          <el-form-item label="分类" prop="appCatTitle">
+            <el-radio-group v-model="state.formData.permitType">
+              <el-radio :label="0">
+                分组
+              </el-radio>
+              <el-radio :label="1">
+                授权
+              </el-radio>
+            </el-radio-group>
+          </el-form-item>
+
+          <el-form-item label="编码" prop="permitCode">
+            <el-input v-model="state.formData.permitCode" />
+          </el-form-item>
+          <el-form-item label="排序">
+            <el-input v-model="state.formData.sortNo" type="number" min="1" />
+          </el-form-item>
+
+          <el-form-item label="描述" prop="permitDesc">
+            <el-input v-model="state.formData.permitDesc" type="textarea" />
+          </el-form-item>
+        </el-form>
+      </div>
+
+      <template #footer>
+        <el-button size="large" @click="onCancel">
+          取消
+        </el-button>
+        <el-button type="primary" size="large" @click="onSubmit">
+          保存
+        </el-button>
+      </template>
+    </el-dialog>
+  </div>
+</template>

+ 85 - 12
src/views/app_center/permit/index.vue

@@ -4,13 +4,13 @@ meta:
 </route>
 
 <script lang="ts" setup name="AppRolePermit">
+import Permit from './components/Permit.vue'
 import { getAppPermitByList } from '@/api/apps/appPermitApi'
 import { getRoleByList } from '@/api/system/roleApi'
 import useSettingsStore from '@/store/modules/settings'
 
 const settingsStore = useSettingsStore()
 
-const route = useRoute()
 const router = useRouter()
 const tabbar = useTabbar()
 
@@ -74,10 +74,6 @@ const getRoleData = async () => {
   }
 }
 
-onMounted(() => {
-  getRoleData()
-})
-
 const onTreeNodeClick = (node: TreeNode) => {
   if (node.isLeaf) {
     state.curRoleId = node.roleId
@@ -85,12 +81,11 @@ const onTreeNodeClick = (node: TreeNode) => {
   }
 }
 const permitTableRef = ref()
-const onPermitAdd = () => { }
+const permitRef = ref()
 
-function onCancel() {
-  goBack()
+const onPermitAdd = () => {
+  permitRef.value.showAddModel()
 }
-
 // 返回列表页
 function goBack() {
   if (settingsStore.settings.tabbar.enable && settingsStore.settings.tabbar.mergeTabsBy !== 'activeMenu') {
@@ -100,6 +95,31 @@ function goBack() {
     router.push({ name: 'appStore' })
   }
 }
+
+const onAddSub = (row: any) => {
+  window.console.log(row)
+}
+const onEdit = (row: { appId: any; roleId: any; permitId: any }) => {
+  const { appId, roleId, permitId } = row
+  permitRef.value.showEditModel(appId, roleId, permitId)
+}
+const onDelete = (row: any) => {
+  window.console.log(row)
+}
+const onUp = (row: any) => {
+  window.console.log(row)
+}
+const onDown = (row: any) => {
+  window.console.log(row)
+}
+// 组件处理成功回调
+const onSuccess = () => {
+
+}
+
+onMounted(() => {
+  getRoleData()
+})
 </script>
 
 <template>
@@ -140,7 +160,7 @@ function goBack() {
           <tool-bar>
             <template #right>
               <el-input v-model="state.search.keywords" placeholder="请输入关键词筛选字典项" clearable style="width: 200px;" />
-              <el-button @click="getPermitData">
+              <el-button style="margin-left: 10px;" @click="getPermitData">
                 <template #icon>
                   <el-icon>
                     <svg-icon name="i-ep:search" />
@@ -157,12 +177,65 @@ function goBack() {
               </el-button>
             </template>
           </tool-bar>
+          <el-table ref="permitTableRef" v-loading="state.loading" class="list-table" :data="state.permitList" border stripe highlight-current-row height="100%">
+            <el-table-column type="selection" width="50" align="center" />
+            <el-table-column type="index" align="center" label="序号" width="70" />
+
+            <el-table-column label="权限ID" width="100px">
+              <template #default="{ row }">
+                <span>{{ row.permitId }}</span>
+              </template>
+            </el-table-column>
+
+            <el-table-column label="权限名称" width="200px">
+              <template #default="{ row }">
+                <span>{{ row.permitTitle }}</span>
+              </template>
+            </el-table-column>
+
+            <el-table-column label="权限编码" min-width="100">
+              <template #default="{ row }">
+                <span>{{ row.permitCode }}</span>
+              </template>
+            </el-table-column>
 
-          <el-table ref="permitTableRef" v-loading="state.loading" :data="state.permitList" border stripe highlight-current-row height="100%">
-            <el-table-column type="selection" align="center" fixed />
+            <el-table-column label="默认" header-align="center" align="center" width="80">
+              <template #default="{ row }">
+                <span>{{ row.isHome }}</span>
+              </template>
+            </el-table-column>
+
+            <el-table-column label="简要说明">
+              <template #default="{ row }">
+                <span>{{ row.permitDesc }}</span>
+              </template>
+            </el-table-column>
+
+            <el-table-column label="排序" header-align="center" align="center" width="60">
+              <template #default="{ row }">
+                <span>{{ row.sortNo }}</span>
+              </template>
+            </el-table-column>
+
+            <el-table-column label="操作" width="400" header-align="center" align="right">
+              <template #default="{ row }">
+                <el-button v-if="row.permitType === 0" size="small" type="primary" icon="el-icon-plus" @click="onAddSub(row)">
+                  添加
+                </el-button>
+                <el-button size="small" type="success" icon="el-icon-edit" @click="onEdit(row)">
+                  修改
+                </el-button>
+                <el-button size="small" type="danger" icon="el-icon-delete" @click="onDelete(row)">
+                  删除
+                </el-button>
+                <el-button size="small" type="info" icon="el-icon-top" @click="onUp(row)" />
+                <el-button size="small" type="info" icon="el-icon-bottom" @click="onDown(row)" />
+              </template>
+            </el-table-column>
           </el-table>
         </div>
       </LayoutContainer>
+      <Permit ref="permitRef" @success="onSuccess" />
     </div>
   </div>
 </template>

+ 4 - 0
src/views/daas/behavior/index.vue

@@ -6,3 +6,7 @@ meta:
 <script lang="ts" setup name="behaviorList">
 
 </script>
+
+<template>
+  <h1>behavior</h1>
+</template>

+ 23 - 8
src/views/daas/model/index.vue

@@ -9,6 +9,10 @@ import DSModel from './components/Model.vue'
 import DSObject from './components/object.vue'
 import { deleteModelById, getModelByList } from '@/api/model/modelApi'
 import { deleteObjectById, getObjectByList } from '@/api/model/objectApi'
+import useSettingsStore from '@/store/modules/settings'
+
+const settingsStore = useSettingsStore()
+const router = useRouter()
 const tabbar = useTabbar()
 
 interface TreeNode {
@@ -126,14 +130,25 @@ const onObjectAdd = () => {
 }
 
 // 编辑对象
-const onObjectEdit = (row: any) => {
-  tabbar.open({
-    name: 'daasObjectEdit',
-    params: {
-      modelId: row.modelId,
-      objectId: row.objectId,
-    },
-  })
+const onObjectEdit = (row: { modelId: any; objectId: any }) => {
+  if (settingsStore.settings.tabbar.enable && settingsStore.settings.tabbar.mergeTabsBy !== 'activeMenu') {
+    tabbar.open({
+      name: 'daasObjectEdit',
+      params: {
+        modelId: row.modelId,
+        objectId: row.objectId,
+      },
+    })
+  }
+  else {
+    router.push({
+      name: 'daasObjectEdit',
+      params: {
+        modelId: row.modelId,
+        objectId: row.objectId,
+      },
+    })
+  }
 }
 
 // 删除对象

+ 7 - 1
src/views/daas/object/index.vue

@@ -41,6 +41,9 @@ const state = reactive({
   title: '',
   dialogVisible: false,
   loading: false,
+  search: {
+    keywords: '',
+  },
   formData: {
     modelId: 0,
     objectId: 0,
@@ -186,6 +189,9 @@ function goBack() {
     router.push({ name: 'daasModel' })
   }
 }
+
+const getPermitData = () => {}
+const onPermitAdd = () => {}
 </script>
 
 <template>
@@ -245,7 +251,7 @@ function goBack() {
           </tool-bar>
 
           <h2>属性</h2>
-          <el-table ref="attrsTableRef" :key="attrsTableKey" :data="state.formData.attrs" border stripe highlight-current-row>
+          <el-table ref="attrsTableRef" :key="attrsTableKey" :data="state.formData.attrs" class="list-table" border stripe highlight-current-row>
             <el-table-column width="60" align="center" fixed>
               <template #header>
                 <el-button type="primary" size="small" plain circle @click="onAttrAdd">

+ 1 - 1
src/views/system/group/index.vue

@@ -306,7 +306,7 @@ const getGroupList = () => {}
                     inline-prompt
                     active-text="启用"
                     inactive-text="禁用"
-                    @change="(status) => onChangeStatus(status, scope.row)"
+                    @change="(status) => onChangeStatus(scope.row.status, scope.row)"
                   />
                 </div>
               </template>