From 4847ba087dfb355017b6edc02dcb8a50f935aaed Mon Sep 17 00:00:00 2001
From: autumnal_wind@yeah.net <autumnal_wind@yeah.net>
Date: 星期三, 29 五月 2024 16:50:50 +0800
Subject: [PATCH] feat: 岗位管理改造
---
/dev/null | 237 ------------------
src/views/basis/sysParam/config/index.vue | 2
src/views/basis/punter/post/DetailForm.vue | 155 +++++++++++
src/api/basis/punter/post/index.ts | 63 ++++
src/views/basis/punter/post/index.vue | 174 +++++++++++++
src/api/basis/punter/post/types.ts | 91 +++++++
6 files changed, 484 insertions(+), 238 deletions(-)
diff --git a/src/api/basis/punter/post/index.ts b/src/api/basis/punter/post/index.ts
new file mode 100644
index 0000000..20a5d86
--- /dev/null
+++ b/src/api/basis/punter/post/index.ts
@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { PostVO, PostForm, PostQuery } from '@/api/basis/punter/post/types';
+
+/**
+ * 查询岗位信息列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listPost = (query?: PostQuery): AxiosPromise<PostVO[]> => {
+ return request({
+ url: '/basis/punter/post/list',
+ method: 'get',
+ params: query
+ });
+};
+
+/**
+ * 查询岗位信息详细
+ * @param postId
+ */
+export const getPost = (postId: string | number): AxiosPromise<PostVO> => {
+ return request({
+ url: '/basis/punter/post/' + postId,
+ method: 'get'
+ });
+};
+
+/**
+ * 新增岗位信息
+ * @param data
+ */
+export const addPost = (data: PostForm) => {
+ return request({
+ url: '/basis/punter/post',
+ method: 'post',
+ data: data
+ });
+};
+
+/**
+ * 修改岗位信息
+ * @param data
+ */
+export const updatePost = (data: PostForm) => {
+ return request({
+ url: '/basis/punter/post',
+ method: 'put',
+ data: data
+ });
+};
+
+/**
+ * 删除岗位信息
+ * @param postId
+ */
+export const delPost = (postId: string | number | Array<string | number>) => {
+ return request({
+ url: '/basis/punter/post/' + postId,
+ method: 'delete'
+ });
+};
diff --git a/src/api/basis/punter/post/types.ts b/src/api/basis/punter/post/types.ts
new file mode 100644
index 0000000..0f47c58
--- /dev/null
+++ b/src/api/basis/punter/post/types.ts
@@ -0,0 +1,91 @@
+export interface PostVO {
+ /**
+ * 岗位ID
+ */
+ postId: string | number;
+
+ /**
+ * 岗位编码
+ */
+ postCode: string;
+
+ /**
+ * 岗位名称
+ */
+ postName: string;
+
+ /**
+ * 显示顺序
+ */
+ postSort: number;
+
+ /**
+ * 状态(0正常 1停用)
+ */
+ status: string;
+
+ /**
+ * 备注
+ */
+ remark: string;
+
+}
+
+export interface PostForm extends BaseEntity {
+ /**
+ * 岗位ID
+ */
+ postId?: string | number;
+
+ /**
+ * 岗位编码
+ */
+ postCode?: string;
+
+ /**
+ * 岗位名称
+ */
+ postName?: string;
+
+ /**
+ * 显示顺序
+ */
+ postSort?: number;
+
+ /**
+ * 状态(0正常 1停用)
+ */
+ status?: string;
+
+ /**
+ * 备注
+ */
+ remark?: string;
+
+}
+
+export interface PostQuery extends PageQuery {
+
+ /**
+ * 岗位编码
+ */
+ postCode?: string;
+
+ /**
+ * 岗位名称
+ */
+ postName?: string;
+
+ /**
+ * 状态(0正常 1停用)
+ */
+ status?: string;
+
+ /**
+ * 日期范围参数
+ */
+ params?: any;
+}
+
+
+
diff --git a/src/api/system/post/index.ts b/src/api/system/post/index.ts
deleted file mode 100644
index 3e523ab..0000000
--- a/src/api/system/post/index.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import request from '@/utils/request';
-import { PostForm, PostQuery, PostVO } from './types';
-import { AxiosPromise } from 'axios';
-
-// 查询岗位列表
-export function listPost(query: PostQuery): AxiosPromise<PostVO[]> {
- return request({
- url: '/system/post/list',
- method: 'get',
- params: query
- });
-}
-
-// 查询岗位详细
-export function getPost(postId: string | number): AxiosPromise<PostVO> {
- return request({
- url: '/system/post/' + postId,
- method: 'get'
- });
-}
-
-// 新增岗位
-export function addPost(data: PostForm) {
- return request({
- url: '/system/post',
- method: 'post',
- data: data
- });
-}
-
-// 修改岗位
-export function updatePost(data: PostForm) {
- return request({
- url: '/system/post',
- method: 'put',
- data: data
- });
-}
-
-// 删除岗位
-export function delPost(postId: string | number | (string | number)[]) {
- return request({
- url: '/system/post/' + postId,
- method: 'delete'
- });
-}
diff --git a/src/api/system/post/types.ts b/src/api/system/post/types.ts
deleted file mode 100644
index 84e6786..0000000
--- a/src/api/system/post/types.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-export interface PostVO extends BaseEntity {
- postId: number | string;
- postCode: string;
- postName: string;
- postSort: number;
- status: string;
- remark: string;
-}
-
-export interface PostForm {
- postId: number | string | undefined;
- postCode: string;
- postName: string;
- postSort: number;
- status: string;
- remark: string;
-}
-
-export interface PostQuery extends PageQuery {
- postCode: string;
- postName: string;
- status: string;
-}
diff --git a/src/views/basis/punter/post/DetailForm.vue b/src/views/basis/punter/post/DetailForm.vue
new file mode 100644
index 0000000..120d38f
--- /dev/null
+++ b/src/views/basis/punter/post/DetailForm.vue
@@ -0,0 +1,155 @@
+<template>
+ <div class="p-2">
+ <Dialog :title="dialog.title" v-model="dialog.visible" width="600px" :draggable="draggable">
+ <el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px" v-loading="formLoading">
+ <el-form-item label="岗位编码" prop="postCode">
+ <el-input v-model="formData.postCode" placeholder="请输入岗位编码" />
+ </el-form-item>
+ <el-form-item label="岗位名称" prop="postName">
+ <el-input v-model="formData.postName" placeholder="请输入岗位名称" />
+ </el-form-item>
+ <el-form-item label="显示顺序" prop="postSort">
+ <el-input v-model="formData.postSort" placeholder="请输入显示顺序" />
+ </el-form-item>
+ <el-form-item label="状态" prop="status">
+ <el-radio-group v-model="formData.status">
+ <el-radio
+ v-for="dict in sys_normal_disable"
+ :key="dict.value"
+ :label="dict.value"
+ >{{dict.label}}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item label="备注" prop="remark">
+ <el-input v-model="formData.remark" type="textarea" placeholder="请输入内容" />
+ </el-form-item>
+ </el-form>
+ <template #footer>
+ <div class="dialog-footer">
+ <el-button :loading="formLoading" type="primary" @click="submitForm">确 定</el-button>
+ <el-button @click="dialog.visible = false">取 消</el-button>
+ </div>
+ </template>
+ </Dialog>
+ </div>
+</template>
+
+<script setup name="Post" lang="ts">
+import * as PostApi from '@/api/basis/punter/post';
+import { PostForm } from '@/api/basis/punter/post/types';
+import {useI18n} from "vue-i18n";
+
+defineOptions({ name: 'PostForm' })
+
+// 接收父组件传入属性
+// const props = defineProps({})
+
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+// 国际化
+const { t } = useI18n()
+
+/** 数据字典 */
+const { sys_normal_disable } = toRefs<any>(proxy?.useDict('sys_normal_disable'));
+// 对话框
+const dialog = reactive<DialogOption>({
+ visible: false,
+ title: ''
+});
+// 窗体是否可以拖动
+const draggable = ref(true)
+// 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
+const formLoading = ref(false)
+// 表单的类型:create - 新增;update - 修改
+const formType = ref('')
+// 表单引用
+const formRef = ref<ElFormInstance>();
+// 表单数据
+const formData = ref<PostForm>({
+ postId: '',
+ postCode: '',
+ postName: '',
+ postSort: '',
+ status: '',
+ remark: '',
+})
+// 表单校验规则
+const formRules = reactive({
+ postId: [
+ { required: true, message: "岗位ID不能为空", trigger: "blur" }
+ ],
+ postCode: [
+ { required: true, message: "岗位编码不能为空", trigger: "blur" }
+ ],
+ postName: [
+ { required: true, message: "岗位名称不能为空", trigger: "blur" }
+ ],
+ status: [
+ { required: true, message: "状态不能为空", trigger: "change" }
+ ],
+})
+/** 当前组件方法 */
+/** 窗体打开事件 */
+const open = async (type: string, id?: number) => {
+ dialog.visible = true
+ dialog.title = t('action.' + type)
+ formType.value = type
+ resetForm()
+ // 修改时,设置数据
+ if (id) {
+ formLoading.value = true
+ try {
+ const res = await PostApi.getPost(id);
+ Object.assign(formData.value, res.data);
+ } finally {
+ formLoading.value = false
+ }
+ }
+}
+/** 表单重置 */
+const resetForm = () => {
+ formData.value = {
+ postId: '',
+ postCode: '',
+ postName: '',
+ postSort: '',
+ status: '',
+ remark: '',
+ }
+ formRef.value?.resetFields();
+}
+// 传回给父组件的属性与方法
+// 提供 open 方法,用于打开弹窗
+defineExpose({open})
+/** 触发父组件的事件 */
+/** 定义 success 事件,用于操作成功后的回调 */
+const emit = defineEmits(['success'])
+/** 提交按钮 */
+const submitForm = async () => {
+ // 校验表单
+ if (!formRef) return
+ const valid = await formRef.value?.validate()
+ if (!valid) return
+ // 提交请求
+ formLoading.value = true
+ try {
+ const data = formData.value as unknown as PostForm
+ if (formType.value === 'create') {
+ await PostApi.addPost(data)
+ proxy?.$modal.msgSuccess("新增成功");
+ } else {
+ await PostApi.updatePost(data)
+ proxy?.$modal.msgSuccess("修改成功");
+ }
+ dialog.visible = false
+ // 发送操作成功的事件
+ emit('success')
+ } finally {
+ formLoading.value = false
+ }
+}
+
+/** 初始化 */
+onMounted(() => {
+
+});
+</script>
diff --git a/src/views/basis/punter/post/index.vue b/src/views/basis/punter/post/index.vue
new file mode 100644
index 0000000..224e649
--- /dev/null
+++ b/src/views/basis/punter/post/index.vue
@@ -0,0 +1,174 @@
+<template>
+ <div class="p-2">
+ <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
+ <div class="search" v-show="showSearch">
+ <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px" class="-mb-15px">
+ <el-form-item label="岗位编码" prop="postCode">
+ <el-input v-model="queryParams.postCode" placeholder="请输入岗位编码" clearable style="width: 240px" @keyup.enter="handleQuery" />
+ </el-form-item>
+ <el-form-item label="岗位名称" prop="postName">
+ <el-input v-model="queryParams.postName" placeholder="请输入岗位名称" clearable style="width: 240px" @keyup.enter="handleQuery" />
+ </el-form-item>
+ <el-form-item label="状态" prop="status">
+ <el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
+ <el-option
+ v-for="dict in sys_normal_disable"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+ <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+ </transition>
+
+ <el-card shadow="never">
+ <template #header>
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button type="primary" plain icon="Plus" @click="openForm('create')" v-hasPermi="['basis/punter:post:add']">新增</el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button type="success" plain icon="Edit" :disabled="single" @click="openForm('update')" v-hasPermi="['system:post:edit']">修改</el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['basis/punter:post:remove']">删除</el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['basis/punter:post:export']">导出</el-button>
+ </el-col>
+ <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
+ </el-row>
+ </template>
+
+ <el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange">
+ <el-table-column type="selection" width="55" align="center" />
+ <el-table-column label="岗位ID" align="center" prop="postId" v-if="true" />
+ <el-table-column label="岗位编码" align="center" prop="postCode" />
+ <el-table-column label="岗位名称" align="center" prop="postName" />
+ <el-table-column label="显示顺序" align="center" prop="postSort" />
+ <el-table-column label="状态" align="center" prop="status">
+ <template #default="scope">
+ <dict-tag :options="sys_normal_disable" :value="scope.row.status"/>
+ </template>
+ </el-table-column>
+ <el-table-column label="备注" align="center" prop="remark" />
+ <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+ <template #default="scope">
+ <el-tooltip content="修改" placement="top">
+ <el-button link type="primary" icon="Edit" @click="openForm('update',scope.row)" v-hasPermi="['basis/punter:post:edit']"></el-button>
+ </el-tooltip>
+ <el-tooltip content="删除" placement="top">
+ <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['basis/punter:post:remove']"></el-button>
+ </el-tooltip>
+ </template>
+ </el-table-column>
+ </el-table>
+ <!-- 翻页组件 -->
+ <pagination
+ v-show="total>0"
+ :total="total"
+ v-model:page="queryParams.pageNum"
+ v-model:limit="queryParams.pageSize"
+ @pagination="getList"
+ />
+ </el-card>
+ <!-- 添加或修改岗位信息对话框 -->
+ <detail-form ref="detailFormRef" @success="getList" apped-to-body/>
+ </div>
+</template>
+
+<script setup name="Post" lang="ts">
+/** 模块导入 */
+import { listPost, delPost} from '@/api/basis/punter/post';
+import { PostVO} from '@/api/basis/punter/post/types';
+import DetailForm from './DetailForm.vue';
+
+defineOptions({ name: 'Post' })
+
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+/** 当前页面引用的数据字典 */
+const { sys_normal_disable } = toRefs<any>(proxy?.useDict('sys_normal_disable'));
+// 是否加载遮罩层
+const loading = ref(true);
+// 是否显示查询项
+const showSearch = ref(true);
+const postList = ref<PostVO[]>([]);
+// 列表选中的记录Id
+const ids = ref<Array<number | string>>([]);
+// 单选
+const single = ref(true);
+// 多选
+const multiple = ref(true);
+// 总记录数
+const total = ref(0);
+
+// 查询窗体Ref
+const queryFormRef = ref<ElFormInstance>();
+// 查询参数
+const queryParams = reactive({
+ pageNum: 1,
+ pageSize: 10,
+ postCode: '',
+ postName: '',
+ status: '',
+})
+
+/** 查询岗位信息列表 */
+const getList = async () => {
+ loading.value = true;
+ const res = await listPost(queryParams);
+ postList.value = res.rows;
+ total.value = res.total;
+ loading.value = false;
+}
+
+/** 搜索按钮操作 */
+const handleQuery = () => {
+ queryParams.pageNum = 1;
+ getList();
+}
+
+/** 重置按钮操作 */
+const resetQuery = () => {
+ queryFormRef.value?.resetFields();
+ handleQuery();
+}
+
+/** 多选框选中数据 */
+const handleSelectionChange = (selection: PostVO[]) => {
+ ids.value = selection.map(item => item.postId);
+ single.value = selection.length != 1;
+ multiple.value = !selection.length;
+}
+
+/** 删除按钮操作 */
+const handleDelete = async (row?: PostVO) => {
+ const _postIds = row?.postId || ids.value;
+ await proxy?.$modal.confirm('是否确认删除岗位信息编号为"' + _postIds + '"的数据项?').finally(() => loading.value = false);
+ await delPost(_postIds);
+ proxy?.$modal.msgSuccess("删除成功");
+ await getList();
+}
+
+/** 导出按钮操作 */
+const handleExport = () => {
+ proxy?.download('basis/punter/post/export', {
+ ...queryParams
+ }, `post_${new Date().getTime()}.xlsx`)
+}
+/** 弹出框(增加、修改) */
+const detailFormRef = ref();
+const openForm = (type: string, row?: PostVO) => {
+ const id = row?.postId || ids.value[0];
+ detailFormRef?.value.open(type, id)
+}
+onMounted(() => {
+ getList();
+});
+</script>
diff --git a/src/views/basis/sysParam/config/index.vue b/src/views/basis/sysParam/config/index.vue
index ab13596..2da33b4 100644
--- a/src/views/basis/sysParam/config/index.vue
+++ b/src/views/basis/sysParam/config/index.vue
@@ -3,7 +3,7 @@
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
<div class="mb-[10px]" v-show="showSearch">
<el-card shadow="hover">
- <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="70px" class="-mb-15px">
+ <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
<el-form-item label="参数名称" prop="configName">
<el-input v-model="queryParams.configName" placeholder="请输入参数名称" clearable style="width: 240px" @keyup.enter="handleQuery" />
</el-form-item>
diff --git a/src/views/system/post/index.vue b/src/views/system/post/index.vue
deleted file mode 100644
index b1cddd3..0000000
--- a/src/views/system/post/index.vue
+++ /dev/null
@@ -1,237 +0,0 @@
-<template>
- <div class="p-2">
- <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
- <div class="mb-[10px]" v-show="showSearch">
- <el-card shadow="hover">
- <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="70">
- <el-form-item label="岗位编码" prop="postCode">
- <el-input v-model="queryParams.postCode" placeholder="请输入岗位编码" clearable style="width: 200px" @keyup.enter="handleQuery" />
- </el-form-item>
- <el-form-item label="岗位名称" prop="postName">
- <el-input v-model="queryParams.postName" placeholder="请输入岗位名称" clearable style="width: 200px" @keyup.enter="handleQuery" />
- </el-form-item>
- <el-form-item label="状态" prop="status">
- <el-select v-model="queryParams.status" placeholder="岗位状态" clearable style="width: 200px">
- <el-option v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" />
- </el-select>
- </el-form-item>
- <el-form-item>
- <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
- <el-button icon="Refresh" @click="resetQuery">重置</el-button>
- </el-form-item>
- </el-form>
- </el-card>
- </div>
- </transition>
- <el-card shadow="hover">
- <template #header>
- <el-row :gutter="10" class="mb8">
- <el-col :span="1.5">
- <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['system:post:add']">新增</el-button>
- </el-col>
- <el-col :span="1.5">
- <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['system:post:edit']">修改</el-button>
- </el-col>
- <el-col :span="1.5">
- <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['system:post:remove']">
- 删除
- </el-button>
- </el-col>
- <el-col :span="1.5">
- <el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['system:post:export']">导出</el-button>
- </el-col>
- <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
- </el-row>
- </template>
-
- <el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange">
- <el-table-column type="selection" width="55" align="center" />
- <el-table-column label="岗位编号" align="center" prop="postId" v-if="false" />
- <el-table-column label="岗位编码" align="center" prop="postCode" />
- <el-table-column label="岗位名称" align="center" prop="postName" />
- <el-table-column label="岗位排序" align="center" prop="postSort" />
- <el-table-column label="状态" align="center" prop="status">
- <template #default="scope">
- <dict-tag :options="sys_normal_disable" :value="scope.row.status" />
- </template>
- </el-table-column>
- <el-table-column label="创建时间" align="center" prop="createTime" width="180">
- <template #default="scope">
- <span>{{ parseTime(scope.row.createTime) }}</span>
- </template>
- </el-table-column>
- <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width">
- <template #default="scope">
- <el-tooltip content="修改" placement="top">
- <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:post:edit']"></el-button>
- </el-tooltip>
- <el-tooltip content="删除" placement="top">
- <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:post:remove']"></el-button>
- </el-tooltip>
- </template>
- </el-table-column>
- </el-table>
-
- <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
- </el-card>
-
- <!-- 添加或修改岗位对话框 -->
- <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
- <el-form ref="postFormRef" :model="form" :rules="rules" label-width="80px">
- <el-form-item label="岗位名称" prop="postName">
- <el-input v-model="form.postName" placeholder="请输入岗位名称" />
- </el-form-item>
- <el-form-item label="岗位编码" prop="postCode">
- <el-input v-model="form.postCode" placeholder="请输入编码名称" />
- </el-form-item>
- <el-form-item label="岗位顺序" prop="postSort">
- <el-input-number v-model="form.postSort" controls-position="right" :min="0" />
- </el-form-item>
- <el-form-item label="岗位状态" prop="status">
- <el-radio-group v-model="form.status">
- <el-radio v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
- </el-radio-group>
- </el-form-item>
- <el-form-item label="备注" prop="remark">
- <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
- </el-form-item>
- </el-form>
- <template #footer>
- <div class="dialog-footer">
- <el-button type="primary" @click="submitForm">确 定</el-button>
- <el-button @click="cancel">取 消</el-button>
- </div>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup name="Post" lang="ts">
-import { listPost, addPost, delPost, getPost, updatePost } from "@/api/system/post";
-import { PostForm, PostQuery, PostVO } from "@/api/system/post/types";
-
-const { proxy } = getCurrentInstance() as ComponentInternalInstance;
-const { sys_normal_disable } = toRefs<any>(proxy?.useDict("sys_normal_disable"));
-
-const postList = ref<PostVO[]>([]);
-const loading = ref(true);
-const showSearch = ref(true);
-const ids = ref<Array<number | string>>([]);
-const single = ref(true);
-const multiple = ref(true);
-const total = ref(0);
-
-const postFormRef = ref<ElFormInstance>();
-const queryFormRef = ref<ElFormInstance>();
-
-const dialog = reactive<DialogOption>({
- visible: false,
- title: ''
-});
-
-const initFormData: PostForm = {
- postId: undefined,
- postCode: '',
- postName: '',
- postSort: 0,
- status: "0",
- remark: ''
-}
-
-const data = reactive<PageData<PostForm, PostQuery>>({
- form: { ...initFormData },
- queryParams: {
- pageNum: 1,
- pageSize: 10,
- postCode: '',
- postName: '',
- status: ''
- },
- rules: {
- postName: [{ required: true, message: "岗位名称不能为空", trigger: "blur" }],
- postCode: [{ required: true, message: "岗位编码不能为空", trigger: "blur" }],
- postSort: [{ required: true, message: "岗位顺序不能为空", trigger: "blur" }],
- }
-});
-
-const { queryParams, form, rules } = toRefs<PageData<PostForm, PostQuery>>(data);
-
-/** 查询岗位列表 */
-const getList = async () => {
- loading.value = true;
- const res = await listPost(queryParams.value);
- postList.value = res.rows;
- total.value = res.total;
- loading.value = false;
-}
-/** 取消按钮 */
-const cancel = () => {
- reset();
- dialog.visible = false;
-}
-/** 表单重置 */
-const reset = () => {
- form.value = { ...initFormData };
- postFormRef.value?.resetFields();
-}
-/** 搜索按钮操作 */
-const handleQuery = () => {
- queryParams.value.pageNum = 1;
- getList();
-}
-/** 重置按钮操作 */
-const resetQuery = () => {
- queryFormRef.value?.resetFields();
- handleQuery();
-}
-/** 多选框选中数据 */
-const handleSelectionChange = (selection: PostVO[]) => {
- ids.value = selection.map(item => item.postId);
- single.value = selection.length != 1;
- multiple.value = !selection.length;
-}
-/** 新增按钮操作 */
-const handleAdd = () => {
- reset();
- dialog.visible = true;
- dialog.title = "添加岗位";
-}
-/** 修改按钮操作 */
-const handleUpdate = async (row?: PostVO) => {
- reset();
- const postId = row?.postId || ids.value[0];
- const res = await getPost(postId);
- Object.assign(form.value, res.data);
- dialog.visible = true;
- dialog.title = "修改岗位";
-}
-/** 提交按钮 */
-const submitForm = () => {
- postFormRef.value?.validate(async (valid: boolean) => {
- if (valid) {
- form.value.postId ? await updatePost(form.value) : await addPost(form.value);
- proxy?.$modal.msgSuccess("操作成功");
- dialog.visible = false;
- await getList();
- }
- });
-}
-/** 删除按钮操作 */
-const handleDelete = async (row?: PostVO) => {
- const postIds = row?.postId || ids.value;
- await proxy?.$modal.confirm('是否确认删除岗位编号为"' + postIds + '"的数据项?');
- await delPost(postIds);
- await getList();
- proxy?.$modal.msgSuccess("删除成功");
-}
-/** 导出按钮操作 */
-const handleExport = () => {
- proxy?.download("system/post/export", {
- ...queryParams.value
- }, `post_${new Date().getTime()}.xlsx`);
-}
-
-onMounted(() => {
- getList();
-});
-</script>
--
Gitblit v1.8.0