Browse Source

feat: 版本列表增删改。

lanjianrong 3 năm trước cách đây
mục cha
commit
d1634ff75e

+ 30 - 2
src/api/sys/manager.ts

@@ -10,7 +10,10 @@ enum Api {
   DeleteGroup = '/backstage/group/delete',
   AddGroup = '/backstage/group/add',
   UpdateGroup = 'backstage/group/update',
-  UpdateBackStageStaff = '/backstage/manager/update'
+  UpdateBackStageStaff = '/backstage/manager/update',
+  GetVersionList = '/backstage/version/list',
+  AddVersion = '/backstage/version/add',
+  DeleteVersion = '/backstage/version/delete'
 }
 import {
   ManagerListGetResultModel,
@@ -18,7 +21,8 @@ import {
   AddPermParams,
   PermGroupListResultModel,
   UpdatePermParams,
-  UpdateBackstageStaffParmas
+  UpdateBackstageStaffParmas,
+  VersionListGetResultModel
 } from './model/managerModel'
 /**
  * @description 获取后台用户列表
@@ -94,3 +98,27 @@ export function updateBackStageStaff(params: UpdateBackstageStaffParmas) {
     params
   })
 }
+
+/** 获取版本列表 */
+export async function getVersionList(params) {
+  return defHttp.post<VersionListGetResultModel>({
+    url: Api.GetVersionList,
+    params
+  })
+}
+
+/** 删除版本信息 */
+export async function delVersionById(params: { id: string }) {
+  return defHttp.delete({
+    url: Api.DeleteVersion,
+    params
+  })
+}
+
+/** 新增版本信息 */
+export async function addVersion(params: { name: string; content: string }) {
+  return defHttp.post({
+    url: Api.AddVersion,
+    params
+  })
+}

+ 7 - 0
src/api/sys/model/managerModel.ts

@@ -52,9 +52,16 @@ export type UpdatePermParams = {
   remark?: string
 }
 
+export type VersionItem = {
+  id: string
+  name: string
+  content: string
+}
+
 /**
  * @description: Request list return value
  */
 export type ManagerListGetResultModel = BasicFetchResult<ManagerItem[]>
 export type PermGroupListResultModel = BasicFetchResult<PermGroupItem[]>
 export type ManagerInfoGetResultModel = ManagerItem
+export type VersionListGetResultModel = BasicFetchResult<VersionItem[]>

+ 3 - 3
src/enums/statusEnum.ts

@@ -1,7 +1,7 @@
 export enum ProjectStatusEnum {
-  NORMAL = 0, // 正常
-  TEST = 1, // 试用
-  STOP = 2 // 停
+  STOP = 0, // 停用
+  NORMAL = 1, // 正常
+  TEST = 2 // 试
 }
 
 export enum ProjectStatusTextColorEnum {

+ 4 - 0
src/router/menus/modules/manager.ts

@@ -14,6 +14,10 @@ const menu: MenuModule = {
       {
         path: 'perm-list',
         name: '权限组'
+      },
+      {
+        path: 'version-list',
+        name: '版本发布'
       }
     ]
   }

+ 9 - 0
src/router/routes/modules/manager.ts

@@ -39,6 +39,15 @@ const manager: AppRouteModule = {
         title: '权限组',
         roles: [RoleEnum.ADMIN, RoleEnum.SHOWPERMISSION]
       }
+    },
+    {
+      path: 'version-list',
+      name: 'VersionList',
+      component: () => import('/@/views/manager/version/index.vue'),
+      meta: {
+        title: '版本发布',
+        roles: [RoleEnum.ADMIN, RoleEnum.SHOWPERMISSION]
+      }
     }
   ]
 }

+ 105 - 0
src/views/manager/version/index.vue

