15815213711
2025-07-29 efff691306bb2c3d6e776fa312f54c34c7b4d5f9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<template>
  <basicContainer >
    <avue-crud
        :option="option"
        :table-loading="pageF.loading"
        :data="tableData"
        :page="page"
        :permission="permissionList"
        :before-open="beforeOpen"
        v-model="form"
        ref="crudRef"
        @row-update="rowUpdate"
        @row-save="rowSave"
        @row-del="rowDel"
        @search-change="searchChange"
        @refresh-change="refreshChange"
        @search-reset="searchReset"
        @selection-change="selectionChange"
        @current-change="currentChange"
        @size-change="sizeChange"
        @on-load="onLoad"
    >
      <template #menu-left>
        <el-button type="success" icon="Edit" v-hasPermi="['system:post:edit']"
                   :disabled="pageF.single"
                   @click="handleUpdate">修改
        </el-button>
        <el-button
            type="danger"
            icon="Delete"
            :disabled="pageF.multiple"
            @click="handleDelete"
            v-hasPermi="['system:post:remove']"
        >删除
        </el-button>
        <el-button
            type="warning"
            plain
            icon="Download"
            @click="handleExport"
            v-hasPermi="['system:post:export']"
        >导出
        </el-button>
      </template>
      <template #status="scope">
        <dict-tag v-if="scope.dic" :options="scope.dic" :value="scope.row.status" />
      </template>
    </avue-crud>
  </basicContainer>
</template>
 
<script setup name="Post" lang="ts">
import {listPost, addPost, delPost, getPost, updatePost, exportPost, PostI} from "@/api/system/post";
import useCurrentInstance from "@/utils/useCurrentInstance";
import {computed, reactive, ref, toRefs} from "vue";
import {PageQueryInterface, PagesInterface} from "@/utils/globalInterface";
import {usePagePlus} from "@/hooks/usePagePlus";
import {hasPermission} from "@/utils/permissionUtils";
import { useTableColumnWidth} from "@/hooks/useAvueTableWidths";
 
const {proxy} = useCurrentInstance();
 
const crudRef = ref();
const data = reactive({
  form: <PostI>{},
  queryParams: <PostI & PageQueryInterface>{},
  page: <PagesInterface>{
    pageSize: 10,
    total: 0,
    currentPage: 1,
  },
  selectionList:[]
});
const permissionList = computed(()=>{
  return {
    addBtn: hasPermission(["system:post:add"]),
    delBtn: hasPermission(["system:post:remove"]),
    editBtn: hasPermission(["system:post:edit"]),
    viewBtn: hasPermission(["system:post:query"]),
  }
})
 
 
const {queryParams,page, form, selectionList} = toRefs(data);
 
const option = ref({
  pageKey: 'post',
  rowKey: 'postId',
  column:<any> {
    postId: {label: '岗位编号', display: false},
    postName: {
      label: '岗位名称', search: true,
      rules:[{required: true, message: "岗位名称不能为空", trigger: "blur"}]
    },
    postCode: {label: '岗位编码', search: true,
      rules:[{required: true, message: "岗位编码不能为空", trigger: "blur"}]
    },
    postSort: {label: '岗位顺序', type: 'number', step: 1,value:1,rules:[{required: true, message: "岗位顺序不能为空", trigger: "blur"}]},
    status: {
      label: '岗位状态',
      type: 'radio', search: true,value: "0",
      dicUrl: '/system/dict/data/type/sys_normal_disable',
    },
    createTime: {label: '创建时间', display: false},
    remark: {
      span: 24,
      label: '备注',
      type: 'textarea',
      minRows: 3,
      maxRows: 5,
      hide: true
    },
  }
})
 
const {
  tableData,pageF,rowSave,rowUpdate,rowDel,beforeOpen,searchChange,
  searchReset,selectionChange,onLoad,currentChange,sizeChange,handleDelete,handleExport,handleUpdate,refreshChange
} = usePagePlus({
  form:form,
  option:option,
  queryParams:queryParams.value,
  idKey:'postId',
  page:page.value,
  getListApi:listPost,
  getDetailApi:getPost,
  exportApi:exportPost,
  deleteApi:delPost,
  addApi:addPost,
  updateApi:updatePost,
  handleUpdateFunc:()=>{
    crudRef.value.rowEdit(selectionList.value[0]);
  },
  handleSelectionChangeFunc:(selection:any)=>{
    selectionList.value = selection;
  }
})
 
 
 
</script>