部门管理、岗位管理接口对接
This commit is contained in:
parent
918b92444a
commit
cb5fae0849
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
"tabWidth": 4,
|
|
||||||
"semi": false,
|
|
||||||
"singleQuote": true,
|
|
||||||
"printWidth": 100,
|
|
||||||
"trailingComma": "none",
|
|
||||||
"arrowParens": "avoid",
|
|
||||||
"bracketSpacing": true
|
|
||||||
}
|
|
||||||
|
|
@ -40,5 +40,5 @@ export function apiFileRename(params: { id: number; name: string }) {
|
||||||
|
|
||||||
// 配置
|
// 配置
|
||||||
export function apiConfig() {
|
export function apiConfig() {
|
||||||
return request.get('/index/config')
|
return request.get('/common/index/config')
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,36 @@
|
||||||
import request from '@/utils/request'
|
import request from '@/utils/request'
|
||||||
|
/** 部门 S **/
|
||||||
|
// 部门列表
|
||||||
|
export function apiDeptLists(params: any) {
|
||||||
|
return request.get('/system/dept/list', { params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加部门
|
||||||
|
export function apiDeptAdd(params: any) {
|
||||||
|
return request.post('/system/dept/add', params)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑部门
|
||||||
|
export function apiDeptEdit(params: any) {
|
||||||
|
return request.post('/system/dept/edit', params)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除部门
|
||||||
|
export function apiDeptDelete(params: any) {
|
||||||
|
return request.post('/system/dept/del', params)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 部门详情
|
||||||
|
export function apiDeptDetail(params: any) {
|
||||||
|
return request.get('/system/dept/detail', { params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 所有部门
|
||||||
|
export function apiDeptAll(params: any) {
|
||||||
|
return request.get('/system/dept/all', { params })
|
||||||
|
}
|
||||||
|
/** 部门 E **/
|
||||||
|
|
||||||
/** 岗位 S **/
|
/** 岗位 S **/
|
||||||
// 岗位列表
|
// 岗位列表
|
||||||
export function apiPostLists(params: any) {
|
export function apiPostLists(params: any) {
|
||||||
|
|
|
||||||
|
|
@ -2,20 +2,20 @@ import request from '@/utils/request'
|
||||||
|
|
||||||
// 获取备案信息
|
// 获取备案信息
|
||||||
export function apiGetCopyright() {
|
export function apiGetCopyright() {
|
||||||
return request.get('/setting/getCopyright')
|
return request.get('/setting/basics/getCopyright')
|
||||||
}
|
}
|
||||||
// 设置备案信息
|
// 设置备案信息
|
||||||
export function apiSetCopyright(params: any) {
|
export function apiSetCopyright(params: any) {
|
||||||
return request.post('/setting/setCopyright', { ...params })
|
return request.post('/setting/basics/setCopyright', { ...params })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取网站信息
|
// 获取网站信息
|
||||||
export function apiGetWebsite() {
|
export function apiGetWebsite() {
|
||||||
return request.get('/setting/getWebsite')
|
return request.get('/setting/basics/getWebsite')
|
||||||
}
|
}
|
||||||
// 设置网站信息
|
// 设置网站信息
|
||||||
export function apiSetWebsite(params: any) {
|
export function apiSetWebsite(params: any) {
|
||||||
return request.post('/setting/setWebsite', { ...params })
|
return request.post('/setting/basics/setWebsite', { ...params })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取政策协议
|
// 获取政策协议
|
||||||
|
|
|
||||||
|
|
@ -2,5 +2,5 @@ import request from '@/utils/request'
|
||||||
|
|
||||||
// 工作台主页
|
// 工作台主页
|
||||||
export function apiWorkbench() {
|
export function apiWorkbench() {
|
||||||
return request.get('/index/console')
|
return request.get('/common/index/console')
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ export function deepClone(target: any) {
|
||||||
*/
|
*/
|
||||||
export function filterObject(target: any, filters: any[]) {
|
export function filterObject(target: any, filters: any[]) {
|
||||||
const _target = deepClone(target)
|
const _target = deepClone(target)
|
||||||
filters.map(key => delete _target[key])
|
filters.map((key) => delete _target[key])
|
||||||
return _target
|
return _target
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -125,15 +125,12 @@ export const timeFormat = (dateTime: number, fmt = 'yyyy-mm-dd') => {
|
||||||
'd+': date.getDate().toString(), // 日
|
'd+': date.getDate().toString(), // 日
|
||||||
'h+': date.getHours().toString(), // 时
|
'h+': date.getHours().toString(), // 时
|
||||||
'M+': date.getMinutes().toString(), // 分
|
'M+': date.getMinutes().toString(), // 分
|
||||||
's+': date.getSeconds().toString() // 秒
|
's+': date.getSeconds().toString(), // 秒
|
||||||
}
|
}
|
||||||
for (const k in opt) {
|
for (const k in opt) {
|
||||||
ret = new RegExp('(' + k + ')').exec(fmt)
|
ret = new RegExp('(' + k + ')').exec(fmt)
|
||||||
if (ret) {
|
if (ret) {
|
||||||
fmt = fmt.replace(
|
fmt = fmt.replace(ret[1], ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0'))
|
||||||
ret[1],
|
|
||||||
ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return fmt
|
return fmt
|
||||||
|
|
@ -162,9 +159,10 @@ export const timeFormat = (dateTime: number, fmt = 'yyyy-mm-dd') => {
|
||||||
* @return { Array } 扁平化后的数组
|
* @return { Array } 扁平化后的数组
|
||||||
*/
|
*/
|
||||||
export function flatten(tree = [], arr = [], childrenKey = 'children') {
|
export function flatten(tree = [], arr = [], childrenKey = 'children') {
|
||||||
tree.forEach(item => {
|
tree.forEach((item) => {
|
||||||
const children = item[childrenKey]
|
const children = item[childrenKey]
|
||||||
children ? flatten(children, arr, childrenKey) : arr.push(item)
|
arr.push(item)
|
||||||
|
if (children) flatten(children, arr, childrenKey)
|
||||||
})
|
})
|
||||||
return arr
|
return arr
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,39 +20,41 @@
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select> -->
|
</el-select> -->
|
||||||
<el-cascader
|
<el-cascader
|
||||||
|
v-model="formData.pid"
|
||||||
:options="leaderList"
|
:options="leaderList"
|
||||||
:props="{
|
:props="{
|
||||||
value: 'id',
|
value: 'id',
|
||||||
label: 'name',
|
label: 'name',
|
||||||
checkStrictly: true
|
checkStrictly: true,
|
||||||
}"
|
}"
|
||||||
clearable
|
clearable
|
||||||
|
:disabled="formData.pid === 0 && id"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 部门名称 -->
|
<!-- 部门名称 -->
|
||||||
<el-form-item label="部门名称" prop="name">
|
<el-form-item label="部门名称" prop="name">
|
||||||
<el-input placeholder="请输入部门名称"></el-input>
|
<el-input v-model="formData.name" placeholder="请输入部门名称"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- 负责人 -->
|
<!-- 负责人 -->
|
||||||
<el-form-item label="负责人" prop="leader">
|
<el-form-item label="负责人" prop="duty">
|
||||||
<el-input placeholder="请输入负责人姓名"></el-input>
|
<el-input v-model="formData.duty" placeholder="请输入负责人姓名"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- 联系电话 -->
|
<!-- 联系电话 -->
|
||||||
<el-form-item label="联系电话" prop="mobile">
|
<el-form-item label="联系电话" prop="mobile">
|
||||||
<el-input placeholder="请输入联系电话" type="tel"></el-input>
|
<el-input v-model="formData.mobile" placeholder="请输入联系电话" type="tel"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- 岗位排序 -->
|
<!-- 岗位排序 -->
|
||||||
<el-form-item label="排序" prop="sort">
|
<el-form-item label="排序" prop="sort">
|
||||||
<el-input placeholder="请输入排序" type="number"></el-input>
|
<el-input v-model="formData.sort" placeholder="请输入排序" type="number"></el-input>
|
||||||
<div class="muted">默认为0, 数值越大越排前</div>
|
<div class="muted">默认为0, 数值越大越排前</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- 管理员状态 -->
|
<!-- 管理员状态 -->
|
||||||
<el-form-item label="部门状态">
|
<el-form-item label="部门状态">
|
||||||
<el-switch :active-value="1" :inactive-value="0" />
|
<el-switch v-model="formData.isStop" :active-value="0" :inactive-value="1" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
@ -64,7 +66,117 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
import { computed, defineComponent, onMounted, reactive, Ref, ref, toRefs } from 'vue'
|
||||||
|
import { ElForm } from 'element-plus'
|
||||||
|
import { useAdmin } from '@/core/hooks/app'
|
||||||
import FooterBtns from '@/components/footer-btns/index.vue'
|
import FooterBtns from '@/components/footer-btns/index.vue'
|
||||||
|
import { apiDeptAdd, apiDeptEdit, apiDeptDetail, apiDeptLists } from '@/api/organize'
|
||||||
|
|
||||||
|
const { router, route } = useAdmin()
|
||||||
|
const id = computed(() => route.query?.id)
|
||||||
|
const formRefs: Ref<typeof ElForm | null> = ref(null)
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const leaderList: Ref<any[]> = ref([])
|
||||||
|
const { formData, rules } = toRefs(
|
||||||
|
reactive({
|
||||||
|
formData: {
|
||||||
|
pid: '',
|
||||||
|
name: '',
|
||||||
|
duty: '',
|
||||||
|
mobile: '',
|
||||||
|
sort: 0,
|
||||||
|
isStop: 0,
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
pid: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请选择上级部门',
|
||||||
|
trigger: ['change'],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入部门名称',
|
||||||
|
trigger: ['blur'],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
// 获取部门联级列表
|
||||||
|
const getList = () => {
|
||||||
|
apiDeptLists({}).then((res: any) => {
|
||||||
|
console.log(res, 'res')
|
||||||
|
|
||||||
|
leaderList.value = isDisabled(res)
|
||||||
|
// leaderList.value = res
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 判断是否禁用
|
||||||
|
// 编辑时,过滤掉当前部门, 过滤禁用
|
||||||
|
// 添加时,过滤禁用
|
||||||
|
const isDisabled = (treeArr: any) => {
|
||||||
|
let newTree = treeArr.map((item: any) => {
|
||||||
|
const children = item.children || []
|
||||||
|
if (children.length) isDisabled(children)
|
||||||
|
|
||||||
|
if (item.id == id.value || item.isStop == 1) {
|
||||||
|
item.disabled = true
|
||||||
|
} else {
|
||||||
|
item.disabled = false
|
||||||
|
}
|
||||||
|
return item
|
||||||
|
})
|
||||||
|
return newTree
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const getDetail = () => {
|
||||||
|
if (!id.value) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
apiDeptDetail({
|
||||||
|
id: id.value,
|
||||||
|
}).then((res: any) => {
|
||||||
|
formData.value = res
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 提交
|
||||||
|
const onSubmit = () => {
|
||||||
|
formRefs.value?.validate((valid: boolean) => {
|
||||||
|
if (!valid) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 因为组件绑定的pid是number,会匹配对应的联级数据
|
||||||
|
// 而选中后,pid是变为数组
|
||||||
|
// 所以pid是数组时(即新建部门或者编辑部门改变上级部门)
|
||||||
|
if (Array.isArray(formData.value.pid)) {
|
||||||
|
formData.value.pid = formData.value.pid[formData.value.pid.length - 1]
|
||||||
|
}
|
||||||
|
|
||||||
|
const promise = id.value
|
||||||
|
? apiDeptEdit({
|
||||||
|
...formData.value,
|
||||||
|
id: id.value,
|
||||||
|
})
|
||||||
|
: apiDeptAdd(formData.value)
|
||||||
|
promise.then(() => {
|
||||||
|
setTimeout(() => router.go(-1), 500)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getDetail()
|
||||||
|
getList()
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped></style>
|
<style lang="scss" scoped></style>
|
||||||
|
|
|
||||||
|
|
@ -3,24 +3,20 @@
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<el-form class="ls-form" :model="formData" label-width="80px" size="small" inline>
|
<el-form class="ls-form" :model="formData" label-width="80px" size="small" inline>
|
||||||
<el-form-item label="部门名称">
|
<el-form-item label="部门名称">
|
||||||
<el-input class="ls-input" />
|
<el-input v-model="formData.name" class="ls-input" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="部门状态:">
|
<el-form-item label="部门状态:">
|
||||||
<el-select placeholder="全部">
|
<el-select v-model="formData.isStop" placeholder="全部">
|
||||||
<el-option
|
<el-option label="全部" value=""></el-option>
|
||||||
v-for="item in statusList"
|
<el-option label="正常" :value="0"></el-option>
|
||||||
:key="item.val"
|
<el-option label="停用" :value="1"></el-option>
|
||||||
:label="item.name"
|
|
||||||
:value="item.val"
|
|
||||||
>
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<div class="m-l-20">
|
<div class="m-l-20">
|
||||||
<el-button type="primary" @click="getLists">查询</el-button>
|
<el-button type="primary" @click="getDeptLists">查询</el-button>
|
||||||
<el-button @click="reGetLists">重置</el-button>
|
<el-button @click="reGetLists">重置</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -35,24 +31,20 @@
|
||||||
全部展开/折叠
|
全部展开/折叠
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|
||||||
<el-table class="m-t-15" size="small" row-key="id" :expand-row-keys="openIdArr">
|
<el-table :data="lists" class="m-t-15" size="small" row-key="id" :expand-row-keys="openIdArr">
|
||||||
<el-table-column label="部门名称" prop="name" min-width="100"></el-table-column>
|
<el-table-column label="部门名称" prop="name" min-width="100"></el-table-column>
|
||||||
|
|
||||||
<el-table-column label="部门状态" prop="status_desc" min-width="100">
|
<el-table-column label="部门状态" prop="isStop" min-width="100">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-tag class="ml-2" :type="row.status ? '' : 'danger'"
|
<el-tag class="ml-2" :type="row.isStop ? 'danger' : ''">
|
||||||
>{{ row.status_desc }}
|
{{ row.isStop == 0 ? '正常' : '停用' }}
|
||||||
</el-tag>
|
</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="排序" prop="sort" min-width="100"></el-table-column>
|
<el-table-column label="排序" prop="sort" min-width="100"></el-table-column>
|
||||||
|
|
||||||
<el-table-column
|
<el-table-column label="添加时间" prop="createTime" min-width="100"></el-table-column>
|
||||||
label="添加时间"
|
|
||||||
prop="create_time"
|
|
||||||
min-width="100"
|
|
||||||
></el-table-column>
|
|
||||||
|
|
||||||
<el-table-column label="操作" width="100" fixed="right">
|
<el-table-column label="操作" width="100" fixed="right">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
|
|
@ -61,18 +53,14 @@
|
||||||
:to="{
|
:to="{
|
||||||
path: '/organize/department/edit',
|
path: '/organize/department/edit',
|
||||||
query: {
|
query: {
|
||||||
id: row.id
|
id: row.id,
|
||||||
}
|
},
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<el-button type="text">编辑</el-button>
|
<el-button type="text">编辑</el-button>
|
||||||
</router-link>
|
</router-link>
|
||||||
|
|
||||||
<popup
|
<popup class="m-r-10 inline" @confirm="handleDelete(row.id)" v-show="row.pid">
|
||||||
class="m-r-10 inline"
|
|
||||||
@confirm="handleDelete(row.id)"
|
|
||||||
v-show="row.pid"
|
|
||||||
>
|
|
||||||
<template #trigger>
|
<template #trigger>
|
||||||
<el-button type="text">删除</el-button>
|
<el-button type="text">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -84,6 +72,61 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup></script>
|
<script lang="ts" setup>
|
||||||
|
import { onMounted, reactive, ref } from 'vue'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { flatten } from '@/utils/util'
|
||||||
|
import { apiDeptLists, apiDeptDelete } from '@/api/organize'
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
name: '',
|
||||||
|
isStop: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
// 展开列表数组
|
||||||
|
let openIdArr = ref<any>([])
|
||||||
|
|
||||||
|
// 列表数据
|
||||||
|
let lists = ref<any>([])
|
||||||
|
|
||||||
|
// 获取列表
|
||||||
|
const getDeptLists = async () => {
|
||||||
|
lists.value = await apiDeptLists({
|
||||||
|
...formData,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 重置列表
|
||||||
|
const reGetLists = () => {
|
||||||
|
formData.name = ''
|
||||||
|
formData.isStop = ''
|
||||||
|
getDeptLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = (id: number) => {
|
||||||
|
apiDeptDelete({ id }).then(() => {
|
||||||
|
getDeptLists()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 展开/折叠列表
|
||||||
|
const openOrFold = () => {
|
||||||
|
// console.log('触发')
|
||||||
|
if (openIdArr.value.length) {
|
||||||
|
openIdArr.value = []
|
||||||
|
} else {
|
||||||
|
let allArr = flatten(lists.value, [], 'children')
|
||||||
|
openIdArr.value = allArr.map((item) => item.id + '')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
await getDeptLists()
|
||||||
|
|
||||||
|
openOrFold()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped></style>
|
<style lang="scss" scoped></style>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<el-page-header :content="id ? '编辑岗位' : '新增岗位'" @back="$router.back()" />
|
<el-page-header :content="id ? '编辑岗位' : '新增岗位'" @back="$router.back()" />
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-card v-loading="loading" shadow="never" class="m-t-15">
|
<el-card shadow="never" class="m-t-15">
|
||||||
<el-form
|
<el-form
|
||||||
ref="formRefs"
|
ref="formRefs"
|
||||||
:rules="rules"
|
:rules="rules"
|
||||||
|
|
@ -13,29 +13,35 @@
|
||||||
label-width="150px"
|
label-width="150px"
|
||||||
size="small"
|
size="small"
|
||||||
>
|
>
|
||||||
|
<!-- 岗位名称 -->
|
||||||
<el-form-item label="岗位名称" prop="name">
|
<el-form-item label="岗位名称" prop="name">
|
||||||
<el-input placeholder="请输入岗位名称"></el-input>
|
<el-input v-model="formData.name" placeholder="请输入岗位名称"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 岗位编码 -->
|
||||||
<el-form-item label="岗位编码" prop="code">
|
<el-form-item label="岗位编码" prop="code">
|
||||||
<el-input placeholder="请输入岗位编码"></el-input>
|
<el-input v-model="formData.code" placeholder="请输入岗位编码"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 岗位排序 -->
|
||||||
<el-form-item label="排序" prop="sort">
|
<el-form-item label="排序" prop="sort">
|
||||||
<el-input placeholder="请输入排序" type="number"></el-input>
|
<el-input v-model="formData.sort" placeholder="请输入排序" type="number"></el-input>
|
||||||
<div class="muted">默认为0, 数值越大越排前</div>
|
<div class="muted">默认为0, 数值越大越排前</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="备注" prop="remark">
|
<!-- 备注 -->
|
||||||
|
<el-form-item label="备注" prop="remarks">
|
||||||
<el-input
|
<el-input
|
||||||
|
v-model="formData.remarks"
|
||||||
placeholder="请输入备注"
|
placeholder="请输入备注"
|
||||||
type="textarea"
|
type="textarea"
|
||||||
:autosize="{ minRows: 4, maxRows: 6 }"
|
:autosize="{ minRows: 4, maxRows: 6 }"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 管理员状态 -->
|
||||||
<el-form-item label="岗位状态">
|
<el-form-item label="岗位状态">
|
||||||
<el-switch :active-value="1" :inactive-value="0" />
|
<el-switch v-model="formData.isStop" :active-value="0" :inactive-value="1" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
@ -47,7 +53,79 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
import { computed, defineComponent, onMounted, reactive, Ref, ref, toRefs } from 'vue'
|
||||||
import FooterBtns from '@/components/footer-btns/index.vue'
|
import FooterBtns from '@/components/footer-btns/index.vue'
|
||||||
|
import { apiPostAdd, apiPostEdit, apiPostDetail } from '@/api/organize'
|
||||||
|
import { ElForm } from 'element-plus'
|
||||||
|
import { useAdmin } from '@/core/hooks/app'
|
||||||
|
|
||||||
|
const { router, route } = useAdmin()
|
||||||
|
const id = computed(() => route.query?.id)
|
||||||
|
const formRefs: Ref<typeof ElForm | null> = ref(null)
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const { formData, rules } = toRefs(
|
||||||
|
reactive({
|
||||||
|
formData: {
|
||||||
|
name: '',
|
||||||
|
code: '',
|
||||||
|
sort: 0,
|
||||||
|
remarks: '',
|
||||||
|
isStop: 0,
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
code: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入岗位编码',
|
||||||
|
trigger: ['blur'],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入岗位名称',
|
||||||
|
trigger: ['blur'],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const getDetail = () => {
|
||||||
|
if (!id.value) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
apiPostDetail({
|
||||||
|
id: id.value,
|
||||||
|
}).then((res: any) => {
|
||||||
|
formData.value = res
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 提交
|
||||||
|
const onSubmit = () => {
|
||||||
|
formRefs.value?.validate((valid: boolean) => {
|
||||||
|
if (!valid) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const promise = id.value
|
||||||
|
? apiPostEdit({
|
||||||
|
...formData.value,
|
||||||
|
id: id.value,
|
||||||
|
})
|
||||||
|
: apiPostAdd(formData.value)
|
||||||
|
promise.then(() => {
|
||||||
|
setTimeout(() => router.go(-1), 500)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getDetail()
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|
|
||||||
|
|
@ -3,22 +3,18 @@
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<el-form class="ls-form" :model="formData" label-width="80px" size="small" inline>
|
<el-form class="ls-form" :model="formData" label-width="80px" size="small" inline>
|
||||||
<el-form-item label="岗位编码">
|
<el-form-item label="岗位编码">
|
||||||
<el-input class="ls-input" />
|
<el-input v-model="formData.code" class="ls-input" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="岗位名称">
|
<el-form-item label="岗位名称">
|
||||||
<el-input class="ls-input" />
|
<el-input v-model="formData.name" class="ls-input" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="岗位状态:">
|
<el-form-item label="岗位状态:">
|
||||||
<el-select placeholder="全部">
|
<el-select v-model="formData.isStop" placeholder="全部">
|
||||||
<el-option
|
<el-option label="全部" value=""></el-option>
|
||||||
v-for="item in statusList"
|
<el-option label="正常" :value="0"></el-option>
|
||||||
:key="item.val"
|
<el-option label="停用" :value="1"></el-option>
|
||||||
:label="item.name"
|
|
||||||
:value="item.val"
|
|
||||||
>
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
|
@ -33,27 +29,26 @@
|
||||||
|
|
||||||
<el-card shadow="never" class="m-t-15">
|
<el-card shadow="never" class="m-t-15">
|
||||||
<router-link to="/organize/post/edit">
|
<router-link to="/organize/post/edit">
|
||||||
<el-button v-perm="['system:post:add']" type="primary" size="small">
|
<el-button v-perm="['system:post:add']" type="primary" size="small"> 新增岗位 </el-button>
|
||||||
新增岗位
|
|
||||||
</el-button>
|
|
||||||
</router-link>
|
</router-link>
|
||||||
|
|
||||||
<el-table size="small" row-key="id" class="m-t-15">
|
<el-table :data="pager.lists" size="small" row-key="id" class="m-t-15">
|
||||||
<el-table-column label="岗位编码" prop="code" min-width="100"></el-table-column>
|
<el-table-column label="岗位编码" prop="code" min-width="100"></el-table-column>
|
||||||
|
|
||||||
<el-table-column label="岗位名称" prop="name" min-width="100"></el-table-column>
|
<el-table-column label="岗位名称" prop="name" min-width="100"></el-table-column>
|
||||||
<el-table-column label="岗位状态" prop="status_desc" min-width="100">
|
|
||||||
|
<el-table-column label="岗位状态" prop="isStop" min-width="100">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-tag class="ml-2" :type="row.status ? '' : 'danger'">
|
<el-tag class="ml-2" :type="row.isStop ? 'danger' : ''">
|
||||||
{{ row.status_desc }}
|
{{ row.isStop == 0 ? '正常' : '停用' }}
|
||||||
</el-tag>
|
</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="排序" prop="sort" min-width="100"></el-table-column>
|
<el-table-column label="排序" prop="sort" min-width="100"></el-table-column>
|
||||||
<el-table-column
|
|
||||||
label="添加时间"
|
<el-table-column label="添加时间" prop="createTime" min-width="100"></el-table-column>
|
||||||
prop="create_time"
|
|
||||||
min-width="100"
|
|
||||||
></el-table-column>
|
|
||||||
<el-table-column label="操作" min-width="100" fixed="right">
|
<el-table-column label="操作" min-width="100" fixed="right">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<router-link
|
<router-link
|
||||||
|
|
@ -61,12 +56,13 @@
|
||||||
:to="{
|
:to="{
|
||||||
path: '/organize/post/edit',
|
path: '/organize/post/edit',
|
||||||
query: {
|
query: {
|
||||||
id: row.id
|
id: row.id,
|
||||||
}
|
},
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<el-button type="text">编辑</el-button>
|
<el-button type="text">编辑</el-button>
|
||||||
</router-link>
|
</router-link>
|
||||||
|
|
||||||
<popup class="m-r-10 inline" @confirm="handleDelete(row.id)">
|
<popup class="m-r-10 inline" @confirm="handleDelete(row.id)">
|
||||||
<template #trigger>
|
<template #trigger>
|
||||||
<el-button type="text">删除</el-button>
|
<el-button type="text">删除</el-button>
|
||||||
|
|
@ -79,6 +75,37 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup></script>
|
<script lang="ts" setup>
|
||||||
|
import { onMounted, reactive, ref } from 'vue'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { usePages } from '@/core/hooks/pages'
|
||||||
|
import { apiPostLists, apiPostDelete } from '@/api/organize'
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
code: '', // 编码
|
||||||
|
name: '', // 岗位名称
|
||||||
|
isStop: '', // 是否停用 0=否,1=是,不传=全部
|
||||||
|
})
|
||||||
|
|
||||||
|
// 分页请求
|
||||||
|
const { pager, requestApi, resetParams, resetPage } = usePages({
|
||||||
|
callback: apiPostLists,
|
||||||
|
params: formData,
|
||||||
|
})
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = (id: number) => {
|
||||||
|
apiPostDelete({
|
||||||
|
id,
|
||||||
|
}).then(() => {
|
||||||
|
requestApi()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
requestApi()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped></style>
|
<style lang="scss" scoped></style>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue