diff --git a/attendance-performance-manager-ui/admin/src/assets/mixins/table.js b/attendance-performance-manager-ui/admin/src/assets/mixins/table.js index f99628d9f9e45597d9faaa34967df876acc75cc0..93416a32a6e6f6ffe2529975cbb51331b032a950 100644 --- a/attendance-performance-manager-ui/admin/src/assets/mixins/table.js +++ b/attendance-performance-manager-ui/admin/src/assets/mixins/table.js @@ -14,7 +14,7 @@ const tagsMap = { const baseUrl = process.env.VUE_APP_API_BASE_URL + "/"; export default { mounted() { - this.getData(); + // this.getData(); }, watch: { $route(route) { diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/record/list.vue b/attendance-performance-manager-ui/admin/src/views/attendance/record/list.vue index eb95d1ee0352ccb42710d0f1402bb5a6e56c6334..d1cb235bffb9b0c8e3c7f2a604c8d9671f9106ae 100644 --- a/attendance-performance-manager-ui/admin/src/views/attendance/record/list.vue +++ b/attendance-performance-manager-ui/admin/src/views/attendance/record/list.vue @@ -282,9 +282,11 @@ export default { }, // 琛ㄦ牸鎺ユ敹鏁版嵁鍚� afterRender(data) { + console.log(data); let addobjArr = []; data.dyncColumns.map((item) => { let obj = { + show: true, label: item.name, prop: "", formatter: (row) => { @@ -299,6 +301,7 @@ export default { } }, }; + addobjArr.push(obj); }); this.config.columns = [...this.initalArr, ...addobjArr]; this.$refs.layoutTable.showType = "tableSelect"; @@ -512,6 +515,8 @@ export default { }, data() { return { + // 鍔ㄦ€佹柊澧炲垪琛� + addColumn: [], progress: false, percent: 0, upload: { @@ -666,25 +671,25 @@ export default { show: true, }, - { - label: "鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅", - width: 120, - prop: "subColumns", - show: true, - formatter: (row) => { - let widthsize = this.columnSet.reduce((pre, cur) => { - return pre + Number(cur.width); - }, 50); - return ( - <el-popover placement="right" width={widthsize} trigger="click"> - {this.renderTable(row.attendanceRecordDetailList)} - <el-button type="text" slot="reference"> - 璇︾粏 - </el-button> - </el-popover> - ); - }, - }, + // { + // label: "鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅", + // width: 120, + // prop: "subColumns", + // show: true, + // formatter: (row) => { + // let widthsize = this.columnSet.reduce((pre, cur) => { + // return pre + Number(cur.width); + // }, 50); + // return ( + // <el-popover placement="right" width={widthsize} trigger="click"> + // {this.renderTable(row.attendanceRecordDetailList)} + // <el-button type="text" slot="reference"> + // 璇︾粏 + // </el-button> + // </el-popover> + // ); + // }, + // }, // { // label: "鎿嶄綔", // width: 240, diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/stat/list.vue b/attendance-performance-manager-ui/admin/src/views/attendance/stat/list.vue index 194bcaa1b8a15ac5e4dd4698a6f38614d6c45717..ea8872e12e28b702497f045818c82df1d69df8fd 100644 --- a/attendance-performance-manager-ui/admin/src/views/attendance/stat/list.vue +++ b/attendance-performance-manager-ui/admin/src/views/attendance/stat/list.vue @@ -168,9 +168,18 @@ export default { let index = arr.findIndex((item) => item.createTime == currentTime); if (index > -1) { return arr[index].attendanceSummary ? ( - <el-tag type={"danger"} size="mini"> - {arr[index].attendanceSummary} - </el-tag> + <el-tooltip + class="item" + effect="dark" + content={ + arr[index].createTime + " " + arr[index].attendanceSummary + } + placement="top-start" + > + <el-tag type={"danger"} size="mini"> + {arr[index].attendanceSummary} + </el-tag> + </el-tooltip> ) : ( "-" ); diff --git a/attendance-performance-manager-ui/admin/src/views/dept/list.vue b/attendance-performance-manager-ui/admin/src/views/dept/list.vue index 70f024315ffe52d7bcc977180b724249eb915fb3..832c27192c38e046cd9a37a13f3ba012c96f6193 100644 --- a/attendance-performance-manager-ui/admin/src/views/dept/list.vue +++ b/attendance-performance-manager-ui/admin/src/views/dept/list.vue @@ -1,79 +1,94 @@ <template> - <div className="page"> - <el-card style="height:80vh;overflow:scroll-y"> - <LayoutTable notPagination :data="tableData" ref="layoutTable" :config="tableConfig" notSearch></LayoutTable> - </el-card> - <drawer-show ref="drawerform" @ok="getData" /> - </div> + <div className="page"> + <el-card style="height:80vh;overflow:scroll-y"> + <LayoutTable + notPagination + :data="tableData" + notAdd + notDel + ref="layoutTable" + :config="tableConfig" + notSearch + ></LayoutTable> + </el-card> + <drawer-show ref="drawerform" @ok="getData" /> + </div> </template> <script> - /** 琛ㄥ崟寮瑰嚭妗嗘ā寮忛渶寮曞叆 */ - import {handleTree} from "@/assets/utils/table"; - import Treeselect from "@riophae/vue-treeselect"; - import "@riophae/vue-treeselect/dist/vue-treeselect.css"; - import drawerShow from "./drawershow"; - import table from "@/assets/mixins/table"; - export default { - name: "DeptList", - components: { - drawerShow, - Treeselect - }, - mixins: [table], - created() { - this.query={"page":1,"size":-1} - }, - methods: { - /** 閲嶅啓鏂板鏂规硶 */ - toAdd(row) { - this.$refs.drawerform.add(row,this.menuOptions); - }, - /** 閲嶅啓缂栬緫鏂规硶 */ - toEdit(row) { - this.$refs.drawerform.edit(row,this.menuOptions); - }, - /** 閲嶅啓鏌ョ湅鏂规硶 */ - toView(row) { - this.$refs.drawerform.view(row, this.menuOptions); - }, - afterRender(data) { - data.data = handleTree(data.data, "id", "parentId"); - console.log("tree data:",data.data) - this.menuOptions = data.data; - this.$refs.layoutTable.showType = "treetable" - }, - }, - data() { - return { - config: { - showType:'treetable', - isshowTabPane:true, - /** 鏍戣〃鏄惁榛樿灞曞紑 */ - expand: false, - columns: [ - {type: "selection", width: 60}, - {label: "閮ㄩ棬鍚嶇О", prop: "deptName"}, - {label: "鎴愬憳鏁伴噺", prop: "personNum"}, - {label: "璐熻矗浜�", prop: "workName"}, +/** 琛ㄥ崟寮瑰嚭妗嗘ā寮忛渶寮曞叆 */ +import { handleTree } from "@/assets/utils/table"; +import Treeselect from "@riophae/vue-treeselect"; +import "@riophae/vue-treeselect/dist/vue-treeselect.css"; +import drawerShow from "./drawershow"; +import table from "@/assets/mixins/table"; +export default { + name: "DeptList", + components: { + drawerShow, + Treeselect, + }, + mixins: [table], + created() { + this.query = { page: 1, size: -1 }; + }, + methods: { + /** 閲嶅啓鏂板鏂规硶 */ + toAdd(row) { + this.$refs.drawerform.add(row, this.menuOptions); + }, + /** 閲嶅啓缂栬緫鏂规硶 */ + toEdit(row) { + this.$refs.drawerform.edit(row, this.menuOptions); + }, + /** 閲嶅啓鏌ョ湅鏂规硶 */ + toView(row) { + this.$refs.drawerform.view(row, this.menuOptions); + }, + afterRender(data) { + data.data = handleTree(data.data, "id", "parentId"); + console.log("tree data:", data.data); + this.menuOptions = data.data; + this.$refs.layoutTable.showType = "treetable"; + }, + }, + data() { + return { + config: { + showType: "treetable", + isshowTabPane: true, + /** 鏍戣〃鏄惁榛樿灞曞紑 */ + expand: false, + columns: [ + { type: "selection", width: 60 }, + { label: "閮ㄩ棬鍚嶇О", prop: "deptName" }, + { label: "鎴愬憳鏁伴噺", prop: "personNum" }, + { label: "璐熻矗浜�", prop: "workName" }, - // {label: "閮ㄩ棬鐘舵€�", prop: "deptStatus",formatter: this.formatter}, + // {label: "閮ㄩ棬鐘舵€�", prop: "deptStatus",formatter: this.formatter}, - // {label: "椤哄簭", prop: "orderNum",formatter: this.formatter}, + // {label: "椤哄簭", prop: "orderNum",formatter: this.formatter}, - // {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, - { - label: "鎿嶄綔", - width: 240, - formatter: row => { - return ( - <table-buttons noAdd noView row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> - ) - } - } - ] - } - }; - } + // {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, + // { + // label: "鎿嶄綔", + // width: 240, + // formatter: (row) => { + // return ( + // <table-buttons + // noAdd + // noView + // row={row} + // onEdit={this.toEdit} + // onView={this.toView} + // onDel={this.toDel} + // /> + // ); + // }, + // }, + ], + }, }; -</script> \ No newline at end of file + }, +}; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/staff/list.vue b/attendance-performance-manager-ui/admin/src/views/staff/list.vue index 08571e58ec1157c51a2de985d09ae1abdf18b379..ca6f72605861c34bfc231a83b8e8a52363477154 100644 --- a/attendance-performance-manager-ui/admin/src/views/staff/list.vue +++ b/attendance-performance-manager-ui/admin/src/views/staff/list.vue @@ -7,7 +7,7 @@ @handleClick="handleClick" ></tab-pane> </div> - <div class="totalNum flex" v-if="tableData.staff"> + <!-- <div class="totalNum flex" v-if="tableData.staff"> <div class="item"> 鍦ㄨ亴鍛樺伐 <span class="num">{{ tableData.staff.inWorkStaff }}</span> </div> @@ -34,7 +34,7 @@ 寰呯鑱� <span class="num">{{ tableData.staff.resignationStaff }}</span> </div> </div> - </div> + </div> --> <el-row :gutter="20"> <el-col :span="6" :xs="12" class="mytree"> <div class="titles">閫夋嫨閮ㄩ棬</div> @@ -59,7 +59,7 @@ </el-col> <el-col :span="18" :xs="12"> <el-row> - <LayoutTable notDel :data="tableData" :config="tableConfig"> + <LayoutTable notDel notAdd :data="tableData" :config="tableConfig"> <el-button type="primary" @click="doExport" diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dao/AttendanceRecordDetailDao.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dao/AttendanceRecordDetailDao.java index 5283114d2f1c4f9d5c0684aab32a4cfbae444354..17f4b25b364d6b6b93778f224033ecbfba653a7c 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dao/AttendanceRecordDetailDao.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dao/AttendanceRecordDetailDao.java @@ -2,6 +2,10 @@ package com.mortals.xhx.module.attendance.dao; import com.mortals.framework.dao.ICRUDDao; import com.mortals.xhx.module.attendance.model.AttendanceRecordDetailEntity; +import com.mortals.xhx.module.attendance.model.AttendanceRecordQuery; + +import java.util.List; + /** * 鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅Dao * 鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅 DAO鎺ュ彛 @@ -18,6 +22,11 @@ public interface AttendanceRecordDetailDao extends ICRUDDao<AttendanceRecordDet * */ int goWorkCount(Long id); - + /** + * 鏌ヨ姣忔棩鎵撳崱璁板綍鏄庣粏 + * @param query + * @return + */ + List<AttendanceRecordDetailEntity> getListByWhere(AttendanceRecordQuery query); } diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dao/ibatis/AttendanceRecordDetailDaoImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dao/ibatis/AttendanceRecordDetailDaoImpl.java index 50ef2a37ac6bbd6097bde4a03fa6abfdb1aaa150..ef9767bb5a4a1dc924a3f766121f8fb87a580c18 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dao/ibatis/AttendanceRecordDetailDaoImpl.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dao/ibatis/AttendanceRecordDetailDaoImpl.java @@ -4,7 +4,11 @@ package com.mortals.xhx.module.attendance.dao.ibatis; import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis; import com.mortals.xhx.module.attendance.dao.AttendanceRecordDetailDao; import com.mortals.xhx.module.attendance.model.AttendanceRecordDetailEntity; +import com.mortals.xhx.module.attendance.model.AttendanceRecordQuery; import org.springframework.stereotype.Repository; + +import java.util.List; + /** * 鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅DaoImpl DAO鎺ュ彛 * @@ -19,4 +23,11 @@ public class AttendanceRecordDetailDaoImpl extends BaseCRUDDaoMybatis<Attendance public int goWorkCount(Long id) { return getSqlSession().selectOne(getSqlId("goWorkCount"),id); } + + @Override + public List<AttendanceRecordDetailEntity> getListByWhere(AttendanceRecordQuery query) { + return getSqlSession().selectList(getSqlId("getListByWhere"),query); + } + + } diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceStaffStatVo.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceStaffStatVo.java index 0a0df356a7e1e56911f9db8ec1a134a84c372f68..967a1d9b355416ed2c16331e887f1cb06fcd028c 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceStaffStatVo.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceStaffStatVo.java @@ -14,10 +14,5 @@ import java.util.List; */ @Data public class AttendanceStaffStatVo extends BaseEntityLong { - - /** - * 鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅淇℃伅 - */ - private List<AttendanceRecordDetailEntity> attendanceRecordDetailList=new ArrayList<>();; - + List<AttendanceRecordDetailEntity> attendanceRecordDetail; } \ No newline at end of file diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceStaffStatServiceImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceStaffStatServiceImpl.java index df2df14397f3c6fb256033cdac13c57e46fc1764..12af61f3add7213e346a52deeeb58dfade501dad 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceStaffStatServiceImpl.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceStaffStatServiceImpl.java @@ -1,6 +1,11 @@ package com.mortals.xhx.module.attendance.service.impl; import com.mortals.framework.util.StringUtils; +import com.mortals.xhx.module.attendance.dao.AttendanceRecordDetailDao; +import com.mortals.xhx.module.attendance.model.AttendanceRecordDetailEntity; +import com.mortals.xhx.module.attendance.model.AttendanceRecordQuery; import com.mortals.xhx.module.attendance.model.vo.AttendanceSummaryQuery; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.exception.AppException; @@ -33,11 +38,18 @@ public class AttendanceStaffStatServiceImpl extends AbstractCRUDServiceImpl<Atte throw new AppException("鏌ヨ鏃ユ湡鑼冨洿涓嶈兘涓虹┖"); } - List<AttendanceStaffStatEntity> listExt = dao.getListExt(params); - - //鏋勫缓寮傚父淇℃伅 鍒嗘棩鏈� 鍒嗕汉 - - - return listExt; + List<AttendanceStaffStatEntity> list = dao.getListExt(params); + if(CollectionUtils.isNotEmpty(list)){ + for(AttendanceStaffStatEntity entity:list){ + AttendanceRecordQuery query = new AttendanceRecordQuery(); + query.setStaffId(entity.getStaffId()); + String dayStr = entity.getYear()+"-"+entity.getMonth()+"-"+entity.getDay(); + query.setAttendanceDateStart(dayStr); + query.setAttendanceDateEnd(dayStr); + List<AttendanceRecordDetailEntity> entityList = attendanceRecordDetailDao.getListByWhere(query); + entity.setAttendanceRecordDetail(entityList); + } + } + return list; } } \ No newline at end of file diff --git a/attendance-performance-manager/src/main/resources/sqlmap/module/attendance/AttendanceRecordDetailMapperExt.xml b/attendance-performance-manager/src/main/resources/sqlmap/module/attendance/AttendanceRecordDetailMapperExt.xml new file mode 100644 index 0000000000000000000000000000000000000000..a57b109be5bbadc8c016be028f3849cd9f4e9ee7 --- /dev/null +++ b/attendance-performance-manager/src/main/resources/sqlmap/module/attendance/AttendanceRecordDetailMapperExt.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "mybatis-3-mapper.dtd"> +<mapper namespace="com.mortals.xhx.module.attendance.dao.ibatis.AttendanceRecordDetailDaoImpl"> + <!-- 鑾峰彇鍒楄〃 --> + <select id="getListByWhere" parameterType="AttendanceRecordQuery" resultMap="AttendanceRecordDetailEntity-Map"> + select <include refid="_columns"/> + from mortals_xhx_attendance_record_detail as a,mortals_xhx_attendance_record r + where a.recordId = r.id + and r.staffId = #{staffId} + AND r.attendanceDate <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{attendanceDateStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') + AND r.attendanceDate <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{attendanceDateEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') + </select> +</mapper> \ No newline at end of file