jhprjv2/ruoyi-ui/src/views/flow/flowLabourInfo/index.vue

524 lines
16 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="项目名称" prop="projectName">
<el-input
v-model="queryParams.projectName"
placeholder="请输入项目名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="总包单位" prop="deptName">
<el-input
v-model="queryParams.deptName"
placeholder="请输入总包单位名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="分包单位" prop="subDeptName">
<el-input
v-model="queryParams.subDeptName"
placeholder="请输入分包单位名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="投诉人" prop="laborName">
<el-input
v-model="queryParams.laborName"
placeholder="请输入投诉人名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="身份证号" prop="laborCardId">
<el-input
v-model="queryParams.laborCardId"
placeholder="请输入身份证号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="联系电话" prop="laborPhone">
<el-input
v-model="queryParams.laborPhone"
placeholder="请输入联系电话"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item
label="责任主体"
prop="projectDeptId"
v-hasPermi="['project:project:zgs']"
>
<el-select
v-model="queryParams.projectDeptId"
placeholder="请选择责任主体"
clearable
>
<el-option
v-for="dict in projectDeptOptions"
:key="dict.deptId"
:label="dict.deptName"
:value="dict.deptId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="投诉时间">
<el-date-picker
v-model="daterangeDate"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['flow:flowLabourInfo:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['flow:flowLabourInfo:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['flow:flowLabourInfo:remove']"
>删除</el-button>
</el-col> -->
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['flow:flowLabourInfo:export']"
>导出</el-button
>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-tabs type="card" v-model="queryParams.activeName" @tab-click="getList">
<el-tab-pane :label="tabs.all" name="all"></el-tab-pane>
<el-tab-pane :label="tabs.jxz" name="jxz"></el-tab-pane>
<el-tab-pane :label="tabs.ywc" name="ywc"></el-tab-pane
></el-tabs>
<el-table
v-loading="loading"
:data="flowLabourInfoList"
@selection-change="handleSelectionChange"
>
<el-table-column label="项目名称" align="center" prop="projectName" />
<el-table-column label="总包单位" align="center" prop="deptName" />
<el-table-column label="分包单位" align="center" prop="subDeptName" />
<el-table-column label="投诉人" align="center" prop="laborName" />
<el-table-column label="身份证号" align="center" prop="laborCardId" />
<el-table-column label="联系电话" align="center" prop="laborPhone" />
<el-table-column label="欠薪人数" align="center" prop="laborNumber" />
<el-table-column label="欠薪金额" align="center" prop="laborAmount" />
<el-table-column label="投诉进度" align="center" prop="approveStatus">
<template slot-scope="scope">
<dict-tag
:options="dict.type.flow_labou_appstatus"
:value="scope.row.approveStatus"
/>
</template>
</el-table-column>
<el-table-column label="是否有效" align="center" prop="isDel">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_common_isdel" :value="scope.row.isDel" />
</template>
</el-table-column>
<el-table-column label="投诉时间" align="center" prop="createTime">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d} {h}:{i}") }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
width="120"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
v-if="getApprove(scope.row)"
size="mini"
type="text"
icon="el-icon-finished"
@click="handleUpdate(scope.row)"
v-hasPermi="['flow:flowLabourInfo:edit']"
>办理</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-c-scale-to-original"
@click="handleDetail(scope.row)"
v-hasPermi="['flow:flowLabourInfo:remove']"
>查看</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改劳资投诉对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="所属项目" prop="projectId">
<el-input v-model="form.projectId" placeholder="请输入所属项目" />
</el-form-item>
<el-form-item label="项目名称" prop="projectName">
<el-input v-model="form.projectName" placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="总包单位" prop="deptId">
<el-input v-model="form.deptId" placeholder="请输入总包单位" />
</el-form-item>
<el-form-item label="总包单位名称" prop="deptName">
<el-input v-model="form.deptName" placeholder="请输入总包单位名称" />
</el-form-item>
<el-form-item label="分包单位" prop="subDeptId">
<el-input v-model="form.subDeptId" placeholder="请输入分包单位" />
</el-form-item>
<el-form-item label="分包单位名称" prop="subDeptName">
<el-input v-model="form.subDeptName" placeholder="请输入分包单位名称" />
</el-form-item>
<el-form-item label="劳工名称" prop="laborName">
<el-input v-model="form.laborName" placeholder="请输入劳工名称" />
</el-form-item>
<el-form-item label="身份证码" prop="laborCardid">
<el-input v-model="form.laborCardid" placeholder="请输入身份证码" />
</el-form-item>
<el-form-item label="联系电话" prop="laborPhone">
<el-input v-model="form.laborPhone" placeholder="请输入联系电话" />
</el-form-item>
<el-form-item label="欠薪人数" prop="laborNumber">
<el-input v-model="form.laborNumber" placeholder="请输入欠薪人数" />
</el-form-item>
<el-form-item label="欠薪金额" prop="laborAmount">
<el-input v-model="form.laborAmount" placeholder="请输入欠薪金额" />
</el-form-item>
<el-form-item label="欠薪原因说明" prop="laborReason">
<el-input v-model="form.laborReason" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="附件凭证" prop="files">
<file-upload v-model="form.files" />
</el-form-item>
<el-form-item label="是否有效" prop="isDel">
<el-input v-model="form.isDel" placeholder="请输入是否有效" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<detailFlowLabourDrawer ref="detailFlowLabourDrawer" />
<approveFlowLabourDrawer ref="approveFlowLabourDrawer" :closeCallBack="getList" />
</div>
</template>
<script>
import {
listFlowLabourInfo,
getFlowLabourInfo,
delFlowLabourInfo,
addFlowLabourInfo,
updateFlowLabourInfo,
findGroupCountByApprove,
} from "@/api/flow/flowLabourInfo";
import detailFlowLabourDrawer from "./detailFlowLabourDrawer.vue";
import approveFlowLabourDrawer from "./approveFlowLabourDrawer.vue";
export default {
name: "FlowLabourInfo",
components: {
detailFlowLabourDrawer,
approveFlowLabourDrawer,
},
dicts: ["sys_common_isdel", "flow_labou_appstatus"],
data() {
return {
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 劳资投诉表格数据
flowLabourInfoList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
projectId: null,
projectName: null,
deptId: null,
deptName: null,
subDeptId: null,
subDeptName: null,
laborName: null,
laborCardId: null,
laborPhone: null,
approveStatus: null,
isDel: null,
projectDeptId: null,
activeName: "jxz",
},
// 表单参数
form: {},
// 表单校验
rules: {},
tabs: {
all: "全部投诉0",
jxz: "进行中0",
ywc: "已完成0",
},
projectDeptOptions: [],
// 投诉时间范围
daterangeDate: [],
myMinRoles: [],
zbsp: false,
jdsp: false,
jtsp: false,
};
},
created() {
this.myMinRoles = this.$store.getters.roles;
if (this.myMinRoles.includes("lc_zbxmjl")) {
this.zbsp = true;
}
if (this.myMinRoles.includes("lc_jfdb")) {
this.jdsp = true;
}
if (this.myMinRoles.includes("admin") ||this.myMinRoles.includes("super") || this.myMinRoles.includes("jtgs")) {
this.jtsp = true;
}
this.getList();
this.$api.publics.getZgsDeptList().then((d) => {
this.projectDeptOptions = d?.data || [];
});
},
methods: {
getApprove(row) {
if (row.approveStatus == "100") {
return false;
} else if (row.approveStatus == "10" || row.approveStatus == "21") {
if (this.zbsp || this.jtsp) {
return true;
} else {
return false;
}
} else if (row.approveStatus == "20" || row.approveStatus == "31") {
if (this.jdsp || this.jtsp) {
return true;
} else {
return false;
}
} else {
if (this.jtsp) {
return true;
} else {
return false;
}
}
},
/** 查询劳资投诉列表 */
getList() {
this.loading = true;
this.queryParams.params = {};
if (null != this.daterangeDate && "" != this.daterangeDate) {
this.queryParams.params["beginDate"] = this.daterangeDate[0];
this.queryParams.params["endDate"] = this.daterangeDate[1];
}
this.queryCount();
listFlowLabourInfo(this.queryParams).then((response) => {
this.flowLabourInfoList = response.rows;
this.total = response.total;
this.loading = false;
});
},
queryCount() {
findGroupCountByApprove(this.queryParams).then((response) => {
if (response && response.data) {
let sum = parseInt(response.data.db) + parseInt(response.data.yb);
this.tabs.jxz = "进行中(" + response.data.db + "";
this.tabs.ywc = "已完成(" + response.data.yb + "";
this.tabs.all = "全部投诉(" + sum + "";
}
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
id: null,
projectId: null,
projectName: null,
deptId: null,
deptName: null,
subDeptId: null,
subDeptName: null,
laborName: null,
laborCardid: null,
laborPhone: null,
laborNumber: null,
laborAmount: null,
laborReason: null,
files: null,
approveStatus: null,
isDel: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
remark: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.daterangeDate = [];
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加劳资投诉";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.$refs.approveFlowLabourDrawer.show(row);
},
/** 详情查看 */
handleDetail(row) {
this.$refs.detailFlowLabourDrawer.show(row);
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updateFlowLabourInfo(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addFlowLabourInfo(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal
.confirm('是否确认删除劳资投诉编号为"' + ids + '"的数据项?')
.then(function () {
return delFlowLabourInfo(ids);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"flow/flowLabourInfo/export",
{
...this.queryParams,
},
`flowLabourInfo_${new Date().getTime()}.xlsx`
);
},
},
};
</script>