flx:修改新金湾
This commit is contained in:
parent
e63da6ee01
commit
58faa5a460
BIN
src/assets/images/laborManage/exit-icon.png
Normal file
BIN
src/assets/images/laborManage/exit-icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 476 B |
BIN
src/assets/images/laborManage/open.png
Normal file
BIN
src/assets/images/laborManage/open.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 227 B |
BIN
src/assets/images/laborManage/open_active.png
Normal file
BIN
src/assets/images/laborManage/open_active.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 229 B |
BIN
src/assets/images/laborManage/packup.png
Normal file
BIN
src/assets/images/laborManage/packup.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 177 B |
BIN
src/assets/images/laborManage/packup_active.png
Normal file
BIN
src/assets/images/laborManage/packup_active.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 182 B |
@ -192,12 +192,12 @@ export default {
|
||||
name: "selectedPersonnelAccount",
|
||||
props: {
|
||||
value: {
|
||||
type: [String, Array],
|
||||
default: [], //类型
|
||||
type: [Array, String, Number],
|
||||
default: () => [], //类型
|
||||
},
|
||||
enterpriseIds: {
|
||||
type: Array,
|
||||
default: [],
|
||||
default: () => [],
|
||||
}, // 企业id数组,用于过滤人员列表,
|
||||
enterpriseFlag: {
|
||||
type: Boolean,
|
||||
@ -430,7 +430,7 @@ export default {
|
||||
departmentTeamName: this.dealForm.departmentTeamName,
|
||||
};
|
||||
getProjectChilderSystemUserPageListApi(data).then((res) => {
|
||||
console.log(res);
|
||||
console.log(res, this.childValue);
|
||||
if (res.code == 200) {
|
||||
this.tableData = res.result.records;
|
||||
this.dealForm.total = res.result.total;
|
||||
@ -492,7 +492,7 @@ export default {
|
||||
this.childValue instanceof Array
|
||||
? this.childValue.join(",")
|
||||
: this.childValue;
|
||||
if (!userIds) return;
|
||||
if (!userIds) return this.selectedList = [];
|
||||
let data = {
|
||||
projectSn: this.$store.state.projectSn,
|
||||
userIds: userIds,
|
||||
|
||||
@ -254,6 +254,9 @@ export default {
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
/deep/ .el-collapse {
|
||||
.el-collapse-item__arrow {
|
||||
margin-right: 0;
|
||||
}
|
||||
.collapse-box1 {
|
||||
display: flex;
|
||||
font-size: 13px;
|
||||
|
||||
@ -151,7 +151,7 @@
|
||||
<div>
|
||||
<div>
|
||||
<span>风力</span>
|
||||
<template v-if="dealType == 3 || dateTimeUp(dealForm.date)">
|
||||
<template v-if="(dealType == 3 || dateTimeUp(dealForm.date)) && dealTypeShow">
|
||||
{{ dealForm.weatherJson.win_speed }}
|
||||
</template>
|
||||
<el-select
|
||||
@ -171,7 +171,7 @@
|
||||
</div>
|
||||
<div>
|
||||
<span>气温</span>
|
||||
<template v-if="dealType == 3 || dateTimeUp(dealForm.date)">
|
||||
<template v-if="(dealType == 3 || dateTimeUp(dealForm.date)) && dealTypeShow">
|
||||
{{ dealForm.weatherJson.tem_day }}
|
||||
</template>
|
||||
<el-input-number
|
||||
@ -186,7 +186,7 @@
|
||||
</div>
|
||||
<div>
|
||||
<span>天气</span>
|
||||
<template v-if="dealType == 3 || dateTimeUp(dealForm.date)">
|
||||
<template v-if="(dealType == 3 || dateTimeUp(dealForm.date)) && dealTypeShow">
|
||||
{{ dealForm.weatherJson.wea }}
|
||||
</template>
|
||||
<el-input
|
||||
@ -689,6 +689,7 @@ export default {
|
||||
technicalBriefingMaterial: [],
|
||||
weatherJson: {},
|
||||
},
|
||||
dealTypeShow: true,
|
||||
dealFormRules: {
|
||||
ocrType: [
|
||||
{
|
||||
@ -871,6 +872,8 @@ export default {
|
||||
if (res.code == 200) {
|
||||
this.dealForm.weatherJson = res.result;
|
||||
}
|
||||
}).catch((err) => {
|
||||
this.dealTypeShow = false;
|
||||
});
|
||||
},
|
||||
// 新增
|
||||
|
||||
@ -55,7 +55,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeIndex: "3",
|
||||
activeIndex: "1",
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
|
||||
@ -321,15 +321,16 @@ export default {
|
||||
],
|
||||
yAxis: [
|
||||
{
|
||||
type: "value",
|
||||
splitNumber: 5,
|
||||
type: "value",
|
||||
axisLabel: {
|
||||
formatter: "{value}",
|
||||
},
|
||||
},
|
||||
{
|
||||
max: 100,
|
||||
min: 0,
|
||||
type: "value",
|
||||
splitNumber: 5,
|
||||
axisLabel: {
|
||||
formatter: "{value} %",
|
||||
},
|
||||
@ -603,7 +604,7 @@ export default {
|
||||
}
|
||||
}
|
||||
.box-image2 {
|
||||
background-color: #99DDFF;
|
||||
background-color: #99ddff;
|
||||
> div {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
|
||||
@ -78,7 +78,7 @@
|
||||
<div class="table-header">
|
||||
<div class="table-header_left">
|
||||
统计列表
|
||||
<span>(当天工附/工口无法计算出最终的,由第二天00:00G计算显示)</span>
|
||||
<span>(当天工时/工日无法计算出最终值, 由第二天00:00后计算显示)</span>
|
||||
</div>
|
||||
<div class="table-header_right">
|
||||
<div>
|
||||
@ -112,15 +112,16 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- @row-click="handleSelectionChange" -->
|
||||
<el-table
|
||||
ref="multipleTable"
|
||||
:data="tableData"
|
||||
style="width: 100%"
|
||||
row-key="id"
|
||||
class="tables"
|
||||
height="calc(100% - 64px - 116px - 112px)"
|
||||
max-height="calc(100% - 64px - 116px - 112px)"
|
||||
@row-click="handleSelectionChange"
|
||||
height="calc(100% - 64px - 78px - 122px)"
|
||||
max-height="calc(100% - 64px - 78px - 122px)"
|
||||
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
@ -132,7 +133,11 @@
|
||||
align="center"
|
||||
label="姓名"
|
||||
show-overflow-tooltip
|
||||
></el-table-column>
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span style="cursor: pointer;" @click="handleSelectionChange(scope.row)">{{ scope.row.workerName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="deptName"
|
||||
align="center"
|
||||
@ -364,12 +369,12 @@
|
||||
:model="exportSettingInfo"
|
||||
:rules="exportSettingInfoRules"
|
||||
size="medium"
|
||||
label-width="210px"
|
||||
label-width="100px"
|
||||
class="exportSettingInfo"
|
||||
>
|
||||
<el-form-item label="选择日期" prop="value1">
|
||||
<el-form-item label="选择日期" prop="startDate">
|
||||
<el-date-picker
|
||||
v-model="exportSettingInfo.value1"
|
||||
v-model="exportSettingInfo.startDate"
|
||||
type="daterange"
|
||||
value-format="yyyy-MM-dd"
|
||||
range-separator="至"
|
||||
@ -378,62 +383,36 @@
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="导出纬度" prop="radio1">
|
||||
<el-radio-group v-model="exportSettingInfo.radio1">
|
||||
<el-radio :label="1">按项目</el-radio>
|
||||
<el-radio :label="2">按参建单位</el-radio>
|
||||
<el-radio :label="3">按班组/部门</el-radio>
|
||||
<el-radio :label="4">按人员</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="exportSettingInfo.radio1 == 1"
|
||||
label="展示类型"
|
||||
prop="ocrType"
|
||||
prop="downloadType"
|
||||
>
|
||||
<el-select
|
||||
v-model="exportSettingInfo.ocrType"
|
||||
v-model="exportSettingInfo.downloadType"
|
||||
placeholder="请选择"
|
||||
filterable
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in videoTypeList"
|
||||
v-for="(item, index) in downloadTypeList"
|
||||
:key="item.id"
|
||||
:label="item.title"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<template v-else-if="exportSettingInfo.radio1 == 2">
|
||||
<el-form-item label="参建单位" prop="ocrType">
|
||||
<el-select
|
||||
v-model="exportSettingInfo.ocrType"
|
||||
placeholder="请选择"
|
||||
filterable
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in videoTypeList"
|
||||
:key="item.id"
|
||||
:label="item.title"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="有效工时" prop="ocrType">
|
||||
<el-input-number
|
||||
:controls="false"
|
||||
v-model="exportSettingInfo.ocrType"
|
||||
controls-position="right"
|
||||
:min="0"
|
||||
></el-input-number>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-form>
|
||||
<div slot="footer" style="text-align: center">
|
||||
<el-button type="primary" @click="exportSettingDialog = false"
|
||||
<el-button
|
||||
icon="el-icon-circle-close"
|
||||
@click="exportSettingDialog = false"
|
||||
>取消</el-button
|
||||
>
|
||||
<el-button @click="onSumbit">确定</el-button>
|
||||
<el-button
|
||||
icon="el-icon-circle-check"
|
||||
type="primary"
|
||||
@click="onSumbit"
|
||||
>确定</el-button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</el-dialog>
|
||||
@ -525,10 +504,35 @@ export default {
|
||||
// 导出设置
|
||||
exportSettingDialog: false,
|
||||
exportSettingInfo: {
|
||||
radio1: 1,
|
||||
value1: [],
|
||||
startDate: [],
|
||||
downloadType: "",
|
||||
},
|
||||
exportSettingInfoRules: {},
|
||||
exportSettingInfoRules: {
|
||||
startDate: [
|
||||
{
|
||||
required: true,
|
||||
message: "请选择日期",
|
||||
trigger: "change",
|
||||
},
|
||||
],
|
||||
downloadType: [
|
||||
{
|
||||
required: true,
|
||||
message: "请选择展示类型",
|
||||
trigger: "change",
|
||||
},
|
||||
],
|
||||
},
|
||||
downloadTypeList: [
|
||||
{
|
||||
id: 1,
|
||||
title: "上下午打卡",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
title: "进出场打卡",
|
||||
},
|
||||
],
|
||||
videoTypeList: [],
|
||||
};
|
||||
},
|
||||
@ -537,7 +541,55 @@ export default {
|
||||
},
|
||||
mounted() {},
|
||||
methods: {
|
||||
onSumbit() {},
|
||||
onSumbit() {
|
||||
this.$refs.exportSettingInfo.validate((valid) => {
|
||||
if (valid) {
|
||||
const requestData = {
|
||||
...this.exportSettingInfo,
|
||||
startDate: this.exportSettingInfo.startDate[0],
|
||||
endDate: this.exportSettingInfo.startDate[1],
|
||||
projectSn: this.projectSn,
|
||||
}
|
||||
fetch(this.$http.defaults.baseURL + 'xmgl/workerDailyAttendanceStatisticsV2/exportWorkerDailyAttendancesStaticsByDateXls', {
|
||||
method: "post",
|
||||
headers: {
|
||||
Authorization: this.$store.state.userInfo.token,
|
||||
"Content-Type": "application/json", // 设置请求头的内容类型为JSON
|
||||
},
|
||||
body: JSON.stringify(requestData),
|
||||
})
|
||||
.then((response) => {
|
||||
// 处理响应
|
||||
if (!response.ok) {
|
||||
throw new Error("导出失败");
|
||||
}
|
||||
return response.blob();
|
||||
})
|
||||
.then((blob) => {
|
||||
console.log("导出成功");
|
||||
// 创建一个下载链接
|
||||
const url = window.URL.createObjectURL(blob);
|
||||
// 创建一个<a>元素
|
||||
const link = document.createElement("a");
|
||||
link.href = url;
|
||||
link.download = '考勤日报.xlsx'; // 指定下载文件的文件名
|
||||
// 模拟点击下载链接
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
// 释放URL对象
|
||||
window.URL.revokeObjectURL(url);
|
||||
// 处理导出的文件
|
||||
// 这里可以使用blob对象来获取导出的文件内容或者将其保存到本地
|
||||
this.exportSettingDialog = false; // 关闭对话框
|
||||
})
|
||||
.catch((error) => {
|
||||
// 处理错误
|
||||
console.error(error);
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
// 导出设置
|
||||
handleExportSetting() {
|
||||
this.exportSettingDialog = true;
|
||||
@ -651,7 +703,7 @@ export default {
|
||||
data.containEnterpriseId = this.riskListDetail.originalId || "";
|
||||
delete data.enterpriseId;
|
||||
}
|
||||
if (this.queryParams.exitPersonnelChecked) {
|
||||
if (!this.queryParams.exitPersonnelChecked) {
|
||||
data.inserviceType = 1;
|
||||
}
|
||||
|
||||
|
||||
@ -2,7 +2,13 @@
|
||||
<div class="fullHeight">
|
||||
<div class="areaTreeBox fullHeight" id="videoTreeBox">
|
||||
<div class="areaTreeInner whiteBlock fullHeight">
|
||||
<p style="font-size: 14px">共有{{enterpriseDepartmentTeamInfo.enterpriseNum || 0}}个参建单位,{{enterpriseDepartmentTeamInfo.teamNum || 0}}个班组、{{enterpriseDepartmentTeamInfo.departmentNum || 0}}个部门</p>
|
||||
<p style="font-size: 14px">
|
||||
共有{{
|
||||
enterpriseDepartmentTeamInfo.enterpriseNum || 0
|
||||
}}个参建单位,{{
|
||||
enterpriseDepartmentTeamInfo.teamNum || 0
|
||||
}}个班组、{{ enterpriseDepartmentTeamInfo.departmentNum || 0 }}个部门
|
||||
</p>
|
||||
<el-form
|
||||
size="medium"
|
||||
class="flex-box"
|
||||
@ -55,7 +61,7 @@
|
||||
>
|
||||
<span
|
||||
style="
|
||||
width: 56%;
|
||||
width: 75%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
@ -66,8 +72,13 @@
|
||||
'color_333 font-bold': data.type == 1,
|
||||
}"
|
||||
:title="data.name"
|
||||
><span v-if="data.name != '全部组织'"
|
||||
>【{{ data.typeName }}】</span
|
||||
>{{ data.name }}</span
|
||||
>
|
||||
<span style="margin-right: 10px" v-if="data.children.length > 0"
|
||||
>({{ data.children.length }})</span
|
||||
>
|
||||
</div>
|
||||
</el-tree>
|
||||
</vue-scroll>
|
||||
@ -111,7 +122,7 @@ export default {
|
||||
projectSn: "",
|
||||
riskListDetailInfo: [],
|
||||
companyTypeList: [],
|
||||
enterpriseDepartmentTeamInfo:{},
|
||||
enterpriseDepartmentTeamInfo: {},
|
||||
};
|
||||
},
|
||||
created() {
|
||||
@ -159,17 +170,18 @@ export default {
|
||||
projectSn: this.$store.state.projectSn,
|
||||
}).then((res) => {
|
||||
if (res.success) {
|
||||
this.level1CompanyData = res.result;
|
||||
if (
|
||||
this.level1CompanyData.length > 0 &&
|
||||
this.level1CompanyData[0].children.length > 0
|
||||
) {
|
||||
this.$nextTick(() => {
|
||||
const resultInfo = this.level1CompanyData[0].children[0];
|
||||
this.$refs.tree.setCurrentKey(resultInfo);
|
||||
this.handleNodeClick(resultInfo);
|
||||
});
|
||||
}
|
||||
this.level1CompanyData = [
|
||||
{
|
||||
uniqueId: "",
|
||||
name: "全部组织",
|
||||
children: res.result,
|
||||
},
|
||||
];
|
||||
this.$nextTick(() => {
|
||||
const resultInfo = this.level1CompanyData[0];
|
||||
this.$refs.tree.setCurrentKey(resultInfo);
|
||||
this.handleNodeClick(resultInfo);
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
@ -255,6 +267,7 @@ export default {
|
||||
color: #b3b3b3;
|
||||
position: relative;
|
||||
border: none;
|
||||
background-color: #f7f7f7;
|
||||
}
|
||||
> .el-button:first-child::before {
|
||||
content: " ";
|
||||
@ -264,7 +277,7 @@ export default {
|
||||
transform: translateY(-50%);
|
||||
width: 1px;
|
||||
height: 90%;
|
||||
background-color: #d9d9d9;
|
||||
// background-color: #d9d9d9;
|
||||
}
|
||||
> .el-button:hover {
|
||||
color: #5181f6;
|
||||
@ -308,6 +321,12 @@ export default {
|
||||
&.is-current > .el-tree-node__content {
|
||||
background-color: rgba(81, 129, 246, 0.14);
|
||||
color: #5181f6;
|
||||
.el-tree-node__expand-icon {
|
||||
background-image: url(~@/assets/images/laborManage/open_active.png);
|
||||
}
|
||||
.el-tree-node__expand-icon.expanded {
|
||||
background-image: url(~@/assets/images/laborManage/packup_active.png);
|
||||
}
|
||||
}
|
||||
}
|
||||
.el-tree-node__content {
|
||||
@ -341,12 +360,29 @@ export default {
|
||||
}
|
||||
}
|
||||
.el-tree-node__expand-icon {
|
||||
font-size: 16px;
|
||||
padding: 0 6px;
|
||||
// font-size: 16px;
|
||||
// padding: 0 6px;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
background-image: url(~@/assets/images/laborManage/open.png);
|
||||
background-size: 100% 100%;
|
||||
background-repeat: no-repeat;
|
||||
display: inline-block;
|
||||
padding: 0;
|
||||
margin: 6px;
|
||||
|
||||
&.is-leaf {
|
||||
color: transparent !important;
|
||||
background-image: none !important;
|
||||
}
|
||||
}
|
||||
.el-tree-node__expand-icon.expanded {
|
||||
background-image: url(~@/assets/images/laborManage/packup.png);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
.el-icon-caret-right:before {
|
||||
display: none;
|
||||
}
|
||||
.treeTitle {
|
||||
background-color: #f7f7f7;
|
||||
margin-bottom: 10px;
|
||||
@ -356,6 +392,9 @@ export default {
|
||||
.custom-tree-node {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.custom-tree-node_icon::before {
|
||||
content: "";
|
||||
|
||||
@ -75,7 +75,7 @@
|
||||
<div class="table-header_left">
|
||||
统计列表
|
||||
<span
|
||||
>(当天工附/工口无法计算出最终的,由第二天00:00G计算显示)</span
|
||||
>(当天工时/工日无法计算出最终值, 由第二天00:00后计算显示)</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
@ -125,8 +125,7 @@
|
||||
class="tables"
|
||||
:height="`calc(100% - 64px - ${
|
||||
unfoldShow ? '274px' : '0px'
|
||||
} - 58px - 34px)`"
|
||||
@row-click="handleSelectionChange"
|
||||
} - 58px - 20px)`"
|
||||
:key="itemKey"
|
||||
>
|
||||
<el-table-column
|
||||
@ -141,7 +140,15 @@
|
||||
align="center"
|
||||
label="姓名"
|
||||
show-overflow-tooltip
|
||||
></el-table-column>
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span
|
||||
style="cursor: pointer"
|
||||
@click="handleSelectionChange(scope.row)"
|
||||
>{{ scope.row.workerName }}</span
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
fixed
|
||||
prop="enterpriseName"
|
||||
@ -242,9 +249,9 @@
|
||||
label-width="100px"
|
||||
class="exportSettingInfo"
|
||||
>
|
||||
<el-form-item label="选择日期" prop="value1">
|
||||
<el-form-item label="选择日期" prop="startDate">
|
||||
<el-date-picker
|
||||
v-model="exportSettingInfo.value1"
|
||||
v-model="exportSettingInfo.startDate"
|
||||
type="daterange"
|
||||
value-format="yyyy-MM-dd"
|
||||
range-separator="至"
|
||||
@ -253,8 +260,8 @@
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="导出纬度" prop="radio1">
|
||||
<el-radio-group v-model="exportSettingInfo.radio1">
|
||||
<el-form-item label="导出维度" prop="groupByType">
|
||||
<el-radio-group v-model="exportSettingInfo.groupByType">
|
||||
<el-radio :label="1">按项目</el-radio>
|
||||
<el-radio :label="2">按参建单位</el-radio>
|
||||
<el-radio :label="3">按班组/部门</el-radio>
|
||||
@ -262,42 +269,46 @@
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="exportSettingInfo.radio1 == 1"
|
||||
v-if="
|
||||
exportSettingInfo.groupByType == 1 ||
|
||||
exportSettingInfo.groupByType == 3
|
||||
"
|
||||
label="展示类型"
|
||||
prop="ocrType"
|
||||
prop="downloadType"
|
||||
>
|
||||
<el-select
|
||||
v-model="exportSettingInfo.ocrType"
|
||||
v-model="exportSettingInfo.downloadType"
|
||||
placeholder="请选择"
|
||||
filterable
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in videoTypeList"
|
||||
v-for="(item, index) in downloadTypeList"
|
||||
:key="item.id"
|
||||
:label="item.title"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<template v-else-if="exportSettingInfo.radio1 == 2">
|
||||
<el-form-item label="参建单位" prop="ocrType">
|
||||
<template v-else-if="exportSettingInfo.groupByType == 2">
|
||||
<el-form-item label="参建单位" prop="enterpriseId">
|
||||
<el-select
|
||||
v-model="exportSettingInfo.ocrType"
|
||||
placeholder="请选择"
|
||||
filterable
|
||||
:clearable="true"
|
||||
v-model="exportSettingInfo.enterpriseId"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in videoTypeList"
|
||||
:key="item.id"
|
||||
:label="item.title"
|
||||
:label="item.enterpriseName"
|
||||
:value="item.id"
|
||||
v-for="item in enterpriseListData"
|
||||
:key="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="有效工时" prop="ocrType">
|
||||
<el-form-item label="有效工时" prop="hourValBegin">
|
||||
<el-input-number
|
||||
:controls="false"
|
||||
v-model="exportSettingInfo.ocrType"
|
||||
v-model="exportSettingInfo.hourValBegin"
|
||||
controls-position="right"
|
||||
:min="0"
|
||||
></el-input-number>
|
||||
@ -333,10 +344,9 @@ import EnterpriseTreeLeft from "./enterpriseTreeLeft.vue";
|
||||
import CourseWriter from "./courseWriter.vue";
|
||||
import DayAttendanceReportDetail from "./dayAttendanceReportDetail.vue";
|
||||
import {
|
||||
getWorkerDailyAttendancePageByDateApi,
|
||||
getCountWorkerDailyAttendancesStaticsByDateApi,
|
||||
getCountWorkerDailyAttendanceByDateApi,
|
||||
getEnterpriseInfoList,
|
||||
} from "@/assets/js/api/laborPerson";
|
||||
import { getCountWorkerDailyAttendanceByDateApi } from "@/assets/js/api/laborPerson";
|
||||
import {
|
||||
getViewDayAttendancePageApi,
|
||||
getCountDailyAttendanceByDateRangeApi,
|
||||
@ -406,11 +416,68 @@ export default {
|
||||
// 导出设置
|
||||
exportSettingDialog: false,
|
||||
exportSettingInfo: {
|
||||
radio1: 1,
|
||||
value1: [],
|
||||
groupByType: 1,
|
||||
startDate: [],
|
||||
downloadType: "",
|
||||
enterpriseId: "",
|
||||
hourValBegin: "",
|
||||
},
|
||||
exportSettingInfoRules: {},
|
||||
videoTypeList: [],
|
||||
exportSettingInfoRules: {
|
||||
startDate: [
|
||||
{
|
||||
required: true,
|
||||
message: "请选择日期",
|
||||
trigger: "change",
|
||||
},
|
||||
],
|
||||
groupByType: [
|
||||
{
|
||||
required: true,
|
||||
message: "请选择导出维度",
|
||||
trigger: "change",
|
||||
},
|
||||
],
|
||||
downloadType: [
|
||||
{
|
||||
required: true,
|
||||
message: "请选择展示类型",
|
||||
trigger: "change",
|
||||
},
|
||||
],
|
||||
enterpriseId: [
|
||||
{
|
||||
required: true,
|
||||
message: "请选择参建单位",
|
||||
trigger: "change",
|
||||
},
|
||||
],
|
||||
hourValBegin: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入有效工时",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
},
|
||||
downloadTypeList: [
|
||||
{
|
||||
id: 1,
|
||||
title: "每日明细(上下午打卡)",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
title: "进出场打卡",
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
title: "每日工时",
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
title: "每日明细",
|
||||
},
|
||||
],
|
||||
enterpriseListData: [],
|
||||
showTime: [],
|
||||
itemKey: "",
|
||||
unfoldShow: true,
|
||||
@ -420,9 +487,19 @@ export default {
|
||||
},
|
||||
created() {
|
||||
this.projectSn = this.$store.state.projectSn;
|
||||
this.getCompanyList();
|
||||
},
|
||||
mounted() {},
|
||||
methods: {
|
||||
//获取所属 企业下拉
|
||||
getCompanyList() {
|
||||
let data = {
|
||||
projectSn: this.projectSn,
|
||||
};
|
||||
getEnterpriseInfoList(data).then((res) => {
|
||||
this.enterpriseListData = res.result;
|
||||
});
|
||||
},
|
||||
handleTimeChange(diffTime, type) {
|
||||
return {
|
||||
onPick: (pick) => {
|
||||
@ -482,7 +559,7 @@ export default {
|
||||
...data,
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
this.countWorkerDailyList= res.result;
|
||||
this.countWorkerDailyList = res.result;
|
||||
this.initRiskTrendLineCharts();
|
||||
}
|
||||
});
|
||||
@ -557,7 +634,10 @@ export default {
|
||||
]),
|
||||
},
|
||||
data: result.map(
|
||||
(item) => (this.queryParams.isType == 1 ? item.hourValTotal : item.dayValTotal) || 0
|
||||
(item) =>
|
||||
(this.queryParams.isType == 1
|
||||
? item.hourValTotal
|
||||
: item.dayValTotal) || 0
|
||||
),
|
||||
},
|
||||
],
|
||||
@ -593,13 +673,60 @@ export default {
|
||||
this.myChart.resize();
|
||||
});
|
||||
},
|
||||
onSumbit() {},
|
||||
onSumbit() {
|
||||
this.$refs.exportSettingInfo.validate((valid) => {
|
||||
if (valid) {
|
||||
const requestData = {
|
||||
...this.exportSettingInfo,
|
||||
startDate: this.exportSettingInfo.startDate[0],
|
||||
endDate: this.exportSettingInfo.startDate[1],
|
||||
projectSn: this.projectSn,
|
||||
}
|
||||
fetch(this.$http.defaults.baseURL + 'xmgl/workerDailyAttendanceStatisticsV2/exportWorkerDailyAttendancesStaticsByMonthXls', {
|
||||
method: "post",
|
||||
headers: {
|
||||
Authorization: this.$store.state.userInfo.token,
|
||||
"Content-Type": "application/json", // 设置请求头的内容类型为JSON
|
||||
},
|
||||
body: JSON.stringify(requestData),
|
||||
})
|
||||
.then((response) => {
|
||||
// 处理响应
|
||||
if (!response.ok) {
|
||||
throw new Error("导出失败");
|
||||
}
|
||||
return response.blob();
|
||||
})
|
||||
.then((blob) => {
|
||||
console.log("导出成功");
|
||||
// 创建一个下载链接
|
||||
const url = window.URL.createObjectURL(blob);
|
||||
// 创建一个<a>元素
|
||||
const link = document.createElement("a");
|
||||
link.href = url;
|
||||
link.download = '考勤月报.xlsx'; // 指定下载文件的文件名
|
||||
// 模拟点击下载链接
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
// 释放URL对象
|
||||
window.URL.revokeObjectURL(url);
|
||||
// 处理导出的文件
|
||||
// 这里可以使用blob对象来获取导出的文件内容或者将其保存到本地
|
||||
this.exportSettingDialog = false; // 关闭对话框
|
||||
})
|
||||
.catch((error) => {
|
||||
// 处理错误
|
||||
console.error(error);
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
// 导出设置
|
||||
handleExportSetting() {
|
||||
this.exportSettingDialog = true;
|
||||
},
|
||||
handleSelectionChange(row) {
|
||||
return;
|
||||
this.multipleSelection = row;
|
||||
this.safetyRiskDetailShow = 1;
|
||||
},
|
||||
@ -749,7 +876,7 @@ export default {
|
||||
bottom: 0 !important;
|
||||
}
|
||||
/deep/ .el-table__fixed::before {
|
||||
background-color: transparent;
|
||||
background-color: transparent;
|
||||
}
|
||||
/deep/ .el-dialog {
|
||||
margin-top: 0 !important;
|
||||
|
||||
@ -63,7 +63,7 @@
|
||||
<div class="table-header_left">
|
||||
统计列表
|
||||
<span
|
||||
>(当天工附/工口无法计算出最终的,由第二天00:00G计算显示)</span
|
||||
>(当天工时/工日无法计算出最终值, 由第二天00:00后计算显示)</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
@ -113,8 +113,7 @@
|
||||
class="tables"
|
||||
:height="`calc(100% - 64px - ${
|
||||
unfoldShow ? '274px' : '0px'
|
||||
} - 58px - 34px)`"
|
||||
@row-click="handleSelectionChange"
|
||||
} - 58px - 20px)`"
|
||||
:key="itemKey"
|
||||
>
|
||||
<el-table-column
|
||||
@ -139,7 +138,15 @@
|
||||
align="center"
|
||||
label="姓名"
|
||||
show-overflow-tooltip
|
||||
></el-table-column>
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span
|
||||
style="cursor: pointer"
|
||||
@click="handleSelectionChange(scope.row)"
|
||||
>{{ scope.row.workerName }}</span
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="createTime"
|
||||
align="center"
|
||||
@ -189,7 +196,9 @@
|
||||
<el-image
|
||||
style="width: 30px; height: 34px"
|
||||
:src="$store.state.FILEURL + scope.row.imageUrl"
|
||||
:preview-src-list="[$store.state.FILEURL + scope.row.imageUrl]"
|
||||
:preview-src-list="[
|
||||
$store.state.FILEURL + scope.row.imageUrl,
|
||||
]"
|
||||
>
|
||||
</el-image>
|
||||
</template>
|
||||
@ -568,7 +577,6 @@ export default {
|
||||
this.exportSettingDialog = true;
|
||||
},
|
||||
handleSelectionChange(row) {
|
||||
return;
|
||||
this.multipleSelection = row;
|
||||
this.safetyRiskDetailShow = 1;
|
||||
},
|
||||
|
||||
@ -293,6 +293,9 @@ export default {
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
/deep/ .el-collapse {
|
||||
.el-collapse-item__arrow {
|
||||
margin-right: 0;
|
||||
}
|
||||
.collapse-box1 {
|
||||
display: flex;
|
||||
font-size: 14px;
|
||||
|
||||
@ -737,6 +737,24 @@
|
||||
<span v-else>{{ workerInfo.workernaturename }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="考勤组:" prop="attendanceGroupV2Id">
|
||||
<el-select
|
||||
v-if="detailInfoStatus"
|
||||
v-model="workerInfo.attendanceGroupV2Id"
|
||||
:placeholder="$t('message.laborMange.pleaseChoose')"
|
||||
style="width: 80%"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in workerAttendanceGroupList"
|
||||
:key="index"
|
||||
:label="item.groupName"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
<span v-else>{{ workerInfo.attendanceGroupV2Name }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12" v-if="workerInfo.personType == 1">
|
||||
@ -2464,6 +2482,7 @@ import {
|
||||
checkfaceHikvisionApi,
|
||||
getProjectUfaceConfigInfo,
|
||||
getWorkerAttendanceRuleV2ChangeLogListApi,
|
||||
getWorkerAttendanceGroupV2ListApi,
|
||||
} from "@/assets/js/api/laborPerson.js";
|
||||
import { getDictionaryItemApi } from "@/assets/js/api/companyDiagram.js";
|
||||
import { getProjectConfigListApi } from "@/assets/js/api/project.js";
|
||||
@ -2614,6 +2633,8 @@ export default {
|
||||
],
|
||||
},
|
||||
isIscDevice: false, //是否是海康门禁isc设备
|
||||
workerNatureList: [],
|
||||
workerAttendanceGroupList: [],
|
||||
};
|
||||
},
|
||||
|
||||
@ -2631,6 +2652,8 @@ export default {
|
||||
this.getAttendRuleList();
|
||||
this.getProjectConfig();
|
||||
this.getConfig(); //判断是否为海康设备
|
||||
this.getWorkerAttendanceGroupV2List();
|
||||
this.getWorkerNatureList();
|
||||
},
|
||||
mounted() {
|
||||
new QRCode("workerQRcode", {
|
||||
@ -2643,6 +2666,16 @@ export default {
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
getWorkerAttendanceGroupV2List() {
|
||||
getWorkerAttendanceGroupV2ListApi({
|
||||
projectSn: this.$store.state.projectSn,
|
||||
// ruleIdIsNullOrRuleId: 1,
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
this.workerAttendanceGroupList = res.result;
|
||||
}
|
||||
});
|
||||
},
|
||||
// 获取人员性质下拉
|
||||
async getWorkerNatureList() {
|
||||
const res = await getDictionaryItemApi({
|
||||
|
||||
@ -125,14 +125,15 @@
|
||||
{{ $t("message.laborMange.crewInfo") }}
|
||||
</div>
|
||||
<div class="right-header_box">
|
||||
<div class="mr-20">
|
||||
<div class="header_box1">
|
||||
<span>包含下级组织</span>
|
||||
<el-checkbox
|
||||
@change="handleQueryChange"
|
||||
v-model="specialWorkerInfo.includingSubordinatesChecked"
|
||||
>是否包含下级</el-checkbox
|
||||
></el-checkbox
|
||||
>
|
||||
</div>
|
||||
<div class="mr-20 header_box">
|
||||
<div class="header_box">
|
||||
<span>特殊工种</span>
|
||||
<el-select
|
||||
size="small"
|
||||
@ -140,6 +141,7 @@
|
||||
:placeholder="$t('message.laborMange.pleaseChoose')"
|
||||
@change="handleQueryChange"
|
||||
>
|
||||
<el-option label="全部" value=""></el-option>
|
||||
<el-option
|
||||
v-for="item in specialWorkerTypeList"
|
||||
:key="item.id"
|
||||
@ -149,9 +151,9 @@
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="team_number flex2">
|
||||
{{ $t("message.laborMange.section") }}:
|
||||
{{ $t("message.laborMange.team") }}:
|
||||
<span class="number" style="margin-right: 50px">{{
|
||||
teamListData.totalDepartmentNum
|
||||
teamListData.totalTeamNum
|
||||
}}</span>
|
||||
{{ $t("message.laborMange.crew") }}:
|
||||
<span class="number">{{ teamListData.totalWorkerNum }}</span>
|
||||
@ -481,7 +483,7 @@
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item> -->
|
||||
<el-form-item>
|
||||
<el-form-item class="el-form_item">
|
||||
<!-- 查询 -->
|
||||
<el-button
|
||||
v-permission="{
|
||||
@ -4412,16 +4414,25 @@ export default {
|
||||
@import "./laborPersonCommon.less";
|
||||
.right-header_box {
|
||||
display: flex;
|
||||
.mr-20 {
|
||||
margin-right: 20px;
|
||||
.header_box1 {
|
||||
font-size: 14px;
|
||||
color: #272D45;
|
||||
margin-right: 50px;
|
||||
> span {
|
||||
margin-right: 13px;
|
||||
}
|
||||
}
|
||||
.header_box {
|
||||
display: flex;
|
||||
color: #262d47;
|
||||
color: #272D45;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
margin-right: 30px;
|
||||
.el-select {
|
||||
width: 150px;
|
||||
}
|
||||
> span {
|
||||
margin-right: 12px;
|
||||
margin-right: 13px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4448,13 +4459,14 @@ export default {
|
||||
.left_list {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
height: calc(100% - 61px);
|
||||
height: calc(100% - 60px);
|
||||
|
||||
.list_content {
|
||||
height: calc(100% - 114px);
|
||||
height: calc(100% - 106px);
|
||||
overflow-y: hidden;
|
||||
margin: 0 13px 60px;
|
||||
background-color: #f7f7f7;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.list_content:hover {
|
||||
@ -4487,11 +4499,11 @@ export default {
|
||||
|
||||
.addFirm {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
bottom: 13px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 45px;
|
||||
line-height: 45px;
|
||||
// height: 45px;
|
||||
// line-height: 45px;
|
||||
color: rgba(81, 129, 246, 1);
|
||||
font-size: 15px;
|
||||
text-align: center;
|
||||
@ -4533,7 +4545,7 @@ export default {
|
||||
}
|
||||
|
||||
.right2 {
|
||||
margin-left: 11px !important;
|
||||
margin-left: 16px !important;
|
||||
}
|
||||
|
||||
.fixed_title {
|
||||
@ -4581,6 +4593,13 @@ export default {
|
||||
width: 90%;
|
||||
padding-right: 10px;
|
||||
box-sizing: border-box;
|
||||
> span {
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
/deep/ .el-tree-node__content {
|
||||
|
||||
@ -100,14 +100,14 @@
|
||||
{{ $t("message.laborMange.crewInfo") }}
|
||||
</div>
|
||||
<div class="right-header_box">
|
||||
<div class="mr-20">
|
||||
<div class="header_box1">
|
||||
<span>包含下级组织</span>
|
||||
<el-checkbox
|
||||
@change="handleQueryChange"
|
||||
v-model="specialWorkerInfo.includingSubordinatesChecked"
|
||||
>是否包含下级</el-checkbox
|
||||
>
|
||||
></el-checkbox>
|
||||
</div>
|
||||
<div class="mr-20 header_box">
|
||||
<div class="header_box">
|
||||
<span>特殊工种</span>
|
||||
<el-select
|
||||
size="small"
|
||||
@ -443,7 +443,7 @@
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item> -->
|
||||
<el-form-item>
|
||||
<el-form-item class="el-form_item">
|
||||
<!-- 查询 -->
|
||||
<el-button
|
||||
v-permission="{
|
||||
@ -471,6 +471,7 @@
|
||||
key: 'rygl_drive',
|
||||
menuPath: '/project/labor/personManage',
|
||||
}"
|
||||
plain
|
||||
type="primary"
|
||||
@click="exportFn"
|
||||
>{{ $t("message.laborMange.export") }}</el-button
|
||||
@ -636,27 +637,37 @@
|
||||
>查看下发详情</el-button
|
||||
>
|
||||
<!-- 退场 issueTeamDialog -->
|
||||
<el-button
|
||||
<div
|
||||
v-permission="{
|
||||
key: 'rygl_exit',
|
||||
menuPath: '/project/labor/personManage',
|
||||
}"
|
||||
size="medium"
|
||||
type="text"
|
||||
class="operationText"
|
||||
class="operationText exit-icon"
|
||||
@click="workerExitBtn(scope.row, 1)"
|
||||
v-if="scope.row.inserviceType == 1"
|
||||
>{{ $t("message.laborMange.bowOutWith") }}</el-button
|
||||
>
|
||||
<img
|
||||
src="@/assets/images/laborManage/exit-icon.png"
|
||||
style="margin-right: 5px"
|
||||
/>
|
||||
<span>{{ $t("message.laborMange.bowOutWith") }}</span>
|
||||
</div>
|
||||
<!-- 再次进场 -->
|
||||
<el-button
|
||||
size="medium"
|
||||
type="text"
|
||||
class="operationText"
|
||||
<div
|
||||
v-permission="{
|
||||
key: 'rygl_exit',
|
||||
menuPath: '/project/labor/personManage',
|
||||
}"
|
||||
class="operationText exit-icon"
|
||||
@click="editWorkerInfo(scope.row, 2)"
|
||||
v-if="scope.row.inserviceType == 2"
|
||||
>{{ $t("message.laborMange.toPlayAgain") }}</el-button
|
||||
>
|
||||
<img
|
||||
src="@/assets/images/laborManage/exit-icon.png"
|
||||
style="margin-right: 5px;transform: rotate(180deg);"
|
||||
/>
|
||||
<span>{{ $t("message.laborMange.toPlayAgain") }}</span>
|
||||
</div>
|
||||
<!-- 删除人员 -->
|
||||
<div
|
||||
v-permission="{
|
||||
@ -5152,18 +5163,34 @@ export default {
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import "./laborPersonCommon.less";
|
||||
.exit-icon {
|
||||
margin-right: 16px !important;
|
||||
img {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
}
|
||||
.right-header_box {
|
||||
display: flex;
|
||||
.mr-20 {
|
||||
margin-right: 20px;
|
||||
.header_box1 {
|
||||
font-size: 14px;
|
||||
color: #272d45;
|
||||
margin-right: 50px;
|
||||
> span {
|
||||
margin-right: 13px;
|
||||
}
|
||||
}
|
||||
.header_box {
|
||||
display: flex;
|
||||
color: #262d47;
|
||||
color: #272d45;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
margin-right: 30px;
|
||||
.el-select {
|
||||
width: 150px;
|
||||
}
|
||||
> span {
|
||||
margin-right: 12px;
|
||||
margin-right: 13px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -5188,12 +5215,13 @@ export default {
|
||||
.left_list {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
height: calc(100% - 61px);
|
||||
height: calc(100% - 60px);
|
||||
.list_content {
|
||||
height: calc(100% - 114px);
|
||||
height: calc(100% - 106px);
|
||||
overflow-y: hidden;
|
||||
margin: 0 13px 60px;
|
||||
background-color: #f7f7f7;
|
||||
font-size: 14px;
|
||||
}
|
||||
.list_content:hover {
|
||||
overflow-y: auto;
|
||||
@ -5221,11 +5249,11 @@ export default {
|
||||
}
|
||||
.addFirm {
|
||||
position: absolute;
|
||||
bottom: 14px;
|
||||
bottom: 13px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 45px;
|
||||
line-height: 45px;
|
||||
// height: 45px;
|
||||
// line-height: 45px;
|
||||
color: rgba(81, 129, 246, 1);
|
||||
font-size: 15px;
|
||||
text-align: center;
|
||||
@ -5388,6 +5416,13 @@ export default {
|
||||
width: 90%;
|
||||
padding-right: 10px;
|
||||
box-sizing: border-box;
|
||||
> span {
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
/deep/ .el-tree-node__content {
|
||||
height: 36px;
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
display: flex;
|
||||
}
|
||||
.right2{
|
||||
margin-left: 20px;
|
||||
margin-left: 16px;
|
||||
width: calc(100% - 346px);
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
@ -45,16 +45,17 @@
|
||||
.team_addBtn{
|
||||
display: grid;
|
||||
padding: 10px 0;
|
||||
width: 70px;
|
||||
width: 86px;
|
||||
min-width: 70px;
|
||||
height: 60px;
|
||||
border-radius: 8px;
|
||||
height: 70px;
|
||||
border-radius: 3px;
|
||||
color: #3390FF;
|
||||
/deep/ i{
|
||||
font-size: 13px;
|
||||
font-size: 16px;
|
||||
}
|
||||
/deep/ span{
|
||||
opacity: 0.7;
|
||||
// opacity: 0.7;
|
||||
font-size: 12px;
|
||||
display: block;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
@ -72,16 +73,16 @@
|
||||
overflow: hidden;
|
||||
cursor: pointer;
|
||||
.list{
|
||||
width: 70px;
|
||||
height: 60px;
|
||||
margin-left: 12px;
|
||||
width: 86px;
|
||||
height: 70px;
|
||||
margin-left: 20px;
|
||||
box-sizing: border-box;
|
||||
padding: 7px 0;
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
border-radius: 3px;
|
||||
background-color: #dce0ec;
|
||||
color: #272D45;
|
||||
background-color: #F7F7F7;
|
||||
color: #1A1A1A;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
@ -98,7 +99,7 @@
|
||||
}
|
||||
}
|
||||
.checkedTeam{
|
||||
background-color: #3390FF!important;
|
||||
background-color: #5181F6!important;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
@ -158,6 +159,12 @@
|
||||
height: 79px;
|
||||
}
|
||||
}
|
||||
.el-form_item {
|
||||
margin-left: 20px;
|
||||
.el-button:not(:last-child) {
|
||||
margin-right: 20px;
|
||||
}
|
||||
}
|
||||
.table-header_left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@ -43,7 +43,8 @@
|
||||
</el-table-column>
|
||||
<el-table-column width="200">
|
||||
<template slot-scope="scope">
|
||||
<div class="tableBtns" v-if="scope.row.typeName != '特殊工种'">
|
||||
<!-- v-if="scope.row.typeName != '特殊工种'" -->
|
||||
<div class="tableBtns">
|
||||
<!-- 编辑 -->
|
||||
<div
|
||||
v-permission="{
|
||||
|
||||
@ -213,7 +213,7 @@
|
||||
label="排查频次"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.checkNum ? scope.row.checkNum : "--" }}
|
||||
{{ scope.row.checkNum ? scope.row.checkNum : "--" }}次/{{ scope.row.checkPeriod ? checkPeriodList[scope.row.checkPeriod - 1].checkPeriodName : '--' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column show-overflow-tooltip align="center" prop="remark" label="备注">
|
||||
|
||||
@ -319,6 +319,9 @@ export default {
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
/deep/ .el-collapse {
|
||||
.el-collapse-item__arrow {
|
||||
margin-right: 0;
|
||||
}
|
||||
.collapse-box1 {
|
||||
display: flex;
|
||||
font-size: 13px;
|
||||
|
||||
@ -4,6 +4,24 @@
|
||||
<vue-scroll style="height: 100%; width: 100%" class="scroll">
|
||||
<div class="flex content">
|
||||
<div class="left">
|
||||
<div class="box-type">
|
||||
<span>工程类别</span>
|
||||
<el-select
|
||||
@change="getDangerTypeRecordList"
|
||||
v-model="projectClassify"
|
||||
clearable
|
||||
size="small"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option label="全部" value=""></el-option>
|
||||
<el-option
|
||||
v-for="item in riskItemList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.data"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<el-input
|
||||
placeholder="请输入检查项名称"
|
||||
prefix-icon="el-icon-search"
|
||||
@ -13,7 +31,7 @@
|
||||
style="margin-bottom: 15px"
|
||||
>
|
||||
</el-input>
|
||||
<vue-scroll style="height: 87%; width: 100%; font-size: 14px">
|
||||
<vue-scroll style="height: 79%; width: 100%; font-size: 14px">
|
||||
<el-tree
|
||||
class="filter-tree"
|
||||
:highlight-current="true"
|
||||
@ -28,7 +46,7 @@
|
||||
<span class="custom-tree-node flex3" slot-scope="{ node, data }">
|
||||
<span v-if="node.label.length <= 10">
|
||||
<span class="stop" v-if="data.recordStatus == 1"
|
||||
>【{{ $t('message.quality.stop') }}】</span
|
||||
>【{{ $t("message.quality.stop") }}】</span
|
||||
>{{ node.label }}</span
|
||||
>
|
||||
<el-tooltip
|
||||
@ -40,7 +58,7 @@
|
||||
>
|
||||
<span class="ellipsis">
|
||||
<span class="stop" v-if="data.recordStatus == 1"
|
||||
>【{{ $t('message.quality.stop') }}】</span
|
||||
>【{{ $t("message.quality.stop") }}】</span
|
||||
>{{ node.label }}</span
|
||||
>
|
||||
</el-tooltip>
|
||||
@ -49,32 +67,38 @@
|
||||
type="text"
|
||||
size="mini"
|
||||
@click.stop="() => singleEditState(node, data, 0)"
|
||||
v-permission="{key: 'criterion_stop_open', menuPath: '/project/safeSame/criterion'}"
|
||||
v-permission="{
|
||||
key: 'criterion_stop_open',
|
||||
menuPath: '/project/safeSame/criterion',
|
||||
}"
|
||||
>
|
||||
{{ $t('message.quality.click')
|
||||
}}{{ $t('message.quality.startUsing') }}
|
||||
{{ $t("message.quality.click")
|
||||
}}{{ $t("message.quality.startUsing") }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="data.recordStatus != 1"
|
||||
v-if="data.recordStatus != 1"
|
||||
type="text"
|
||||
size="mini"
|
||||
@click.stop="() => singleEditState(node, data, 1)"
|
||||
v-permission="{key: 'criterion_stop_open', menuPath: '/project/safeSame/criterion'}"
|
||||
v-permission="{
|
||||
key: 'criterion_stop_open',
|
||||
menuPath: '/project/safeSame/criterion',
|
||||
}"
|
||||
>
|
||||
{{ $t('message.quality.click')
|
||||
}}{{ $t('message.quality.forbidden') }}
|
||||
{{ $t("message.quality.click")
|
||||
}}{{ $t("message.quality.forbidden") }}
|
||||
</el-button>
|
||||
</span>
|
||||
</el-tree>
|
||||
</vue-scroll>
|
||||
<div class="btn_wrap">
|
||||
<el-button type="primary" size="small" @click="setCheckedNodes"
|
||||
>{{ $t('message.quality.add')
|
||||
}}{{ $t('message.quality.unfold') }}</el-button
|
||||
>{{ $t("message.quality.add")
|
||||
}}{{ $t("message.quality.unfold") }}</el-button
|
||||
>
|
||||
<el-button type="primary" size="small" @click="setCheckedKeys"
|
||||
>{{ $t('message.quality.add')
|
||||
}}{{ $t('message.quality.close') }}</el-button
|
||||
>{{ $t("message.quality.add")
|
||||
}}{{ $t("message.quality.close") }}</el-button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
@ -120,9 +144,15 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button v-permission="{key: 'criterion_query', menuPath: '/project/safeSame/criterion'}" type="primary" @click="onSubmit">{{
|
||||
$t('message.quality.inquire')
|
||||
}}</el-button>
|
||||
<el-button
|
||||
v-permission="{
|
||||
key: 'criterion_query',
|
||||
menuPath: '/project/safeSame/criterion',
|
||||
}"
|
||||
type="primary"
|
||||
@click="onSubmit"
|
||||
>{{ $t("message.quality.inquire") }}</el-button
|
||||
>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
@ -137,13 +167,14 @@
|
||||
>
|
||||
<el-table-column type="selection" width="55" align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="项目类型"
|
||||
align="center"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.projectType ? projectTypeList[scope.row.projectType - 1].title : '--'}}</span>
|
||||
</template>
|
||||
<el-table-column label="项目类型" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{
|
||||
scope.row.projectType
|
||||
? projectTypeList[scope.row.projectType - 1].title
|
||||
: "--"
|
||||
}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
:label="$t('message.quality.problemLevel')"
|
||||
@ -185,20 +216,15 @@
|
||||
>
|
||||
<template slot-scope="scope">{{
|
||||
scope.row.recordStatus == 0
|
||||
? $t('message.quality.startUsing')
|
||||
: $t('message.quality.forbidden')
|
||||
? $t("message.quality.startUsing")
|
||||
: $t("message.quality.forbidden")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="deductScore"
|
||||
label="扣分"
|
||||
>
|
||||
<el-table-column align="center" prop="deductScore" label="扣分">
|
||||
<template slot-scope="scope">{{
|
||||
scope.row.deductScore || 0
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
<!-- <div class="tab_btn_wrap" v-if="tableData.length > 0">
|
||||
<el-button
|
||||
@ -232,106 +258,124 @@ import {
|
||||
getSafeDangerTypeRecordApi,
|
||||
getSafeDangerItemRecordApi,
|
||||
editSafeStateApi,
|
||||
singleSafeEditStateApi
|
||||
} from '@/assets/js/api/quality'
|
||||
singleSafeEditStateApi,
|
||||
} from "@/assets/js/api/quality";
|
||||
import { getDictionaryItemApi } from "@/assets/js/api/companyDiagram.js";
|
||||
export default {
|
||||
name: 'qualityProblemBank',
|
||||
name: "qualityProblemBank",
|
||||
data() {
|
||||
return {
|
||||
dangerName: '',
|
||||
dangerName: "",
|
||||
defaultProps: {
|
||||
children: 'children',
|
||||
label: 'dangerName',
|
||||
id: 'id'
|
||||
children: "children",
|
||||
label: "dangerName",
|
||||
id: "id",
|
||||
},
|
||||
projectSn: '',
|
||||
projectSn: "",
|
||||
checkedNodeData: {},
|
||||
showExpand: true,
|
||||
listData: [],
|
||||
formInline: {
|
||||
content: '',
|
||||
recordStatus: 0
|
||||
content: "",
|
||||
recordStatus: 0,
|
||||
},
|
||||
tableData: [],
|
||||
multipleSelection: [],
|
||||
checkboxId: [],
|
||||
showBatch: true,
|
||||
projectTypeList: [{
|
||||
id: 1,
|
||||
title: "保证项目"
|
||||
},{
|
||||
id: 2,
|
||||
title: "一般项目"
|
||||
}]
|
||||
}
|
||||
projectTypeList: [
|
||||
{
|
||||
id: 1,
|
||||
title: "保证项目",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
title: "一般项目",
|
||||
},
|
||||
],
|
||||
riskItemList: [],
|
||||
projectClassify: "",
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
dangerName(val) {
|
||||
this.$refs.tree.filter(val)
|
||||
}
|
||||
this.$refs.tree.filter(val);
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.projectSn = this.$store.state.projectSn
|
||||
this.getDangerTypeRecordList()
|
||||
this.projectSn = this.$store.state.projectSn;
|
||||
this.getDictionaryItem();
|
||||
this.getDangerTypeRecordList();
|
||||
},
|
||||
methods: {
|
||||
getDictionaryItem() {
|
||||
getDictionaryItemApi({
|
||||
dictionaryEncoding: "risk_list_project_type",
|
||||
projectSn: this.projectSn,
|
||||
}).then((res) => {
|
||||
if (res.result.length > 0) {
|
||||
this.riskItemList = res.result;
|
||||
}
|
||||
});
|
||||
},
|
||||
//获取左侧---列表信息
|
||||
getDangerTypeRecordList() {
|
||||
console.log(22)
|
||||
console.log(22);
|
||||
let data = {
|
||||
projectSn: this.projectSn,
|
||||
dangerName: this.dangerName
|
||||
}
|
||||
dangerName: this.dangerName,
|
||||
projectClassify: this.projectClassify,
|
||||
};
|
||||
getSafeDangerTypeRecordApi(data).then((res) => {
|
||||
if (res.code == 200) {
|
||||
if (res.result.length > 0) {
|
||||
this.listData = res.result
|
||||
this.listData = res.result;
|
||||
} else {
|
||||
this.listData = []
|
||||
this.listData = [];
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
//左边节点 输入筛选
|
||||
filterNode(value, data) {
|
||||
if (!value) return true
|
||||
return data.dangerName.indexOf(value) !== -1
|
||||
if (!value) return true;
|
||||
return data.dangerName.indexOf(value) !== -1;
|
||||
},
|
||||
//左侧 --启用 禁用 按钮
|
||||
singleEditState(node, data, type) {
|
||||
let newData = {
|
||||
projectSn: this.projectSn,
|
||||
recordStatus: type,
|
||||
id: data.id
|
||||
}
|
||||
id: data.id,
|
||||
};
|
||||
singleSafeEditStateApi(newData).then((res) => {
|
||||
console.log(res)
|
||||
console.log(res);
|
||||
if (res.code == 200) {
|
||||
this.$message.success(res.message)
|
||||
this.getDangerTypeRecordList()
|
||||
this.getDangerItemRecord()
|
||||
this.$message.success(res.message);
|
||||
this.getDangerTypeRecordList();
|
||||
this.getDangerItemRecord();
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
//获取选中的 节点
|
||||
getCheckedNode(data) {
|
||||
this.checkedNodeData = data
|
||||
this.getDangerItemRecord()
|
||||
this.checkedNodeData = data;
|
||||
this.getDangerItemRecord();
|
||||
},
|
||||
|
||||
//全部关闭
|
||||
setCheckedKeys() {
|
||||
this.defaultExpand = false
|
||||
this.defaultExpand = false;
|
||||
for (var i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) {
|
||||
this.$refs.tree.store._getAllNodes()[i].expanded = this.defaultExpand
|
||||
this.$refs.tree.store._getAllNodes()[i].expanded = this.defaultExpand;
|
||||
}
|
||||
},
|
||||
//全部展开
|
||||
setCheckedNodes() {
|
||||
this.defaultExpand = true //展开所有节点
|
||||
this.defaultExpand = true; //展开所有节点
|
||||
for (var i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) {
|
||||
this.$refs.tree.store._getAllNodes()[i].expanded = this.defaultExpand
|
||||
this.$refs.tree.store._getAllNodes()[i].expanded = this.defaultExpand;
|
||||
}
|
||||
},
|
||||
|
||||
@ -341,54 +385,61 @@ export default {
|
||||
projectSn: this.projectSn,
|
||||
dangerTypeId: this.checkedNodeData.id,
|
||||
content: this.formInline.content,
|
||||
recordStatus: this.formInline.recordStatus
|
||||
}
|
||||
recordStatus: this.formInline.recordStatus,
|
||||
};
|
||||
getSafeDangerItemRecordApi(data).then((res) => {
|
||||
if (res.code == 200) {
|
||||
this.tableData = res.result
|
||||
this.tableData = res.result;
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
//列表查询--右侧
|
||||
onSubmit() {
|
||||
this.getDangerItemRecord()
|
||||
this.getDangerItemRecord();
|
||||
},
|
||||
// 批量启用 批量停用
|
||||
editState(type) {
|
||||
let data = {
|
||||
projectSn: this.projectSn,
|
||||
recordStatus: type,
|
||||
idStr: this.checkboxId.join(',')
|
||||
}
|
||||
idStr: this.checkboxId.join(","),
|
||||
};
|
||||
editSafeStateApi(data).then((res) => {
|
||||
console.log(data)
|
||||
console.log(data);
|
||||
if (res.code == 200) {
|
||||
this.$message.success(res.message)
|
||||
this.getDangerItemRecord()
|
||||
this.getDangerTypeRecordList()
|
||||
this.$message.success(res.message);
|
||||
this.getDangerItemRecord();
|
||||
this.getDangerTypeRecordList();
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
//表格多选
|
||||
handleSelectionChange(value) {
|
||||
if (value.length > 0) {
|
||||
let arr = []
|
||||
let arr = [];
|
||||
for (let i = 0; i < value.length; i++) {
|
||||
arr.push(value[i].id)
|
||||
arr.push(value[i].id);
|
||||
}
|
||||
this.checkboxId = arr
|
||||
this.showBatch = false
|
||||
this.checkboxId = arr;
|
||||
this.showBatch = false;
|
||||
} else {
|
||||
this.checkboxId = value
|
||||
this.showBatch = true
|
||||
this.checkboxId = value;
|
||||
this.showBatch = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.box-type {
|
||||
margin-bottom: 13px;
|
||||
> span {
|
||||
margin-right: 10px;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
.flex {
|
||||
display: flex;
|
||||
}
|
||||
@ -459,8 +510,7 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.el-button--text{
|
||||
.el-button--text {
|
||||
padding-right: 10px;
|
||||
}
|
||||
</style>
|
||||
Loading…
x
Reference in New Issue
Block a user