|
@@ -1,136 +1,96 @@
|
|
|
<template>
|
|
|
<div class="white pa-3">
|
|
|
- <m-search class="mb-3" :items="searchItems" v-model="searchQuery" @search="onSearch" @reset="onSearch">
|
|
|
- <template #button>
|
|
|
- <m-button type="primary" icon="el-icon-plus" @click="onAdd">新增</m-button>
|
|
|
+ <el-tabs v-model="activeName" @tab-click="handleClick">
|
|
|
+ <el-tab-pane
|
|
|
+ v-for="item in items"
|
|
|
+ :key="item.name"
|
|
|
+ :label="item.label"
|
|
|
+ :name="item.name"
|
|
|
+ >
|
|
|
+ <component :is="item.component" :ref="item.name" @mounted="onComponentMounted" @history="onHistory"></component>
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ <DrawerHistory ref="drawerHistoryRefs" :get-page="getPage">
|
|
|
+ <template #panel="{ item }">
|
|
|
+ <el-form label-position="left" class="m-form" label-width="120">
|
|
|
+ <el-form-item label="福利名称">
|
|
|
+ <el-tag>{{ itemData.subsidyName }}</el-tag>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="配置机构">
|
|
|
+ <div>
|
|
|
+ <el-tag v-for="(_name, i) in item.subsidyOrganizationNames" :key="i" type="info" class="mr-3">
|
|
|
+ {{ _name }}
|
|
|
+ </el-tag>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="福利薪资">
|
|
|
+ <span>{{ item.subsidySalary }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="描述">
|
|
|
+ <span>{{ item.subsidyCheck }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
</template>
|
|
|
- </m-search>
|
|
|
- <m-table
|
|
|
- :items="items"
|
|
|
- :headers="headers"
|
|
|
- :loading="loading"
|
|
|
- :total="total"
|
|
|
- :page-size="pageInfo.size"
|
|
|
- :page-current="pageInfo.current"
|
|
|
- @page-change="onPageChange"
|
|
|
- >
|
|
|
- <template #title="{ row }">
|
|
|
- {{ row.subsidyPersonnelCategory?.title ?? '找不到该项福利' }}
|
|
|
- </template>
|
|
|
- <template #actions="{ row }">
|
|
|
- <m-button text type="primary" size="small" @click="onEdit(row)">编辑</m-button>
|
|
|
- <m-button text type="primary" size="small" @click="onEditRules(row)">规则配置</m-button>
|
|
|
- <m-button text type="danger" size="small" @click="onDelete(row)">删除</m-button>
|
|
|
- <m-button text type="primary" size="small" @click="onHistory(row)">历史配置</m-button>
|
|
|
- </template>
|
|
|
- </m-table>
|
|
|
- <WelfareEdit ref="welfareEditRefs" @refresh="onInit"></WelfareEdit>
|
|
|
- <WelfareRules ref="WelfareRulesRefs" @refresh="onInit"></WelfareRules>
|
|
|
- <welfareHistory ref="welfareHistoryRefs"></welfareHistory>
|
|
|
+ </DrawerHistory>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import DrawerHistory from '@/components/DrawerHistory'
|
|
|
import {
|
|
|
- getWelfarePage,
|
|
|
- deleteWelfare
|
|
|
+ getWelfareDetail
|
|
|
} from '@/api/welfare'
|
|
|
-import WelfareEdit from './welfareEdit.vue'
|
|
|
-import WelfareRules from './welfareRules'
|
|
|
-import welfareHistory from './welfareHistory'
|
|
|
export default {
|
|
|
name: 'human-resources-welfare',
|
|
|
components: {
|
|
|
- WelfareEdit,
|
|
|
- welfareHistory,
|
|
|
- WelfareRules
|
|
|
+ DrawerHistory
|
|
|
},
|
|
|
data () {
|
|
|
return {
|
|
|
- searchQuery: {
|
|
|
- subsidyName: null
|
|
|
- },
|
|
|
- searchItems: [
|
|
|
- {
|
|
|
- label: '福利名称',
|
|
|
- prop: 'subsidyName',
|
|
|
- type: 'input'
|
|
|
- }
|
|
|
- ],
|
|
|
+ activeName: '',
|
|
|
items: [],
|
|
|
- headers: [
|
|
|
- { label: '福利名称', prop: 'subsidyName' },
|
|
|
- { label: '福利描述', prop: 'subsidyTag' },
|
|
|
- { label: '创建日期', prop: 'createDate' },
|
|
|
- { label: '操作', prop: 'actions' }
|
|
|
- ],
|
|
|
- loading: false,
|
|
|
- total: 0,
|
|
|
- pageInfo: {
|
|
|
- current: 1,
|
|
|
- size: 10
|
|
|
- },
|
|
|
- title: ''
|
|
|
+ itemData: {}
|
|
|
}
|
|
|
},
|
|
|
created () {
|
|
|
- this.onInit()
|
|
|
+ this.items = this.$route.meta.roles.filter(e => e.hidden === 1).sort((a, b) => b - a).map(e => {
|
|
|
+ return {
|
|
|
+ name: e.name,
|
|
|
+ label: e.label,
|
|
|
+ component: () => import(`./${e.component}/index.vue`)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ if (this.$route.query.name) {
|
|
|
+ this.activeName = this.$route.query.name
|
|
|
+ } else {
|
|
|
+ this.activeName = this.items[0].name
|
|
|
+ }
|
|
|
},
|
|
|
methods: {
|
|
|
- async onInit () {
|
|
|
- try {
|
|
|
- const { data } = await getWelfarePage({
|
|
|
- page: {
|
|
|
- ...this.pageInfo,
|
|
|
- orders: [
|
|
|
- {
|
|
|
- asc: false,
|
|
|
- column: 'subsidy_id'
|
|
|
- }
|
|
|
- ]
|
|
|
- },
|
|
|
- ...this.searchQuery
|
|
|
- })
|
|
|
- this.items = data.records
|
|
|
- this.total = data.total
|
|
|
- } catch (error) {
|
|
|
- this.$message.error(error)
|
|
|
- }
|
|
|
- },
|
|
|
- onEdit (item) {
|
|
|
- this.$refs.welfareEditRefs.open(item)
|
|
|
+ onComponentMounted () {
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs[this.activeName][0].onInit()
|
|
|
+ })
|
|
|
},
|
|
|
- onSearch () {
|
|
|
- this.pageInfo.current = 1
|
|
|
- this.onInit()
|
|
|
- },
|
|
|
- onAdd () {
|
|
|
- this.$refs.welfareEditRefs.open()
|
|
|
- },
|
|
|
- onEditRules (item) {
|
|
|
- this.$refs.WelfareRulesRefs.open(item)
|
|
|
- },
|
|
|
- onDelete (item) {
|
|
|
- this.$confirm(`确定删除${item.subsidyName}吗?`, '提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- cancelButtonText: '取消',
|
|
|
- type: 'warning'
|
|
|
- }).then(async () => {
|
|
|
- try {
|
|
|
- await deleteWelfare({ subsidyId: item.subsidyId })
|
|
|
- this.$message.success('删除成功')
|
|
|
- this.onInit()
|
|
|
- } catch (error) {
|
|
|
- this.$message.error(error)
|
|
|
- }
|
|
|
- }).catch(_ => {})
|
|
|
- },
|
|
|
- onPageChange (page) {
|
|
|
- this.pageInfo.current = page
|
|
|
- this.onInit()
|
|
|
+ handleClick () {
|
|
|
+ this.$router.push(`${this.$route.path}?name=${this.activeName}`)
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs[this.activeName][0].onInit()
|
|
|
+ })
|
|
|
},
|
|
|
onHistory (row) {
|
|
|
- this.$refs.welfareHistoryRefs.open(row)
|
|
|
+ this.itemData = row
|
|
|
+ this.$refs.drawerHistoryRefs.open(`${row.subsidyName} 历史记录`)
|
|
|
+ },
|
|
|
+ async getPage () {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ getWelfareDetail({ subsidyId: this.itemData.subsidyId }).then(({ data }) => {
|
|
|
+ resolve({
|
|
|
+ data: data.subsidyItems,
|
|
|
+ total: data.subsidyItems.length
|
|
|
+ })
|
|
|
+ }).catch(reject)
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
}
|