From e20162f7ae414a5679a98de4546b63e7ff6926c5 Mon Sep 17 00:00:00 2001 From: haoxuan <haoxuan> Date: 星期二, 23 四月 2024 17:38:25 +0800 Subject: [PATCH] 考勤管理 前端页面开发+列表的接口联调,字段调试+删除的接口联调+规则设置获取接口联调+保存接口联调 --- src/views/employeeSalary/attendanceManage/components/RuleSettingDialog.vue | 177 +++++++++++++++++++++++++ src/components/makepager/TableCommonView.vue | 14 + /dev/null | 177 ------------------------- src/views/employeeSalary/attendanceStatistics/components/AttendanceStatisticsDetails.vue | 4 4 files changed, 192 insertions(+), 180 deletions(-) diff --git a/src/components/makepager/TableCommonView.vue b/src/components/makepager/TableCommonView.vue index 350d107..bc0f088 100644 --- a/src/components/makepager/TableCommonView.vue +++ b/src/components/makepager/TableCommonView.vue @@ -96,7 +96,16 @@ v-else-if="item.isCommonClick && scope.row[item.prop]" class="sel-name" @click="selCommonClick(scope.row)" - >{{ scope.row[item.prop] }}</span + > + <div v-if="item.isCallMethod"> + <span :class="item.isClass ? item.getClassName(scope.row[item.prop], scope.row) : ''"> + + <span v-if="item.isIcon" v-html="item.getCallMethod(scope.row[item.prop], scope.row)"></span> + <span v-else>{{ item.getCallMethod(scope.row[item.prop], scope.row) }}</span> + </span> + </div> + <span v-else>{{ scope.row[item.prop] }}</span> + </span > <div v-else-if="item.isProductName" class="product-view"> <ul v-if="scope.row.products && scope.row.products.length > 0"> @@ -479,6 +488,9 @@ font-weight: bold; } } + .el-table__fixed-body-wrapper{ + top:37px!important; + } } ::v-deep .el-table .cell { diff --git a/src/views/employeeSalary/attendanceManage/components/RuleSettingDialog.vue b/src/views/employeeSalary/attendanceManage/components/RuleSettingDialog.vue new file mode 100644 index 0000000..4d2fee4 --- /dev/null +++ b/src/views/employeeSalary/attendanceManage/components/RuleSettingDialog.vue @@ -0,0 +1,177 @@ +<template> + <el-dialog :close-on-click-modal="false" :visible.sync="islook" width="35rem" class="add-rule-set-dialog" + @close="shutdown"> + <div slot="title" class="tac drawerHeader">瑙勫垯璁剧疆</div> + <div class="dialog-content-box"> + <el-form ref="form" class="form-box" :rules="rules" :model="form" + label-width="150px" + label-position="right"> + <el-form-item label="宸ヤ綔鏃ュ姞鐝鍒欙細" prop="weekdayRule"> + <el-radio-group v-model="form.weekdayRule"> + <el-radio :label="1" style="width:100%"> + 涓嶅惎鐢ㄥ伐浣滄棩鍔犵彮 + </el-radio> + <el-radio :label="2" style="width:100%"> + 瓒呰繃 + <el-form-item label="" label-width="0" + class="margin_left_10px margin_right_10px" + style="width:120px;display:inline-block" + prop="overTimeStart" + :rules="[{ required: form.weekdayRule==2? true : false, message: '璇疯緭鍏�' },{ + validator: this.validatorNum, + trigger: 'blur', + }]"> + <el-input v-model.number="form.overTimeStart" + placeholder="璇疯緭鍏�"></el-input> + </el-form-item> + 灏忔椂绠楀姞鐝� + </el-radio> + </el-radio-group> + </el-form-item> + <el-form-item label="浼戞伅鏃ュ姞鐝鍒欙細" prop="restDayRule"> + <el-radio-group v-model="form.restDayRule"> + <el-radio :label="1" style="width:100%"> + 涓嶅惎鐢ㄤ紤鎭棩鍔犵彮 + </el-radio> + <el-radio :label="2" style="width:100%"> + 瓒呰繃 + <el-form-item label="" label-width="0" prop="restDayStart" + class="margin_left_10px margin_right_10px" + style="width:120px;display:inline-block" + :rules="[{ required: form.restDayRule==2? true : false, message: '璇疯緭鍏�' },{ + validator: this.validatorNum, + trigger: 'blur', + }]"> + <el-input v-model.number="form.restDayStart" + placeholder="璇疯緭鍏�"></el-input> + </el-form-item> + 灏忔椂绠楀姞鐝� + </el-radio> + </el-radio-group> + </el-form-item> + </el-form> + </div> + <div slot="footer" class="dialog-footer tac"> + <el-button @click="shutdown">鍙栨秷</el-button> + <el-button type="primary" @click="onSubmit(form)">纭畾</el-button> + </div> + </el-dialog> +</template> + +<script> +import { getAttendanceRule,saveAttendanceRule } from "@/api/employeeSalary/attendanceManage.js" +export default { + props: {}, + data() { + return { + islook: false, + form: { + weekdayRule: 1, + overTimeStart: null, + restDayRule:1, + restDayStart:null, + }, + rules: { + cycle: [ + { + required: true, + message: "璇疯緭鍏�", + trigger: "blur", + }, + { + validator: this.validatorNum, + trigger: "blur", + }, + ], + }, + procedureIdsList: [], + }; + }, + mounted() { + }, + watch: { + islook(newVal) { + if (newVal) { + this.getAttendanceRule(); + this.$nextTick(() => { + this.$refs["form"].resetFields(); + }); + } + }, + }, + methods: { + validatorNum(rule, value, callback) { + if (value) { + if (value == undefined || value == null) { + callback(new Error("璇疯緭鍏ユ湁鏁堟暟瀛�")); + } else { + var reg = /^\+?[1-9]\d*$/; + if (!reg.test(value)) { + callback(new Error("璇峰~鍐欎笉灏忎簬0鐨勬暟瀛�")); + } else { + callback(); + } + } + } else { + callback(); + } + }, + async getAttendanceRule() { + await getAttendanceRule().then((res) => { + if (res.code == 200) { + if (res.data) { + this.form=JSON.parse(JSON.stringify(res.data)); + this.form.overTimeStart=this.form.overTimeStart==0?null:this.form.overTimeStart + this.form.restDayStart=this.form.restDayStart==0?null:this.form.restDayStart + } + } + }); + }, + onSubmit() { + this.$refs.form.validate((valid) => { + if (valid) { + console.log(this.form); + let params =JSON.parse(JSON.stringify(this.form)); + params.overTimeStart=Number(params.overTimeStart) + params.restDayStart=Number(params.restDayStart) + saveAttendanceRule(params).then((res) => { + if (res.code == 200) { + this.$message({ + message: "淇濆瓨鎴愬姛锛�", + type: "success", + }); + // 淇濆瓨 + this.shutdown("save"); + } + }); + } + }); + }, + shutdown(val) { + this.islook = false; + this.$emit("closeClick", val); + }, + }, +}; +</script> + +<style lang="scss" scoped> +.add-rule-set-dialog { + .form-box { + .el-form-item { + width: 100%; + .el-radio{ + height:40px; + line-height:40px; + } + } + } +} + + +::v-deep .el-input__inner { + font-size: 13px !important; + color: rgba(0, 0, 0, 0.9); + text-align: left; +} +</style> diff --git a/src/views/employeeSalary/attendanceStatistics/components/AttendanceStatisticsDetails.vue b/src/views/employeeSalary/attendanceStatistics/components/AttendanceStatisticsDetails.vue index a080151..306b58a 100644 --- a/src/views/employeeSalary/attendanceStatistics/components/AttendanceStatisticsDetails.vue +++ b/src/views/employeeSalary/attendanceStatistics/components/AttendanceStatisticsDetails.vue @@ -1,7 +1,7 @@ <template> <el-dialog :close-on-click-modal="false" :visible.sync="islook" width="40rem" class="add-event-dialog" @close="cancelMethod"> - <div slot="title" class="tac drawerHeader">{{ editRow.title }}</div> + <div slot="title" class="tac drawerHeader">璇︽儏</div> <div class="dialog-content-box"> <el-form class="form-box" ref="form" :rules="rules" :model="form" label-width="140px" label-position="right"> <el-form-item label="鍛樺伐濮撳悕锛�" prop="id"> @@ -81,7 +81,7 @@ }, data() { return { - islook: true, + islook: false, form: { id: '', isCore: '', diff --git a/src/views/employeeSalary/attendanceStatistics/components/RuleSettingDialog.vue b/src/views/employeeSalary/attendanceStatistics/components/RuleSettingDialog.vue deleted file mode 100644 index 30d6a40..0000000 --- a/src/views/employeeSalary/attendanceStatistics/components/RuleSettingDialog.vue +++ /dev/null @@ -1,177 +0,0 @@ -<template> - <el-dialog :close-on-click-modal="false" :visible.sync="islook" width="35rem" class="add-rule-set-dialog" - @close="shutdown"> - <div slot="title" class="tac drawerHeader">瑙勫垯璁剧疆</div> - <div class="dialog-content-box"> - <el-form ref="form" class="form-box" :rules="rules" :model="form" :inline="true" label-width="150px" - label-position="right"> - <el-form-item label="宸ヤ綔鏃ュ姞鐝鍒�:" prop="materialMatch"> - <el-radio-group v-model="form.materialMatch"> - <el-radio label="1"> - 涓嶅惎鐢ㄥ伐浣滄棩鍔犵彮 - </el-radio> - <el-radio label="2"> - 瓒呰繃 - <el-input class="margin_left_10px margin_right_10px" style="width:120px" v-model.number="form.cycle" - placeholder="璇疯緭鍏�"></el-input> - 灏忔椂绠楀姞鐝� - </el-radio> - </el-radio-group> - </el-form-item> - <el-form-item label="浼戞伅鏃ュ姞鐝鍒�:" prop="materialMatch"> - <el-radio-group v-model="form.materialMatch"> - <el-radio label="1"> - 涓嶅惎鐢ㄤ紤鎭棩鍔犵彮 - </el-radio> - <el-radio label="2"> - 瓒呰繃 - <el-input class="margin_left_10px margin_right_10px" style="width:120px" v-model.number="form.cycle" - placeholder="璇疯緭鍏�"></el-input> - 灏忔椂绠楀姞鐝� - </el-radio> - </el-radio-group> - </el-form-item> - </el-form> - </div> - <div slot="footer" class="dialog-footer tac"> - <el-button @click="shutdown">鍙栨秷</el-button> - <el-button type="primary" @click="onSubmit(form)">纭畾</el-button> - </div> - </el-dialog> -</template> - -<script> -import { getMiniDictList, saveMiniDict } from "@/api/employeeSalary/attendanceStatistics.js" // 鐗堟湰绫诲瀷 -export default { - props: {}, - data() { - return { - islook: false, - form: { - warningDays: 3, - materialMatch: '1', - }, - rules: { - cycle: [ - { - required: true, - message: "璇疯緭鍏�", - trigger: "blur", - }, - { - validator: this.validatorNum, - trigger: "blur", - }, - ], - }, - procedureIdsList: [], - }; - }, - mounted() { - // this.getMiniDictList(); - }, - watch: { - islook(newVal) { - if (newVal) { - this.getMiniDictList(); - this.$nextTick(() => { - this.$refs["form"].resetFields(); - }); - } - }, - }, - methods: { - validatorNum(rule, value, callback) { - if (value) { - if (value == undefined || value == null) { - callback(new Error("璇疯緭鍏ユ湁鏁堟暟瀛�")); - } else { - var reg = /^\+?[0-9]\d*$/; - if (!reg.test(value)) { - callback(new Error("璇峰~鍐欎笉灏忎簬0鐨勬暟瀛�")); - } else { - callback(); - } - } - } else { - callback(); - } - }, - async getMiniDictList() { - await getMiniDictList({ type: 3 }).then((res) => { - if (res.code == 200) { - if (res.data) { - for (let i in res.data) { - if (res.data[i].value == '棰勮澶╂暟') { - this.form.warningDays = parseInt(res.data[i].name); - } else if (res.data[i].value == '鐗╂枡鍖归厤鏉′欢') { - this.form.materialMatch = res.data[i].name ? res.data[i].name : '1'; - } - } - } - } - }); - }, - onSubmit() { - this.$refs.form.validate((valid) => { - if (valid) { - console.log(this.form); - let params = { - list: [ - { - name: "" + this.form.warningDays, - value: "棰勮澶╂暟" - }, - { - name: "" + this.form.materialMatch, - value: "鐗╂枡鍖归厤鏉′欢" - }, - ], - type: 3, - }; - - saveMiniDict(params).then((res) => { - if (res.code == 200) { - this.$message({ - message: "淇濆瓨鎴愬姛锛�", - type: "success", - }); - // 淇濆瓨 - this.shutdown("save"); - } - }); - } - }); - }, - shutdown(val) { - this.islook = false; - this.$emit("closeClick", val); - }, - }, -}; -</script> - -<style lang="scss" scoped> -.add-rule-set-dialog { - .form-box { - ::v-deep .el-form-item__content { - width: calc(100% - 150px); - } - - .el-form-item { - width: 100%; - .el-radio{ - height:40px; - line-height:40px; - } - } - } -} - - -::v-deep .el-input__inner { - font-size: 13px !important; - color: rgba(0, 0, 0, 0.9); - text-align: left; -} -</style> -- Gitblit v1.8.0