2024-12-03 11:47:48 +08:00

318 lines
10 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
* @Descripttion: (岗位/group_post)
* @Author: (admin)
* @Date: (2024-08-07)
-->
<template>
<div>
<el-form :model="queryParams" label-position="right" inline ref="queryRef" v-show="showSearch" @submit.prevent>
<el-form-item label="岗位名称" prop="postName">
<el-input v-model="queryParams.postName" placeholder="请输入岗位名称" />
</el-form-item>
<el-form-item>
<el-button icon="search" type="primary" @click="handleQuery">{{ $t('btn.search') }}</el-button>
<el-button icon="refresh" @click="resetQuery">{{ $t('btn.reset') }}</el-button>
</el-form-item>
</el-form>
<!-- 工具区域 -->
<el-row :gutter="15" class="mb10">
<el-col :span="1.5">
<el-button type="primary" v-hasPermi="['groupManagement:grouppost:add']" plain icon="plus" @click="handleAdd">
{{ $t('btn.add') }}
</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<vxe-table
border="inner"
ref="tableRef"
:column-config="{ resizable: true }"
:tree-config="{ transform: true, rowField: 'id', parentField: 'parentId', expandAll: true }"
:data="dataList">
<vxe-column field="postName" title="岗位名称" tree-node></vxe-column>
<vxe-column field="status" title="状态">
<template #default="{ row }">
<el-tag type="success" v-if="row.status == 1">启动</el-tag>
<el-tag type="danger" v-if="row.status == 0">停止</el-tag>
</template></vxe-column
>
<vxe-column field="remark" title="备注"></vxe-column>
<vxe-column title="操作">
<template #default="scope">
<el-button-group>
<el-button text size="small" icon="Edit" @click="handleUpdate(scope.row)"></el-button>
<el-button text size="small" icon="Plus" @click="handleAdd(scope.row)"></el-button>
<el-button text size="small" icon="Delete" @click="handleDelete(scope.row)"></el-button>
</el-button-group>
</template>
</vxe-column>
</vxe-table>
<!-- <el-table
:data="dataList"
v-loading="loading"
ref="table"
border
header-cell-class-name="el-table-header-cell"
highlight-current-row
@sort-change="sortChange">
<el-table-column prop="id" label="雪花" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('id')" />
<el-table-column prop="parentId" label="父id" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('parentId')" />
<el-table-column prop="postName" label="岗位名称" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('postName')" />
<el-table-column prop="status" label="1启用 0:停用" align="center" v-if="columns.showColumn('status')">
<template #default="scope">
<dict-tag :options="options.statusOptions" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column prop="remark" label="备注" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('remark')" />
<el-table-column prop="createdBy" label="创建人" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('createdBy')" />
<el-table-column prop="createdTime" label="创建时间" :show-overflow-tooltip="true" v-if="columns.showColumn('createdTime')" />
<el-table-column prop="updatedBy" label="更新人" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('updatedBy')" />
<el-table-column prop="updatedTime" label="更新时间" :show-overflow-tooltip="true" v-if="columns.showColumn('updatedTime')" />
<el-table-column label="操作" width="160">
<template #default="scope">
<el-button
type="success"
size="small"
icon="edit"
title="编辑"
v-hasPermi="['groupManagement:grouppost:edit']"
@click="handleUpdate(scope.row)"></el-button>
<el-button
type="danger"
size="small"
icon="delete"
title="删除"
v-hasPermi="['groupManagement:grouppost:delete']"
@click="handleDelete(scope.row)"></el-button>
</template>
</el-table-column>
</el-table> -->
<pagination :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改岗位对话框 -->
<el-dialog :title="title" :lock-scroll="false" v-model="open">
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-row :gutter="20">
<!-- <el-col :lg="12">
<el-form-item label="雪花" prop="id">
<el-input v-model="form.id" placeholder="请输入雪花" :disabled="opertype != 1" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="父id" prop="parentId">
<el-input v-model="form.parentId" placeholder="请输入父id" :disabled="opertype != 1" />
</el-form-item>
</el-col> -->
<el-col :lg="12">
<el-form-item label="岗位名称" prop="postName">
<el-input v-model="form.postName" placeholder="请输入岗位名称" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio v-for="item in options.statusOptions" :key="item.dictValue" :label="parseInt(item.dictValue)">
{{ item.dictLabel }}
</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer v-if="opertype != 3">
<el-button text @click="cancel">{{ $t('btn.cancel') }}</el-button>
<el-button type="primary" @click="submitForm">{{ $t('btn.submit') }}</el-button>
</template>
</el-dialog>
</div>
</template>
<script setup name="grouppost">
import { listGroupPost, addGroupPost, delGroupPost, updateGroupPost, getGroupPost } from '@/api/groupManagement/grouppost.js'
const { proxy } = getCurrentInstance()
const ids = ref([])
const loading = ref(false)
const showSearch = ref(true)
const queryParams = reactive({
postName: '',
pageNum: 1,
pageSize: 10,
sort: '',
sortType: 'asc'
})
const columns = ref([
{ visible: true, prop: 'id', label: '雪花' },
{ visible: true, prop: 'parentId', label: '父id' },
{ visible: true, prop: 'postName', label: '岗位名称' },
{ visible: true, prop: 'status', label: '1启用 0:停用' },
{ visible: true, prop: 'remark', label: '备注' },
{ visible: true, prop: 'createdBy', label: '创建人' },
{ visible: true, prop: 'createdTime', label: '创建时间' },
{ visible: true, prop: 'updatedBy', label: '更新人' },
{ visible: false, prop: 'updatedTime', label: '更新时间' }
])
const total = ref(0)
const dataList = ref([])
const queryRef = ref()
const defaultTime = ref([new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)])
var dictParams = []
function getList() {
loading.value = true
listGroupPost(queryParams).then((res) => {
const { code, data } = res
if (code == 200) {
dataList.value = data.result
total.value = data.totalNum
loading.value = false
}
})
}
// 查询
function handleQuery() {
queryParams.pageNum = 1
getList()
}
// 重置查询操作
function resetQuery() {
proxy.resetForm('queryRef')
handleQuery()
}
// 自定义排序
function sortChange(column) {
var sort = undefined
var sortType = undefined
if (column.prop != null && column.order != null) {
sort = column.prop
sortType = column.order
}
queryParams.sort = sort
queryParams.sortType = sortType
handleQuery()
}
/*************** form操作 ***************/
const formRef = ref()
const title = ref('')
// 操作类型 1、add 2、edit 3、view
const opertype = ref(0)
const open = ref(false)
const state = reactive({
single: true,
multiple: true,
form: {},
rules: {
id: [{ required: true, message: '雪花不能为空', trigger: 'blur' }],
parentId: [{ required: true, message: '父id不能为空', trigger: 'blur' }]
},
options: {
// 1启用 0:停用 选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
statusOptions: [
{ dictLabel: '启用', dictValue: '1' },
{ dictLabel: '停用', dictValue: '0' }
]
}
})
const { form, rules, options, single, multiple } = toRefs(state)
// 关闭dialog
function cancel() {
open.value = false
reset()
}
// 重置表单
function reset() {
form.value = {
id: null,
parentId: null,
postName: null,
status: 1,
remark: null,
createdBy: null,
createdTime: null,
updatedBy: null,
updatedTime: null
}
proxy.resetForm('formRef')
}
// 添加按钮操作
function handleAdd(row) {
reset()
open.value = true
title.value = '添加岗位'
opertype.value = 1
form.value.parentId = row.id
}
// 修改按钮操作
function handleUpdate(row) {
reset()
const id = row.id || ids.value
getGroupPost(id).then((res) => {
const { code, data } = res
if (code == 200) {
open.value = true
title.value = '修改岗位'
opertype.value = 2
form.value = {
...data
}
}
})
}
// 添加&修改 表单提交
function submitForm() {
proxy.$refs['formRef'].validate((valid) => {
if (valid) {
if (form.value.id != undefined && opertype.value === 2) {
updateGroupPost(form.value).then((res) => {
proxy.$modal.msgSuccess('修改成功')
open.value = false
getList()
})
} else {
addGroupPost(form.value).then((res) => {
proxy.$modal.msgSuccess('新增成功')
open.value = false
getList()
})
}
}
})
}
// 删除按钮操作
function handleDelete(row) {
const Ids = row.id || ids.value
const name = row.postName || ids.value
proxy
.$confirm('是否确认删除参数编号为"' + name + '"的数据项?')
.then(function () {
return delGroupPost(Ids)
})
.then(() => {
getList()
proxy.$modal.msgSuccess('删除成功')
})
}
handleQuery()
</script>