@@ -0,0 +1,105 @@
+<template>
+  <div>
+    <BasicTable @register="registerTable">
+      <template #toolbar>
+        <div class="w-2/5 flex justify-end">
+          <a-button @click="handleOnAdd" class="ml-3"><PlusOutlined />新增版本信息</a-button>
+        </div>
+      </template>
+    </BasicTable>
+    <BasicModal @register="registerModal" title="添加新的版本" @ok="handleOnsubmit">
+      <BasicForm @register="registerForm" ref="formRef">
+        <!-- <template #canLogin="{ model, field }">
+          <a-radio-group v-model:value="model[field]" class="ml-4">
+            <a-radio-button :value="1">{{ model[field] === 1 ? '已开启' : '开启' }}</a-radio-button>
+            <a-radio-button :value="0">{{ model[field] === 0 ? '已禁止' : '禁止' }}</a-radio-button>
+          </a-radio-group>
+        </template> -->
+      </BasicForm>
+    </BasicModal>
+  </div>
+</template>
+<script lang="ts">
+  import { computed, defineComponent, nextTick, ref } from 'vue'
+  import { BasicTable, useTable } from '/@/components/Table'
+  import { getTableColumns } from './tableColumns'
+  import { getVersionList, addVersion } from '/@/api/sys/manager'
+  import { BasicForm, FormActionType, useForm, FormSchema } from '/@/components/Form'
+  import { BasicModal, useModal } from '/@/components/Modal'
+  import { VersionItem } from '/@/api/sys/model/managerModel'
+  import { useMessage } from '/@/hooks/web/useMessage'
+  import { PlusOutlined } from '@ant-design/icons-vue'
+
+  export default defineComponent({
+    name: 'ManagerList',
+    components: {
+      BasicTable,
+      BasicForm,
+      BasicModal,
+      PlusOutlined
+    },
+    setup() {
+      const { createMessage } = useMessage()
+      const formRef = ref<Nullable<FormActionType>>(null)
+      const schemas = computed<FormSchema[]>(() => [
+        {
+          field: 'id',
+          label: 'Id',
+          component: 'Input',
+          show: false
+        },
+        {
+          field: 'name',
+          label: '版本名称',
+          required: true,
+          component: 'Input'
+        },
+        {
+          field: 'content',
+          label: '用户组',
+          component: 'InputTextArea',
+          required: false
+        }
+      ])
+      const [registerForm] = useForm({
+        schemas,
+        showActionButtonGroup: false
+      })
+      const [registerModal, { openModal }] = useModal()
+      async function handleOnEdit(item: VersionItem) {
+        openModal()
+        await nextTick()
+        formRef.value?.setFieldsValue(item)
+      }
+
+      async function handleOnAdd() {
+        openModal()
+        await nextTick()
+        formRef.value?.resetFields()
+      }
+      function reloadTable() {
+        reload()
+      }
+      const [registerTable, { reload }] = useTable({
+        columns: getTableColumns((item: VersionItem) => handleOnEdit(item), reloadTable),
+        canResize: true,
+        api: getVersionList
+      })
+
+      function handleOnsubmit() {
+        formRef.value?.validate().then((values: Omit<VersionItem, 'id'>) => {
+          try {
+            addVersion(values)
+            createMessage.success('新增成功')
+          } catch (error) {
+            return
+          } finally {
+            reload()
+            openModal(false)
+          }
+        })
+      }
+      return { registerTable, registerForm, registerModal, formRef, handleOnsubmit, handleOnAdd }
+    }
+  })
+</script>

+ 39 - 0
src/views/manager/version/tableColumns.tsx

@@ -0,0 +1,39 @@
+import { Popconfirm } from 'ant-design-vue'
+import { delVersionById } from '/@/api/sys/manager'
+import { VersionItem } from '/@/api/sys/model/managerModel'
+import Icon from '/@/components/Icon'
+import { BasicColumn } from '/@/components/Table/src/types/table'
+export function getTableColumns(fn: (item: VersionItem) => void, reload: () => void): BasicColumn[] {
+  async function delConfirm(id: string) {
+    await delVersionById({ id })
+    reload()
+  }
+  return [
+    {
+      dataIndex: 'name',
+      title: '名称'
+    },
+    {
+      dataIndex: 'content',
+      title: '内容'
+    },
+    {
+      dataIndex: 'opreate',
+      title: '操作',
+      customRender: ({ record }) => (
+        <div class="divide-light-500">
+          <span class="text-[#007BFF] hover:text-[#005BB8] cursor-pointer">
+            <Icon icon="fluent:edit-32-filled" onClick={() => fn(record)}></Icon>
+          </span>
+          <span class="pl-2">
+            <Popconfirm title="确定删除吗?" okText="确认" cancelText="取消" onConfirm={() => delConfirm(record.id)}>
+              <span class="text-red-500 hover:text-red-600 cursor-pointer">
+                <Icon icon="fluent:delete-20-filled"></Icon>
+              </span>
+            </Popconfirm>
+          </span>
+        </div>
+      )
+    }
+  ]
+}