对接标签管理ESC审批列表

This commit is contained in:
wangchengming 2025-07-08 22:47:58 +08:00
parent 8e26c3f9ff
commit 7f0f0f3664

View File

@ -5,19 +5,24 @@
<el-form :model="queryParams" ref="queryRef" :inline="true">
<el-row class="myRow">
<el-col :span="20">
<el-form-item label="申请日期" prop="userName">
<el-date-picker v-model="rangeTime" type="daterange" range-separator="~" :clearable="false"
style="width: 250px" start-placeholder="开始日期" end-placeholder="结束日期" />
<el-form-item label="申请日期">
<el-date-picker v-model="dateRange" type="daterange" range-separator="~" :clearable="false"
format="YYYY-MM-DD" value-format="YYYY-MM-DD" style="width: 250px"
@change="handleDateChange" start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item>
<el-form-item label="批准状态" prop="deptId">
<el-select v-model="queryParams.deptId" placeholder="请选择" clearable style="width: 160px">
<el-option label="Zone one" value="shanghai" />
<el-option label="Zone two" value="beijing" />
<el-form-item label="批准状态">
<el-select v-model="queryParams.state" placeholder="请选择" clearable style="width: 160px">
<el-option label="待审核" :value="1" />
<el-option label="通过" :value="2" />
<el-option label="驳回" :value="9" />
</el-select>
</el-form-item>
<el-form-item label="员工姓名" prop="userName">
<el-input v-model="queryParams.userName" placeholder="请输入员工姓名" clearable
style="width: 160px" @keyup.enter="handleQuery" />
<el-select v-model="queryParams.userId" filterable placeholder="请选择员工" style="width: 160px"
clearable>
<el-option v-for="item in allUsers" :key="item.userId"
:label="`${item.nickName}${item.dept?.deptName || '无部门'}`" :value="item.userId" />
</el-select>
</el-form-item>
<el-form-item style="margin-right: 10px;">
<el-button v-if="!unfoldFlag" type="text" class="foladText" @click="handleFlod">展开
@ -35,17 +40,16 @@
</el-row>
<el-row class="myRow" v-show="unfoldFlag">
<el-col :span="20">
<el-form-item label="部门" prop="qualification">
<el-select v-model="queryParams.qualification" placeholder="请选择部门" clearable
style="width: 160px">
<el-option label="Zone one" value="shanghai" />
<el-option label="Zone two" value="beijing" />
</el-select>
<el-form-item label="部门">
<el-tree-select v-model="queryParams.deptId" :data="enabledDeptOptions" clearable
:props="{ value: 'id', label: 'label', children: 'children' }" value-key="id"
placeholder="请选择部门" check-strictly style="width: 160px" />
</el-form-item>
<el-form-item label="申请标签" prop="deptId">
<el-select v-model="queryParams.deptId" placeholder="请选择" clearable style="width: 160px">
<el-option label="Zone one" value="shanghai" />
<el-option label="Zone two" value="beijing" />
<el-form-item label="申请标签">
<el-select v-model="queryParams.labelId" placeholder="请选择申请标签" clearable
style="width: 160px">
<el-option v-for="dict in bus_label" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@ -53,32 +57,36 @@
</el-form>
<div class="borderLine"></div>
<el-table :data="tableData" height="calc(100% - 176px)" style="width: 100%">
<el-table v-loading="loading" :data="tableData" height="calc(100% - 176px)" style="width: 100%">
<el-table-column label="序号" width="60">
<template #default="scope">
{{ scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column prop="localityName" label="属地" />
<el-table-column prop="departmentName" label="部门" />
<el-table-column prop="officeName" label="科室" />
<el-table-column prop="jobNumber" label="工号" />
<el-table-column prop="name" label="员工姓名" />
<el-table-column prop="curQualification" label="当前标签" />
<el-table-column prop="objectiveQualification" label="申请标签" />
<el-table-column prop="status" label="状态" width="120">
<el-table-column prop="dependencyName" label="属地" width="180" :show-overflow-tooltip="true" />
<el-table-column prop="deptName" label="部门" width="180" :show-overflow-tooltip="true" />
<el-table-column prop="sectionName" label="科室" width="180" :show-overflow-tooltip="true" />
<el-table-column prop="workNo" label="工号" width="130" />
<el-table-column prop="userName" label="员工姓名" width="130" />
<el-table-column prop="sourceLabelId" label="当前标签" width="130" />
<el-table-column prop="labelId" label="申请标签" width="130" />
<el-table-column prop="status" label="状态" width="180">
<template #default="scope">
<el-text v-if="scope.row.status == 0" type="info" class="infoinfoText">待审核</el-text>
<el-text v-if="scope.row.status == 1" type="success" class="successText">通过</el-text>
<el-text v-if="scope.row.status == 2" type="danger" class="dangerText">驳回</el-text>
<el-text v-if="scope.row.state == 1 && scope.row.node == 0" type="info"
class="infoinfoText">待审核</el-text>
<el-text v-if="scope.row.state == 1 && scope.row.node == 1" type="info"
class="infoinfoText">待审核</el-text>
<el-text v-if="scope.row.state == 1 && scope.row.node == 2" type="info"
class="infoinfoText">待标签管理员审核</el-text>
<el-text v-if="scope.row.state == 2" type="success" class="successText">通过</el-text>
<el-text v-if="scope.row.state == 9" type="danger" class="dangerText">驳回</el-text>
</template>
</el-table-column>
<el-table-column label="操作" width="150">
<el-table-column label="操作" fixed="right" align="center" width="100">
<template #default="scope">
<el-button type="primary" text class="replayTextBtn" v-if="scope.row.status != 0"
@click="handleView">查看</el-button>
<el-button type="primary" v-if="scope.row.status == 0" text class="replayTextBtn"
@click="handleApproval">审批</el-button>
<el-button type="primary" v-if="scope.row.state == 1 && scope.row.node == 1" text
class="replayTextBtn" @click="handleApproval">审批</el-button>
<el-button type="primary" text class="replayTextBtn" v-else @click="handleView">查看</el-button>
</template>
</el-table-column>
</el-table>
@ -88,142 +96,115 @@
</div>
</template>
<script setup>
import { ref } from 'vue'
import { onMounted, ref } from 'vue'
import { useRouter } from 'vue-router'
import Breadcrumb from '@/components/Breadcrumb'
import Breadcrumb from '@/components/Breadcrumb'
import { deptTreeSelect, listUser } from "@/api/system/user"
import { getUserLabelPageList } from "@/api/labelManage/labelManage"
const { proxy } = getCurrentInstance()
const { bus_label } = proxy.useDict("bus_label")
const router = useRouter()
const total = ref(16)
const unfoldFlag = ref(false)
const rangeTime = ref([])
const dateRange = ref([])
const queryParams = ref({
pageNum: 1,
pageIndex: 1,
pageSize: 10,
userName: undefined,
node: 1,
userId: undefined,
deptId: undefined,
qualification: undefined
labelId: undefined,
state: undefined,
startTime: undefined,
endTime: undefined
})
const tableData = [
{
localityName: 'XXX属地',
departmentName: 'XXX部门',
officeName: 'XXX科室',
jobNumber: '3523213',
name: '赵丽娟',
curQualification: '-',
objectiveQualification: 'SH',
status: 0
},
{
localityName: 'XXX属地',
departmentName: 'XXX部门',
officeName: 'XXX科室',
jobNumber: '3523213',
name: '赵丽娟',
curQualification: '-',
objectiveQualification: 'SH',
status: 1
},
{
localityName: 'XXX属地',
departmentName: 'XXX部门',
officeName: 'XXX科室',
jobNumber: '3523213',
name: '赵丽娟',
curQualification: '-',
objectiveQualification: 'SH',
status: 2
},
{
localityName: 'XXX属地',
departmentName: 'XXX部门',
officeName: 'XXX科室',
jobNumber: '3523213',
name: '赵丽娟',
curQualification: '-',
objectiveQualification: 'SH',
status: 0
},
{
localityName: 'XXX属地',
departmentName: 'XXX部门',
officeName: 'XXX科室',
jobNumber: '3523213',
name: '赵丽娟',
curQualification: '-',
objectiveQualification: 'SH',
status: 0
},
{
localityName: 'XXX属地',
departmentName: 'XXX部门',
officeName: 'XXX科室',
jobNumber: '3523213',
name: '赵丽娟',
curQualification: '-',
objectiveQualification: 'SH',
status: 0
},
{
localityName: 'XXX属地',
departmentName: 'XXX部门',
officeName: 'XXX科室',
jobNumber: '3523213',
name: '赵丽娟',
curQualification: '-',
objectiveQualification: 'SH',
status: 0
},
{
localityName: 'XXX属地',
departmentName: 'XXX部门',
officeName: 'XXX科室',
jobNumber: '3523213',
name: '赵丽娟',
curQualification: '-',
objectiveQualification: 'SH',
status: 0
},
{
localityName: 'XXX属地',
departmentName: 'XXX部门',
officeName: 'XXX科室',
jobNumber: '3523213',
name: '赵丽娟',
curQualification: '-',
objectiveQualification: 'SH',
status: 0
},
{
localityName: 'XXX属地',
departmentName: 'XXX部门',
officeName: 'XXX科室',
jobNumber: '3523213',
name: '赵丽娟',
curQualification: '-',
objectiveQualification: 'SH',
status: 0
},
]
const loading = ref(true)
const total = ref(0)
const tableData = ref([])
const handleFlod = () => {
unfoldFlag.value = !unfoldFlag.value
}
//
onMounted(() => {
getAllUser();
getDeptTree();
getBusUserLabelPageList();
});
//
const allUsers = ref([])
//
const getAllUser = () => {
listUser({
status: '0',
pageNum: 1,
pageSize: 5000
}).then(res => {
allUsers.value = res.rows
})
}
//
const enabledDeptOptions = ref(undefined)
//
const getDeptTree = () => {
deptTreeSelect().then(res => {
enabledDeptOptions.value = filterDisabledDept(JSON.parse(JSON.stringify(res.data)))
})
}
/** 过滤禁用的部门 */
const filterDisabledDept = (deptList) => {
return deptList.filter(dept => {
if (dept.disabled) {
return false
}
if (dept.children && dept.children.length) {
dept.children = filterDisabledDept(dept.children)
}
return true
})
}
const getBusUserLabelPageList = () => {
loading.value = true
console.log('queryParams.value', queryParams.value)
getUserLabelPageList(queryParams.value).then(res => {
if (res.code == 200) {
tableData.value = res.data.list
total.value = res.data.total
}
loading.value = false
}).catch(() => {
loading.value = false
})
}
//
const handleDateChange = (val) => {
console.log('选择的日期范围:', val);
dateRange.value = val
if (val.length > 0) {
queryParams.value.startTime = val[0]
queryParams.value.endTime = val[1]
}
};
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.value.pageNum = 1
getList()
queryParams.value.pageIndex = 1
getBusUserLabelPageList()
}
/** 重置按钮操作 */
const resetQuery = () => {
dateRange.value = []
proxy.resetForm("queryRef")
queryParams.value.userId = undefined
queryParams.value.deptId = undefined
proxy.$refs.deptTreeRef.setCurrentKey(null)
queryParams.value.state = undefined
queryParams.value.labelId = undefined
queryParams.value.startTime = undefined
queryParams.value.endTime = undefined
proxy.resetForm("queryRef")
handleQuery()
}
const getList = () => {
}
const handleView = () => {
router.push('/labelManage/labelEscApproval/approvalDetail')
}
@ -255,7 +236,7 @@ const handleApproval = () => {
margin-left: 0 !important;
margin-right: 0 !important;
}
.qualificationApplyBtn {
// width: 84px !important;
height: 32px;