fix: BUG修改

This commit is contained in:
kun 2023-06-01 19:36:04 +08:00
parent 215a6ac3d5
commit ad9957a2d0
7 changed files with 266 additions and 144 deletions

View File

@ -344,3 +344,25 @@ export const memberInfo = (params: any) => {
export const updateMember = (params: any) => {
return http.post(BASEURL + `/project/workerInfo/edit`, params);
};
// 考勤设备管理分页列表
export const equipmentList = (params: any) => {
return http.post(BASEURL + `/project/attendanceDev/page`, params);
};
// 考勤设备管理新增
export const addEquipment = (params: any) => {
return http.post(BASEURL + `/project/attendanceDev/add`, params);
};
// 考勤设备管理编辑
export const updateEquipment = (params: any) => {
return http.post(BASEURL + `/project/attendanceDev/edit`, params);
};
// 考勤设备管理删除
export const deleteEquipment = (params: { id: string }) => {
return http.post(BASEURL + `/project/attendanceDev/delete`, params);
};
// 考勤统计分页列表
export const statisticsList = (params: any) => {
return http.post(BASEURL + `/project/workerInfo/attendStat`, params);
};

View File

@ -1,6 +1,6 @@
<template>
<div class="allEngList">
<el-icon><CaretBottom /> </el-icon>
<el-icon><CaretLeft /> </el-icon>
<span></span>
<span></span>
<span></span>

View File

@ -221,19 +221,22 @@
font-family: siyuan_Medium;
}
.allEngList {
width: 176px;
height: 20px;
width: 20px;
height: 176px;
position: fixed;
right: -78px;
right: 0;
top: 50%;
text-align: center;
cursor: pointer;
z-index: 224;
// display: flex;
transform: rotate(90deg);
color: #fff;
background: rgba(0, 0, 0, 0.2);
font-size: 12px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
span {
margin: 0px 2px;
}

View File

@ -2,7 +2,7 @@
<div class="table-box">
<ProTable
ref="proTable"
title="参建单位列表"
title="考勤设备列表"
:columns="columns"
:requestApi="getTableList"
:dataCallback="dataCallback"
@ -10,16 +10,16 @@
:pagination="true"
background
:isShowSearch="false"
:initParam="initParam"
:onReset="true"
>
<template #formButton="scope">
<el-button class="addButtonStyle" @click="handleAddItem(1)">新增</el-button>
</template>
<template #position="{ row }">
<span>{{ "经度:" + row.longitude + "" + "维度:" + row.latitude }}</span>
</template>
<template #operation="{ row }">
<el-button type="primary" link @click="handleEditItem(row)">
<img src="@/assets/images/tableIcon/配置权限.png" alt="" class="configureIcon" />
<span>配置权限</span>
</el-button>
<el-button type="primary" link @click="handleAddItem(2, row)">
<img src="@/assets/images/tableIcon/updateIcon.png" alt="" class="configureIcon" />
<span>编辑</span>
@ -43,7 +43,12 @@
</div>
</template>
</el-drawer>
<engineeringDrawer v-model="engVisable" ref="engDrawer" :request="getengineering">
<template #default="{ data }">
<span style="margin-left: 10px" @click="onUpdate(data)">{{ data.engineeringName }}</span>
</template>
</engineeringDrawer>
<allEngineering @click="engVisable = true" />
<DialogForm
:title="title"
:formConfig="formConfig"
@ -53,7 +58,13 @@
width="700px"
@confirm="saveItem"
>
<template #mapIcon>
<div class="diaMapIcon" @click="openMap">
<el-icon style="font-size: 19px"><Location /></el-icon>
</div>
</template>
</DialogForm>
<AMap v-model="isOpen" @get-address="getAddress" :default-address="address" />
</div>
</template>
@ -64,20 +75,15 @@ import { useRouter } from "vue-router";
import { ColumnProps } from "@/components/ProTable/interface";
import { useHandleData } from "@/hooks/useHandleData";
import ProTable from "@/components/ProTable/index.vue";
import { getRelevanceList } from "@/api/modules/common";
import { jxj_User } from "@/api/types";
import engineeringDrawer from "@/components/engineeringDrawer/index.vue";
import allEngineering from "@/components/allEngineering/index.vue";
import TreeFilter from "@/components/TreeFilter/index.vue";
import {
getRoleList,
addRole,
editRole,
deleteRole,
editRolePermissions,
getSystemRole,
getTreemRoleList,
getTreeByIdList
} from "@/api/modules/goverment";
import AMap from "@/components/AMap/AMap.vue";
import { editRolePermissions, getTreemRoleList, getTreeByIdList } from "@/api/modules/goverment";
import DialogForm from "@/components/DialogForm/index.vue";
// import { getProjectRecordPage } from "@/api/modules/project";
import { addEquipment, equipmentList, updateEquipment, deleteEquipment } from "@/api/modules/project";
import { Delete } from "@element-plus/icons-vue";
import { GlobalStore } from "@/stores";
@ -95,11 +101,23 @@ const store = GlobalStore();
const visible = ref(false);
const drawerVisible = ref(false);
const title = ref("");
const engVisable = ref(false);
const initParam = reactive({
solveFlag: 1,
engineeringSn: ""
});
const isOpen = ref(false);
const formData = ref({
roleName: "",
priority: 1,
state: 0,
roleDesc: ""
devName: "",
code: "",
address: "",
longitude: "",
latitude: "",
position: ""
});
const address = ref({
lng: undefined,
lat: undefined
});
// ProTable 便
const proTable = ref();
@ -110,36 +128,21 @@ const getId = ref<number | undefined>(undefined);
const columns: ColumnProps[] = [
{ type: "index", label: "序号", width: 80 },
{
prop: "roleName",
label: "单位名称",
prop: "devName",
label: "设备名称",
search: { el: "input" }
},
// prop
{ prop: "priority", label: "显示顺序" },
{ prop: "state", label: "使用状态" },
{
prop: "state",
label: "状态",
search: { el: "select" },
isShow: false,
enum: [
{ label: "启用", value: 1 },
{ label: "禁用", value: 0 }
]
prop: "code",
label: "设备编码"
},
{
prop: "createTime",
label: "创建时间",
search: {
el: "date-picker",
props: {
type: "daterange",
format: "YYYY-MM-DD",
valueFormat: "YYYY-MM-DD"
// defaultTime: defaultTime2
}
}
prop: "address",
label: "设备位置"
},
{
prop: "position",
label: "经纬度"
},
{ prop: "operation", label: "操作", fixed: "right", width: 260 }
];
@ -148,50 +151,63 @@ const columns: ColumnProps[] = [
const formConfig = {
formItemConfig: [
{
label: "角色名称",
prop: "roleName",
label: "设备名称",
prop: "devName",
type: "input"
},
{
label: "角色顺序",
prop: "priority",
type: "number"
label: "设备编码",
prop: "code",
type: "input"
},
{
label: "状态",
prop: "state",
type: "radio",
data: [
{ label: "启用", value: 1 },
{ label: "禁用", value: 0 }
]
},
{
label: "备注",
prop: "roleDesc",
label: "设置位置",
prop: "address",
type: "input",
mapIcon: true
},
{
label: "设置经纬度",
prop: "position",
type: "input",
disabled: true
// dialog
}
],
rules: {
roleName: [
devName: [
{
required: true,
message: "请输入角色名称",
message: "请输入",
trigger: "blur"
}
],
priority: [
code: [
{
required: true,
message: "请输入角色顺序",
message: "请输入",
trigger: "blur"
}
]
}
};
//
const openMap = () => {
isOpen.value = true;
};
//
const getAddress = async (e: any) => {
formData.value.address = e.address;
formData.value.longitude = e.lng;
formData.value.latitude = e.lat;
formData.value.position = "经度:" + e.lng + "" + "维度:" + e.lat;
isOpen.value = false;
ElMessage.success("获取经纬度成功");
};
const getengineering = (params: any) => {
// let newParams = JSON.parse(JSON.stringify(params));
return getRelevanceList();
};
// dataCallback list && total && pageNum && pageSize
// hooks/useTable.ts
const dataCallback = (data: any) => {
@ -247,21 +263,22 @@ const getTableList = (params: any) => {
newParams.createTime_end = newParams.createTime[1];
delete newParams.createTime;
}
return getRoleList(newParams);
return equipmentList(newParams);
};
const handleAddItem = (index: number, row: any) => {
if (index === 1) {
title.value = "新增角色";
title.value = "新增设备";
formData.value = reactive({
roleName: "",
priority: 1,
state: 1,
roleDesc: ""
devName: "",
code: "",
address: "",
position: ""
});
} else {
title.value = "编辑角色";
title.value = "编辑设备";
formData.value = reactive({ ...row });
formData.value.position = "经度:" + row.longitude + "" + "维度:" + row.latitude;
}
visible.value = true;
};
@ -283,13 +300,14 @@ const handleEditItem = async (row: any) => {
};
const saveItem = async (form: any) => {
if (form.roleId) {
form.engineeringSn = initParam.engineeringSn;
if (form.id) {
// console.log(form.dictCode);
const res = await editRole(form);
const res = await updateEquipment(form);
proTable.value.getTableList();
ElMessage.success("编辑成功");
} else {
const res = await addRole(form);
const res = await addEquipment(form);
ElMessage.success("新增成功");
proTable.value.getTableList();
}
@ -298,10 +316,15 @@ const saveItem = async (form: any) => {
//
const deleteAccount = async (params: jxj_User.ResUserList) => {
await useHandleData(deleteRole, { roleId: params.roleId }, `删除【${params.roleName}`);
await useHandleData(deleteEquipment, { id: params.id }, `删除【${params.devName}`);
proTable.value.getTableList();
};
//
const onUpdate = async row => {
initParam.engineeringSn = row.engineeringSn;
ElMessage.success("页面已更新");
};
const changeTreeFilter = () => {
console.log(11);
};

View File

@ -9,12 +9,7 @@
:tool-button="false"
:pagination="true"
background
:isShowSearch="false"
:onReset="true"
>
<template #formButton="scope">
<el-button class="addButtonStyle" @click="handleAddItem(1)">新增</el-button>
</template>
<template #operation="{ row }">
<el-button type="primary" link @click="handleEditItem(row)">
<img src="@/assets/images/tableIcon/配置权限.png" alt="" class="configureIcon" />
@ -29,7 +24,23 @@
<template #state="{ row }">
<span :class="row.state === 1 ? '' : 'redText'">{{ row.state == 1 ? "启用" : "禁用" }}</span>
</template>
<template #day1="{ row }" v-for="index in 30" :key="index">
<span class="cirle" @click="showAttendance(row)"></span>
</template>
</ProTable>
<div class="table">
<h4>考勤明细</h4>
<el-table
:data="attendanceSingles"
border
max-height="340"
class="el-table"
:header-cell-style="{ backgroundColor: '#e1eeff', textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }"
>
<el-table-column prop="name" label="单体工程名称" />
</el-table>
</div>
<el-drawer v-model="drawerVisible" :destroy-on-close="true" :before-close="closeDrawer" size="450px" title="配置权限">
<span class="title sle">所拥有的权限</span>
<el-scrollbar :style="{ height: title ? `calc(100% - 95px)` : `calc(100% - 56px)` }">
@ -58,7 +69,7 @@
</template>
<script setup lang="tsx" name="ProjectSupervisionRecord">
import { ref, reactive, nextTick } from "vue";
import { ref, reactive, nextTick, onBeforeMount } from "vue";
import { ElMessage, ElMessageBox, ElTree } from "element-plus";
import { useRouter } from "vue-router";
import { ColumnProps } from "@/components/ProTable/interface";
@ -67,7 +78,6 @@ import ProTable from "@/components/ProTable/index.vue";
import { jxj_User } from "@/api/types";
import TreeFilter from "@/components/TreeFilter/index.vue";
import {
getRoleList,
addRole,
editRole,
deleteRole,
@ -77,13 +87,12 @@ import {
getTreeByIdList
} from "@/api/modules/goverment";
import DialogForm from "@/components/DialogForm/index.vue";
// import { getProjectRecordPage } from "@/api/modules/project";
import { statisticsList } from "@/api/modules/project";
import { Delete } from "@element-plus/icons-vue";
import { GlobalStore } from "@/stores";
const treeRef = ref(null);
const datas = reactive([]);
const defaultProps = {
@ -95,6 +104,7 @@ const store = GlobalStore();
const visible = ref(false);
const drawerVisible = ref(false);
const title = ref("");
const attendanceSingles = ref([]);
const formData = ref({
roleName: "",
priority: 1,
@ -110,38 +120,42 @@ const getId = ref<number | undefined>(undefined);
const columns: ColumnProps[] = [
{ type: "index", label: "序号", width: 80 },
{
prop: "roleName",
label: "单位名称",
prop: "personName",
label: "姓名",
search: { el: "input" }
},
// prop
{ prop: "priority", label: "显示顺序" },
{ prop: "state", label: "使用状态" },
{
prop: "state",
label: "状态",
search: { el: "select" },
isShow: false,
enum: [
{ label: "启用", value: 1 },
{ label: "禁用", value: 0 }
]
prop: "teamName",
label: "班组",
search: { el: "input" }
},
{
prop: "createTime",
label: "创建时间",
prop: "month",
label: "月份",
isShow: false,
search: {
el: "date-picker",
props: {
type: "daterange",
type: "datetime",
format: "YYYY-MM-DD",
valueFormat: "YYYY-MM-DD"
// defaultTime: defaultTime2
}
}
},
{ prop: "operation", label: "操作", fixed: "right", width: 260 }
{
prop: "lateDay",
label: "迟到天数"
},
{
prop: "earlyDay",
label: "早退天数"
},
{
prop: "workerHour",
label: "总工时"
}
];
//
@ -213,7 +227,10 @@ const cacel = () => {
drawerVisible.value = false;
datas.length = 0;
};
//
const showAttendance = row => {
console.log(row);
};
const transfrom = (arr: Array<any>) => {
const result = [];
return arr
@ -247,7 +264,7 @@ const getTableList = (params: any) => {
newParams.createTime_end = newParams.createTime[1];
delete newParams.createTime;
}
return getRoleList(newParams);
return statisticsList(newParams);
};
const handleAddItem = (index: number, row: any) => {
@ -305,4 +322,42 @@ const deleteAccount = async (params: jxj_User.ResUserList) => {
const changeTreeFilter = () => {
console.log(11);
};
onBeforeMount(() => {
for (let i = 0; i < 31; i++) {
columns.push({
prop: "day" + (i + 1),
label: "" + (i + 1)
});
}
});
</script>
<style lang="scss" scoped>
.table-box {
.cirle {
display: inline-block;
width: 11px;
height: 11px;
background: #008bff;
opacity: 1;
border-radius: 50%;
}
.table {
display: flex;
flex-direction: column;
padding: 20px;
background-color: #fff;
h4 {
position: relative;
padding-left: 6px;
font-size: 20px;
font-weight: 500;
color: #333333;
border-left: 3px solid #008bff;
}
.el-table {
width: calc(100% - 20px);
margin-left: 20px;
}
}
}
</style>

View File

@ -25,6 +25,7 @@
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
type="datetime"
:disabledDate="disabledDate"
placeholder="请选择时间"
/>
</el-form-item>
@ -605,6 +606,11 @@ const resetForm = (formEl: FormInstance | undefined) => {
if (!formEl) return;
formEl.resetFields();
};
//
const disabledDate = time => {
let current = new Date().getTime();
return time > current;
};
// visibleel-dialog
watch(
() => props.newMemberDialog,

View File

@ -15,10 +15,10 @@
>
<template #formButton="scope">
<el-button class="addButtonStyle" @click="handleAddItem(1)">新增</el-button>
<el-button type="primary" :disabled="!scope.isSelected" @click="batchOperate(1, scope.selectedListIds)"
<!-- <el-button type="primary" :disabled="!scope.isSelected" @click="batchOperate(1, scope.selectedListIds)"
>批量复职</el-button
>
<el-button type="primary" :disabled="!scope.isSelected" @click="batchOperate(2, scope)">批量离场</el-button>
<el-button type="primary" :disabled="!scope.isSelected" @click="batchOperate(2, scope)">批量离场</el-button> -->
</template>
<template #operation="{ row }">
<el-button type="primary" link @click="handleAddItem(2, row)">
@ -29,7 +29,7 @@
<img src="@/assets/images/tableIcon/调动.png" alt="" class="configureIcon" />
<span>调动</span>
</el-button>
<el-button type="primary" link @click="handleEditItem(2, row)">
<el-button type="primary" link @click="handleEditItem(2, row)" v-if="row.inServiceType == 1">
<img src="@/assets/images/tableIcon/离场.png" alt="" class="configureIcon" />
<span>离场</span>
</el-button>
@ -160,7 +160,9 @@ const initParam = reactive({
// -
const moveFormData = ref({});
// -
const exitFormData = ref({});
const exitFormData = ref({
exitTime: ""
});
const formData = ref({
personName: "",
sex: 1,
@ -226,23 +228,31 @@ const exitFormConfig = {
formItemConfig: [
{
label: "离场人员",
prop: "ids",
type: "input"
prop: "personName",
type: "input",
disabled: true
},
// {
// label: "",
// prop: "exitType",
// type: "radio",
// data: [
// {
// label: "",
// value: 1
// },
// {
// label: "",
// value: 2
// }
// ]
// },
{
label: "离场时间",
prop: "ids",
type: "radio",
data: [
{
label: "立即离场",
value: 1
},
{
label: "延时离场",
value: 2
}
]
label: "离场日期",
prop: "exitTime",
type: "date",
format: "YYYY-MM-DD",
valueFormat: "YYYY-MM-DD"
}
],
rules: {
@ -445,30 +455,33 @@ const handleEditItem = async (index: number, row: any) => {
moveVisible.value = true;
} else if (index == 2) {
exitVisible.value = true;
exitFormData.value = { ...row };
}
objRow.value = row;
};
//
const saveMoveItem = async (form: any) => {
const res = await updateMember(form);
const requestData = {
id: objRow.value.id,
...form
};
const res = await updateMember(requestData);
proTable.value.getTableList();
ElMessage.success("编辑成功");
newMemberDialog.value = false;
moveVisible.value = false;
};
// TODO:
const saveItem = async (form: any) => {
form.engineeringSn = initParam.engineeringSn;
if (form.id) {
// console.log(form.dictCode);
const res = await updateClassGroup(form);
proTable.value.getTableList();
ElMessage.success("编辑成功");
} else {
const res = await addMember(form);
ElMessage.success("新增成功");
proTable.value.getTableList();
}
newMemberDialog.value = false;
// form.engineeringSn = initParam.engineeringSn;
console.log(form);
const requestData = {
id: form.id,
...form
};
const res = await updateMember(requestData);
proTable.value.getTableList();
ElMessage.success("编辑成功");
exitVisible.value = false;
};
//
const onUpdate = async row => {