318 lines
10 KiB
Vue
318 lines
10 KiB
Vue
<!--
|
||
* @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>
|