diff --git a/attendance-performance-manager-ui/admin/src/router.js b/attendance-performance-manager-ui/admin/src/router.js index dac8aadf006814e305c4fa54ce1ba48edf79c96b..f2a1ecdf8043d703b0a34a6a1f158f1219a348c3 100644 --- a/attendance-performance-manager-ui/admin/src/router.js +++ b/attendance-performance-manager-ui/admin/src/router.js @@ -40,6 +40,21 @@ const router = new Router({ //閮ㄩ棬 ...restBuilder('dept', 'dept'), + ...restBuilder('staff', 'staff'),//鑺卞悕鍐� 鍛樺伐淇℃伅 + ...restBuilder('staff/care', 'staff/care'),// 鍛樺伐鍏虫€€淇℃伅 + ...restBuilder('care/template', 'care/template'),// 鍏虫€€闂€欎俊鎭� + ...restBuilder('job', 'job'),// 鑱屼綅淇℃伅 + ...restBuilder('staff/black', 'staff/black'),// 鍛樺伐榛戝悕鍗曚俊鎭� + ...restBuilder('staff/adjust/log', 'staff/adjust/log'),// 鍛樺伐璋冨矖淇℃伅 + ...restBuilder('staff/regular', 'staff/regular'),// 鍛樺伐杞淇℃伅 + ...restBuilder('staff/leave', 'staff/leave'),// 鍛樺伐绂昏亴淇℃伅 + ...restBuilder('staff/contract', 'staff/contract'),// 鍛樺伐鍚堝悓淇℃伅 + ...restBuilder('attendance/record', 'attendance/record'),// 鑰冨嫟鎵撳崱璁板綍淇℃伅 + ...restBuilder('attendance/record/detail', 'attendance/record/detail'),// 鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅 + ...restBuilder('attendance/group', 'attendance/group'),// 鑰冨嫟缁勪俊鎭� + ...restBuilder('attendance/class', 'attendance/class'),// 鑰冨嫟鐝淇℃伅 + ...restBuilder('attendance/leave/record', 'attendance/leave/record'),// 璇峰亣璁板綍淇℃伅 + ...restBuilder('attendance/vacation/balance', 'attendance/vacation/balance'),// 鍛樺伐鍋囨湡浣欓淇℃伅 //浠ヤ笅涓哄熀纭€璺敱閰嶇疆 diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/class/detail/dialogshow.vue b/attendance-performance-manager-ui/admin/src/views/attendance/class/detail/dialogshow.vue new file mode 100644 index 0000000000000000000000000000000000000000..db9ca9d0008365553d5e0998e0b5532861afc870 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/class/detail/dialogshow.vue @@ -0,0 +1,116 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鐝ID" prop="shiftsId" v-model="form.shiftsId" placeholder="璇疯緭鍏ョ彮娆D"/> + <Field label="鐝鍚嶇О" prop="shiftsName" v-model="form.shiftsName" placeholder="璇疯緭鍏ョ彮娆″悕绉�"/> + <Field label="涓婄彮鎵撳崱鏃堕棿" prop="goWorkDate" v-model="form.goWorkDate" type="date" /> + <Field label="涓婄彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" prop="goWorkDateBefore" v-model="form.goWorkDateBefore" placeholder="璇疯緭鍏ヤ笂鐝墦鍗″墠鏃堕棿娈�,鍗曚綅鍒嗛挓"/> + <Field label="涓婄彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" prop="goWorkDateAfter" v-model="form.goWorkDateAfter" placeholder="璇疯緭鍏ヤ笂鐝墦鍗″墠鏃堕棿娈�,鍗曚綅鍒嗛挓"/> + <Field label="涓嬬彮鎵撳崱鏃堕棿" prop="offWorkDate" v-model="form.offWorkDate" type="date" /> + <Field label="涓嬬彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" prop="offWorkDateBefore" v-model="form.offWorkDateBefore" placeholder="璇疯緭鍏ヤ笅鐝墦鍗″墠鏃堕棿娈�,鍗曚綅鍒嗛挓"/> + <Field label="涓嬬彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" prop="offWorkDateAfter" v-model="form.offWorkDateAfter" placeholder="璇疯緭鍏ヤ笅鐝墦鍗″墠鏃堕棿娈�,鍗曚綅鍒嗛挓"/> + <Field label="澶囨敞" prop="remark" v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�"/> + + </el-row> + + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + import dialogShow from "./dialogshow"; + export default { + mixins: [form], + components: { + dialogShow , + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鑰冨嫟鐝璇︾粏淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString:[ + ], + // 琛ㄥ崟鏍¢獙 + rules: { + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/class/detail/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鑰冨嫟鐝璇︾粏淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "attendance/class/detail/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鑰冨嫟鐝璇︾粏淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/class/detail/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鑰冨嫟鐝璇︾粏淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + shiftsId : null, + shiftsName : "", + goWorkDate : null, + goWorkDateBefore : null, + goWorkDateAfter : null, + offWorkDate : null, + offWorkDateBefore : null, + offWorkDateAfter : null, + remark : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/class/detail/drawershow.vue b/attendance-performance-manager-ui/admin/src/views/attendance/class/detail/drawershow.vue new file mode 100644 index 0000000000000000000000000000000000000000..cc33032ea61f12b192a421ce86f0399ce2e41b43 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/class/detail/drawershow.vue @@ -0,0 +1,126 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-drawer + :title="title" + :visible.sync="open" + :direction="direction" + size="50%"> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鐝ID" prop="shiftsId" v-model="form.shiftsId" placeholder="璇疯緭鍏ョ彮娆D"/> + <Field label="鐝鍚嶇О" prop="shiftsName" v-model="form.shiftsName" placeholder="璇疯緭鍏ョ彮娆″悕绉�"/> + <Field label="涓婄彮鎵撳崱鏃堕棿" prop="goWorkDate" v-model="form.goWorkDate" type="date" /> + <Field label="涓婄彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" prop="goWorkDateBefore" v-model="form.goWorkDateBefore" placeholder="璇疯緭鍏ヤ笂鐝墦鍗″墠鏃堕棿娈�,鍗曚綅鍒嗛挓"/> + <Field label="涓婄彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" prop="goWorkDateAfter" v-model="form.goWorkDateAfter" placeholder="璇疯緭鍏ヤ笂鐝墦鍗″墠鏃堕棿娈�,鍗曚綅鍒嗛挓"/> + <Field label="涓嬬彮鎵撳崱鏃堕棿" prop="offWorkDate" v-model="form.offWorkDate" type="date" /> + <Field label="涓嬬彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" prop="offWorkDateBefore" v-model="form.offWorkDateBefore" placeholder="璇疯緭鍏ヤ笅鐝墦鍗″墠鏃堕棿娈�,鍗曚綅鍒嗛挓"/> + <Field label="涓嬬彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" prop="offWorkDateAfter" v-model="form.offWorkDateAfter" placeholder="璇疯緭鍏ヤ笅鐝墦鍗″墠鏃堕棿娈�,鍗曚綅鍒嗛挓"/> + <Field label="澶囨敞" prop="remark" v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�"/> + + </el-row> + + <form-buttons @submit='submitForm' noCancelBtn /> + </el-form> + + </el-drawer> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + export default { + name: "AttendanceClassDetailDetail", + mixins: [form], + components: { + + }, + created() { + this.changePath("attendance/class/detail") + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鑰冨嫟鐝璇︾粏淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + direction:"rtl", + toString:[ + ], + toDate:[ + "goWorkDate", + "offWorkDate", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/class/detail/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鑰冨嫟鐝璇︾粏淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "attendance/class/detail/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鑰冨嫟鐝璇︾粏淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/class/detail/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鑰冨嫟鐝璇︾粏淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + shiftsId : null, + shiftsName : "", + goWorkDate : null, + goWorkDateBefore : null, + goWorkDateAfter : null, + offWorkDate : null, + offWorkDateBefore : null, + offWorkDateAfter : null, + remark : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/class/detail/list.vue b/attendance-performance-manager-ui/admin/src/views/attendance/class/detail/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..0b875be5dfb714c752fb3c8aee5dd36a1a837ab1 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/class/detail/list.vue @@ -0,0 +1,66 @@ +<template> + <div class="page"> + <LayoutTable :data="tableData" :config="tableConfig"> + </LayoutTable> + + + <drawer-show ref="drawerform" @ok="getData" /> + </div> +</template> + +<script> + /** 琛ㄥ崟寮瑰嚭妗嗘ā寮忛渶寮曞叆 */ + import drawerShow from "./drawershow"; + import table from "@/assets/mixins/table"; + export default { + name: "AttendanceClassDetailList", + components: { + drawerShow +}, + mixins: [table], + created() { + }, + methods: { + /** 閲嶅啓鏂板鏂规硶 */ + toAdd(row) { + this.$refs.drawerform.add(row); + }, + /** 閲嶅啓缂栬緫鏂规硶 */ + toEdit(row) { + this.$refs.drawerform.edit(row); + }, + /** 閲嶅啓鏌ョ湅鏂规硶 */ + toView(row) { + this.$refs.drawerform.view(row); + }, + + }, + data() { + return { + config: { + search: [ + ], + columns: [ + {type: "selection", width: 60}, + {type: "index",label: "搴忓彿",width: 50}, + + {label: "涓婄彮鎵撳崱鏃堕棿", prop: "goWorkDate", formatter: this.formatterDate}, + + {label: "涓嬬彮鎵撳崱鏃堕棿", prop: "offWorkDate", formatter: this.formatterDate}, + + {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, + { + label: "鎿嶄綔", + width: 240, + formatter: row => { + return ( + <table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> + ); + } + } + ] + } + }; + } + }; +</script> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/class/detail/view.vue b/attendance-performance-manager-ui/admin/src/views/attendance/class/detail/view.vue new file mode 100644 index 0000000000000000000000000000000000000000..f205d3460a1a6259a07f2e75402271c82cbdca51 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/class/detail/view.vue @@ -0,0 +1,81 @@ +<template> + <layout-view> + <el-descriptions :title="title" :column="column" :size="size" :colon="false" border> + <template slot="title"> + <i class="el-icon-tickets"></i> + 鍩烘湰璇︾粏淇℃伅 + </template> + <template slot="extra"> + <el-button type="primary" @click="$router.go(-1)" size="small">杩斿洖</el-button> + </template> + <el-descriptions-item label="鐝ID" label-class-name="labelClass" content-class-name="contentClass"> + {{form.shiftsId}} + </el-descriptions-item> + <el-descriptions-item label="鐝鍚嶇О" label-class-name="labelClass" content-class-name="contentClass"> + {{form.shiftsName}} + </el-descriptions-item> + <el-descriptions-item label="涓婄彮鎵撳崱鏃堕棿" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.goWorkDate)}} + </el-descriptions-item> + <el-descriptions-item label="涓婄彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" label-class-name="labelClass" content-class-name="contentClass"> + {{form.goWorkDateBefore}} + </el-descriptions-item> + <el-descriptions-item label="涓婄彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" label-class-name="labelClass" content-class-name="contentClass"> + {{form.goWorkDateAfter}} + </el-descriptions-item> + <el-descriptions-item label="涓嬬彮鎵撳崱鏃堕棿" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.offWorkDate)}} + </el-descriptions-item> + <el-descriptions-item label="涓嬬彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" label-class-name="labelClass" content-class-name="contentClass"> + {{form.offWorkDateBefore}} + </el-descriptions-item> + <el-descriptions-item label="涓嬬彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" label-class-name="labelClass" content-class-name="contentClass"> + {{form.offWorkDateAfter}} + </el-descriptions-item> + <el-descriptions-item label="澶囨敞" label-class-name="labelClass" content-class-name="contentClass"> + {{form.remark}} + </el-descriptions-item> + </el-descriptions> + + </layout-view> +</template> + +<script> + import view from "@/assets/mixins/view"; + export default { + mixins: [view], + components: { + }, + methods: { + + }, + data() { + return { + size:"small", + column:2, + toString:[ + ], + toArrays: [ + + ], + toDate: [ + + ] + } + } + } +</script> +<style lang="less"> + .labelClass{ + width: 200px; + } + .el-descriptions__body{ + margin-left: 5px; + margin-right: 5px; + color: #606266; + background-color: #FFF; + } + .contentClass{ + width: 600px; + } +</style> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/class/dialogshow.vue b/attendance-performance-manager-ui/admin/src/views/attendance/class/dialogshow.vue new file mode 100644 index 0000000000000000000000000000000000000000..8e431eebbfb000890a823153c95f2ca3f1475e88 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/class/dialogshow.vue @@ -0,0 +1,230 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鐝鍚嶇О" prop="className" v-model="form.className" placeholder="璇疯緭鍏ョ彮娆″悕绉�"/> + <Field label="鐝璐熻矗浜篒D" prop="classResponsiblePersonId" v-model="form.classResponsiblePersonId" placeholder="璇疯緭鍏ョ彮娆¤礋璐d汉ID"/> + <Field label="鐝璐熻矗浜哄悕绉�" prop="classResponsiblePersonName" v-model="form.classResponsiblePersonName" placeholder="璇疯緭鍏ョ彮娆¤礋璐d汉鍚嶇О"/> + <Field label="澶囨敞" prop="remark" v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�"/> + + </el-row> + <el-divider content-position="center">鑰冨嫟鐝璇︾粏淇℃伅淇℃伅</el-divider> + <br/> + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAddAttendanceClassDetail">娣诲姞</el-button> + </el-col> + <el-col :span="1.5"> + <el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDeleteAttendanceClassDetail">鍒犻櫎</el-button> + </el-col> + </el-row> + + <el-table :data="attendanceClassDetailList" :row-class-name="rowAttendanceClassDetailIndex" @selection-change="handleAttendanceClassDetailSelectionChange" ref="attendanceClassDetail"> + <el-table-column type="selection" width="50" align="center" /> + <el-table-column label="搴忓彿" align="center" prop="index" width="50"/> + <el-table-column label="鐝鍚嶇О" prop="shiftsName"> + <template slot-scope="scope"> + <el-input v-model="scope.row.shiftsName" placeholder="璇疯緭鍏ョ彮娆″悕绉�" /> + </template> + </el-table-column> + <el-table-column label="涓婄彮鎵撳崱鏃堕棿" prop="goWorkDate"> + <template slot-scope="scope"> + <el-input v-model="scope.row.goWorkDate" placeholder="璇疯緭鍏ヤ笂鐝墦鍗℃椂闂�" /> + </template> + </el-table-column> + <el-table-column label="涓婄彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" prop="goWorkDateBefore"> + <template slot-scope="scope"> + <el-input v-model="scope.row.goWorkDateBefore" placeholder="璇疯緭鍏ヤ笂鐝墦鍗″墠鏃堕棿娈�,鍗曚綅鍒嗛挓" /> + </template> + </el-table-column> + <el-table-column label="涓婄彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" prop="goWorkDateAfter"> + <template slot-scope="scope"> + <el-input v-model="scope.row.goWorkDateAfter" placeholder="璇疯緭鍏ヤ笂鐝墦鍗″墠鏃堕棿娈�,鍗曚綅鍒嗛挓" /> + </template> + </el-table-column> + <el-table-column label="涓嬬彮鎵撳崱鏃堕棿" prop="offWorkDate"> + <template slot-scope="scope"> + <el-input v-model="scope.row.offWorkDate" placeholder="璇疯緭鍏ヤ笅鐝墦鍗℃椂闂�" /> + </template> + </el-table-column> + <el-table-column label="涓嬬彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" prop="offWorkDateBefore"> + <template slot-scope="scope"> + <el-input v-model="scope.row.offWorkDateBefore" placeholder="璇疯緭鍏ヤ笅鐝墦鍗″墠鏃堕棿娈�,鍗曚綅鍒嗛挓" /> + </template> + </el-table-column> + <el-table-column label="涓嬬彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" prop="offWorkDateAfter"> + <template slot-scope="scope"> + <el-input v-model="scope.row.offWorkDateAfter" placeholder="璇疯緭鍏ヤ笅鐝墦鍗″墠鏃堕棿娈�,鍗曚綅鍒嗛挓" /> + </template> + </el-table-column> + <el-table-column label="澶囨敞" prop="remark"> + <template slot-scope="scope"> + <el-input v-model="scope.row.remark" placeholder="璇疯緭鍏ュ娉�" /> + </template> + </el-table-column> + <el-table-column label="鍒涘缓鐢ㄦ埛" prop="createUserId"> + <template slot-scope="scope"> + <el-input v-model="scope.row.createUserId" placeholder="璇疯緭鍏ュ垱寤虹敤鎴�" /> + </template> + </el-table-column> + <el-table-column label="鍒涘缓鏃堕棿" prop="createTime"> + <template slot-scope="scope"> + <el-input v-model="scope.row.createTime" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" /> + </template> + </el-table-column> + <el-table-column label="鏇存柊鐢ㄦ埛" prop="updateUserId"> + <template slot-scope="scope"> + <el-input v-model="scope.row.updateUserId" placeholder="璇疯緭鍏ユ洿鏂扮敤鎴�" /> + </template> + </el-table-column> + <el-table-column label="鏇存柊鏃堕棿" prop="updateTime"> + <template slot-scope="scope"> + <el-input v-model="scope.row.updateTime" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" /> + </template> + </el-table-column> + </el-table> + + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + import dialogShow from "./dialogshow"; + export default { + mixins: [form], + components: { + dialogShow , + }, + data() { + return { + // 瀛愯〃閫変腑鏁版嵁 + checkedAttendanceClassDetail: [], + // 鑰冨嫟鐝璇︾粏淇℃伅琛ㄦ牸鏁版嵁 + attendanceClassDetailList: [], + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鑰冨嫟鐝淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString:[ + ], + // 琛ㄥ崟鏍¢獙 + rules: { + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 鑰冨嫟鐝璇︾粏淇℃伅搴忓彿 */ + rowAttendanceClassDetailIndex({ row, rowIndex }) { + row.index = rowIndex + 1; + }, + /** 鑰冨嫟鐝璇︾粏淇℃伅娣诲姞鎸夐挳鎿嶄綔 */ + handleAddAttendanceClassDetail() { + let obj = {}; + obj.shiftsName = ""; + obj.goWorkDate = ""; + obj.goWorkDateBefore = ""; + obj.goWorkDateAfter = ""; + obj.offWorkDate = ""; + obj.offWorkDateBefore = ""; + obj.offWorkDateAfter = ""; + obj.remark = ""; + obj.createUserId = ""; + obj.createTime = ""; + obj.updateUserId = ""; + obj.updateTime = ""; + this.attendanceClassDetailList.push(obj); + }, + /** 鑰冨嫟鐝璇︾粏淇℃伅鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDeleteAttendanceClassDetail() { + if (this.checkedAttendanceClassDetail.length == 0) { + this.$alert("璇峰厛閫夋嫨瑕佸垹闄ょ殑鑰冨嫟鐝璇︾粏淇℃伅鏁版嵁", "鎻愮ず", { confirmButtonText: "纭畾", }); + } else { + this.attendanceClassDetailList.splice(this.checkedAttendanceClassDetail[0].index - 1, 1); + } + }, + /** 鍗曢€夋閫変腑鏁版嵁 */ + handleAttendanceClassDetailSelectionChange(selection) { + if (selection.length > 1) { + this.$refs.attendanceClassDetail.clearSelection(); + this.$refs.attendanceClassDetail.toggleRowSelection(selection.pop()); + } else { + this.checkedAttendanceClassDetail = selection; + } + }, + // 娓叉煋鍓嶇疆澶勭悊 + beforeRender(data) { + if(data.entity.attendanceClassDetailList) { + this.attendanceClassDetailList = data.entity.attendanceClassDetailList; + } + return data + }, + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/class/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鑰冨嫟鐝淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "attendance/class/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鑰冨嫟鐝淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/class/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鑰冨嫟鐝淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + className : "", + classResponsiblePersonId : null, + classResponsiblePersonName : "", + remark : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/class/drawershow.vue b/attendance-performance-manager-ui/admin/src/views/attendance/class/drawershow.vue new file mode 100644 index 0000000000000000000000000000000000000000..cb7a8d0d181ce19128d34a6d211fb5692750300d --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/class/drawershow.vue @@ -0,0 +1,238 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-drawer + :title="title" + :visible.sync="open" + :direction="direction" + size="50%"> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鐝鍚嶇О" prop="className" v-model="form.className" placeholder="璇疯緭鍏ョ彮娆″悕绉�"/> + <Field label="鐝璐熻矗浜篒D" prop="classResponsiblePersonId" v-model="form.classResponsiblePersonId" placeholder="璇疯緭鍏ョ彮娆¤礋璐d汉ID"/> + <Field label="鐝璐熻矗浜哄悕绉�" prop="classResponsiblePersonName" v-model="form.classResponsiblePersonName" placeholder="璇疯緭鍏ョ彮娆¤礋璐d汉鍚嶇О"/> + <Field label="澶囨敞" prop="remark" v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�"/> + + </el-row> + <el-divider content-position="center">鑰冨嫟鐝璇︾粏淇℃伅淇℃伅</el-divider> + <br/> + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAddAttendanceClassDetail">娣诲姞</el-button> + </el-col> + <el-col :span="1.5"> + <el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDeleteAttendanceClassDetail">鍒犻櫎</el-button> + </el-col> + </el-row> + + <el-table :data="attendanceClassDetailList" :row-class-name="rowAttendanceClassDetailIndex" @selection-change="handleAttendanceClassDetailSelectionChange" ref="attendanceClassDetail"> + <el-table-column type="selection" width="50" align="center" /> + <el-table-column label="搴忓彿" align="center" prop="index" width="50"/> + <el-table-column label="鐝鍚嶇О" prop="shiftsName"> + <template slot-scope="scope"> + <el-input v-model="scope.row.shiftsName" placeholder="璇疯緭鍏ョ彮娆″悕绉�" /> + </template> + </el-table-column> + <el-table-column label="涓婄彮鎵撳崱鏃堕棿" prop="goWorkDate"> + <template slot-scope="scope"> + <el-input v-model="scope.row.goWorkDate" placeholder="璇疯緭鍏ヤ笂鐝墦鍗℃椂闂�" /> + </template> + </el-table-column> + <el-table-column label="涓婄彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" prop="goWorkDateBefore"> + <template slot-scope="scope"> + <el-input v-model="scope.row.goWorkDateBefore" placeholder="璇疯緭鍏ヤ笂鐝墦鍗″墠鏃堕棿娈�,鍗曚綅鍒嗛挓" /> + </template> + </el-table-column> + <el-table-column label="涓婄彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" prop="goWorkDateAfter"> + <template slot-scope="scope"> + <el-input v-model="scope.row.goWorkDateAfter" placeholder="璇疯緭鍏ヤ笂鐝墦鍗″墠鏃堕棿娈�,鍗曚綅鍒嗛挓" /> + </template> + </el-table-column> + <el-table-column label="涓嬬彮鎵撳崱鏃堕棿" prop="offWorkDate"> + <template slot-scope="scope"> + <el-input v-model="scope.row.offWorkDate" placeholder="璇疯緭鍏ヤ笅鐝墦鍗℃椂闂�" /> + </template> + </el-table-column> + <el-table-column label="涓嬬彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" prop="offWorkDateBefore"> + <template slot-scope="scope"> + <el-input v-model="scope.row.offWorkDateBefore" placeholder="璇疯緭鍏ヤ笅鐝墦鍗″墠鏃堕棿娈�,鍗曚綅鍒嗛挓" /> + </template> + </el-table-column> + <el-table-column label="涓嬬彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓" prop="offWorkDateAfter"> + <template slot-scope="scope"> + <el-input v-model="scope.row.offWorkDateAfter" placeholder="璇疯緭鍏ヤ笅鐝墦鍗″墠鏃堕棿娈�,鍗曚綅鍒嗛挓" /> + </template> + </el-table-column> + <el-table-column label="澶囨敞" prop="remark"> + <template slot-scope="scope"> + <el-input v-model="scope.row.remark" placeholder="璇疯緭鍏ュ娉�" /> + </template> + </el-table-column> + <el-table-column label="鍒涘缓鐢ㄦ埛" prop="createUserId"> + <template slot-scope="scope"> + <el-input v-model="scope.row.createUserId" placeholder="璇疯緭鍏ュ垱寤虹敤鎴�" /> + </template> + </el-table-column> + <el-table-column label="鍒涘缓鏃堕棿" prop="createTime"> + <template slot-scope="scope"> + <el-input v-model="scope.row.createTime" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" /> + </template> + </el-table-column> + <el-table-column label="鏇存柊鐢ㄦ埛" prop="updateUserId"> + <template slot-scope="scope"> + <el-input v-model="scope.row.updateUserId" placeholder="璇疯緭鍏ユ洿鏂扮敤鎴�" /> + </template> + </el-table-column> + <el-table-column label="鏇存柊鏃堕棿" prop="updateTime"> + <template slot-scope="scope"> + <el-input v-model="scope.row.updateTime" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" /> + </template> + </el-table-column> + </el-table> + + <form-buttons @submit='submitForm' noCancelBtn /> + </el-form> + + </el-drawer> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + export default { + name: "AttendanceClassDetail", + mixins: [form], + components: { + + }, + created() { + this.changePath("attendance/class") + }, + data() { + return { + // 瀛愯〃閫変腑鏁版嵁 + checkedAttendanceClassDetail: [], + // 鑰冨嫟鐝璇︾粏淇℃伅琛ㄦ牸鏁版嵁 + attendanceClassDetailList: [], + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鑰冨嫟鐝淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + direction:"rtl", + toString:[ + ], + toDate:[ + ], + // 琛ㄥ崟鏍¢獙 + rules: { + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 鑰冨嫟鐝璇︾粏淇℃伅搴忓彿 */ + rowAttendanceClassDetailIndex({ row, rowIndex }) { + row.index = rowIndex + 1; + }, + /** 鑰冨嫟鐝璇︾粏淇℃伅娣诲姞鎸夐挳鎿嶄綔 */ + handleAddAttendanceClassDetail() { + let obj = {}; + obj.shiftsName = ""; + obj.goWorkDate = ""; + obj.goWorkDateBefore = ""; + obj.goWorkDateAfter = ""; + obj.offWorkDate = ""; + obj.offWorkDateBefore = ""; + obj.offWorkDateAfter = ""; + obj.remark = ""; + obj.createUserId = ""; + obj.createTime = ""; + obj.updateUserId = ""; + obj.updateTime = ""; + this.attendanceClassDetailList.push(obj); + }, + /** 鑰冨嫟鐝璇︾粏淇℃伅鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDeleteAttendanceClassDetail() { + if (this.checkedAttendanceClassDetail.length == 0) { + this.$alert("璇峰厛閫夋嫨瑕佸垹闄ょ殑鑰冨嫟鐝璇︾粏淇℃伅鏁版嵁", "鎻愮ず", { confirmButtonText: "纭畾", }); + } else { + this.attendanceClassDetailList.splice(this.checkedAttendanceClassDetail[0].index - 1, 1); + } + }, + /** 鍗曢€夋閫変腑鏁版嵁 */ + handleAttendanceClassDetailSelectionChange(selection) { + if (selection.length > 1) { + this.$refs.attendanceClassDetail.clearSelection(); + this.$refs.attendanceClassDetail.toggleRowSelection(selection.pop()); + } else { + this.checkedAttendanceClassDetail = selection; + } + }, + // 娓叉煋鍓嶇疆澶勭悊 + beforeRender(data) { + if(data.entity.attendanceClassDetailList) { + this.attendanceClassDetailList = data.entity.attendanceClassDetailList; + } + return data + }, + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/class/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鑰冨嫟鐝淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "attendance/class/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鑰冨嫟鐝淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/class/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鑰冨嫟鐝淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + className : "", + classResponsiblePersonId : null, + classResponsiblePersonName : "", + remark : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/class/list.vue b/attendance-performance-manager-ui/admin/src/views/attendance/class/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..f9b754ae4fa22985cc7649515d64d8b3a2974c08 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/class/list.vue @@ -0,0 +1,106 @@ +<template> + <div class="page"> + <LayoutTable :data="tableData" :config="tableConfig"> + </LayoutTable> + + + <drawer-show ref="drawerform" @ok="getData" /> + </div> +</template> + +<script> + /** 琛ㄥ崟寮瑰嚭妗嗘ā寮忛渶寮曞叆 */ + import drawerShow from "./drawershow"; + import table from "@/assets/mixins/table"; + export default { + name: "AttendanceClassList", + components: { + drawerShow +}, + mixins: [table], + created() { + }, + methods: { + renderTable(tableData) { + return ( + <el-table stripe data={tableData} class="total-table"> + {this.columnSet.map((item) => this.renderTableColumn(item))} + </el-table> + ); + }, + renderTableColumn(options) { + return ( + <el-table-column + prop={options.prop} + label={options.label} + width={options.width} + > + </el-table-column> + ); + }, + /** 閲嶅啓鏂板鏂规硶 */ + toAdd(row) { + this.$refs.drawerform.add(row); + }, + /** 閲嶅啓缂栬緫鏂规硶 */ + toEdit(row) { + this.$refs.drawerform.edit(row); + }, + /** 閲嶅啓鏌ョ湅鏂规硶 */ + toView(row) { + this.$refs.drawerform.view(row); + }, + + }, + data() { + return { + /** 瀛愯〃鍒楀厓绱� */ + columnSet:[ + {prop:"shiftsId",label:"鐝ID",width:100}, + {prop:"shiftsName",label:"鐝鍚嶇О",width:100}, + {prop:"goWorkDate",label:"涓婄彮鎵撳崱鏃堕棿",width:100}, + {prop:"goWorkDateBefore",label:"涓婄彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓",width:100}, + {prop:"goWorkDateAfter",label:"涓婄彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓",width:100}, + {prop:"offWorkDate",label:"涓嬬彮鎵撳崱鏃堕棿",width:100}, + {prop:"offWorkDateBefore",label:"涓嬬彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓",width:100}, + {prop:"offWorkDateAfter",label:"涓嬬彮鎵撳崱鍓嶆椂闂存,鍗曚綅鍒嗛挓",width:100}, + {prop:"remark",label:"澶囨敞",width:100}, + ], + config: { + search: [ + ], + columns: [ + {type: "selection", width: 60}, + {type: "index",label: "搴忓彿",width: 50}, + + {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, + {label: "鑰冨嫟鐝璇︾粏淇℃伅", + width: 120, + prop: "subColumns", + 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.attendanceClassDetailList)} + <el-button type="text" slot="reference">璇︾粏</el-button> + </el-popover> + ); + }, + }, + { + label: "鎿嶄綔", + width: 240, + formatter: row => { + return ( + <table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> + ); + } + } + ] + } + }; + } + }; +</script> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/class/view.vue b/attendance-performance-manager-ui/admin/src/views/attendance/class/view.vue new file mode 100644 index 0000000000000000000000000000000000000000..e780a649b1f4ef0b158d524d80d266a8f937c88c --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/class/view.vue @@ -0,0 +1,66 @@ +<template> + <layout-view> + <el-descriptions :title="title" :column="column" :size="size" :colon="false" border> + <template slot="title"> + <i class="el-icon-tickets"></i> + 鍩烘湰璇︾粏淇℃伅 + </template> + <template slot="extra"> + <el-button type="primary" @click="$router.go(-1)" size="small">杩斿洖</el-button> + </template> + <el-descriptions-item label="鐝鍚嶇О" label-class-name="labelClass" content-class-name="contentClass"> + {{form.className}} + </el-descriptions-item> + <el-descriptions-item label="鐝璐熻矗浜篒D" label-class-name="labelClass" content-class-name="contentClass"> + {{form.classResponsiblePersonId}} + </el-descriptions-item> + <el-descriptions-item label="鐝璐熻矗浜哄悕绉�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.classResponsiblePersonName}} + </el-descriptions-item> + <el-descriptions-item label="澶囨敞" label-class-name="labelClass" content-class-name="contentClass"> + {{form.remark}} + </el-descriptions-item> + </el-descriptions> + + </layout-view> +</template> + +<script> + import view from "@/assets/mixins/view"; + export default { + mixins: [view], + components: { + }, + methods: { + + }, + data() { + return { + size:"small", + column:2, + toString:[ + ], + toArrays: [ + + ], + toDate: [ + + ] + } + } + } +</script> +<style lang="less"> + .labelClass{ + width: 200px; + } + .el-descriptions__body{ + margin-left: 5px; + margin-right: 5px; + color: #606266; + background-color: #FFF; + } + .contentClass{ + width: 600px; + } +</style> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/group/dialogshow.vue b/attendance-performance-manager-ui/admin/src/views/attendance/group/dialogshow.vue new file mode 100644 index 0000000000000000000000000000000000000000..3a4ce92628817e00e54815cbdc24856322a11268 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/group/dialogshow.vue @@ -0,0 +1,112 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鑰冨嫟缁勫悕绉�" prop="groupName" v-model="form.groupName" placeholder="璇疯緭鍏ヨ€冨嫟缁勫悕绉�"/> + <Field label="浜烘暟" prop="personNum" v-model="form.personNum" placeholder="璇疯緭鍏ヤ汉鏁�"/> + <Field label="璐熻矗浜�" prop="responsiblePerson" v-model="form.responsiblePerson" placeholder="璇疯緭鍏ヨ礋璐d汉"/> + <Field label="绫诲瀷" prop="type" v-model="form.type" type="select" :enumData="dict.type" placeholder="璇烽€夋嫨绫诲瀷"/> + <Field label="鑰冨嫟鏃堕棿" prop="attendanceTime" v-model="form.attendanceTime" type="select" :enumData="dict.attendanceTime" placeholder="璇烽€夋嫨鑰冨嫟鏃堕棿"/> + <Field label="澶囨敞" prop="remark" v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�"/> + + </el-row> + + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + import dialogShow from "./dialogshow"; + export default { + mixins: [form], + components: { + dialogShow , + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鑰冨嫟缁勪俊鎭�", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString:[ + "type", + "attendanceTime", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/group/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鑰冨嫟缁勪俊鎭�"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "attendance/group/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鑰冨嫟缁勪俊鎭�"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/group/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鑰冨嫟缁勪俊鎭缁�"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + groupName : "", + personNum : null, + responsiblePerson : "", + type : null, + attendanceTime : null, + remark : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/group/drawershow.vue b/attendance-performance-manager-ui/admin/src/views/attendance/group/drawershow.vue new file mode 100644 index 0000000000000000000000000000000000000000..924297da7b7a07a359d79751b11012f818c22950 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/group/drawershow.vue @@ -0,0 +1,120 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-drawer + :title="title" + :visible.sync="open" + :direction="direction" + size="50%"> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鑰冨嫟缁勫悕绉�" prop="groupName" v-model="form.groupName" placeholder="璇疯緭鍏ヨ€冨嫟缁勫悕绉�"/> + <Field label="浜烘暟" prop="personNum" v-model="form.personNum" placeholder="璇疯緭鍏ヤ汉鏁�"/> + <Field label="璐熻矗浜�" prop="responsiblePerson" v-model="form.responsiblePerson" placeholder="璇疯緭鍏ヨ礋璐d汉"/> + <Field label="绫诲瀷" prop="type" v-model="form.type" type="select" :enumData="dict.type" placeholder="璇烽€夋嫨绫诲瀷"/> + <Field label="鑰冨嫟鏃堕棿" prop="attendanceTime" v-model="form.attendanceTime" type="select" :enumData="dict.attendanceTime" placeholder="璇烽€夋嫨鑰冨嫟鏃堕棿"/> + <Field label="澶囨敞" prop="remark" v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�"/> + + </el-row> + + <form-buttons @submit='submitForm' noCancelBtn /> + </el-form> + + </el-drawer> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + export default { + name: "AttendanceGroupDetail", + mixins: [form], + components: { + + }, + created() { + this.changePath("attendance/group") + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鑰冨嫟缁勪俊鎭�", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + direction:"rtl", + toString:[ + "type", + "attendanceTime", + ], + toDate:[ + ], + // 琛ㄥ崟鏍¢獙 + rules: { + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/group/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鑰冨嫟缁勪俊鎭�"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "attendance/group/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鑰冨嫟缁勪俊鎭�"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/group/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鑰冨嫟缁勪俊鎭缁�"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + groupName : "", + personNum : null, + responsiblePerson : "", + type : null, + attendanceTime : null, + remark : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/group/list.vue b/attendance-performance-manager-ui/admin/src/views/attendance/group/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..6e6d7f687827bdd1cd3e61c9bd7db7cf5d1e0471 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/group/list.vue @@ -0,0 +1,66 @@ +<template> + <div class="page"> + <LayoutTable :data="tableData" :config="tableConfig"> + </LayoutTable> + + + <drawer-show ref="drawerform" @ok="getData" /> + </div> +</template> + +<script> + /** 琛ㄥ崟寮瑰嚭妗嗘ā寮忛渶寮曞叆 */ + import drawerShow from "./drawershow"; + import table from "@/assets/mixins/table"; + export default { + name: "AttendanceGroupList", + components: { + drawerShow +}, + mixins: [table], + created() { + }, + methods: { + /** 閲嶅啓鏂板鏂规硶 */ + toAdd(row) { + this.$refs.drawerform.add(row); + }, + /** 閲嶅啓缂栬緫鏂规硶 */ + toEdit(row) { + this.$refs.drawerform.edit(row); + }, + /** 閲嶅啓鏌ョ湅鏂规硶 */ + toView(row) { + this.$refs.drawerform.view(row); + }, + + }, + data() { + return { + config: { + search: [ + ], + columns: [ + {type: "selection", width: 60}, + {type: "index",label: "搴忓彿",width: 50}, + + {label: "浜烘暟", prop: "personNum",formatter: this.formatter}, + + {label: "绫诲瀷", prop: "type",formatter: this.formatter}, + + {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, + { + label: "鎿嶄綔", + width: 240, + formatter: row => { + return ( + <table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> + ); + } + } + ] + } + }; + } + }; +</script> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/group/view.vue b/attendance-performance-manager-ui/admin/src/views/attendance/group/view.vue new file mode 100644 index 0000000000000000000000000000000000000000..b4f7343d06ac41b7fa9f19cc4b97d0ac6b3e7259 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/group/view.vue @@ -0,0 +1,74 @@ +<template> + <layout-view> + <el-descriptions :title="title" :column="column" :size="size" :colon="false" border> + <template slot="title"> + <i class="el-icon-tickets"></i> + 鍩烘湰璇︾粏淇℃伅 + </template> + <template slot="extra"> + <el-button type="primary" @click="$router.go(-1)" size="small">杩斿洖</el-button> + </template> + <el-descriptions-item label="鑰冨嫟缁勫悕绉�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.groupName}} + </el-descriptions-item> + <el-descriptions-item label="浜烘暟" label-class-name="labelClass" content-class-name="contentClass"> + {{form.personNum}} + </el-descriptions-item> + <el-descriptions-item label="璐熻矗浜�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.responsiblePerson}} + </el-descriptions-item> + <el-descriptions-item label="绫诲瀷" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("type", form.type) }} + </el-descriptions-item> + <el-descriptions-item label="鑰冨嫟鏃堕棿" label-class-name="labelClass" content-class-name="contentClass"> + {{form.attendanceTime}} + </el-descriptions-item> + <el-descriptions-item label="澶囨敞" label-class-name="labelClass" content-class-name="contentClass"> + {{form.remark}} + </el-descriptions-item> + </el-descriptions> + + </layout-view> +</template> + +<script> + import view from "@/assets/mixins/view"; + export default { + mixins: [view], + components: { + }, + methods: { + + }, + data() { + return { + size:"small", + column:2, + toString:[ + "type", + "attendanceTime", + ], + toArrays: [ + + ], + toDate: [ + + ] + } + } + } +</script> +<style lang="less"> + .labelClass{ + width: 200px; + } + .el-descriptions__body{ + margin-left: 5px; + margin-right: 5px; + color: #606266; + background-color: #FFF; + } + .contentClass{ + width: 600px; + } +</style> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/leave/record/dialogshow.vue b/attendance-performance-manager-ui/admin/src/views/attendance/leave/record/dialogshow.vue new file mode 100644 index 0000000000000000000000000000000000000000..718e091d5250781dd739da728636909a5e030139 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/leave/record/dialogshow.vue @@ -0,0 +1,126 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="璇峰亣浜篿d" prop="leavePersonId" v-model="form.leavePersonId" placeholder="璇疯緭鍏ヨ鍋囦汉id"/> + <Field label="璇峰亣浜�" prop="leavePerson" v-model="form.leavePerson" placeholder="璇疯緭鍏ヨ鍋囦汉"/> + <Field label="鎵€灞為儴闂╥d" prop="deptId" v-model="form.deptId" placeholder="璇疯緭鍏ユ墍灞為儴闂╥d"/> + <Field label="鎵€灞為儴闂�" prop="deptName" v-model="form.deptName" type="textarea" placeholder="璇疯緭鍏ユ墍灞為儴闂�"/> + <Field label="鐢佃瘽鍙风爜" prop="phoneNumber" v-model="form.phoneNumber" placeholder="璇疯緭鍏ョ數璇濆彿鐮�"/> + <Field label="璇峰亣绫诲瀷" prop="leaveType" v-model="form.leaveType" type="select" :enumData="dict.leaveType" placeholder="璇烽€夋嫨璇峰亣绫诲瀷"/> + <Field label="寮€濮嬫椂闂�" prop="startTime" v-model="form.startTime" type="date" /> + <Field label="缁撴潫鏃堕棿" prop="endTime" v-model="form.endTime" type="date" /> + <Field label="鏃堕暱,鍗曚綅绉�" prop="duration" v-model="form.duration" placeholder="璇疯緭鍏ユ椂闀�,鍗曚綅绉�"/> + <Field label="璇峰亣浜嬬敱" prop="reason" v-model="form.reason" type="textarea" placeholder="璇疯緭鍏ヨ鍋囦簨鐢�"/> + <Field label="瀹℃壒璐熻矗浜篒d" prop="approverId" v-model="form.approverId" placeholder="璇疯緭鍏ュ鎵硅礋璐d汉Id"/> + <Field label="瀹℃壒璐熻矗浜�" prop="approver" v-model="form.approver" placeholder="璇疯緭鍏ュ鎵硅礋璐d汉"/> + <Field label="闄勪欢" prop="attachment" v-model="form.attachment" type="textarea" placeholder="璇疯緭鍏ラ檮浠�"/> + <Field label="闄勪欢璺緞" prop="attachmentPath" v-model="form.attachmentPath" type="textarea" placeholder="璇疯緭鍏ラ檮浠惰矾寰�"/> + <Field label="澶囨敞" prop="remark" v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�"/> + + </el-row> + + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + import dialogShow from "./dialogshow"; + export default { + mixins: [form], + components: { + dialogShow , + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "璇峰亣璁板綍淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString:[ + "leaveType", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/leave/record/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼璇峰亣璁板綍淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "attendance/leave/record/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板璇峰亣璁板綍淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/leave/record/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "璇峰亣璁板綍淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + leavePersonId : null, + leavePerson : "", + deptId : null, + deptName : "", + phoneNumber : "", + leaveType : null, + startTime : null, + endTime : null, + duration : null, + reason : "", + approverId : null, + approver : "", + attachment : "", + attachmentPath : "", + remark : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/leave/record/drawershow.vue b/attendance-performance-manager-ui/admin/src/views/attendance/leave/record/drawershow.vue new file mode 100644 index 0000000000000000000000000000000000000000..5a831b7c8cebcfd0a0431ae28c2e08dca2ade681 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/leave/record/drawershow.vue @@ -0,0 +1,136 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-drawer + :title="title" + :visible.sync="open" + :direction="direction" + size="50%"> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="璇峰亣浜篿d" prop="leavePersonId" v-model="form.leavePersonId" placeholder="璇疯緭鍏ヨ鍋囦汉id"/> + <Field label="璇峰亣浜�" prop="leavePerson" v-model="form.leavePerson" placeholder="璇疯緭鍏ヨ鍋囦汉"/> + <Field label="鎵€灞為儴闂╥d" prop="deptId" v-model="form.deptId" placeholder="璇疯緭鍏ユ墍灞為儴闂╥d"/> + <Field label="鎵€灞為儴闂�" prop="deptName" v-model="form.deptName" type="textarea" placeholder="璇疯緭鍏ユ墍灞為儴闂�"/> + <Field label="鐢佃瘽鍙风爜" prop="phoneNumber" v-model="form.phoneNumber" placeholder="璇疯緭鍏ョ數璇濆彿鐮�"/> + <Field label="璇峰亣绫诲瀷" prop="leaveType" v-model="form.leaveType" type="select" :enumData="dict.leaveType" placeholder="璇烽€夋嫨璇峰亣绫诲瀷"/> + <Field label="寮€濮嬫椂闂�" prop="startTime" v-model="form.startTime" type="date" /> + <Field label="缁撴潫鏃堕棿" prop="endTime" v-model="form.endTime" type="date" /> + <Field label="鏃堕暱,鍗曚綅绉�" prop="duration" v-model="form.duration" placeholder="璇疯緭鍏ユ椂闀�,鍗曚綅绉�"/> + <Field label="璇峰亣浜嬬敱" prop="reason" v-model="form.reason" type="textarea" placeholder="璇疯緭鍏ヨ鍋囦簨鐢�"/> + <Field label="瀹℃壒璐熻矗浜篒d" prop="approverId" v-model="form.approverId" placeholder="璇疯緭鍏ュ鎵硅礋璐d汉Id"/> + <Field label="瀹℃壒璐熻矗浜�" prop="approver" v-model="form.approver" placeholder="璇疯緭鍏ュ鎵硅礋璐d汉"/> + <Field label="闄勪欢" prop="attachment" v-model="form.attachment" type="textarea" placeholder="璇疯緭鍏ラ檮浠�"/> + <Field label="闄勪欢璺緞" prop="attachmentPath" v-model="form.attachmentPath" type="textarea" placeholder="璇疯緭鍏ラ檮浠惰矾寰�"/> + <Field label="澶囨敞" prop="remark" v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�"/> + + </el-row> + + <form-buttons @submit='submitForm' noCancelBtn /> + </el-form> + + </el-drawer> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + export default { + name: "AttendanceLeaveRecordDetail", + mixins: [form], + components: { + + }, + created() { + this.changePath("attendance/leave/record") + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "璇峰亣璁板綍淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + direction:"rtl", + toString:[ + "leaveType", + ], + toDate:[ + "startTime", + "endTime", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/leave/record/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼璇峰亣璁板綍淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "attendance/leave/record/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板璇峰亣璁板綍淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/leave/record/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "璇峰亣璁板綍淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + leavePersonId : null, + leavePerson : "", + deptId : null, + deptName : "", + phoneNumber : "", + leaveType : null, + startTime : null, + endTime : null, + duration : null, + reason : "", + approverId : null, + approver : "", + attachment : "", + attachmentPath : "", + remark : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/leave/record/list.vue b/attendance-performance-manager-ui/admin/src/views/attendance/leave/record/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..dfaa0b0ff9a252d2866de8f623c878669feb5e65 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/leave/record/list.vue @@ -0,0 +1,114 @@ +<template> + <div class="page"> + <LayoutTable :data="tableData" :config="tableConfig"> + </LayoutTable> + + + <drawer-show ref="drawerform" @ok="getData" /> + </div> +</template> + +<script> + /** 琛ㄥ崟寮瑰嚭妗嗘ā寮忛渶寮曞叆 */ + import drawerShow from "./drawershow"; + import table from "@/assets/mixins/table"; + export default { + name: "AttendanceLeaveRecordList", + components: { + drawerShow +}, + mixins: [table], + created() { + }, + methods: { + /** 閲嶅啓鏂板鏂规硶 */ + toAdd(row) { + this.$refs.drawerform.add(row); + }, + /** 閲嶅啓缂栬緫鏂规硶 */ + toEdit(row) { + this.$refs.drawerform.edit(row); + }, + /** 閲嶅啓鏌ョ湅鏂规硶 */ + toView(row) { + this.$refs.drawerform.view(row); + }, + + }, + data() { + return { + config: { + search: [ + { + name: "leavePersonId", + type: "text", + label: "璇峰亣浜篿d", + fuzzy: true + }, + { + name: "phoneNumber", + type: "text", + label: "鐢佃瘽鍙风爜", + fuzzy: true + }, + { + name: "leaveType", + type: "select", + label: "璇峰亣绫诲瀷", + fuzzy: true + }, + { + name: "startTime", + type: "date", + label: "寮€濮嬫椂闂�", + fuzzy: true + }, + { + name: "endTime", + type: "date", + label: "缁撴潫鏃堕棿", + fuzzy: true + }, + ], + columns: [ + {type: "selection", width: 60}, + {type: "index",label: "搴忓彿",width: 50}, + + {label: "璇峰亣浜篿d", prop: "leavePersonId", formatter: this.formatter}, + + {label: "璇峰亣浜�", prop: "leavePerson"}, + + {label: "鎵€灞為儴闂╥d", prop: "deptId", formatter: this.formatter}, + + {label: "鎵€灞為儴闂�", prop: "deptName"}, + + {label: "鐢佃瘽鍙风爜", prop: "phoneNumber"}, + + {label: "璇峰亣绫诲瀷", prop: "leaveType",formatter: this.formatter}, + + {label: "寮€濮嬫椂闂�", prop: "startTime", formatter: this.formatterDate}, + + {label: "缁撴潫鏃堕棿", prop: "endTime", formatter: this.formatterDate}, + + {label: "鏃堕暱,鍗曚綅绉�", prop: "duration",formatter: this.formatter}, + + {label: "瀹℃壒璐熻矗浜篒d", prop: "approverId", formatter: this.formatter}, + + {label: "瀹℃壒璐熻矗浜�", prop: "approver"}, + + {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, + { + label: "鎿嶄綔", + width: 240, + formatter: row => { + return ( + <table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> + ); + } + } + ] + } + }; + } + }; +</script> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/leave/record/view.vue b/attendance-performance-manager-ui/admin/src/views/attendance/leave/record/view.vue new file mode 100644 index 0000000000000000000000000000000000000000..d0aee6384cd4498052c76c527348f2690c010c76 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/leave/record/view.vue @@ -0,0 +1,100 @@ +<template> + <layout-view> + <el-descriptions :title="title" :column="column" :size="size" :colon="false" border> + <template slot="title"> + <i class="el-icon-tickets"></i> + 鍩烘湰璇︾粏淇℃伅 + </template> + <template slot="extra"> + <el-button type="primary" @click="$router.go(-1)" size="small">杩斿洖</el-button> + </template> + <el-descriptions-item label="璇峰亣浜篿d" label-class-name="labelClass" content-class-name="contentClass"> + {{form.leavePersonId}} + </el-descriptions-item> + <el-descriptions-item label="璇峰亣浜�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.leavePerson}} + </el-descriptions-item> + <el-descriptions-item label="鎵€灞為儴闂╥d" label-class-name="labelClass" content-class-name="contentClass"> + {{form.deptId}} + </el-descriptions-item> + <el-descriptions-item label="鎵€灞為儴闂�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.deptName}} + </el-descriptions-item> + <el-descriptions-item label="鐢佃瘽鍙风爜" label-class-name="labelClass" content-class-name="contentClass"> + {{form.phoneNumber}} + </el-descriptions-item> + <el-descriptions-item label="璇峰亣绫诲瀷" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("leaveType", form.leaveType) }} + </el-descriptions-item> + <el-descriptions-item label="寮€濮嬫椂闂�" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.startTime)}} + </el-descriptions-item> + <el-descriptions-item label="缁撴潫鏃堕棿" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.endTime)}} + </el-descriptions-item> + <el-descriptions-item label="鏃堕暱,鍗曚綅绉�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.duration}} + </el-descriptions-item> + <el-descriptions-item label="璇峰亣浜嬬敱" label-class-name="labelClass" content-class-name="contentClass"> + {{form.reason}} + </el-descriptions-item> + <el-descriptions-item label="瀹℃壒璐熻矗浜篒d" label-class-name="labelClass" content-class-name="contentClass"> + {{form.approverId}} + </el-descriptions-item> + <el-descriptions-item label="瀹℃壒璐熻矗浜�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.approver}} + </el-descriptions-item> + <el-descriptions-item label="闄勪欢" label-class-name="labelClass" content-class-name="contentClass"> + {{form.attachment}} + </el-descriptions-item> + <el-descriptions-item label="闄勪欢璺緞" label-class-name="labelClass" content-class-name="contentClass"> + {{form.attachmentPath}} + </el-descriptions-item> + <el-descriptions-item label="澶囨敞" label-class-name="labelClass" content-class-name="contentClass"> + {{form.remark}} + </el-descriptions-item> + </el-descriptions> + + </layout-view> +</template> + +<script> + import view from "@/assets/mixins/view"; + export default { + mixins: [view], + components: { + }, + methods: { + + }, + data() { + return { + size:"small", + column:2, + toString:[ + "leaveType", + ], + toArrays: [ + + ], + toDate: [ + + ] + } + } + } +</script> +<style lang="less"> + .labelClass{ + width: 200px; + } + .el-descriptions__body{ + margin-left: 5px; + margin-right: 5px; + color: #606266; + background-color: #FFF; + } + .contentClass{ + width: 600px; + } +</style> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/record/detail/dialogshow.vue b/attendance-performance-manager-ui/admin/src/views/attendance/record/detail/dialogshow.vue new file mode 100644 index 0000000000000000000000000000000000000000..cd477e1866a293702cd1782d6dd519b38ea46932 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/record/detail/dialogshow.vue @@ -0,0 +1,116 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鑰冨嫟璁板綍ID" prop="recordId" v-model="form.recordId" placeholder="璇疯緭鍏ヨ€冨嫟璁板綍ID"/> + <Field label="鐝ID" prop="shiftsId" v-model="form.shiftsId" placeholder="璇疯緭鍏ョ彮娆D"/> + <Field label="鐝鍚嶇О" prop="shiftsName" v-model="form.shiftsName" placeholder="璇疯緭鍏ョ彮娆″悕绉�"/> + <Field label="涓婄彮鎵撳崱鏃堕棿" prop="goWorkDate" v-model="form.goWorkDate" type="date" /> + <Field label="涓婄彮鎵撳崱缁撴灉" prop="goWorkResult" v-model="form.goWorkResult" type="select" :enumData="dict.goWorkResult" placeholder="璇烽€夋嫨涓婄彮鎵撳崱缁撴灉"/> + <Field label="涓嬬彮鎵撳崱鏃堕棿" prop="offWorkDate" v-model="form.offWorkDate" type="date" /> + <Field label="涓嬬彮鎵撳崱缁撴灉" prop="offWorkResult" v-model="form.offWorkResult" type="select" :enumData="dict.offWorkResult" placeholder="璇烽€夋嫨涓嬬彮鎵撳崱缁撴灉"/> + <Field label="澶囨敞" prop="remark" v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�"/> + + </el-row> + + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + import dialogShow from "./dialogshow"; + export default { + mixins: [form], + components: { + dialogShow , + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString:[ + "goWorkResult", + "offWorkResult", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/record/detail/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "attendance/record/detail/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/record/detail/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + recordId : null, + shiftsId : null, + shiftsName : "", + goWorkDate : null, + goWorkResult : null, + offWorkDate : null, + offWorkResult : null, + remark : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/record/detail/drawershow.vue b/attendance-performance-manager-ui/admin/src/views/attendance/record/detail/drawershow.vue new file mode 100644 index 0000000000000000000000000000000000000000..c9d7124d1d3bf0ba1949499892df96e4716f53be --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/record/detail/drawershow.vue @@ -0,0 +1,126 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-drawer + :title="title" + :visible.sync="open" + :direction="direction" + size="50%"> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鑰冨嫟璁板綍ID" prop="recordId" v-model="form.recordId" placeholder="璇疯緭鍏ヨ€冨嫟璁板綍ID"/> + <Field label="鐝ID" prop="shiftsId" v-model="form.shiftsId" placeholder="璇疯緭鍏ョ彮娆D"/> + <Field label="鐝鍚嶇О" prop="shiftsName" v-model="form.shiftsName" placeholder="璇疯緭鍏ョ彮娆″悕绉�"/> + <Field label="涓婄彮鎵撳崱鏃堕棿" prop="goWorkDate" v-model="form.goWorkDate" type="date" /> + <Field label="涓婄彮鎵撳崱缁撴灉" prop="goWorkResult" v-model="form.goWorkResult" type="select" :enumData="dict.goWorkResult" placeholder="璇烽€夋嫨涓婄彮鎵撳崱缁撴灉"/> + <Field label="涓嬬彮鎵撳崱鏃堕棿" prop="offWorkDate" v-model="form.offWorkDate" type="date" /> + <Field label="涓嬬彮鎵撳崱缁撴灉" prop="offWorkResult" v-model="form.offWorkResult" type="select" :enumData="dict.offWorkResult" placeholder="璇烽€夋嫨涓嬬彮鎵撳崱缁撴灉"/> + <Field label="澶囨敞" prop="remark" v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�"/> + + </el-row> + + <form-buttons @submit='submitForm' noCancelBtn /> + </el-form> + + </el-drawer> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + export default { + name: "AttendanceRecordDetailDetail", + mixins: [form], + components: { + + }, + created() { + this.changePath("attendance/record/detail") + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + direction:"rtl", + toString:[ + "goWorkResult", + "offWorkResult", + ], + toDate:[ + "goWorkDate", + "offWorkDate", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/record/detail/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "attendance/record/detail/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/record/detail/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + recordId : null, + shiftsId : null, + shiftsName : "", + goWorkDate : null, + goWorkResult : null, + offWorkDate : null, + offWorkResult : null, + remark : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/record/detail/list.vue b/attendance-performance-manager-ui/admin/src/views/attendance/record/detail/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..32515b4d2b201d4026c70abce69e20bfc887dc77 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/record/detail/list.vue @@ -0,0 +1,66 @@ +<template> + <div class="page"> + <LayoutTable :data="tableData" :config="tableConfig"> + </LayoutTable> + + + <drawer-show ref="drawerform" @ok="getData" /> + </div> +</template> + +<script> + /** 琛ㄥ崟寮瑰嚭妗嗘ā寮忛渶寮曞叆 */ + import drawerShow from "./drawershow"; + import table from "@/assets/mixins/table"; + export default { + name: "AttendanceRecordDetailList", + components: { + drawerShow +}, + mixins: [table], + created() { + }, + methods: { + /** 閲嶅啓鏂板鏂规硶 */ + toAdd(row) { + this.$refs.drawerform.add(row); + }, + /** 閲嶅啓缂栬緫鏂规硶 */ + toEdit(row) { + this.$refs.drawerform.edit(row); + }, + /** 閲嶅啓鏌ョ湅鏂规硶 */ + toView(row) { + this.$refs.drawerform.view(row); + }, + + }, + data() { + return { + config: { + search: [ + ], + columns: [ + {type: "selection", width: 60}, + {type: "index",label: "搴忓彿",width: 50}, + + {label: "涓婄彮鎵撳崱鏃堕棿", prop: "goWorkDate", formatter: this.formatterDate}, + + {label: "涓嬬彮鎵撳崱鏃堕棿", prop: "offWorkDate", formatter: this.formatterDate}, + + {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, + { + label: "鎿嶄綔", + width: 240, + formatter: row => { + return ( + <table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> + ); + } + } + ] + } + }; + } + }; +</script> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/record/detail/view.vue b/attendance-performance-manager-ui/admin/src/views/attendance/record/detail/view.vue new file mode 100644 index 0000000000000000000000000000000000000000..8aefdc7da3544c374786542ee4bf0283182d2cb2 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/record/detail/view.vue @@ -0,0 +1,80 @@ +<template> + <layout-view> + <el-descriptions :title="title" :column="column" :size="size" :colon="false" border> + <template slot="title"> + <i class="el-icon-tickets"></i> + 鍩烘湰璇︾粏淇℃伅 + </template> + <template slot="extra"> + <el-button type="primary" @click="$router.go(-1)" size="small">杩斿洖</el-button> + </template> + <el-descriptions-item label="鑰冨嫟璁板綍ID" label-class-name="labelClass" content-class-name="contentClass"> + {{form.recordId}} + </el-descriptions-item> + <el-descriptions-item label="鐝ID" label-class-name="labelClass" content-class-name="contentClass"> + {{form.shiftsId}} + </el-descriptions-item> + <el-descriptions-item label="鐝鍚嶇О" label-class-name="labelClass" content-class-name="contentClass"> + {{form.shiftsName}} + </el-descriptions-item> + <el-descriptions-item label="涓婄彮鎵撳崱鏃堕棿" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.goWorkDate)}} + </el-descriptions-item> + <el-descriptions-item label="涓婄彮鎵撳崱缁撴灉" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("goWorkResult", form.goWorkResult) }} + </el-descriptions-item> + <el-descriptions-item label="涓嬬彮鎵撳崱鏃堕棿" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.offWorkDate)}} + </el-descriptions-item> + <el-descriptions-item label="涓嬬彮鎵撳崱缁撴灉" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("offWorkResult", form.offWorkResult) }} + </el-descriptions-item> + <el-descriptions-item label="澶囨敞" label-class-name="labelClass" content-class-name="contentClass"> + {{form.remark}} + </el-descriptions-item> + </el-descriptions> + + </layout-view> +</template> + +<script> + import view from "@/assets/mixins/view"; + export default { + mixins: [view], + components: { + }, + methods: { + + }, + data() { + return { + size:"small", + column:2, + toString:[ + "goWorkResult", + "offWorkResult", + ], + toArrays: [ + + ], + toDate: [ + + ] + } + } + } +</script> +<style lang="less"> + .labelClass{ + width: 200px; + } + .el-descriptions__body{ + margin-left: 5px; + margin-right: 5px; + color: #606266; + background-color: #FFF; + } + .contentClass{ + width: 600px; + } +</style> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/record/dialogshow.vue b/attendance-performance-manager-ui/admin/src/views/attendance/record/dialogshow.vue new file mode 100644 index 0000000000000000000000000000000000000000..e020af295bd612513832a56f13d6430feba91b00 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/record/dialogshow.vue @@ -0,0 +1,246 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍛樺伐ID" prop="staffId" v-model="form.staffId" placeholder="璇疯緭鍏ュ憳宸D"/> + <Field label="鍛樺伐濮撳悕" prop="staffName" v-model="form.staffName" placeholder="璇疯緭鍏ュ憳宸ュ鍚�"/> + <Field label="宸ュ彿" prop="workNum" v-model="form.workNum" placeholder="璇疯緭鍏ュ伐鍙�"/> + <Field label="鎵€灞為儴闂�" prop="deptId" v-model="form.deptId" placeholder="璇疯緭鍏ユ墍灞為儴闂�"/> + <Field label="鎵€灞為儴闂ㄥ悕绉�" prop="deptName" v-model="form.deptName" placeholder="璇疯緭鍏ユ墍灞為儴闂ㄥ悕绉�"/> + <Field label="鑱屼綅ID" prop="positionId" v-model="form.positionId" placeholder="璇疯緭鍏ヨ亴浣岻D"/> + <Field label="鑱屼綅鍚嶇О" prop="positionName" v-model="form.positionName" placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�"/> + <Field label="鎵€灞炶€冨嫟缁処D" prop="attendanceGroupId" v-model="form.attendanceGroupId" placeholder="璇疯緭鍏ユ墍灞炶€冨嫟缁処D"/> + <Field label="鎵€灞炶€冨嫟缁勫悕绉�" prop="attendanceGroupName" v-model="form.attendanceGroupName" placeholder="璇疯緭鍏ユ墍灞炶€冨嫟缁勫悕绉�"/> + <Field label="鐝ID" prop="shiftsId" v-model="form.shiftsId" placeholder="璇疯緭鍏ョ彮娆D"/> + <Field label="鐝鍚嶇О" prop="shiftsName" v-model="form.shiftsName" placeholder="璇疯緭鍏ョ彮娆″悕绉�"/> + <Field label="鎵撳崱鏃ユ湡" prop="attendanceDate" v-model="form.attendanceDate" type="date" /> + <Field label="澶囨敞" prop="remark" v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�"/> + + </el-row> + <el-divider content-position="center">鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅淇℃伅</el-divider> + <br/> + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAddAttendanceRecordDetail">娣诲姞</el-button> + </el-col> + <el-col :span="1.5"> + <el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDeleteAttendanceRecordDetail">鍒犻櫎</el-button> + </el-col> + </el-row> + + <el-table :data="attendanceRecordDetailList" :row-class-name="rowAttendanceRecordDetailIndex" @selection-change="handleAttendanceRecordDetailSelectionChange" ref="attendanceRecordDetail"> + <el-table-column type="selection" width="50" align="center" /> + <el-table-column label="搴忓彿" align="center" prop="index" width="50"/> + <el-table-column label="鐝ID" prop="shiftsId"> + <template slot-scope="scope"> + <el-input v-model="scope.row.shiftsId" placeholder="璇疯緭鍏ョ彮娆D" /> + </template> + </el-table-column> + <el-table-column label="鐝鍚嶇О" prop="shiftsName"> + <template slot-scope="scope"> + <el-input v-model="scope.row.shiftsName" placeholder="璇疯緭鍏ョ彮娆″悕绉�" /> + </template> + </el-table-column> + <el-table-column label="涓婄彮鎵撳崱鏃堕棿" prop="goWorkDate"> + <template slot-scope="scope"> + <el-input v-model="scope.row.goWorkDate" placeholder="璇疯緭鍏ヤ笂鐝墦鍗℃椂闂�" /> + </template> + </el-table-column> + <el-table-column label="涓婄彮鎵撳崱缁撴灉" prop="goWorkResult"> + <template slot-scope="scope"> + <el-input v-model="scope.row.goWorkResult" placeholder="璇疯緭鍏ヤ笂鐝墦鍗$粨鏋�" /> + </template> + </el-table-column> + <el-table-column label="涓嬬彮鎵撳崱鏃堕棿" prop="offWorkDate"> + <template slot-scope="scope"> + <el-input v-model="scope.row.offWorkDate" placeholder="璇疯緭鍏ヤ笅鐝墦鍗℃椂闂�" /> + </template> + </el-table-column> + <el-table-column label="涓嬬彮鎵撳崱缁撴灉" prop="offWorkResult"> + <template slot-scope="scope"> + <el-input v-model="scope.row.offWorkResult" placeholder="璇疯緭鍏ヤ笅鐝墦鍗$粨鏋�" /> + </template> + </el-table-column> + <el-table-column label="澶囨敞" prop="remark"> + <template slot-scope="scope"> + <el-input v-model="scope.row.remark" placeholder="璇疯緭鍏ュ娉�" /> + </template> + </el-table-column> + <el-table-column label="鍒涘缓鐢ㄦ埛" prop="createUserId"> + <template slot-scope="scope"> + <el-input v-model="scope.row.createUserId" placeholder="璇疯緭鍏ュ垱寤虹敤鎴�" /> + </template> + </el-table-column> + <el-table-column label="鍒涘缓鏃堕棿" prop="createTime"> + <template slot-scope="scope"> + <el-input v-model="scope.row.createTime" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" /> + </template> + </el-table-column> + <el-table-column label="鏇存柊鐢ㄦ埛" prop="updateUserId"> + <template slot-scope="scope"> + <el-input v-model="scope.row.updateUserId" placeholder="璇疯緭鍏ユ洿鏂扮敤鎴�" /> + </template> + </el-table-column> + <el-table-column label="鏇存柊鏃堕棿" prop="updateTime"> + <template slot-scope="scope"> + <el-input v-model="scope.row.updateTime" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" /> + </template> + </el-table-column> + </el-table> + + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + import dialogShow from "./dialogshow"; + export default { + mixins: [form], + components: { + dialogShow , + }, + data() { + return { + // 瀛愯〃閫変腑鏁版嵁 + checkedAttendanceRecordDetail: [], + // 鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅琛ㄦ牸鏁版嵁 + attendanceRecordDetailList: [], + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鑰冨嫟鎵撳崱璁板綍淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString:[ + ], + // 琛ㄥ崟鏍¢獙 + rules: { + staffName: [ + {required: true,message: "璇疯緭鍏ュ憳宸ュ鍚�", trigger: "blur" }, + {max: 64,message: "鏈€澶氬彧鑳藉綍鍏�64涓瓧绗�",trigger: "blur",}, + ], + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅搴忓彿 */ + rowAttendanceRecordDetailIndex({ row, rowIndex }) { + row.index = rowIndex + 1; + }, + /** 鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅娣诲姞鎸夐挳鎿嶄綔 */ + handleAddAttendanceRecordDetail() { + let obj = {}; + obj.shiftsId = ""; + obj.shiftsName = ""; + obj.goWorkDate = ""; + obj.goWorkResult = ""; + obj.offWorkDate = ""; + obj.offWorkResult = ""; + obj.remark = ""; + obj.createUserId = ""; + obj.createTime = ""; + obj.updateUserId = ""; + obj.updateTime = ""; + this.attendanceRecordDetailList.push(obj); + }, + /** 鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDeleteAttendanceRecordDetail() { + if (this.checkedAttendanceRecordDetail.length == 0) { + this.$alert("璇峰厛閫夋嫨瑕佸垹闄ょ殑鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅鏁版嵁", "鎻愮ず", { confirmButtonText: "纭畾", }); + } else { + this.attendanceRecordDetailList.splice(this.checkedAttendanceRecordDetail[0].index - 1, 1); + } + }, + /** 鍗曢€夋閫変腑鏁版嵁 */ + handleAttendanceRecordDetailSelectionChange(selection) { + if (selection.length > 1) { + this.$refs.attendanceRecordDetail.clearSelection(); + this.$refs.attendanceRecordDetail.toggleRowSelection(selection.pop()); + } else { + this.checkedAttendanceRecordDetail = selection; + } + }, + // 娓叉煋鍓嶇疆澶勭悊 + beforeRender(data) { + if(data.entity.attendanceRecordDetailList) { + this.attendanceRecordDetailList = data.entity.attendanceRecordDetailList; + } + return data + }, + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/record/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鑰冨嫟鎵撳崱璁板綍淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "attendance/record/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鑰冨嫟鎵撳崱璁板綍淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/record/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鑰冨嫟鎵撳崱璁板綍淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + staffId : null, + staffName : "", + workNum : "", + deptId : null, + deptName : "", + positionId : null, + positionName : "", + attendanceGroupId : null, + attendanceGroupName : "", + shiftsId : null, + shiftsName : "", + attendanceDate : null, + remark : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/record/drawershow.vue b/attendance-performance-manager-ui/admin/src/views/attendance/record/drawershow.vue new file mode 100644 index 0000000000000000000000000000000000000000..35debe1684acf1d743f02a0714fe07500b2cee3b --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/record/drawershow.vue @@ -0,0 +1,255 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-drawer + :title="title" + :visible.sync="open" + :direction="direction" + size="50%"> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍛樺伐ID" prop="staffId" v-model="form.staffId" placeholder="璇疯緭鍏ュ憳宸D"/> + <Field label="鍛樺伐濮撳悕" prop="staffName" v-model="form.staffName" placeholder="璇疯緭鍏ュ憳宸ュ鍚�"/> + <Field label="宸ュ彿" prop="workNum" v-model="form.workNum" placeholder="璇疯緭鍏ュ伐鍙�"/> + <Field label="鎵€灞為儴闂�" prop="deptId" v-model="form.deptId" placeholder="璇疯緭鍏ユ墍灞為儴闂�"/> + <Field label="鎵€灞為儴闂ㄥ悕绉�" prop="deptName" v-model="form.deptName" placeholder="璇疯緭鍏ユ墍灞為儴闂ㄥ悕绉�"/> + <Field label="鑱屼綅ID" prop="positionId" v-model="form.positionId" placeholder="璇疯緭鍏ヨ亴浣岻D"/> + <Field label="鑱屼綅鍚嶇О" prop="positionName" v-model="form.positionName" placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�"/> + <Field label="鎵€灞炶€冨嫟缁処D" prop="attendanceGroupId" v-model="form.attendanceGroupId" placeholder="璇疯緭鍏ユ墍灞炶€冨嫟缁処D"/> + <Field label="鎵€灞炶€冨嫟缁勫悕绉�" prop="attendanceGroupName" v-model="form.attendanceGroupName" placeholder="璇疯緭鍏ユ墍灞炶€冨嫟缁勫悕绉�"/> + <Field label="鐝ID" prop="shiftsId" v-model="form.shiftsId" placeholder="璇疯緭鍏ョ彮娆D"/> + <Field label="鐝鍚嶇О" prop="shiftsName" v-model="form.shiftsName" placeholder="璇疯緭鍏ョ彮娆″悕绉�"/> + <Field label="鎵撳崱鏃ユ湡" prop="attendanceDate" v-model="form.attendanceDate" type="date" /> + <Field label="澶囨敞" prop="remark" v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�"/> + + </el-row> + <el-divider content-position="center">鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅淇℃伅</el-divider> + <br/> + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAddAttendanceRecordDetail">娣诲姞</el-button> + </el-col> + <el-col :span="1.5"> + <el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDeleteAttendanceRecordDetail">鍒犻櫎</el-button> + </el-col> + </el-row> + + <el-table :data="attendanceRecordDetailList" :row-class-name="rowAttendanceRecordDetailIndex" @selection-change="handleAttendanceRecordDetailSelectionChange" ref="attendanceRecordDetail"> + <el-table-column type="selection" width="50" align="center" /> + <el-table-column label="搴忓彿" align="center" prop="index" width="50"/> + <el-table-column label="鐝ID" prop="shiftsId"> + <template slot-scope="scope"> + <el-input v-model="scope.row.shiftsId" placeholder="璇疯緭鍏ョ彮娆D" /> + </template> + </el-table-column> + <el-table-column label="鐝鍚嶇О" prop="shiftsName"> + <template slot-scope="scope"> + <el-input v-model="scope.row.shiftsName" placeholder="璇疯緭鍏ョ彮娆″悕绉�" /> + </template> + </el-table-column> + <el-table-column label="涓婄彮鎵撳崱鏃堕棿" prop="goWorkDate"> + <template slot-scope="scope"> + <el-input v-model="scope.row.goWorkDate" placeholder="璇疯緭鍏ヤ笂鐝墦鍗℃椂闂�" /> + </template> + </el-table-column> + <el-table-column label="涓婄彮鎵撳崱缁撴灉" prop="goWorkResult"> + <template slot-scope="scope"> + <el-input v-model="scope.row.goWorkResult" placeholder="璇疯緭鍏ヤ笂鐝墦鍗$粨鏋�" /> + </template> + </el-table-column> + <el-table-column label="涓嬬彮鎵撳崱鏃堕棿" prop="offWorkDate"> + <template slot-scope="scope"> + <el-input v-model="scope.row.offWorkDate" placeholder="璇疯緭鍏ヤ笅鐝墦鍗℃椂闂�" /> + </template> + </el-table-column> + <el-table-column label="涓嬬彮鎵撳崱缁撴灉" prop="offWorkResult"> + <template slot-scope="scope"> + <el-input v-model="scope.row.offWorkResult" placeholder="璇疯緭鍏ヤ笅鐝墦鍗$粨鏋�" /> + </template> + </el-table-column> + <el-table-column label="澶囨敞" prop="remark"> + <template slot-scope="scope"> + <el-input v-model="scope.row.remark" placeholder="璇疯緭鍏ュ娉�" /> + </template> + </el-table-column> + <el-table-column label="鍒涘缓鐢ㄦ埛" prop="createUserId"> + <template slot-scope="scope"> + <el-input v-model="scope.row.createUserId" placeholder="璇疯緭鍏ュ垱寤虹敤鎴�" /> + </template> + </el-table-column> + <el-table-column label="鍒涘缓鏃堕棿" prop="createTime"> + <template slot-scope="scope"> + <el-input v-model="scope.row.createTime" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" /> + </template> + </el-table-column> + <el-table-column label="鏇存柊鐢ㄦ埛" prop="updateUserId"> + <template slot-scope="scope"> + <el-input v-model="scope.row.updateUserId" placeholder="璇疯緭鍏ユ洿鏂扮敤鎴�" /> + </template> + </el-table-column> + <el-table-column label="鏇存柊鏃堕棿" prop="updateTime"> + <template slot-scope="scope"> + <el-input v-model="scope.row.updateTime" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" /> + </template> + </el-table-column> + </el-table> + + <form-buttons @submit='submitForm' noCancelBtn /> + </el-form> + + </el-drawer> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + export default { + name: "AttendanceRecordDetail", + mixins: [form], + components: { + + }, + created() { + this.changePath("attendance/record") + }, + data() { + return { + // 瀛愯〃閫変腑鏁版嵁 + checkedAttendanceRecordDetail: [], + // 鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅琛ㄦ牸鏁版嵁 + attendanceRecordDetailList: [], + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鑰冨嫟鎵撳崱璁板綍淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + direction:"rtl", + toString:[ + ], + toDate:[ + "attendanceDate", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + staffName: [ + {required: true,message: "璇疯緭鍏ュ憳宸ュ鍚�", trigger: "blur" }, + {max: 64,message: "鏈€澶氬彧鑳藉綍鍏�64涓瓧绗�",trigger: "blur",}, + ], + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅搴忓彿 */ + rowAttendanceRecordDetailIndex({ row, rowIndex }) { + row.index = rowIndex + 1; + }, + /** 鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅娣诲姞鎸夐挳鎿嶄綔 */ + handleAddAttendanceRecordDetail() { + let obj = {}; + obj.shiftsId = ""; + obj.shiftsName = ""; + obj.goWorkDate = ""; + obj.goWorkResult = ""; + obj.offWorkDate = ""; + obj.offWorkResult = ""; + obj.remark = ""; + obj.createUserId = ""; + obj.createTime = ""; + obj.updateUserId = ""; + obj.updateTime = ""; + this.attendanceRecordDetailList.push(obj); + }, + /** 鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDeleteAttendanceRecordDetail() { + if (this.checkedAttendanceRecordDetail.length == 0) { + this.$alert("璇峰厛閫夋嫨瑕佸垹闄ょ殑鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅鏁版嵁", "鎻愮ず", { confirmButtonText: "纭畾", }); + } else { + this.attendanceRecordDetailList.splice(this.checkedAttendanceRecordDetail[0].index - 1, 1); + } + }, + /** 鍗曢€夋閫変腑鏁版嵁 */ + handleAttendanceRecordDetailSelectionChange(selection) { + if (selection.length > 1) { + this.$refs.attendanceRecordDetail.clearSelection(); + this.$refs.attendanceRecordDetail.toggleRowSelection(selection.pop()); + } else { + this.checkedAttendanceRecordDetail = selection; + } + }, + // 娓叉煋鍓嶇疆澶勭悊 + beforeRender(data) { + if(data.entity.attendanceRecordDetailList) { + this.attendanceRecordDetailList = data.entity.attendanceRecordDetailList; + } + return data + }, + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/record/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鑰冨嫟鎵撳崱璁板綍淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "attendance/record/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鑰冨嫟鎵撳崱璁板綍淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/record/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鑰冨嫟鎵撳崱璁板綍淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + staffId : null, + staffName : "", + workNum : "", + deptId : null, + deptName : "", + positionId : null, + positionName : "", + attendanceGroupId : null, + attendanceGroupName : "", + shiftsId : null, + shiftsName : "", + attendanceDate : null, + remark : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> 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 new file mode 100644 index 0000000000000000000000000000000000000000..995961bf7e6a4f9f9d9d3dceee9d880aa17b15e7 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/record/list.vue @@ -0,0 +1,115 @@ +<template> + <div class="page"> + <LayoutTable :data="tableData" :config="tableConfig"> + </LayoutTable> + + + <drawer-show ref="drawerform" @ok="getData" /> + </div> +</template> + +<script> + /** 琛ㄥ崟寮瑰嚭妗嗘ā寮忛渶寮曞叆 */ + import drawerShow from "./drawershow"; + import table from "@/assets/mixins/table"; + export default { + name: "AttendanceRecordList", + components: { + drawerShow +}, + mixins: [table], + created() { + }, + methods: { + renderTable(tableData) { + return ( + <el-table stripe data={tableData} class="total-table"> + {this.columnSet.map((item) => this.renderTableColumn(item))} + </el-table> + ); + }, + renderTableColumn(options) { + return ( + <el-table-column + prop={options.prop} + label={options.label} + width={options.width} + > + </el-table-column> + ); + }, + /** 閲嶅啓鏂板鏂规硶 */ + toAdd(row) { + this.$refs.drawerform.add(row); + }, + /** 閲嶅啓缂栬緫鏂规硶 */ + toEdit(row) { + this.$refs.drawerform.edit(row); + }, + /** 閲嶅啓鏌ョ湅鏂规硶 */ + toView(row) { + this.$refs.drawerform.view(row); + }, + + }, + data() { + return { + /** 瀛愯〃鍒楀厓绱� */ + columnSet:[ + {prop:"recordId",label:"鑰冨嫟璁板綍ID",width:100}, + {prop:"shiftsId",label:"鐝ID",width:100}, + {prop:"shiftsName",label:"鐝鍚嶇О",width:100}, + {prop:"goWorkDate",label:"涓婄彮鎵撳崱鏃堕棿",width:100}, + {prop:"goWorkResult",label:"涓婄彮鎵撳崱缁撴灉",width:100}, + {prop:"offWorkDate",label:"涓嬬彮鎵撳崱鏃堕棿",width:100}, + {prop:"offWorkResult",label:"涓嬬彮鎵撳崱缁撴灉",width:100}, + {prop:"remark",label:"澶囨敞",width:100}, + ], + config: { + search: [ + { + name: "staffName", + type: "text", + label: "鍛樺伐濮撳悕", + fuzzy: true + }, + ], + columns: [ + {type: "selection", width: 60}, + {type: "index",label: "搴忓彿",width: 50}, + + {label: "鍛樺伐濮撳悕", prop: "staffName"}, + + {label: "鎵撳崱鏃ユ湡", prop: "attendanceDate", formatter: this.formatterDate}, + + {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, + {label: "鑰冨嫟鎵撳崱璁板綍璇︾粏淇℃伅", + width: 120, + prop: "subColumns", + 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, + formatter: row => { + return ( + <table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> + ); + } + } + ] + } + }; + } + }; +</script> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/record/view.vue b/attendance-performance-manager-ui/admin/src/views/attendance/record/view.vue new file mode 100644 index 0000000000000000000000000000000000000000..543180c9e555b480322d0a291220e13f279077d2 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/record/view.vue @@ -0,0 +1,93 @@ +<template> + <layout-view> + <el-descriptions :title="title" :column="column" :size="size" :colon="false" border> + <template slot="title"> + <i class="el-icon-tickets"></i> + 鍩烘湰璇︾粏淇℃伅 + </template> + <template slot="extra"> + <el-button type="primary" @click="$router.go(-1)" size="small">杩斿洖</el-button> + </template> + <el-descriptions-item label="鍛樺伐ID" label-class-name="labelClass" content-class-name="contentClass"> + {{form.staffId}} + </el-descriptions-item> + <el-descriptions-item label="鍛樺伐濮撳悕" label-class-name="labelClass" content-class-name="contentClass"> + {{form.staffName}} + </el-descriptions-item> + <el-descriptions-item label="宸ュ彿" label-class-name="labelClass" content-class-name="contentClass"> + {{form.workNum}} + </el-descriptions-item> + <el-descriptions-item label="鎵€灞為儴闂�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.deptId}} + </el-descriptions-item> + <el-descriptions-item label="鎵€灞為儴闂ㄥ悕绉�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.deptName}} + </el-descriptions-item> + <el-descriptions-item label="鑱屼綅ID" label-class-name="labelClass" content-class-name="contentClass"> + {{form.positionId}} + </el-descriptions-item> + <el-descriptions-item label="鑱屼綅鍚嶇О" label-class-name="labelClass" content-class-name="contentClass"> + {{form.positionName}} + </el-descriptions-item> + <el-descriptions-item label="鎵€灞炶€冨嫟缁処D" label-class-name="labelClass" content-class-name="contentClass"> + {{form.attendanceGroupId}} + </el-descriptions-item> + <el-descriptions-item label="鎵€灞炶€冨嫟缁勫悕绉�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.attendanceGroupName}} + </el-descriptions-item> + <el-descriptions-item label="鐝ID" label-class-name="labelClass" content-class-name="contentClass"> + {{form.shiftsId}} + </el-descriptions-item> + <el-descriptions-item label="鐝鍚嶇О" label-class-name="labelClass" content-class-name="contentClass"> + {{form.shiftsName}} + </el-descriptions-item> + <el-descriptions-item label="鎵撳崱鏃ユ湡" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.attendanceDate)}} + </el-descriptions-item> + <el-descriptions-item label="澶囨敞" label-class-name="labelClass" content-class-name="contentClass"> + {{form.remark}} + </el-descriptions-item> + </el-descriptions> + + </layout-view> +</template> + +<script> + import view from "@/assets/mixins/view"; + export default { + mixins: [view], + components: { + }, + methods: { + + }, + data() { + return { + size:"small", + column:2, + toString:[ + ], + toArrays: [ + + ], + toDate: [ + + ] + } + } + } +</script> +<style lang="less"> + .labelClass{ + width: 200px; + } + .el-descriptions__body{ + margin-left: 5px; + margin-right: 5px; + color: #606266; + background-color: #FFF; + } + .contentClass{ + width: 600px; + } +</style> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/dialogshow.vue b/attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/dialogshow.vue new file mode 100644 index 0000000000000000000000000000000000000000..34a8fa7c619b98d7a5a44e2e7710697b68de5b3e --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/dialogshow.vue @@ -0,0 +1,117 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍛樺伐id" prop="staffId" v-model="form.staffId" placeholder="璇疯緭鍏ュ憳宸d"/> + <Field label="鍛樺伐濮撳悕" prop="staffName" v-model="form.staffName" type="textarea" placeholder="璇疯緭鍏ュ憳宸ュ鍚�"/> + <Field label="閮ㄩ棬id" prop="deptId" v-model="form.deptId" placeholder="璇疯緭鍏ラ儴闂╥d"/> + <Field label="閮ㄩ棬鍚嶇О" prop="deptName" v-model="form.deptName" type="textarea" placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�"/> + <Field label="鍏ヨ亴鏃堕棿" prop="entryTime" v-model="form.entryTime" type="date" /> + <Field label="浜嬪亣" prop="personalLeaveDays" v-model="form.personalLeaveDays" placeholder="璇疯緭鍏ヤ簨鍋�"/> + <Field label="璋冧紤" prop="compensatedLeaveDays" v-model="form.compensatedLeaveDays" placeholder="璇疯緭鍏ヨ皟浼�"/> + <Field label="鐥呭亣" prop="sickLeaveDays" v-model="form.sickLeaveDays" placeholder="璇疯緭鍏ョ梾鍋�"/> + <Field label="骞村亣" prop="annualLeaveDays" v-model="form.annualLeaveDays" placeholder="璇疯緭鍏ュ勾鍋�"/> + <Field label="濠氬亣" prop="marriageLeaveDays" v-model="form.marriageLeaveDays" placeholder="璇疯緭鍏ュ鍋�"/> + <Field label="澶囨敞" prop="remark" v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�"/> + + </el-row> + + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + import dialogShow from "./dialogshow"; + export default { + mixins: [form], + components: { + dialogShow , + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鍛樺伐鍋囨湡浣欓淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString:[ + ], + // 琛ㄥ崟鏍¢獙 + rules: { + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/vacation/balance/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鍛樺伐鍋囨湡浣欓淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "attendance/vacation/balance/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鍛樺伐鍋囨湡浣欓淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/vacation/balance/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鍛樺伐鍋囨湡浣欓淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + staffId : null, + staffName : "", + deptId : null, + deptName : "", + entryTime : null, + personalLeaveDays : BigDecimal.valueOf(0), + compensatedLeaveDays : BigDecimal.valueOf(0), + sickLeaveDays : BigDecimal.valueOf(0), + annualLeaveDays : BigDecimal.valueOf(0), + marriageLeaveDays : BigDecimal.valueOf(0), + remark : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/drawershow.vue b/attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/drawershow.vue new file mode 100644 index 0000000000000000000000000000000000000000..529939427033a83403f0c9ffe6c9389a0d140174 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/drawershow.vue @@ -0,0 +1,126 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-drawer + :title="title" + :visible.sync="open" + :direction="direction" + size="50%"> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍛樺伐id" prop="staffId" v-model="form.staffId" placeholder="璇疯緭鍏ュ憳宸d"/> + <Field label="鍛樺伐濮撳悕" prop="staffName" v-model="form.staffName" type="textarea" placeholder="璇疯緭鍏ュ憳宸ュ鍚�"/> + <Field label="閮ㄩ棬id" prop="deptId" v-model="form.deptId" placeholder="璇疯緭鍏ラ儴闂╥d"/> + <Field label="閮ㄩ棬鍚嶇О" prop="deptName" v-model="form.deptName" type="textarea" placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�"/> + <Field label="鍏ヨ亴鏃堕棿" prop="entryTime" v-model="form.entryTime" type="date" /> + <Field label="浜嬪亣" prop="personalLeaveDays" v-model="form.personalLeaveDays" placeholder="璇疯緭鍏ヤ簨鍋�"/> + <Field label="璋冧紤" prop="compensatedLeaveDays" v-model="form.compensatedLeaveDays" placeholder="璇疯緭鍏ヨ皟浼�"/> + <Field label="鐥呭亣" prop="sickLeaveDays" v-model="form.sickLeaveDays" placeholder="璇疯緭鍏ョ梾鍋�"/> + <Field label="骞村亣" prop="annualLeaveDays" v-model="form.annualLeaveDays" placeholder="璇疯緭鍏ュ勾鍋�"/> + <Field label="濠氬亣" prop="marriageLeaveDays" v-model="form.marriageLeaveDays" placeholder="璇疯緭鍏ュ鍋�"/> + <Field label="澶囨敞" prop="remark" v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�"/> + + </el-row> + + <form-buttons @submit='submitForm' noCancelBtn /> + </el-form> + + </el-drawer> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + export default { + name: "AttendanceVacationBalanceDetail", + mixins: [form], + components: { + + }, + created() { + this.changePath("attendance/vacation/balance") + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鍛樺伐鍋囨湡浣欓淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + direction:"rtl", + toString:[ + ], + toDate:[ + "entryTime", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/vacation/balance/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鍛樺伐鍋囨湡浣欓淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "attendance/vacation/balance/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鍛樺伐鍋囨湡浣欓淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="attendance/vacation/balance/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鍛樺伐鍋囨湡浣欓淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + staffId : null, + staffName : "", + deptId : null, + deptName : "", + entryTime : null, + personalLeaveDays : BigDecimal.valueOf(0), + compensatedLeaveDays : BigDecimal.valueOf(0), + sickLeaveDays : BigDecimal.valueOf(0), + annualLeaveDays : BigDecimal.valueOf(0), + marriageLeaveDays : BigDecimal.valueOf(0), + remark : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/list.vue b/attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..7342c20ecf695913856e9fe01055cf30bc757017 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/list.vue @@ -0,0 +1,130 @@ +<template> + <div class="page"> + <LayoutTable :data="tableData" :config="tableConfig"> + </LayoutTable> + + + <drawer-show ref="drawerform" @ok="getData" /> + </div> +</template> + +<script> + /** 琛ㄥ崟寮瑰嚭妗嗘ā寮忛渶寮曞叆 */ + import drawerShow from "./drawershow"; + import table from "@/assets/mixins/table"; + export default { + name: "AttendanceVacationBalanceList", + components: { + drawerShow +}, + mixins: [table], + created() { + }, + methods: { + /** 閲嶅啓鏂板鏂规硶 */ + toAdd(row) { + this.$refs.drawerform.add(row); + }, + /** 閲嶅啓缂栬緫鏂规硶 */ + toEdit(row) { + this.$refs.drawerform.edit(row); + }, + /** 閲嶅啓鏌ョ湅鏂规硶 */ + toView(row) { + this.$refs.drawerform.view(row); + }, + + }, + data() { + return { + config: { + search: [ + { + name: "staffId", + type: "text", + label: "鍛樺伐id", + fuzzy: true + }, + { + name: "deptId", + type: "text", + label: "閮ㄩ棬id", + fuzzy: true + }, + { + name: "entryTime", + type: "date", + label: "鍏ヨ亴鏃堕棿", + fuzzy: true + }, + { + name: "personalLeaveDays", + type: "text", + label: "浜嬪亣", + fuzzy: true + }, + { + name: "compensatedLeaveDays", + type: "text", + label: "璋冧紤", + fuzzy: true + }, + { + name: "sickLeaveDays", + type: "text", + label: "鐥呭亣", + fuzzy: true + }, + { + name: "annualLeaveDays", + type: "text", + label: "骞村亣", + fuzzy: true + }, + { + name: "marriageLeaveDays", + type: "text", + label: "濠氬亣", + fuzzy: true + }, + ], + columns: [ + {type: "selection", width: 60}, + {type: "index",label: "搴忓彿",width: 50}, + + {label: "鍛樺伐id", prop: "staffId", formatter: this.formatter}, + + {label: "鍛樺伐濮撳悕", prop: "staffName"}, + + {label: "閮ㄩ棬id", prop: "deptId", formatter: this.formatter}, + + {label: "閮ㄩ棬鍚嶇О", prop: "deptName"}, + + {label: "鍏ヨ亴鏃堕棿", prop: "entryTime", formatter: this.formatterDate}, + + {label: "浜嬪亣", prop: "personalLeaveDays", formatter: this.formatterMoney}, + + {label: "璋冧紤", prop: "compensatedLeaveDays", formatter: this.formatterMoney}, + + {label: "鐥呭亣", prop: "sickLeaveDays", formatter: this.formatterMoney}, + + {label: "骞村亣", prop: "annualLeaveDays", formatter: this.formatterMoney}, + + {label: "濠氬亣", prop: "marriageLeaveDays", formatter: this.formatterMoney}, + + {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, + { + label: "鎿嶄綔", + width: 240, + formatter: row => { + return ( + <table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> + ); + } + } + ] + } + }; + } + }; +</script> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/view.vue b/attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/view.vue new file mode 100644 index 0000000000000000000000000000000000000000..78378b69fbbb7d92ecd32b9db2f859093ef5816d --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/view.vue @@ -0,0 +1,87 @@ +<template> + <layout-view> + <el-descriptions :title="title" :column="column" :size="size" :colon="false" border> + <template slot="title"> + <i class="el-icon-tickets"></i> + 鍩烘湰璇︾粏淇℃伅 + </template> + <template slot="extra"> + <el-button type="primary" @click="$router.go(-1)" size="small">杩斿洖</el-button> + </template> + <el-descriptions-item label="鍛樺伐id" label-class-name="labelClass" content-class-name="contentClass"> + {{form.staffId}} + </el-descriptions-item> + <el-descriptions-item label="鍛樺伐濮撳悕" label-class-name="labelClass" content-class-name="contentClass"> + {{form.staffName}} + </el-descriptions-item> + <el-descriptions-item label="閮ㄩ棬id" label-class-name="labelClass" content-class-name="contentClass"> + {{form.deptId}} + </el-descriptions-item> + <el-descriptions-item label="閮ㄩ棬鍚嶇О" label-class-name="labelClass" content-class-name="contentClass"> + {{form.deptName}} + </el-descriptions-item> + <el-descriptions-item label="鍏ヨ亴鏃堕棿" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.entryTime)}} + </el-descriptions-item> + <el-descriptions-item label="浜嬪亣" label-class-name="labelClass" content-class-name="contentClass"> + {{form.personalLeaveDays}} + </el-descriptions-item> + <el-descriptions-item label="璋冧紤" label-class-name="labelClass" content-class-name="contentClass"> + {{form.compensatedLeaveDays}} + </el-descriptions-item> + <el-descriptions-item label="鐥呭亣" label-class-name="labelClass" content-class-name="contentClass"> + {{form.sickLeaveDays}} + </el-descriptions-item> + <el-descriptions-item label="骞村亣" label-class-name="labelClass" content-class-name="contentClass"> + {{form.annualLeaveDays}} + </el-descriptions-item> + <el-descriptions-item label="濠氬亣" label-class-name="labelClass" content-class-name="contentClass"> + {{form.marriageLeaveDays}} + </el-descriptions-item> + <el-descriptions-item label="澶囨敞" label-class-name="labelClass" content-class-name="contentClass"> + {{form.remark}} + </el-descriptions-item> + </el-descriptions> + + </layout-view> +</template> + +<script> + import view from "@/assets/mixins/view"; + export default { + mixins: [view], + components: { + }, + methods: { + + }, + data() { + return { + size:"small", + column:2, + toString:[ + ], + toArrays: [ + + ], + toDate: [ + + ] + } + } + } +</script> +<style lang="less"> + .labelClass{ + width: 200px; + } + .el-descriptions__body{ + margin-left: 5px; + margin-right: 5px; + color: #606266; + background-color: #FFF; + } + .contentClass{ + width: 600px; + } +</style> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/care/template/dialogshow.vue b/attendance-performance-manager-ui/admin/src/views/care/template/dialogshow.vue new file mode 100644 index 0000000000000000000000000000000000000000..82702928165249e00df0c962200769a7b7133119 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/care/template/dialogshow.vue @@ -0,0 +1,106 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍏虫€€绫诲瀷" prop="careType" v-model="form.careType" type="select" :enumData="dict.careType" placeholder="璇烽€夋嫨鍏虫€€绫诲瀷"/> + <Field label="鏄惁鐭俊鎻愮ず" prop="sms" v-model="form.sms" type="select" :enumData="dict.sms" placeholder="璇烽€夋嫨鏄惁鐭俊鎻愮ず"/> + <Field label="鐭俊妯℃澘鍐呭" prop="smsTemplate" v-model="form.smsTemplate" type="textarea" placeholder="璇疯緭鍏ョ煭淇℃ā鏉垮唴瀹�"/> + + </el-row> + + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + import dialogShow from "./dialogshow"; + export default { + mixins: [form], + components: { + dialogShow , + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鍏虫€€闂€欎俊鎭�", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString:[ + "careType", + "sms", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="care/template/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鍏虫€€闂€欎俊鎭�"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "care/template/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鍏虫€€闂€欎俊鎭�"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="care/template/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鍏虫€€闂€欎俊鎭缁�"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + careType : 1, + sms : 1, + smsTemplate : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/care/template/drawershow.vue b/attendance-performance-manager-ui/admin/src/views/care/template/drawershow.vue new file mode 100644 index 0000000000000000000000000000000000000000..0b93ebef1b566139d2f702bb280e28ef66a2ca37 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/care/template/drawershow.vue @@ -0,0 +1,114 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-drawer + :title="title" + :visible.sync="open" + :direction="direction" + size="50%"> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍏虫€€绫诲瀷" prop="careType" v-model="form.careType" type="select" :enumData="dict.careType" placeholder="璇烽€夋嫨鍏虫€€绫诲瀷"/> + <Field label="鏄惁鐭俊鎻愮ず" prop="sms" v-model="form.sms" type="select" :enumData="dict.sms" placeholder="璇烽€夋嫨鏄惁鐭俊鎻愮ず"/> + <Field label="鐭俊妯℃澘鍐呭" prop="smsTemplate" v-model="form.smsTemplate" type="textarea" placeholder="璇疯緭鍏ョ煭淇℃ā鏉垮唴瀹�"/> + + </el-row> + + <form-buttons @submit='submitForm' noCancelBtn /> + </el-form> + + </el-drawer> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + export default { + name: "CareTemplateDetail", + mixins: [form], + components: { + + }, + created() { + this.changePath("care/template") + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鍏虫€€闂€欎俊鎭�", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + direction:"rtl", + toString:[ + "careType", + "sms", + ], + toDate:[ + ], + // 琛ㄥ崟鏍¢獙 + rules: { + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="care/template/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鍏虫€€闂€欎俊鎭�"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "care/template/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鍏虫€€闂€欎俊鎭�"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="care/template/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鍏虫€€闂€欎俊鎭缁�"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + careType : 1, + sms : 1, + smsTemplate : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/care/template/list.vue b/attendance-performance-manager-ui/admin/src/views/care/template/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..f5493082c69dc9eeee82f6d71a3b181701a2553a --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/care/template/list.vue @@ -0,0 +1,66 @@ +<template> + <div class="page"> + <LayoutTable :data="tableData" :config="tableConfig"> + </LayoutTable> + + + <drawer-show ref="drawerform" @ok="getData" /> + </div> +</template> + +<script> + /** 琛ㄥ崟寮瑰嚭妗嗘ā寮忛渶寮曞叆 */ + import drawerShow from "./drawershow"; + import table from "@/assets/mixins/table"; + export default { + name: "CareTemplateList", + components: { + drawerShow +}, + mixins: [table], + created() { + }, + methods: { + /** 閲嶅啓鏂板鏂规硶 */ + toAdd(row) { + this.$refs.drawerform.add(row); + }, + /** 閲嶅啓缂栬緫鏂规硶 */ + toEdit(row) { + this.$refs.drawerform.edit(row); + }, + /** 閲嶅啓鏌ョ湅鏂规硶 */ + toView(row) { + this.$refs.drawerform.view(row); + }, + + }, + data() { + return { + config: { + search: [ + ], + columns: [ + {type: "selection", width: 60}, + {type: "index",label: "搴忓彿",width: 50}, + + {label: "鍏虫€€绫诲瀷", prop: "careType",formatter: this.formatter}, + + {label: "鏄惁鐭俊鎻愮ず", prop: "sms",formatter: this.formatter}, + + {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, + { + label: "鎿嶄綔", + width: 240, + formatter: row => { + return ( + <table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> + ); + } + } + ] + } + }; + } + }; +</script> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/care/template/view.vue b/attendance-performance-manager-ui/admin/src/views/care/template/view.vue new file mode 100644 index 0000000000000000000000000000000000000000..e83ffe4486e0e66216395b08af0e8292f93cb364 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/care/template/view.vue @@ -0,0 +1,65 @@ +<template> + <layout-view> + <el-descriptions :title="title" :column="column" :size="size" :colon="false" border> + <template slot="title"> + <i class="el-icon-tickets"></i> + 鍩烘湰璇︾粏淇℃伅 + </template> + <template slot="extra"> + <el-button type="primary" @click="$router.go(-1)" size="small">杩斿洖</el-button> + </template> + <el-descriptions-item label="鍏虫€€绫诲瀷" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("careType", form.careType) }} + </el-descriptions-item> + <el-descriptions-item label="鏄惁鐭俊鎻愮ず" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("sms", form.sms) }} + </el-descriptions-item> + <el-descriptions-item label="鐭俊妯℃澘鍐呭" label-class-name="labelClass" content-class-name="contentClass"> + {{form.smsTemplate}} + </el-descriptions-item> + </el-descriptions> + + </layout-view> +</template> + +<script> + import view from "@/assets/mixins/view"; + export default { + mixins: [view], + components: { + }, + methods: { + + }, + data() { + return { + size:"small", + column:2, + toString:[ + "careType", + "sms", + ], + toArrays: [ + + ], + toDate: [ + + ] + } + } + } +</script> +<style lang="less"> + .labelClass{ + width: 200px; + } + .el-descriptions__body{ + margin-left: 5px; + margin-right: 5px; + color: #606266; + background-color: #FFF; + } + .contentClass{ + width: 600px; + } +</style> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/dept/drawershow.vue b/attendance-performance-manager-ui/admin/src/views/dept/drawershow.vue new file mode 100644 index 0000000000000000000000000000000000000000..e8f0fba93b64dff96a085e9109f118744ad06d5c --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/dept/drawershow.vue @@ -0,0 +1,133 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-drawer + :title="title" + :visible.sync="open" + :direction="direction" + size="50%"> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鐖秈d" prop="parentId" v-model="form.parentId" placeholder="璇疯緭鍏ョ埗id"/> + <Field label="绁栫骇鍒楄〃" prop="ancestors" v-model="form.ancestors" type="textarea" placeholder="璇疯緭鍏ョ绾у垪琛�"/> + <Field label="閮ㄩ棬鍚嶇О" prop="deptName" v-model="form.deptName" type="textarea" placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�"/> + <Field label="閮ㄩ棬鐘舵€�" prop="deptStatus" v-model="form.deptStatus" type="select" :enumData="dict.deptStatus" placeholder="璇烽€夋嫨閮ㄩ棬鐘舵€�"/> + <Field label="椤哄簭" prop="orderNum" v-model="form.orderNum" placeholder="璇疯緭鍏ラ『搴�"/> + <Field label="澶囨敞" prop="remark" v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�"/> + + </el-row> + + <form-buttons @submit='submitForm' noCancelBtn /> + </el-form> + + </el-drawer> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + export default { + name: "DeptDetail", + mixins: [form], + components: { + + }, + created() { + this.changePath("dept") + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "閮ㄩ棬淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + direction:"rtl", + toString:[ + "deptStatus", + ], + toDate:[ + ], + // 琛ㄥ崟鏍¢獙 + rules: { + ancestors: [ + {required: true,message: "璇疯緭鍏ョ绾у垪琛�", trigger: "blur" }, + {max: 256,message: "鏈€澶氬彧鑳藉綍鍏�256涓瓧绗�",trigger: "blur",}, + ], + deptName: [ + {required: true,message: "璇疯緭鍏ラ儴闂ㄥ悕绉�", trigger: "blur" }, + {max: 256,message: "鏈€澶氬彧鑳藉綍鍏�256涓瓧绗�",trigger: "blur",}, + ], + deptStatus: [ + {required: true,message: "璇疯緭鍏ラ儴闂ㄧ姸鎬�", trigger: "blur" }, + ], + orderNum: [ + {required: true,message: "璇疯緭鍏ラ『搴�", trigger: "blur" }, + ], + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="dept/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼閮ㄩ棬淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "dept/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板閮ㄩ棬淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="dept/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "閮ㄩ棬淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + parentId : null, + ancestors : "", + deptName : "", + deptStatus : 1, + orderNum : 0, + remark : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> 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 d34a7291aeea6c8a3ff3da027e895b8c6cdd623f..79f13b96fe038d4113588ba232f9503293f4b4b3 100644 --- a/attendance-performance-manager-ui/admin/src/views/dept/list.vue +++ b/attendance-performance-manager-ui/admin/src/views/dept/list.vue @@ -1,106 +1,77 @@ <template> <div class="page"> - <LayoutTable ref="layoutTable" :data="tableData" :config="tableConfig" notDel /> - <dialog-show ref="dialogform" @ok="getData" /> + <LayoutTable :data="tableData" :config="tableConfig"> + </LayoutTable> + + <drawer-show ref="drawerform" @ok="getData" /> </div> </template> <script> - import { handleTree } from "@/assets/utils/index"; - import Treeselect from "@riophae/vue-treeselect"; - import "@riophae/vue-treeselect/dist/vue-treeselect.css"; + /** 琛ㄥ崟寮瑰嚭妗嗘ā寮忛渶寮曞叆 */ + import drawerShow from "./drawershow"; import table from "@/assets/mixins/table"; - import dialogShow from "./dialogshow"; export default { - name: "Dept", + name: "DeptList", + components: { + drawerShow +}, mixins: [table], - components: { Treeselect, dialogShow }, created() { }, methods: { - afterRender(data) { - console.log("data",data) - data.data = handleTree(data.data, "id","parentId"); - this.deptOptions = data.data; - this.$refs.layoutTable.showType="treetable" - }, - - handleAdd(row) { - this.$refs.dialogform.add(row, this.deptOptions); - }, - /** 閲嶅啓鏂板鏂规硶 */ toAdd(row) { - console.log("deptOptions", this.deptOptions) - this.$refs.dialogform.add(row, this.deptOptions); + this.$refs.drawerform.add(row); }, /** 閲嶅啓缂栬緫鏂规硶 */ toEdit(row) { - this.loading = true; - this.$post(this.pageInfo.exclude+"?id="+row.id,{}) - .then((res) => { - if (res && res.code && res.code == 1) { - this.deptOptions = handleTree(res.data.result); - this.$refs.dialogform.edit(row, this.deptOptions); - this.loading = false; - } - }) - .catch((error) => { - this.$message.error(error.message); - }); + this.$refs.drawerform.edit(row); }, /** 閲嶅啓鏌ョ湅鏂规硶 */ toView(row) { - this.$refs.dialogform.view(row, this.deptOptions); + this.$refs.drawerform.view(row); }, - afterDel(data) { - this.getData() - }, + }, data() { return { config: { - /** 鏍戣〃鏄惁榛樿灞曞紑 */ - expand:true, - showType: "treetable", search: [ { - name: "deptName", + name: "orderNum", type: "text", - label: "閮ㄩ棬鍚嶇О", + label: "椤哄簭", fuzzy: true - } + }, + { + name: "createUserId", + type: "text", + label: "鍒涘缓鐢ㄦ埛", + fuzzy: true + }, ], columns: [ + {type: "selection", width: 60}, + {type: "index",label: "搴忓彿",width: 50}, + + {label: "绁栫骇鍒楄〃", prop: "ancestors"}, + {label: "閮ㄩ棬鍚嶇О", prop: "deptName"}, - {label: "閮ㄩ棬鐘舵€�", prop: "deptStatus",formatter:this.formatter}, + + {label: "閮ㄩ棬鐘舵€�", prop: "deptStatus",formatter: this.formatter}, + + {label: "椤哄簭", prop: "orderNum",formatter: this.formatter}, + + {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, { label: "鎿嶄綔", - width: 280, + width: 240, formatter: row => { return ( - <div> - <el-button - size="mini" - type="text" - icon="el-icon-edit-outline" - onClick={() => { - this.handleAdd(row); - }} - > - 鏂板 - </el-button> - <table-buttons - noAdd - noView - row={row} - onEdit={this.toEdit} - onView={this.toView} - onDel={this.toDel} - /> - </div> - ); + <table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> + ); } } ] @@ -108,4 +79,4 @@ }; } }; -</script> +</script> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/job/dialogshow.vue b/attendance-performance-manager-ui/admin/src/views/job/dialogshow.vue new file mode 100644 index 0000000000000000000000000000000000000000..c7e6ccd9c39e8328c4c3f55779bb6f758e79f4c7 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/job/dialogshow.vue @@ -0,0 +1,105 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍒嗙粍id" prop="groupId" v-model="form.groupId" placeholder="璇疯緭鍏ュ垎缁刬d"/> + <Field label="鍒嗙粍鍚嶇О" prop="groupName" v-model="form.groupName" placeholder="璇疯緭鍏ュ垎缁勫悕绉�"/> + <Field label="鑱屼綅缂栫爜" prop="jobCode" v-model="form.jobCode" placeholder="璇疯緭鍏ヨ亴浣嶇紪鐮�"/> + <Field label="鑱屼綅鍚嶇О" prop="jobName" v-model="form.jobName" placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�"/> + <Field label="澶囨敞" prop="remark" v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�"/> + + </el-row> + + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + import dialogShow from "./dialogshow"; + export default { + mixins: [form], + components: { + dialogShow , + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鑱屼綅淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString:[ + ], + // 琛ㄥ崟鏍¢獙 + rules: { + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="job/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鑱屼綅淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "job/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鑱屼綅淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="job/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鑱屼綅淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + groupId : null, + groupName : "", + jobCode : "", + jobName : "", + remark : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/job/drawershow.vue b/attendance-performance-manager-ui/admin/src/views/job/drawershow.vue new file mode 100644 index 0000000000000000000000000000000000000000..4d3365f19c2a67985b9354f2e61c48f8a5e0dd1d --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/job/drawershow.vue @@ -0,0 +1,113 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-drawer + :title="title" + :visible.sync="open" + :direction="direction" + size="50%"> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍒嗙粍id" prop="groupId" v-model="form.groupId" placeholder="璇疯緭鍏ュ垎缁刬d"/> + <Field label="鍒嗙粍鍚嶇О" prop="groupName" v-model="form.groupName" placeholder="璇疯緭鍏ュ垎缁勫悕绉�"/> + <Field label="鑱屼綅缂栫爜" prop="jobCode" v-model="form.jobCode" placeholder="璇疯緭鍏ヨ亴浣嶇紪鐮�"/> + <Field label="鑱屼綅鍚嶇О" prop="jobName" v-model="form.jobName" placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�"/> + <Field label="澶囨敞" prop="remark" v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�"/> + + </el-row> + + <form-buttons @submit='submitForm' noCancelBtn /> + </el-form> + + </el-drawer> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + export default { + name: "JobDetail", + mixins: [form], + components: { + + }, + created() { + this.changePath("job") + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鑱屼綅淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + direction:"rtl", + toString:[ + ], + toDate:[ + ], + // 琛ㄥ崟鏍¢獙 + rules: { + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="job/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鑱屼綅淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "job/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鑱屼綅淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="job/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鑱屼綅淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + groupId : null, + groupName : "", + jobCode : "", + jobName : "", + remark : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/job/list.vue b/attendance-performance-manager-ui/admin/src/views/job/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..dbd44c11f0b82d0255c165918a52a3ea3074979f --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/job/list.vue @@ -0,0 +1,84 @@ +<template> + <div class="page"> + <LayoutTable :data="tableData" :config="tableConfig"> + </LayoutTable> + + + <drawer-show ref="drawerform" @ok="getData" /> + </div> +</template> + +<script> + /** 琛ㄥ崟寮瑰嚭妗嗘ā寮忛渶寮曞叆 */ + import drawerShow from "./drawershow"; + import table from "@/assets/mixins/table"; + export default { + name: "JobList", + components: { + drawerShow +}, + mixins: [table], + created() { + }, + methods: { + /** 閲嶅啓鏂板鏂规硶 */ + toAdd(row) { + this.$refs.drawerform.add(row); + }, + /** 閲嶅啓缂栬緫鏂规硶 */ + toEdit(row) { + this.$refs.drawerform.edit(row); + }, + /** 閲嶅啓鏌ョ湅鏂规硶 */ + toView(row) { + this.$refs.drawerform.view(row); + }, + + }, + data() { + return { + config: { + search: [ + { + name: "groupName", + type: "text", + label: "鍒嗙粍鍚嶇О", + fuzzy: true + }, + { + name: "jobCode", + type: "text", + label: "鑱屼綅缂栫爜", + fuzzy: true + }, + { + name: "jobName", + type: "text", + label: "鑱屼綅鍚嶇О", + fuzzy: true + }, + ], + columns: [ + {type: "selection", width: 60}, + {type: "index",label: "搴忓彿",width: 50}, + + {label: "鍒嗙粍鍚嶇О", prop: "groupName"}, + + {label: "鑱屼綅缂栫爜", prop: "jobCode"}, + + {label: "鑱屼綅鍚嶇О", prop: "jobName"}, + { + label: "鎿嶄綔", + width: 240, + formatter: row => { + return ( + <table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> + ); + } + } + ] + } + }; + } + }; +</script> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/job/view.vue b/attendance-performance-manager-ui/admin/src/views/job/view.vue new file mode 100644 index 0000000000000000000000000000000000000000..351e2d93df56e4ba1d738157b807c244d845c13c --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/job/view.vue @@ -0,0 +1,69 @@ +<template> + <layout-view> + <el-descriptions :title="title" :column="column" :size="size" :colon="false" border> + <template slot="title"> + <i class="el-icon-tickets"></i> + 鍩烘湰璇︾粏淇℃伅 + </template> + <template slot="extra"> + <el-button type="primary" @click="$router.go(-1)" size="small">杩斿洖</el-button> + </template> + <el-descriptions-item label="鍒嗙粍id" label-class-name="labelClass" content-class-name="contentClass"> + {{form.groupId}} + </el-descriptions-item> + <el-descriptions-item label="鍒嗙粍鍚嶇О" label-class-name="labelClass" content-class-name="contentClass"> + {{form.groupName}} + </el-descriptions-item> + <el-descriptions-item label="鑱屼綅缂栫爜" label-class-name="labelClass" content-class-name="contentClass"> + {{form.jobCode}} + </el-descriptions-item> + <el-descriptions-item label="鑱屼綅鍚嶇О" label-class-name="labelClass" content-class-name="contentClass"> + {{form.jobName}} + </el-descriptions-item> + <el-descriptions-item label="澶囨敞" label-class-name="labelClass" content-class-name="contentClass"> + {{form.remark}} + </el-descriptions-item> + </el-descriptions> + + </layout-view> +</template> + +<script> + import view from "@/assets/mixins/view"; + export default { + mixins: [view], + components: { + }, + methods: { + + }, + data() { + return { + size:"small", + column:2, + toString:[ + ], + toArrays: [ + + ], + toDate: [ + + ] + } + } + } +</script> +<style lang="less"> + .labelClass{ + width: 200px; + } + .el-descriptions__body{ + margin-left: 5px; + margin-right: 5px; + color: #606266; + background-color: #FFF; + } + .contentClass{ + width: 600px; + } +</style> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/staff/adjust/log/dialogshow.vue b/attendance-performance-manager-ui/admin/src/views/staff/adjust/log/dialogshow.vue new file mode 100644 index 0000000000000000000000000000000000000000..fec43856a86ded33b0663c2eb8e4ccd5720c32fa --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/adjust/log/dialogshow.vue @@ -0,0 +1,149 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍛樺伐ID" prop="staffId" v-model="form.staffId" placeholder="璇疯緭鍏ュ憳宸D"/> + <Field label="鍛樺伐濮撳悕" prop="fullName" v-model="form.fullName" placeholder="璇疯緭鍏ュ憳宸ュ鍚�"/> + <Field label="鎬у埆1鐢�2濂�" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="璇烽€夋嫨鎬у埆1鐢�2濂�"/> + <Field label="鍑虹敓鏃ユ湡" prop="birthday" v-model="form.birthday" type="date" /> + <Field label="鐓х墖" prop="photoPath" v-model="form.photoPath" type="textarea" placeholder="璇疯緭鍏ョ収鐗�"/> + <Field label="鑱旂郴鐢佃瘽" prop="phoneNumber" v-model="form.phoneNumber" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"/> + <Field label="韬唤璇佸彿鐮�" prop="idCard" v-model="form.idCard" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜"/> + <Field label="宸ュ彿" prop="workNum" v-model="form.workNum" placeholder="璇疯緭鍏ュ伐鍙�"/> + <Field label="鏀挎不闈㈣矊 " prop="politicalstatus" v-model="form.politicalstatus" type="select" :enumData="dict.politicalstatus" placeholder="璇烽€夋嫨鏀挎不闈㈣矊 "/> + <Field label="鎵€灞為儴闂�" prop="deptId" v-model="form.deptId" placeholder="璇疯緭鍏ユ墍灞為儴闂�"/> + <Field label="鎵€灞為儴闂ㄥ悕绉�" prop="deptName" v-model="form.deptName" placeholder="璇疯緭鍏ユ墍灞為儴闂ㄥ悕绉�"/> + <Field label="鑱屼綅ID" prop="jobId" v-model="form.jobId" placeholder="璇疯緭鍏ヨ亴浣岻D"/> + <Field label="鑱屼綅鍚嶇О" prop="jobName" v-model="form.jobName" placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�"/> + <Field label="鍛樺伐绫诲瀷1鍏ㄨ亴2鍏艰亴3瀹炰範" prop="staffType" v-model="form.staffType" type="select" :enumData="dict.staffType" placeholder="璇烽€夋嫨鍛樺伐绫诲瀷1鍏ㄨ亴2鍏艰亴3瀹炰範"/> + <Field label="鍛樺伐鐘舵€�1姝e紡2璇曠敤3绂昏亴" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="璇烽€夋嫨鍛樺伐鐘舵€�1姝e紡2璇曠敤3绂昏亴"/> + <Field label="鍏ヨ亴鏃堕棿" prop="entryDate" v-model="form.entryDate" type="date" /> + <Field label="璋冨矖鍚庢墍灞為儴闂�" prop="newDeptId" v-model="form.newDeptId" placeholder="璇疯緭鍏ヨ皟宀楀悗鎵€灞為儴闂�"/> + <Field label="璋冨矖鍚庢墍灞為儴闂ㄥ悕绉�" prop="newDeptName" v-model="form.newDeptName" placeholder="璇疯緭鍏ヨ皟宀楀悗鎵€灞為儴闂ㄥ悕绉�"/> + <Field label="璋冨矖鍚庤亴浣岻D" prop="newJobId" v-model="form.newJobId" placeholder="璇疯緭鍏ヨ皟宀楀悗鑱屼綅ID"/> + <Field label="璋冨矖鍚庤亴浣嶅悕绉�" prop="newJobName" v-model="form.newJobName" placeholder="璇疯緭鍏ヨ皟宀楀悗鑱屼綅鍚嶇О"/> + <Field label="瀹℃牳鐘舵€�0寰呭鏍�1閫氳繃2鎷掔粷" prop="auditStatus" v-model="form.auditStatus" type="select" :enumData="dict.auditStatus" placeholder="璇烽€夋嫨瀹℃牳鐘舵€�0寰呭鏍�1閫氳繃2鎷掔粷"/> + + </el-row> + + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + import dialogShow from "./dialogshow"; + export default { + mixins: [form], + components: { + dialogShow , + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鍛樺伐璋冨矖淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString:[ + "gender", + "politicalstatus", + "staffType", + "status", + "auditStatus", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + fullName: [ + {required: true,message: "璇疯緭鍏ュ憳宸ュ鍚�", trigger: "blur" }, + {max: 64,message: "鏈€澶氬彧鑳藉綍鍏�64涓瓧绗�",trigger: "blur",}, + ], + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/adjust/log/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鍛樺伐璋冨矖淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "staff/adjust/log/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鍛樺伐璋冨矖淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/adjust/log/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鍛樺伐璋冨矖淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + staffId : null, + fullName : "", + gender : 1, + birthday : null, + photoPath : "", + phoneNumber : "", + idCard : "", + workNum : "", + politicalstatus : 1, + deptId : null, + deptName : "", + jobId : null, + jobName : "", + staffType : 1, + status : 1, + entryDate : null, + newDeptId : null, + newDeptName : "", + newJobId : null, + newJobName : "", + auditStatus : 0, + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/staff/adjust/log/drawershow.vue b/attendance-performance-manager-ui/admin/src/views/staff/adjust/log/drawershow.vue new file mode 100644 index 0000000000000000000000000000000000000000..d575bc8839c5f590db4f1d9e0373ac83aa1d876c --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/adjust/log/drawershow.vue @@ -0,0 +1,159 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-drawer + :title="title" + :visible.sync="open" + :direction="direction" + size="50%"> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍛樺伐ID" prop="staffId" v-model="form.staffId" placeholder="璇疯緭鍏ュ憳宸D"/> + <Field label="鍛樺伐濮撳悕" prop="fullName" v-model="form.fullName" placeholder="璇疯緭鍏ュ憳宸ュ鍚�"/> + <Field label="鎬у埆1鐢�2濂�" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="璇烽€夋嫨鎬у埆1鐢�2濂�"/> + <Field label="鍑虹敓鏃ユ湡" prop="birthday" v-model="form.birthday" type="date" /> + <Field label="鐓х墖" prop="photoPath" v-model="form.photoPath" type="textarea" placeholder="璇疯緭鍏ョ収鐗�"/> + <Field label="鑱旂郴鐢佃瘽" prop="phoneNumber" v-model="form.phoneNumber" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"/> + <Field label="韬唤璇佸彿鐮�" prop="idCard" v-model="form.idCard" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜"/> + <Field label="宸ュ彿" prop="workNum" v-model="form.workNum" placeholder="璇疯緭鍏ュ伐鍙�"/> + <Field label="鏀挎不闈㈣矊 " prop="politicalstatus" v-model="form.politicalstatus" type="select" :enumData="dict.politicalstatus" placeholder="璇烽€夋嫨鏀挎不闈㈣矊 "/> + <Field label="鎵€灞為儴闂�" prop="deptId" v-model="form.deptId" placeholder="璇疯緭鍏ユ墍灞為儴闂�"/> + <Field label="鎵€灞為儴闂ㄥ悕绉�" prop="deptName" v-model="form.deptName" placeholder="璇疯緭鍏ユ墍灞為儴闂ㄥ悕绉�"/> + <Field label="鑱屼綅ID" prop="jobId" v-model="form.jobId" placeholder="璇疯緭鍏ヨ亴浣岻D"/> + <Field label="鑱屼綅鍚嶇О" prop="jobName" v-model="form.jobName" placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�"/> + <Field label="鍛樺伐绫诲瀷1鍏ㄨ亴2鍏艰亴3瀹炰範" prop="staffType" v-model="form.staffType" type="select" :enumData="dict.staffType" placeholder="璇烽€夋嫨鍛樺伐绫诲瀷1鍏ㄨ亴2鍏艰亴3瀹炰範"/> + <Field label="鍛樺伐鐘舵€�1姝e紡2璇曠敤3绂昏亴" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="璇烽€夋嫨鍛樺伐鐘舵€�1姝e紡2璇曠敤3绂昏亴"/> + <Field label="鍏ヨ亴鏃堕棿" prop="entryDate" v-model="form.entryDate" type="date" /> + <Field label="璋冨矖鍚庢墍灞為儴闂�" prop="newDeptId" v-model="form.newDeptId" placeholder="璇疯緭鍏ヨ皟宀楀悗鎵€灞為儴闂�"/> + <Field label="璋冨矖鍚庢墍灞為儴闂ㄥ悕绉�" prop="newDeptName" v-model="form.newDeptName" placeholder="璇疯緭鍏ヨ皟宀楀悗鎵€灞為儴闂ㄥ悕绉�"/> + <Field label="璋冨矖鍚庤亴浣岻D" prop="newJobId" v-model="form.newJobId" placeholder="璇疯緭鍏ヨ皟宀楀悗鑱屼綅ID"/> + <Field label="璋冨矖鍚庤亴浣嶅悕绉�" prop="newJobName" v-model="form.newJobName" placeholder="璇疯緭鍏ヨ皟宀楀悗鑱屼綅鍚嶇О"/> + <Field label="瀹℃牳鐘舵€�0寰呭鏍�1閫氳繃2鎷掔粷" prop="auditStatus" v-model="form.auditStatus" type="select" :enumData="dict.auditStatus" placeholder="璇烽€夋嫨瀹℃牳鐘舵€�0寰呭鏍�1閫氳繃2鎷掔粷"/> + + </el-row> + + <form-buttons @submit='submitForm' noCancelBtn /> + </el-form> + + </el-drawer> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + export default { + name: "StaffAdjustLogDetail", + mixins: [form], + components: { + + }, + created() { + this.changePath("staff/adjust/log") + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鍛樺伐璋冨矖淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + direction:"rtl", + toString:[ + "gender", + "politicalstatus", + "staffType", + "status", + "auditStatus", + ], + toDate:[ + "birthday", + "entryDate", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + fullName: [ + {required: true,message: "璇疯緭鍏ュ憳宸ュ鍚�", trigger: "blur" }, + {max: 64,message: "鏈€澶氬彧鑳藉綍鍏�64涓瓧绗�",trigger: "blur",}, + ], + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/adjust/log/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鍛樺伐璋冨矖淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "staff/adjust/log/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鍛樺伐璋冨矖淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/adjust/log/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鍛樺伐璋冨矖淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + staffId : null, + fullName : "", + gender : 1, + birthday : null, + photoPath : "", + phoneNumber : "", + idCard : "", + workNum : "", + politicalstatus : 1, + deptId : null, + deptName : "", + jobId : null, + jobName : "", + staffType : 1, + status : 1, + entryDate : null, + newDeptId : null, + newDeptName : "", + newJobId : null, + newJobName : "", + auditStatus : 0, + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/staff/adjust/log/list.vue b/attendance-performance-manager-ui/admin/src/views/staff/adjust/log/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..24a186b18d0b2221249d92ec749c140aef2fdc2f --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/adjust/log/list.vue @@ -0,0 +1,112 @@ +<template> + <div class="page"> + <LayoutTable :data="tableData" :config="tableConfig"> + </LayoutTable> + + + <drawer-show ref="drawerform" @ok="getData" /> + </div> +</template> + +<script> + /** 琛ㄥ崟寮瑰嚭妗嗘ā寮忛渶寮曞叆 */ + import drawerShow from "./drawershow"; + import table from "@/assets/mixins/table"; + export default { + name: "StaffAdjustLogList", + components: { + drawerShow +}, + mixins: [table], + created() { + }, + methods: { + /** 閲嶅啓鏂板鏂规硶 */ + toAdd(row) { + this.$refs.drawerform.add(row); + }, + /** 閲嶅啓缂栬緫鏂规硶 */ + toEdit(row) { + this.$refs.drawerform.edit(row); + }, + /** 閲嶅啓鏌ョ湅鏂规硶 */ + toView(row) { + this.$refs.drawerform.view(row); + }, + + }, + data() { + return { + config: { + search: [ + { + name: "fullName", + type: "text", + label: "鍛樺伐濮撳悕", + fuzzy: true + }, + { + name: "gender", + type: "text", + label: "鎬у埆1鐢�2濂�", + fuzzy: true + }, + { + name: "politicalstatus", + type: "select", + label: "鏀挎不闈㈣矊 ", + fuzzy: true + }, + { + name: "staffType", + type: "text", + label: "鍛樺伐绫诲瀷1鍏ㄨ亴2鍏艰亴3瀹炰範", + fuzzy: true + }, + { + name: "status", + type: "text", + label: "鍛樺伐鐘舵€�1姝e紡2璇曠敤3绂昏亴", + fuzzy: true + }, + { + name: "auditStatus", + type: "text", + label: "瀹℃牳鐘舵€�0寰呭鏍�1閫氳繃2鎷掔粷", + fuzzy: true + }, + ], + columns: [ + {type: "selection", width: 60}, + {type: "index",label: "搴忓彿",width: 50}, + + {label: "鍛樺伐濮撳悕", prop: "fullName"}, + + {label: "鎬у埆1鐢�2濂�", prop: "gender",formatter: this.formatter}, + + {label: "鏀挎不闈㈣矊 ", prop: "politicalstatus",formatter: this.formatter}, + + {label: "鍛樺伐绫诲瀷1鍏ㄨ亴2鍏艰亴3瀹炰範", prop: "staffType",formatter: this.formatter}, + + {label: "鍛樺伐鐘舵€�1姝e紡2璇曠敤3绂昏亴", prop: "status",formatter: this.formatter}, + + {label: "鍏ヨ亴鏃堕棿", prop: "entryDate", formatter: this.formatterDate}, + + {label: "瀹℃牳鐘舵€�0寰呭鏍�1閫氳繃2鎷掔粷", prop: "auditStatus",formatter: this.formatter}, + + {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, + { + label: "鎿嶄綔", + width: 240, + formatter: row => { + return ( + <table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> + ); + } + } + ] + } + }; + } + }; +</script> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/staff/adjust/log/view.vue b/attendance-performance-manager-ui/admin/src/views/staff/adjust/log/view.vue new file mode 100644 index 0000000000000000000000000000000000000000..d1c75bb2aae6a211db8b2f39a19fcbe257bd0d5c --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/adjust/log/view.vue @@ -0,0 +1,122 @@ +<template> + <layout-view> + <el-descriptions :title="title" :column="column" :size="size" :colon="false" border> + <template slot="title"> + <i class="el-icon-tickets"></i> + 鍩烘湰璇︾粏淇℃伅 + </template> + <template slot="extra"> + <el-button type="primary" @click="$router.go(-1)" size="small">杩斿洖</el-button> + </template> + <el-descriptions-item label="鍛樺伐ID" label-class-name="labelClass" content-class-name="contentClass"> + {{form.staffId}} + </el-descriptions-item> + <el-descriptions-item label="鍛樺伐濮撳悕" label-class-name="labelClass" content-class-name="contentClass"> + {{form.fullName}} + </el-descriptions-item> + <el-descriptions-item label="鎬у埆1鐢�2濂�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.gender}} + </el-descriptions-item> + <el-descriptions-item label="鍑虹敓鏃ユ湡" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.birthday)}} + </el-descriptions-item> + <el-descriptions-item label="鐓х墖" label-class-name="labelClass" content-class-name="contentClass"> + {{form.photoPath}} + </el-descriptions-item> + <el-descriptions-item label="鑱旂郴鐢佃瘽" label-class-name="labelClass" content-class-name="contentClass"> + {{form.phoneNumber}} + </el-descriptions-item> + <el-descriptions-item label="韬唤璇佸彿鐮�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.idCard}} + </el-descriptions-item> + <el-descriptions-item label="宸ュ彿" label-class-name="labelClass" content-class-name="contentClass"> + {{form.workNum}} + </el-descriptions-item> + <el-descriptions-item label="鏀挎不闈㈣矊 " label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("politicalstatus", form.politicalstatus) }} + </el-descriptions-item> + <el-descriptions-item label="鎵€灞為儴闂�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.deptId}} + </el-descriptions-item> + <el-descriptions-item label="鎵€灞為儴闂ㄥ悕绉�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.deptName}} + </el-descriptions-item> + <el-descriptions-item label="鑱屼綅ID" label-class-name="labelClass" content-class-name="contentClass"> + {{form.jobId}} + </el-descriptions-item> + <el-descriptions-item label="鑱屼綅鍚嶇О" label-class-name="labelClass" content-class-name="contentClass"> + {{form.jobName}} + </el-descriptions-item> + <el-descriptions-item label="鍛樺伐绫诲瀷1鍏ㄨ亴2鍏艰亴3瀹炰範" label-class-name="labelClass" content-class-name="contentClass"> + {{form.staffType}} + </el-descriptions-item> + <el-descriptions-item label="鍛樺伐鐘舵€�1姝e紡2璇曠敤3绂昏亴" label-class-name="labelClass" content-class-name="contentClass"> + {{form.status}} + </el-descriptions-item> + <el-descriptions-item label="鍏ヨ亴鏃堕棿" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.entryDate)}} + </el-descriptions-item> + <el-descriptions-item label="璋冨矖鍚庢墍灞為儴闂�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.newDeptId}} + </el-descriptions-item> + <el-descriptions-item label="璋冨矖鍚庢墍灞為儴闂ㄥ悕绉�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.newDeptName}} + </el-descriptions-item> + <el-descriptions-item label="璋冨矖鍚庤亴浣岻D" label-class-name="labelClass" content-class-name="contentClass"> + {{form.newJobId}} + </el-descriptions-item> + <el-descriptions-item label="璋冨矖鍚庤亴浣嶅悕绉�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.newJobName}} + </el-descriptions-item> + <el-descriptions-item label="瀹℃牳鐘舵€�0寰呭鏍�1閫氳繃2鎷掔粷" label-class-name="labelClass" content-class-name="contentClass"> + {{form.auditStatus}} + </el-descriptions-item> + </el-descriptions> + + </layout-view> +</template> + +<script> + import view from "@/assets/mixins/view"; + export default { + mixins: [view], + components: { + }, + methods: { + + }, + data() { + return { + size:"small", + column:2, + toString:[ + "gender", + "politicalstatus", + "staffType", + "status", + "auditStatus", + ], + toArrays: [ + + ], + toDate: [ + + ] + } + } + } +</script> +<style lang="less"> + .labelClass{ + width: 200px; + } + .el-descriptions__body{ + margin-left: 5px; + margin-right: 5px; + color: #606266; + background-color: #FFF; + } + .contentClass{ + width: 600px; + } +</style> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/staff/black/dialogshow.vue b/attendance-performance-manager-ui/admin/src/views/staff/black/dialogshow.vue new file mode 100644 index 0000000000000000000000000000000000000000..db4dcb637cba3e6e47a6714ac539d396595989c6 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/black/dialogshow.vue @@ -0,0 +1,117 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍛樺伐濮撳悕" prop="staffName" v-model="form.staffName" placeholder="璇疯緭鍏ュ憳宸ュ鍚�"/> + <Field label="鑱旂郴鐢佃瘽" prop="phoneNumber" v-model="form.phoneNumber" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"/> + <Field label="韬唤璇佸彿鐮�" prop="idCard" v-model="form.idCard" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜"/> + <Field label="绂昏亴鏃堕棿" prop="leaveDate" v-model="form.leaveDate" type="date" /> + <Field label="绂昏亴鍘熷洜" prop="leaveReason" v-model="form.leaveReason" type="textarea" placeholder="璇疯緭鍏ョ鑱屽師鍥�"/> + <Field label="鎷夐粦鏃堕棿" prop="blackDate" v-model="form.blackDate" type="date" /> + <Field label="鎷夐粦鍘熷洜" prop="blackReason" v-model="form.blackReason" type="textarea" placeholder="璇疯緭鍏ユ媺榛戝師鍥�"/> + + </el-row> + + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + import dialogShow from "./dialogshow"; + export default { + mixins: [form], + components: { + dialogShow , + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鍛樺伐榛戝悕鍗曚俊鎭�", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString:[ + ], + // 琛ㄥ崟鏍¢獙 + rules: { + staffName: [ + {required: true,message: "璇疯緭鍏ュ憳宸ュ鍚�", trigger: "blur" }, + {max: 64,message: "鏈€澶氬彧鑳藉綍鍏�64涓瓧绗�",trigger: "blur",}, + ], + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/black/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鍛樺伐榛戝悕鍗曚俊鎭�"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "staff/black/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鍛樺伐榛戝悕鍗曚俊鎭�"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/black/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鍛樺伐榛戝悕鍗曚俊鎭缁�"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + staffId : null, + staffName : "", + phoneNumber : "", + idCard : "", + leaveDate : null, + leaveReason : "", + blackDate : null, + blackReason : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/staff/black/drawershow.vue b/attendance-performance-manager-ui/admin/src/views/staff/black/drawershow.vue new file mode 100644 index 0000000000000000000000000000000000000000..9c4e4ac3e5d02dce8df631b347f79b50fe8ea58f --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/black/drawershow.vue @@ -0,0 +1,127 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-drawer + :title="title" + :visible.sync="open" + :direction="direction" + size="50%"> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍛樺伐濮撳悕" prop="staffName" v-model="form.staffName" placeholder="璇疯緭鍏ュ憳宸ュ鍚�"/> + <Field label="鑱旂郴鐢佃瘽" prop="phoneNumber" v-model="form.phoneNumber" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"/> + <Field label="韬唤璇佸彿鐮�" prop="idCard" v-model="form.idCard" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜"/> + <Field label="绂昏亴鏃堕棿" prop="leaveDate" v-model="form.leaveDate" type="date" /> + <Field label="绂昏亴鍘熷洜" prop="leaveReason" v-model="form.leaveReason" type="textarea" placeholder="璇疯緭鍏ョ鑱屽師鍥�"/> + <Field label="鎷夐粦鏃堕棿" prop="blackDate" v-model="form.blackDate" type="date" /> + <Field label="鎷夐粦鍘熷洜" prop="blackReason" v-model="form.blackReason" type="textarea" placeholder="璇疯緭鍏ユ媺榛戝師鍥�"/> + + </el-row> + + <form-buttons @submit='submitForm' noCancelBtn /> + </el-form> + + </el-drawer> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + export default { + name: "StaffBlackDetail", + mixins: [form], + components: { + + }, + created() { + this.changePath("staff/black") + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鍛樺伐榛戝悕鍗曚俊鎭�", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + direction:"rtl", + toString:[ + ], + toDate:[ + "leaveDate", + "blackDate", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + staffName: [ + {required: true,message: "璇疯緭鍏ュ憳宸ュ鍚�", trigger: "blur" }, + {max: 64,message: "鏈€澶氬彧鑳藉綍鍏�64涓瓧绗�",trigger: "blur",}, + ], + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/black/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鍛樺伐榛戝悕鍗曚俊鎭�"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "staff/black/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鍛樺伐榛戝悕鍗曚俊鎭�"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/black/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鍛樺伐榛戝悕鍗曚俊鎭缁�"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + staffId : null, + staffName : "", + phoneNumber : "", + idCard : "", + leaveDate : null, + leaveReason : "", + blackDate : null, + blackReason : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/staff/black/list.vue b/attendance-performance-manager-ui/admin/src/views/staff/black/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..c9e4172293caaf477dc37ae72856b59e76421b6f --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/black/list.vue @@ -0,0 +1,74 @@ +<template> + <div class="page"> + <LayoutTable :data="tableData" :config="tableConfig"> + </LayoutTable> + + + <drawer-show ref="drawerform" @ok="getData" /> + </div> +</template> + +<script> + /** 琛ㄥ崟寮瑰嚭妗嗘ā寮忛渶寮曞叆 */ + import drawerShow from "./drawershow"; + import table from "@/assets/mixins/table"; + export default { + name: "StaffBlackList", + components: { + drawerShow +}, + mixins: [table], + created() { + }, + methods: { + /** 閲嶅啓鏂板鏂规硶 */ + toAdd(row) { + this.$refs.drawerform.add(row); + }, + /** 閲嶅啓缂栬緫鏂规硶 */ + toEdit(row) { + this.$refs.drawerform.edit(row); + }, + /** 閲嶅啓鏌ョ湅鏂规硶 */ + toView(row) { + this.$refs.drawerform.view(row); + }, + + }, + data() { + return { + config: { + search: [ + { + name: "staffName", + type: "text", + label: "鍛樺伐濮撳悕", + fuzzy: true + }, + ], + columns: [ + {type: "selection", width: 60}, + {type: "index",label: "搴忓彿",width: 50}, + + {label: "鍛樺伐濮撳悕", prop: "staffName"}, + + {label: "绂昏亴鏃堕棿", prop: "leaveDate", formatter: this.formatterDate}, + + {label: "鎷夐粦鏃堕棿", prop: "blackDate", formatter: this.formatterDate}, + + {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, + { + label: "鎿嶄綔", + width: 240, + formatter: row => { + return ( + <table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> + ); + } + } + ] + } + }; + } + }; +</script> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/staff/black/view.vue b/attendance-performance-manager-ui/admin/src/views/staff/black/view.vue new file mode 100644 index 0000000000000000000000000000000000000000..7982ba201db17c942618b1825977a2d872f8aff8 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/black/view.vue @@ -0,0 +1,75 @@ +<template> + <layout-view> + <el-descriptions :title="title" :column="column" :size="size" :colon="false" border> + <template slot="title"> + <i class="el-icon-tickets"></i> + 鍩烘湰璇︾粏淇℃伅 + </template> + <template slot="extra"> + <el-button type="primary" @click="$router.go(-1)" size="small">杩斿洖</el-button> + </template> + <el-descriptions-item label="鍛樺伐濮撳悕" label-class-name="labelClass" content-class-name="contentClass"> + {{form.staffName}} + </el-descriptions-item> + <el-descriptions-item label="鑱旂郴鐢佃瘽" label-class-name="labelClass" content-class-name="contentClass"> + {{form.phoneNumber}} + </el-descriptions-item> + <el-descriptions-item label="韬唤璇佸彿鐮�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.idCard}} + </el-descriptions-item> + <el-descriptions-item label="绂昏亴鏃堕棿" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.leaveDate)}} + </el-descriptions-item> + <el-descriptions-item label="绂昏亴鍘熷洜" label-class-name="labelClass" content-class-name="contentClass"> + {{form.leaveReason}} + </el-descriptions-item> + <el-descriptions-item label="鎷夐粦鏃堕棿" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.blackDate)}} + </el-descriptions-item> + <el-descriptions-item label="鎷夐粦鍘熷洜" label-class-name="labelClass" content-class-name="contentClass"> + {{form.blackReason}} + </el-descriptions-item> + </el-descriptions> + + </layout-view> +</template> + +<script> + import view from "@/assets/mixins/view"; + export default { + mixins: [view], + components: { + }, + methods: { + + }, + data() { + return { + size:"small", + column:2, + toString:[ + ], + toArrays: [ + + ], + toDate: [ + + ] + } + } + } +</script> +<style lang="less"> + .labelClass{ + width: 200px; + } + .el-descriptions__body{ + margin-left: 5px; + margin-right: 5px; + color: #606266; + background-color: #FFF; + } + .contentClass{ + width: 600px; + } +</style> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/staff/care/dialogshow.vue b/attendance-performance-manager-ui/admin/src/views/staff/care/dialogshow.vue new file mode 100644 index 0000000000000000000000000000000000000000..9a5b9d1e9e3a880cd3cc3dab3f24a24c60387150 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/care/dialogshow.vue @@ -0,0 +1,127 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍛樺伐濮撳悕" prop="staffName" v-model="form.staffName" placeholder="璇疯緭鍏ュ憳宸ュ鍚�"/> + <Field label="鍑虹敓鏃ユ湡" prop="birthday" v-model="form.birthday" type="date" /> + <Field label="鎵€灞為儴闂�" prop="deptId" v-model="form.deptId" placeholder="璇疯緭鍏ユ墍灞為儴闂�"/> + <Field label="鎵€灞為儴闂ㄥ悕绉�" prop="deptName" v-model="form.deptName" placeholder="璇疯緭鍏ユ墍灞為儴闂ㄥ悕绉�"/> + <Field label="鑱屼綅ID" prop="jobId" v-model="form.jobId" placeholder="璇疯緭鍏ヨ亴浣岻D"/> + <Field label="鑱屼綅鍚嶇О" prop="jobName" v-model="form.jobName" placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�"/> + <Field label="鍏ヨ亴鏃堕棿" prop="entryDate" v-model="form.entryDate" type="date" /> + <Field label="鍏虫€€绫诲瀷" prop="careType" v-model="form.careType" type="select" :enumData="dict.careType" placeholder="璇烽€夋嫨鍏虫€€绫诲瀷"/> + <Field label="鍙戦€佺姸鎬�" prop="sendStatus" v-model="form.sendStatus" type="select" :enumData="dict.sendStatus" placeholder="璇烽€夋嫨鍙戦€佺姸鎬�"/> + <Field label="鍏虫€€鍐呭"><editor v-model="form.content" :min-height="256"/></Field> + + </el-row> + + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + import dialogShow from "./dialogshow"; + import Editor from '@/components/Editor'; + export default { + mixins: [form], + components: { + dialogShow , + Editor, + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鍛樺伐鍏虫€€淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString:[ + "careType", + "sendStatus", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + staffName: [ + {required: true,message: "璇疯緭鍏ュ憳宸ュ鍚�", trigger: "blur" }, + {max: 64,message: "鏈€澶氬彧鑳藉綍鍏�64涓瓧绗�",trigger: "blur",}, + ], + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/care/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鍛樺伐鍏虫€€淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "staff/care/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鍛樺伐鍏虫€€淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/care/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鍛樺伐鍏虫€€淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + staffId : null, + staffName : "", + birthday : null, + deptId : null, + deptName : "", + jobId : null, + jobName : "", + entryDate : null, + careType : 1, + sendStatus : 0, + content : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/staff/care/drawershow.vue b/attendance-performance-manager-ui/admin/src/views/staff/care/drawershow.vue new file mode 100644 index 0000000000000000000000000000000000000000..369c278997000f8fa895462311443defc0ff7caf --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/care/drawershow.vue @@ -0,0 +1,135 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-drawer + :title="title" + :visible.sync="open" + :direction="direction" + size="50%"> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍛樺伐濮撳悕" prop="staffName" v-model="form.staffName" placeholder="璇疯緭鍏ュ憳宸ュ鍚�"/> + <Field label="鍑虹敓鏃ユ湡" prop="birthday" v-model="form.birthday" type="date" /> + <Field label="鎵€灞為儴闂�" prop="deptId" v-model="form.deptId" placeholder="璇疯緭鍏ユ墍灞為儴闂�"/> + <Field label="鎵€灞為儴闂ㄥ悕绉�" prop="deptName" v-model="form.deptName" placeholder="璇疯緭鍏ユ墍灞為儴闂ㄥ悕绉�"/> + <Field label="鑱屼綅ID" prop="jobId" v-model="form.jobId" placeholder="璇疯緭鍏ヨ亴浣岻D"/> + <Field label="鑱屼綅鍚嶇О" prop="jobName" v-model="form.jobName" placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�"/> + <Field label="鍏ヨ亴鏃堕棿" prop="entryDate" v-model="form.entryDate" type="date" /> + <Field label="鍏虫€€绫诲瀷" prop="careType" v-model="form.careType" type="select" :enumData="dict.careType" placeholder="璇烽€夋嫨鍏虫€€绫诲瀷"/> + <Field label="鍙戦€佺姸鎬�" prop="sendStatus" v-model="form.sendStatus" type="select" :enumData="dict.sendStatus" placeholder="璇烽€夋嫨鍙戦€佺姸鎬�"/> + <Field label="鍏虫€€鍐呭"><editor v-model="form.content" :min-height="256"/></Field> + + </el-row> + + <form-buttons @submit='submitForm' noCancelBtn /> + </el-form> + + </el-drawer> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + export default { + name: "StaffCareDetail", + mixins: [form], + components: { + + }, + created() { + this.changePath("staff/care") + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鍛樺伐鍏虫€€淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + direction:"rtl", + toString:[ + "careType", + "sendStatus", + ], + toDate:[ + "birthday", + "entryDate", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + staffName: [ + {required: true,message: "璇疯緭鍏ュ憳宸ュ鍚�", trigger: "blur" }, + {max: 64,message: "鏈€澶氬彧鑳藉綍鍏�64涓瓧绗�",trigger: "blur",}, + ], + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/care/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鍛樺伐鍏虫€€淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "staff/care/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鍛樺伐鍏虫€€淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/care/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鍛樺伐鍏虫€€淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + staffId : null, + staffName : "", + birthday : null, + deptId : null, + deptName : "", + jobId : null, + jobName : "", + entryDate : null, + careType : 1, + sendStatus : 0, + content : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/staff/care/list.vue b/attendance-performance-manager-ui/admin/src/views/staff/care/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..b7b549ee0c78d5b7ba32f8e680dd9f4307bb9ea8 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/care/list.vue @@ -0,0 +1,76 @@ +<template> + <div class="page"> + <LayoutTable :data="tableData" :config="tableConfig"> + </LayoutTable> + + + <drawer-show ref="drawerform" @ok="getData" /> + </div> +</template> + +<script> + /** 琛ㄥ崟寮瑰嚭妗嗘ā寮忛渶寮曞叆 */ + import drawerShow from "./drawershow"; + import table from "@/assets/mixins/table"; + export default { + name: "StaffCareList", + components: { + drawerShow +}, + mixins: [table], + created() { + }, + methods: { + /** 閲嶅啓鏂板鏂规硶 */ + toAdd(row) { + this.$refs.drawerform.add(row); + }, + /** 閲嶅啓缂栬緫鏂规硶 */ + toEdit(row) { + this.$refs.drawerform.edit(row); + }, + /** 閲嶅啓鏌ョ湅鏂规硶 */ + toView(row) { + this.$refs.drawerform.view(row); + }, + + }, + data() { + return { + config: { + search: [ + { + name: "staffName", + type: "text", + label: "鍛樺伐濮撳悕", + fuzzy: true + }, + ], + columns: [ + {type: "selection", width: 60}, + {type: "index",label: "搴忓彿",width: 50}, + + {label: "鍛樺伐濮撳悕", prop: "staffName"}, + + {label: "鍏ヨ亴鏃堕棿", prop: "entryDate", formatter: this.formatterDate}, + + {label: "鍏虫€€绫诲瀷", prop: "careType",formatter: this.formatter}, + + {label: "鍙戦€佺姸鎬�", prop: "sendStatus",formatter: this.formatter}, + + {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, + { + label: "鎿嶄綔", + width: 240, + formatter: row => { + return ( + <table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> + ); + } + } + ] + } + }; + } + }; +</script> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/staff/care/view.vue b/attendance-performance-manager-ui/admin/src/views/staff/care/view.vue new file mode 100644 index 0000000000000000000000000000000000000000..bb26d5b0c03df5c3aa322196a33458ec00910412 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/care/view.vue @@ -0,0 +1,88 @@ +<template> + <layout-view> + <el-descriptions :title="title" :column="column" :size="size" :colon="false" border> + <template slot="title"> + <i class="el-icon-tickets"></i> + 鍩烘湰璇︾粏淇℃伅 + </template> + <template slot="extra"> + <el-button type="primary" @click="$router.go(-1)" size="small">杩斿洖</el-button> + </template> + <el-descriptions-item label="鍛樺伐濮撳悕" label-class-name="labelClass" content-class-name="contentClass"> + {{form.staffName}} + </el-descriptions-item> + <el-descriptions-item label="鍑虹敓鏃ユ湡" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.birthday)}} + </el-descriptions-item> + <el-descriptions-item label="鎵€灞為儴闂�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.deptId}} + </el-descriptions-item> + <el-descriptions-item label="鎵€灞為儴闂ㄥ悕绉�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.deptName}} + </el-descriptions-item> + <el-descriptions-item label="鑱屼綅ID" label-class-name="labelClass" content-class-name="contentClass"> + {{form.jobId}} + </el-descriptions-item> + <el-descriptions-item label="鑱屼綅鍚嶇О" label-class-name="labelClass" content-class-name="contentClass"> + {{form.jobName}} + </el-descriptions-item> + <el-descriptions-item label="鍏ヨ亴鏃堕棿" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.entryDate)}} + </el-descriptions-item> + <el-descriptions-item label="鍏虫€€绫诲瀷" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("careType", form.careType) }} + </el-descriptions-item> + <el-descriptions-item label="鍙戦€佺姸鎬�" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("sendStatus", form.sendStatus) }} + </el-descriptions-item> + <el-descriptions-item label="鍏虫€€鍐呭" label-class-name="labelClass" content-class-name="contentClass"> + <editor v-model="form.content" :min-height="256"/> + </el-descriptions-item> + </el-descriptions> + + </layout-view> +</template> + +<script> + import view from "@/assets/mixins/view"; + import Editor from '@/components/Editor'; + export default { + mixins: [view], + components: { + Editor, + }, + methods: { + + }, + data() { + return { + size:"small", + column:2, + toString:[ + "careType", + "sendStatus", + ], + toArrays: [ + + ], + toDate: [ + + ] + } + } + } +</script> +<style lang="less"> + .labelClass{ + width: 200px; + } + .el-descriptions__body{ + margin-left: 5px; + margin-right: 5px; + color: #606266; + background-color: #FFF; + } + .contentClass{ + width: 600px; + } +</style> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/staff/contract/dialogshow.vue b/attendance-performance-manager-ui/admin/src/views/staff/contract/dialogshow.vue new file mode 100644 index 0000000000000000000000000000000000000000..88c8b8e0c0191f459b15ded9f7bd0ab4649963d1 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/contract/dialogshow.vue @@ -0,0 +1,154 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍛樺伐ID" prop="staffId" v-model="form.staffId" placeholder="璇疯緭鍏ュ憳宸D"/> + <Field label="鍛樺伐濮撳悕" prop="staffName" v-model="form.staffName" placeholder="璇疯緭鍏ュ憳宸ュ鍚�"/> + <Field label="鎬у埆" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="璇烽€夋嫨鎬у埆"/> + <Field label="鍑虹敓鏃ユ湡" prop="birthday" v-model="form.birthday" type="date" /> + <Field label="鐓х墖" prop="photoPath" v-model="form.photoPath" type="textarea" placeholder="璇疯緭鍏ョ収鐗�"/> + <Field label="鑱旂郴鐢佃瘽" prop="phoneNumber" v-model="form.phoneNumber" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"/> + <Field label="韬唤璇佸彿鐮�" prop="idCard" v-model="form.idCard" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜"/> + <Field label="宸ュ彿" prop="workNum" v-model="form.workNum" placeholder="璇疯緭鍏ュ伐鍙�"/> + <Field label="鏀挎不闈㈣矊 " prop="politicalstatus" v-model="form.politicalstatus" type="select" :enumData="dict.politicalstatus" placeholder="璇烽€夋嫨鏀挎不闈㈣矊 "/> + <Field label="鎵€灞為儴闂�" prop="deptId" v-model="form.deptId" placeholder="璇疯緭鍏ユ墍灞為儴闂�"/> + <Field label="鎵€灞為儴闂ㄥ悕绉�" prop="deptName" v-model="form.deptName" placeholder="璇疯緭鍏ユ墍灞為儴闂ㄥ悕绉�"/> + <Field label="鑱屼綅ID" prop="jobId" v-model="form.jobId" placeholder="璇疯緭鍏ヨ亴浣岻D"/> + <Field label="鑱屼綅鍚嶇О" prop="jobName" v-model="form.jobName" placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�"/> + <Field label="鍛樺伐绫诲瀷" prop="staffType" v-model="form.staffType" type="select" :enumData="dict.staffType" placeholder="璇烽€夋嫨鍛樺伐绫诲瀷"/> + <Field label="鍛樺伐鐘舵€�" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="璇烽€夋嫨鍛樺伐鐘舵€�"/> + <Field label="鍏ヨ亴鏃堕棿" prop="entryDate" v-model="form.entryDate" type="date" /> + <Field label="鐜板悎鍚屽紑濮嬫椂闂�" prop="contractStartDate" v-model="form.contractStartDate" type="date" /> + <Field label="鐜板悎鍚屽埌鏈熸椂闂�" prop="contractEndDate" v-model="form.contractEndDate" type="date" /> + <Field label="鍚堝悓鍏徃" prop="contractCompany" v-model="form.contractCompany" type="textarea" placeholder="璇疯緭鍏ュ悎鍚屽叕鍙�"/> + <Field label="鍚堝悓绫诲瀷" prop="contractType" v-model="form.contractType" type="select" :enumData="dict.contractType" placeholder="璇烽€夋嫨鍚堝悓绫诲瀷"/> + <Field label="鏂板悎鍚屽紑濮嬫椂闂�" prop="newStartDate" v-model="form.newStartDate" type="date" /> + <Field label="鏂板悎鍚屽埌鏈熸椂闂�" prop="newEndDate" v-model="form.newEndDate" type="date" /> + <Field label="瀹℃牳鐘舵€�" prop="auditStatus" v-model="form.auditStatus" type="select" :enumData="dict.auditStatus" placeholder="璇烽€夋嫨瀹℃牳鐘舵€�"/> + + </el-row> + + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + import dialogShow from "./dialogshow"; + export default { + mixins: [form], + components: { + dialogShow , + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鍛樺伐鍚堝悓淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString:[ + "gender", + "politicalstatus", + "staffType", + "status", + "contractType", + "auditStatus", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + staffName: [ + {required: true,message: "璇疯緭鍏ュ憳宸ュ鍚�", trigger: "blur" }, + {max: 64,message: "鏈€澶氬彧鑳藉綍鍏�64涓瓧绗�",trigger: "blur",}, + ], + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/contract/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鍛樺伐鍚堝悓淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "staff/contract/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鍛樺伐鍚堝悓淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/contract/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鍛樺伐鍚堝悓淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + staffId : null, + staffName : "", + gender : 1, + birthday : null, + photoPath : "", + phoneNumber : "", + idCard : "", + workNum : "", + politicalstatus : 1, + deptId : null, + deptName : "", + jobId : null, + jobName : "", + staffType : 1, + status : 1, + entryDate : null, + contractStartDate : null, + contractEndDate : null, + contractCompany : "", + contractType : 1, + newStartDate : null, + newEndDate : null, + auditStatus : 0, + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/staff/contract/drawershow.vue b/attendance-performance-manager-ui/admin/src/views/staff/contract/drawershow.vue new file mode 100644 index 0000000000000000000000000000000000000000..6e1051075f1b4fae9d246a3867212fc0afcf460d --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/contract/drawershow.vue @@ -0,0 +1,168 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-drawer + :title="title" + :visible.sync="open" + :direction="direction" + size="50%"> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍛樺伐ID" prop="staffId" v-model="form.staffId" placeholder="璇疯緭鍏ュ憳宸D"/> + <Field label="鍛樺伐濮撳悕" prop="staffName" v-model="form.staffName" placeholder="璇疯緭鍏ュ憳宸ュ鍚�"/> + <Field label="鎬у埆" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="璇烽€夋嫨鎬у埆"/> + <Field label="鍑虹敓鏃ユ湡" prop="birthday" v-model="form.birthday" type="date" /> + <Field label="鐓х墖" prop="photoPath" v-model="form.photoPath" type="textarea" placeholder="璇疯緭鍏ョ収鐗�"/> + <Field label="鑱旂郴鐢佃瘽" prop="phoneNumber" v-model="form.phoneNumber" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"/> + <Field label="韬唤璇佸彿鐮�" prop="idCard" v-model="form.idCard" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜"/> + <Field label="宸ュ彿" prop="workNum" v-model="form.workNum" placeholder="璇疯緭鍏ュ伐鍙�"/> + <Field label="鏀挎不闈㈣矊 " prop="politicalstatus" v-model="form.politicalstatus" type="select" :enumData="dict.politicalstatus" placeholder="璇烽€夋嫨鏀挎不闈㈣矊 "/> + <Field label="鎵€灞為儴闂�" prop="deptId" v-model="form.deptId" placeholder="璇疯緭鍏ユ墍灞為儴闂�"/> + <Field label="鎵€灞為儴闂ㄥ悕绉�" prop="deptName" v-model="form.deptName" placeholder="璇疯緭鍏ユ墍灞為儴闂ㄥ悕绉�"/> + <Field label="鑱屼綅ID" prop="jobId" v-model="form.jobId" placeholder="璇疯緭鍏ヨ亴浣岻D"/> + <Field label="鑱屼綅鍚嶇О" prop="jobName" v-model="form.jobName" placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�"/> + <Field label="鍛樺伐绫诲瀷" prop="staffType" v-model="form.staffType" type="select" :enumData="dict.staffType" placeholder="璇烽€夋嫨鍛樺伐绫诲瀷"/> + <Field label="鍛樺伐鐘舵€�" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="璇烽€夋嫨鍛樺伐鐘舵€�"/> + <Field label="鍏ヨ亴鏃堕棿" prop="entryDate" v-model="form.entryDate" type="date" /> + <Field label="鐜板悎鍚屽紑濮嬫椂闂�" prop="contractStartDate" v-model="form.contractStartDate" type="date" /> + <Field label="鐜板悎鍚屽埌鏈熸椂闂�" prop="contractEndDate" v-model="form.contractEndDate" type="date" /> + <Field label="鍚堝悓鍏徃" prop="contractCompany" v-model="form.contractCompany" type="textarea" placeholder="璇疯緭鍏ュ悎鍚屽叕鍙�"/> + <Field label="鍚堝悓绫诲瀷" prop="contractType" v-model="form.contractType" type="select" :enumData="dict.contractType" placeholder="璇烽€夋嫨鍚堝悓绫诲瀷"/> + <Field label="鏂板悎鍚屽紑濮嬫椂闂�" prop="newStartDate" v-model="form.newStartDate" type="date" /> + <Field label="鏂板悎鍚屽埌鏈熸椂闂�" prop="newEndDate" v-model="form.newEndDate" type="date" /> + <Field label="瀹℃牳鐘舵€�" prop="auditStatus" v-model="form.auditStatus" type="select" :enumData="dict.auditStatus" placeholder="璇烽€夋嫨瀹℃牳鐘舵€�"/> + + </el-row> + + <form-buttons @submit='submitForm' noCancelBtn /> + </el-form> + + </el-drawer> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + export default { + name: "StaffContractDetail", + mixins: [form], + components: { + + }, + created() { + this.changePath("staff/contract") + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鍛樺伐鍚堝悓淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + direction:"rtl", + toString:[ + "gender", + "politicalstatus", + "staffType", + "status", + "contractType", + "auditStatus", + ], + toDate:[ + "birthday", + "entryDate", + "contractStartDate", + "contractEndDate", + "newStartDate", + "newEndDate", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + staffName: [ + {required: true,message: "璇疯緭鍏ュ憳宸ュ鍚�", trigger: "blur" }, + {max: 64,message: "鏈€澶氬彧鑳藉綍鍏�64涓瓧绗�",trigger: "blur",}, + ], + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/contract/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鍛樺伐鍚堝悓淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "staff/contract/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鍛樺伐鍚堝悓淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/contract/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鍛樺伐鍚堝悓淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + staffId : null, + staffName : "", + gender : 1, + birthday : null, + photoPath : "", + phoneNumber : "", + idCard : "", + workNum : "", + politicalstatus : 1, + deptId : null, + deptName : "", + jobId : null, + jobName : "", + staffType : 1, + status : 1, + entryDate : null, + contractStartDate : null, + contractEndDate : null, + contractCompany : "", + contractType : 1, + newStartDate : null, + newEndDate : null, + auditStatus : 0, + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/staff/contract/list.vue b/attendance-performance-manager-ui/admin/src/views/staff/contract/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..f17acd304183af59d626e87f74873790997e2ad3 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/contract/list.vue @@ -0,0 +1,116 @@ +<template> + <div class="page"> + <LayoutTable :data="tableData" :config="tableConfig"> + </LayoutTable> + + + <drawer-show ref="drawerform" @ok="getData" /> + </div> +</template> + +<script> + /** 琛ㄥ崟寮瑰嚭妗嗘ā寮忛渶寮曞叆 */ + import drawerShow from "./drawershow"; + import table from "@/assets/mixins/table"; + export default { + name: "StaffContractList", + components: { + drawerShow +}, + mixins: [table], + created() { + }, + methods: { + /** 閲嶅啓鏂板鏂规硶 */ + toAdd(row) { + this.$refs.drawerform.add(row); + }, + /** 閲嶅啓缂栬緫鏂规硶 */ + toEdit(row) { + this.$refs.drawerform.edit(row); + }, + /** 閲嶅啓鏌ョ湅鏂规硶 */ + toView(row) { + this.$refs.drawerform.view(row); + }, + + }, + data() { + return { + config: { + search: [ + { + name: "staffName", + type: "text", + label: "鍛樺伐濮撳悕", + fuzzy: true + }, + { + name: "politicalstatus", + type: "select", + label: "鏀挎不闈㈣矊 ", + fuzzy: true + }, + { + name: "staffType", + type: "select", + label: "鍛樺伐绫诲瀷", + fuzzy: true + }, + { + name: "status", + type: "select", + label: "鍛樺伐鐘舵€�", + fuzzy: true + }, + { + name: "auditStatus", + type: "select", + label: "瀹℃牳鐘舵€�", + fuzzy: true + }, + ], + columns: [ + {type: "selection", width: 60}, + {type: "index",label: "搴忓彿",width: 50}, + + {label: "鍛樺伐濮撳悕", prop: "staffName"}, + + {label: "鎬у埆", prop: "gender",formatter: this.formatter}, + + {label: "鏀挎不闈㈣矊 ", prop: "politicalstatus",formatter: this.formatter}, + + {label: "鍛樺伐绫诲瀷", prop: "staffType",formatter: this.formatter}, + + {label: "鍛樺伐鐘舵€�", prop: "status",formatter: this.formatter}, + + {label: "鍏ヨ亴鏃堕棿", prop: "entryDate", formatter: this.formatterDate}, + + {label: "鐜板悎鍚屽紑濮嬫椂闂�", prop: "contractStartDate", formatter: this.formatterDate}, + + {label: "鐜板悎鍚屽埌鏈熸椂闂�", prop: "contractEndDate", formatter: this.formatterDate}, + + {label: "鍚堝悓绫诲瀷", prop: "contractType",formatter: this.formatter}, + + {label: "鏂板悎鍚屽紑濮嬫椂闂�", prop: "newStartDate", formatter: this.formatterDate}, + + {label: "鏂板悎鍚屽埌鏈熸椂闂�", prop: "newEndDate", formatter: this.formatterDate}, + + {label: "瀹℃牳鐘舵€�", prop: "auditStatus",formatter: this.formatter}, + + {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, + { + label: "鎿嶄綔", + width: 240, + formatter: row => { + return ( + <table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> + ); + } + } + ] + } + }; + } + }; +</script> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/staff/contract/view.vue b/attendance-performance-manager-ui/admin/src/views/staff/contract/view.vue new file mode 100644 index 0000000000000000000000000000000000000000..3d231b53a1af6ac914c877bb7b0c2e5967cede66 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/contract/view.vue @@ -0,0 +1,129 @@ +<template> + <layout-view> + <el-descriptions :title="title" :column="column" :size="size" :colon="false" border> + <template slot="title"> + <i class="el-icon-tickets"></i> + 鍩烘湰璇︾粏淇℃伅 + </template> + <template slot="extra"> + <el-button type="primary" @click="$router.go(-1)" size="small">杩斿洖</el-button> + </template> + <el-descriptions-item label="鍛樺伐ID" label-class-name="labelClass" content-class-name="contentClass"> + {{form.staffId}} + </el-descriptions-item> + <el-descriptions-item label="鍛樺伐濮撳悕" label-class-name="labelClass" content-class-name="contentClass"> + {{form.staffName}} + </el-descriptions-item> + <el-descriptions-item label="鎬у埆" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("gender", form.gender) }} + </el-descriptions-item> + <el-descriptions-item label="鍑虹敓鏃ユ湡" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.birthday)}} + </el-descriptions-item> + <el-descriptions-item label="鐓х墖" label-class-name="labelClass" content-class-name="contentClass"> + {{form.photoPath}} + </el-descriptions-item> + <el-descriptions-item label="鑱旂郴鐢佃瘽" label-class-name="labelClass" content-class-name="contentClass"> + {{form.phoneNumber}} + </el-descriptions-item> + <el-descriptions-item label="韬唤璇佸彿鐮�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.idCard}} + </el-descriptions-item> + <el-descriptions-item label="宸ュ彿" label-class-name="labelClass" content-class-name="contentClass"> + {{form.workNum}} + </el-descriptions-item> + <el-descriptions-item label="鏀挎不闈㈣矊 " label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("politicalstatus", form.politicalstatus) }} + </el-descriptions-item> + <el-descriptions-item label="鎵€灞為儴闂�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.deptId}} + </el-descriptions-item> + <el-descriptions-item label="鎵€灞為儴闂ㄥ悕绉�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.deptName}} + </el-descriptions-item> + <el-descriptions-item label="鑱屼綅ID" label-class-name="labelClass" content-class-name="contentClass"> + {{form.jobId}} + </el-descriptions-item> + <el-descriptions-item label="鑱屼綅鍚嶇О" label-class-name="labelClass" content-class-name="contentClass"> + {{form.jobName}} + </el-descriptions-item> + <el-descriptions-item label="鍛樺伐绫诲瀷" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("staffType", form.staffType) }} + </el-descriptions-item> + <el-descriptions-item label="鍛樺伐鐘舵€�" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("status", form.status) }} + </el-descriptions-item> + <el-descriptions-item label="鍏ヨ亴鏃堕棿" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.entryDate)}} + </el-descriptions-item> + <el-descriptions-item label="鐜板悎鍚屽紑濮嬫椂闂�" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.contractStartDate)}} + </el-descriptions-item> + <el-descriptions-item label="鐜板悎鍚屽埌鏈熸椂闂�" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.contractEndDate)}} + </el-descriptions-item> + <el-descriptions-item label="鍚堝悓鍏徃" label-class-name="labelClass" content-class-name="contentClass"> + {{form.contractCompany}} + </el-descriptions-item> + <el-descriptions-item label="鍚堝悓绫诲瀷" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("contractType", form.contractType) }} + </el-descriptions-item> + <el-descriptions-item label="鏂板悎鍚屽紑濮嬫椂闂�" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.newStartDate)}} + </el-descriptions-item> + <el-descriptions-item label="鏂板悎鍚屽埌鏈熸椂闂�" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.newEndDate)}} + </el-descriptions-item> + <el-descriptions-item label="瀹℃牳鐘舵€�" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("auditStatus", form.auditStatus) }} + </el-descriptions-item> + </el-descriptions> + + </layout-view> +</template> + +<script> + import view from "@/assets/mixins/view"; + export default { + mixins: [view], + components: { + }, + methods: { + + }, + data() { + return { + size:"small", + column:2, + toString:[ + "gender", + "politicalstatus", + "staffType", + "status", + "contractType", + "auditStatus", + ], + toArrays: [ + + ], + toDate: [ + + ] + } + } + } +</script> +<style lang="less"> + .labelClass{ + width: 200px; + } + .el-descriptions__body{ + margin-left: 5px; + margin-right: 5px; + color: #606266; + background-color: #FFF; + } + .contentClass{ + width: 600px; + } +</style> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/staff/dialogshow.vue b/attendance-performance-manager-ui/admin/src/views/staff/dialogshow.vue new file mode 100644 index 0000000000000000000000000000000000000000..38f499497bd2b7525971b7a39ae936ad063b0bb2 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/dialogshow.vue @@ -0,0 +1,144 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍛樺伐濮撳悕" prop="name" v-model="form.name" placeholder="璇疯緭鍏ュ憳宸ュ鍚�"/> + <Field label="鎬у埆" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="璇烽€夋嫨鎬у埆"/> + <Field label="鍑虹敓鏃ユ湡" prop="birthday" v-model="form.birthday" type="date" /> + <Field label="鐓х墖" prop="photoPath" v-model="form.photoPath" type="textarea" placeholder="璇疯緭鍏ョ収鐗�"/> + <Field label="鑱旂郴鐢佃瘽" prop="phoneNumber" v-model="form.phoneNumber" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"/> + <Field label="韬唤璇佸彿鐮�" prop="idCard" v-model="form.idCard" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜"/> + <Field label="宸ュ彿" prop="workNum" v-model="form.workNum" placeholder="璇疯緭鍏ュ伐鍙�"/> + <Field label="鏀挎不闈㈣矊 " prop="politicalstatus" v-model="form.politicalstatus" type="select" :enumData="dict.politicalstatus" placeholder="璇烽€夋嫨鏀挎不闈㈣矊 "/> + <Field label="鎵€灞為儴闂�" prop="deptId" v-model="form.deptId" placeholder="璇疯緭鍏ユ墍灞為儴闂�"/> + <Field label="鎵€灞為儴闂ㄥ悕绉�" prop="deptName" v-model="form.deptName" placeholder="璇疯緭鍏ユ墍灞為儴闂ㄥ悕绉�"/> + <Field label="鑱屼綅ID" prop="positionId" v-model="form.positionId" placeholder="璇疯緭鍏ヨ亴浣岻D"/> + <Field label="鑱屼綅鍚嶇О" prop="positionName" v-model="form.positionName" placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�"/> + <Field label="鍛樺伐绫诲瀷" prop="staffType" v-model="form.staffType" type="select" :enumData="dict.staffType" placeholder="璇烽€夋嫨鍛樺伐绫诲瀷"/> + <Field label="鍛樺伐鐘舵€�" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="璇烽€夋嫨鍛樺伐鐘舵€�"/> + <Field label="鍏ヨ亴鐧昏琛�" prop="registerPath" v-model="form.registerPath" type="textarea" placeholder="璇疯緭鍏ュ叆鑱岀櫥璁拌〃"/> + <Field label="鍏ヨ亴鏃堕棿" prop="entryDate" v-model="form.entryDate" type="date" /> + <Field label="杞鏃堕棿" prop="regularDate" v-model="form.regularDate" type="date" /> + <Field label="绂昏亴鏃堕棿" prop="leaveDate" v-model="form.leaveDate" type="date" /> + <Field label="澶囨敞" prop="remark" v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�"/> + + </el-row> + + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + import dialogShow from "./dialogshow"; + export default { + mixins: [form], + components: { + dialogShow , + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鍛樺伐鍩烘湰淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString:[ + "gender", + "politicalstatus", + "staffType", + "status", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + name: [ + {required: true,message: "璇疯緭鍏ュ憳宸ュ鍚�", trigger: "blur" }, + {max: 64,message: "鏈€澶氬彧鑳藉綍鍏�64涓瓧绗�",trigger: "blur",}, + ], + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鍛樺伐鍩烘湰淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "staff/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鍛樺伐鍩烘湰淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鍛樺伐鍩烘湰淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + name : "", + gender : 1, + birthday : null, + photoPath : "", + phoneNumber : "", + idCard : "", + workNum : "", + politicalstatus : 1, + deptId : null, + deptName : "", + positionId : null, + positionName : "", + staffType : 1, + status : 1, + registerPath : "", + entryDate : null, + regularDate : null, + leaveDate : null, + remark : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/staff/drawershow.vue b/attendance-performance-manager-ui/admin/src/views/staff/drawershow.vue new file mode 100644 index 0000000000000000000000000000000000000000..0239b0084d79443768d1c304ef5b06ef6fc6aa72 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/drawershow.vue @@ -0,0 +1,156 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-drawer + :title="title" + :visible.sync="open" + :direction="direction" + size="50%"> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍛樺伐濮撳悕" prop="name" v-model="form.name" placeholder="璇疯緭鍏ュ憳宸ュ鍚�"/> + <Field label="鎬у埆" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="璇烽€夋嫨鎬у埆"/> + <Field label="鍑虹敓鏃ユ湡" prop="birthday" v-model="form.birthday" type="date" /> + <Field label="鐓х墖" prop="photoPath" v-model="form.photoPath" type="textarea" placeholder="璇疯緭鍏ョ収鐗�"/> + <Field label="鑱旂郴鐢佃瘽" prop="phoneNumber" v-model="form.phoneNumber" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"/> + <Field label="韬唤璇佸彿鐮�" prop="idCard" v-model="form.idCard" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜"/> + <Field label="宸ュ彿" prop="workNum" v-model="form.workNum" placeholder="璇疯緭鍏ュ伐鍙�"/> + <Field label="鏀挎不闈㈣矊 " prop="politicalstatus" v-model="form.politicalstatus" type="select" :enumData="dict.politicalstatus" placeholder="璇烽€夋嫨鏀挎不闈㈣矊 "/> + <Field label="鎵€灞為儴闂�" prop="deptId" v-model="form.deptId" placeholder="璇疯緭鍏ユ墍灞為儴闂�"/> + <Field label="鎵€灞為儴闂ㄥ悕绉�" prop="deptName" v-model="form.deptName" placeholder="璇疯緭鍏ユ墍灞為儴闂ㄥ悕绉�"/> + <Field label="鑱屼綅ID" prop="positionId" v-model="form.positionId" placeholder="璇疯緭鍏ヨ亴浣岻D"/> + <Field label="鑱屼綅鍚嶇О" prop="positionName" v-model="form.positionName" placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�"/> + <Field label="鍛樺伐绫诲瀷" prop="staffType" v-model="form.staffType" type="select" :enumData="dict.staffType" placeholder="璇烽€夋嫨鍛樺伐绫诲瀷"/> + <Field label="鍛樺伐鐘舵€�" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="璇烽€夋嫨鍛樺伐鐘舵€�"/> + <Field label="鍏ヨ亴鐧昏琛�" prop="registerPath" v-model="form.registerPath" type="textarea" placeholder="璇疯緭鍏ュ叆鑱岀櫥璁拌〃"/> + <Field label="鍏ヨ亴鏃堕棿" prop="entryDate" v-model="form.entryDate" type="date" /> + <Field label="杞鏃堕棿" prop="regularDate" v-model="form.regularDate" type="date" /> + <Field label="绂昏亴鏃堕棿" prop="leaveDate" v-model="form.leaveDate" type="date" /> + <Field label="澶囨敞" prop="remark" v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�"/> + + </el-row> + + <form-buttons @submit='submitForm' noCancelBtn /> + </el-form> + + </el-drawer> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + export default { + name: "StaffDetail", + mixins: [form], + components: { + + }, + created() { + this.changePath("staff") + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鍛樺伐鍩烘湰淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + direction:"rtl", + toString:[ + "gender", + "politicalstatus", + "staffType", + "status", + ], + toDate:[ + "birthday", + "entryDate", + "regularDate", + "leaveDate", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + name: [ + {required: true,message: "璇疯緭鍏ュ憳宸ュ鍚�", trigger: "blur" }, + {max: 64,message: "鏈€澶氬彧鑳藉綍鍏�64涓瓧绗�",trigger: "blur",}, + ], + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鍛樺伐鍩烘湰淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "staff/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鍛樺伐鍩烘湰淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鍛樺伐鍩烘湰淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + name : "", + gender : 1, + birthday : null, + photoPath : "", + phoneNumber : "", + idCard : "", + workNum : "", + politicalstatus : 1, + deptId : null, + deptName : "", + positionId : null, + positionName : "", + staffType : 1, + status : 1, + registerPath : "", + entryDate : null, + regularDate : null, + leaveDate : null, + remark : "", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/staff/leave/dialogshow.vue b/attendance-performance-manager-ui/admin/src/views/staff/leave/dialogshow.vue new file mode 100644 index 0000000000000000000000000000000000000000..0c03935e3fc11b517334b4e26ddbe96c0345e841 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/leave/dialogshow.vue @@ -0,0 +1,145 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍛樺伐ID" prop="staffId" v-model="form.staffId" placeholder="璇疯緭鍏ュ憳宸D"/> + <Field label="鍛樺伐濮撳悕" prop="staffName" v-model="form.staffName" placeholder="璇疯緭鍏ュ憳宸ュ鍚�"/> + <Field label="鎬у埆" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="璇烽€夋嫨鎬у埆"/> + <Field label="鍑虹敓鏃ユ湡" prop="birthday" v-model="form.birthday" type="date" /> + <Field label="鐓х墖" prop="photoPath" v-model="form.photoPath" type="textarea" placeholder="璇疯緭鍏ョ収鐗�"/> + <Field label="鑱旂郴鐢佃瘽" prop="phoneNumber" v-model="form.phoneNumber" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"/> + <Field label="韬唤璇佸彿鐮�" prop="idCard" v-model="form.idCard" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜"/> + <Field label="宸ュ彿" prop="workNum" v-model="form.workNum" placeholder="璇疯緭鍏ュ伐鍙�"/> + <Field label="鏀挎不闈㈣矊 " prop="politicalstatus" v-model="form.politicalstatus" type="select" :enumData="dict.politicalstatus" placeholder="璇烽€夋嫨鏀挎不闈㈣矊 "/> + <Field label="鎵€灞為儴闂�" prop="deptId" v-model="form.deptId" placeholder="璇疯緭鍏ユ墍灞為儴闂�"/> + <Field label="鎵€灞為儴闂ㄥ悕绉�" prop="deptName" v-model="form.deptName" placeholder="璇疯緭鍏ユ墍灞為儴闂ㄥ悕绉�"/> + <Field label="鑱屼綅ID" prop="jobId" v-model="form.jobId" placeholder="璇疯緭鍏ヨ亴浣岻D"/> + <Field label="鑱屼綅鍚嶇О" prop="jobName" v-model="form.jobName" placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�"/> + <Field label="鍛樺伐绫诲瀷" prop="staffType" v-model="form.staffType" type="select" :enumData="dict.staffType" placeholder="璇烽€夋嫨鍛樺伐绫诲瀷"/> + <Field label="鍛樺伐鐘舵€�" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="璇烽€夋嫨鍛樺伐鐘舵€�"/> + <Field label="鍏ヨ亴鏃堕棿" prop="entryDate" v-model="form.entryDate" type="date" /> + <Field label="绂昏亴鏃堕棿" prop="leaveDate" v-model="form.leaveDate" type="date" /> + <Field label="绂昏亴鍘熷洜" prop="leaveReason" v-model="form.leaveReason" type="textarea" placeholder="璇疯緭鍏ョ鑱屽師鍥�"/> + <Field label="瀹℃牳鐘舵€�" prop="auditStatus" v-model="form.auditStatus" type="select" :enumData="dict.auditStatus" placeholder="璇烽€夋嫨瀹℃牳鐘舵€�"/> + + </el-row> + + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + import dialogShow from "./dialogshow"; + export default { + mixins: [form], + components: { + dialogShow , + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鍛樺伐绂昏亴淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString:[ + "gender", + "politicalstatus", + "staffType", + "status", + "auditStatus", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + staffName: [ + {required: true,message: "璇疯緭鍏ュ憳宸ュ鍚�", trigger: "blur" }, + {max: 64,message: "鏈€澶氬彧鑳藉綍鍏�64涓瓧绗�",trigger: "blur",}, + ], + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/leave/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鍛樺伐绂昏亴淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "staff/leave/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鍛樺伐绂昏亴淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/leave/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鍛樺伐绂昏亴淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + staffId : null, + staffName : "", + gender : 1, + birthday : null, + photoPath : "", + phoneNumber : "", + idCard : "", + workNum : "", + politicalstatus : 1, + deptId : null, + deptName : "", + jobId : null, + jobName : "", + staffType : 1, + status : 1, + entryDate : null, + leaveDate : null, + leaveReason : "", + auditStatus : 0, + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/staff/leave/drawershow.vue b/attendance-performance-manager-ui/admin/src/views/staff/leave/drawershow.vue new file mode 100644 index 0000000000000000000000000000000000000000..82dac383ca74a8a64f969a1a8377808ef2d60e52 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/leave/drawershow.vue @@ -0,0 +1,156 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-drawer + :title="title" + :visible.sync="open" + :direction="direction" + size="50%"> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍛樺伐ID" prop="staffId" v-model="form.staffId" placeholder="璇疯緭鍏ュ憳宸D"/> + <Field label="鍛樺伐濮撳悕" prop="staffName" v-model="form.staffName" placeholder="璇疯緭鍏ュ憳宸ュ鍚�"/> + <Field label="鎬у埆" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="璇烽€夋嫨鎬у埆"/> + <Field label="鍑虹敓鏃ユ湡" prop="birthday" v-model="form.birthday" type="date" /> + <Field label="鐓х墖" prop="photoPath" v-model="form.photoPath" type="textarea" placeholder="璇疯緭鍏ョ収鐗�"/> + <Field label="鑱旂郴鐢佃瘽" prop="phoneNumber" v-model="form.phoneNumber" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"/> + <Field label="韬唤璇佸彿鐮�" prop="idCard" v-model="form.idCard" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜"/> + <Field label="宸ュ彿" prop="workNum" v-model="form.workNum" placeholder="璇疯緭鍏ュ伐鍙�"/> + <Field label="鏀挎不闈㈣矊 " prop="politicalstatus" v-model="form.politicalstatus" type="select" :enumData="dict.politicalstatus" placeholder="璇烽€夋嫨鏀挎不闈㈣矊 "/> + <Field label="鎵€灞為儴闂�" prop="deptId" v-model="form.deptId" placeholder="璇疯緭鍏ユ墍灞為儴闂�"/> + <Field label="鎵€灞為儴闂ㄥ悕绉�" prop="deptName" v-model="form.deptName" placeholder="璇疯緭鍏ユ墍灞為儴闂ㄥ悕绉�"/> + <Field label="鑱屼綅ID" prop="jobId" v-model="form.jobId" placeholder="璇疯緭鍏ヨ亴浣岻D"/> + <Field label="鑱屼綅鍚嶇О" prop="jobName" v-model="form.jobName" placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�"/> + <Field label="鍛樺伐绫诲瀷" prop="staffType" v-model="form.staffType" type="select" :enumData="dict.staffType" placeholder="璇烽€夋嫨鍛樺伐绫诲瀷"/> + <Field label="鍛樺伐鐘舵€�" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="璇烽€夋嫨鍛樺伐鐘舵€�"/> + <Field label="鍏ヨ亴鏃堕棿" prop="entryDate" v-model="form.entryDate" type="date" /> + <Field label="绂昏亴鏃堕棿" prop="leaveDate" v-model="form.leaveDate" type="date" /> + <Field label="绂昏亴鍘熷洜" prop="leaveReason" v-model="form.leaveReason" type="textarea" placeholder="璇疯緭鍏ョ鑱屽師鍥�"/> + <Field label="瀹℃牳鐘舵€�" prop="auditStatus" v-model="form.auditStatus" type="select" :enumData="dict.auditStatus" placeholder="璇烽€夋嫨瀹℃牳鐘舵€�"/> + + </el-row> + + <form-buttons @submit='submitForm' noCancelBtn /> + </el-form> + + </el-drawer> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + export default { + name: "StaffLeaveDetail", + mixins: [form], + components: { + + }, + created() { + this.changePath("staff/leave") + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鍛樺伐绂昏亴淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + direction:"rtl", + toString:[ + "gender", + "politicalstatus", + "staffType", + "status", + "auditStatus", + ], + toDate:[ + "birthday", + "entryDate", + "leaveDate", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + staffName: [ + {required: true,message: "璇疯緭鍏ュ憳宸ュ鍚�", trigger: "blur" }, + {max: 64,message: "鏈€澶氬彧鑳藉綍鍏�64涓瓧绗�",trigger: "blur",}, + ], + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/leave/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鍛樺伐绂昏亴淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "staff/leave/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鍛樺伐绂昏亴淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/leave/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鍛樺伐绂昏亴淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + staffId : null, + staffName : "", + gender : 1, + birthday : null, + photoPath : "", + phoneNumber : "", + idCard : "", + workNum : "", + politicalstatus : 1, + deptId : null, + deptName : "", + jobId : null, + jobName : "", + staffType : 1, + status : 1, + entryDate : null, + leaveDate : null, + leaveReason : "", + auditStatus : 0, + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/staff/leave/list.vue b/attendance-performance-manager-ui/admin/src/views/staff/leave/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..c7bc908ee73a9ad33e596303d766ebd88cd4bc9d --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/leave/list.vue @@ -0,0 +1,108 @@ +<template> + <div class="page"> + <LayoutTable :data="tableData" :config="tableConfig"> + </LayoutTable> + + + <drawer-show ref="drawerform" @ok="getData" /> + </div> +</template> + +<script> + /** 琛ㄥ崟寮瑰嚭妗嗘ā寮忛渶寮曞叆 */ + import drawerShow from "./drawershow"; + import table from "@/assets/mixins/table"; + export default { + name: "StaffLeaveList", + components: { + drawerShow +}, + mixins: [table], + created() { + }, + methods: { + /** 閲嶅啓鏂板鏂规硶 */ + toAdd(row) { + this.$refs.drawerform.add(row); + }, + /** 閲嶅啓缂栬緫鏂规硶 */ + toEdit(row) { + this.$refs.drawerform.edit(row); + }, + /** 閲嶅啓鏌ョ湅鏂规硶 */ + toView(row) { + this.$refs.drawerform.view(row); + }, + + }, + data() { + return { + config: { + search: [ + { + name: "staffName", + type: "text", + label: "鍛樺伐濮撳悕", + fuzzy: true + }, + { + name: "politicalstatus", + type: "select", + label: "鏀挎不闈㈣矊 ", + fuzzy: true + }, + { + name: "staffType", + type: "select", + label: "鍛樺伐绫诲瀷", + fuzzy: true + }, + { + name: "status", + type: "select", + label: "鍛樺伐鐘舵€�", + fuzzy: true + }, + { + name: "auditStatus", + type: "select", + label: "瀹℃牳鐘舵€�", + fuzzy: true + }, + ], + columns: [ + {type: "selection", width: 60}, + {type: "index",label: "搴忓彿",width: 50}, + + {label: "鍛樺伐濮撳悕", prop: "staffName"}, + + {label: "鎬у埆", prop: "gender",formatter: this.formatter}, + + {label: "鏀挎不闈㈣矊 ", prop: "politicalstatus",formatter: this.formatter}, + + {label: "鍛樺伐绫诲瀷", prop: "staffType",formatter: this.formatter}, + + {label: "鍛樺伐鐘舵€�", prop: "status",formatter: this.formatter}, + + {label: "鍏ヨ亴鏃堕棿", prop: "entryDate", formatter: this.formatterDate}, + + {label: "绂昏亴鏃堕棿", prop: "leaveDate", formatter: this.formatterDate}, + + {label: "瀹℃牳鐘舵€�", prop: "auditStatus",formatter: this.formatter}, + + {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, + { + label: "鎿嶄綔", + width: 240, + formatter: row => { + return ( + <table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> + ); + } + } + ] + } + }; + } + }; +</script> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/staff/leave/view.vue b/attendance-performance-manager-ui/admin/src/views/staff/leave/view.vue new file mode 100644 index 0000000000000000000000000000000000000000..c6e988fcfda6cc27258b0c337b76989c0b2d7152 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/leave/view.vue @@ -0,0 +1,116 @@ +<template> + <layout-view> + <el-descriptions :title="title" :column="column" :size="size" :colon="false" border> + <template slot="title"> + <i class="el-icon-tickets"></i> + 鍩烘湰璇︾粏淇℃伅 + </template> + <template slot="extra"> + <el-button type="primary" @click="$router.go(-1)" size="small">杩斿洖</el-button> + </template> + <el-descriptions-item label="鍛樺伐ID" label-class-name="labelClass" content-class-name="contentClass"> + {{form.staffId}} + </el-descriptions-item> + <el-descriptions-item label="鍛樺伐濮撳悕" label-class-name="labelClass" content-class-name="contentClass"> + {{form.staffName}} + </el-descriptions-item> + <el-descriptions-item label="鎬у埆" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("gender", form.gender) }} + </el-descriptions-item> + <el-descriptions-item label="鍑虹敓鏃ユ湡" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.birthday)}} + </el-descriptions-item> + <el-descriptions-item label="鐓х墖" label-class-name="labelClass" content-class-name="contentClass"> + {{form.photoPath}} + </el-descriptions-item> + <el-descriptions-item label="鑱旂郴鐢佃瘽" label-class-name="labelClass" content-class-name="contentClass"> + {{form.phoneNumber}} + </el-descriptions-item> + <el-descriptions-item label="韬唤璇佸彿鐮�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.idCard}} + </el-descriptions-item> + <el-descriptions-item label="宸ュ彿" label-class-name="labelClass" content-class-name="contentClass"> + {{form.workNum}} + </el-descriptions-item> + <el-descriptions-item label="鏀挎不闈㈣矊 " label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("politicalstatus", form.politicalstatus) }} + </el-descriptions-item> + <el-descriptions-item label="鎵€灞為儴闂�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.deptId}} + </el-descriptions-item> + <el-descriptions-item label="鎵€灞為儴闂ㄥ悕绉�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.deptName}} + </el-descriptions-item> + <el-descriptions-item label="鑱屼綅ID" label-class-name="labelClass" content-class-name="contentClass"> + {{form.jobId}} + </el-descriptions-item> + <el-descriptions-item label="鑱屼綅鍚嶇О" label-class-name="labelClass" content-class-name="contentClass"> + {{form.jobName}} + </el-descriptions-item> + <el-descriptions-item label="鍛樺伐绫诲瀷" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("staffType", form.staffType) }} + </el-descriptions-item> + <el-descriptions-item label="鍛樺伐鐘舵€�" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("status", form.status) }} + </el-descriptions-item> + <el-descriptions-item label="鍏ヨ亴鏃堕棿" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.entryDate)}} + </el-descriptions-item> + <el-descriptions-item label="绂昏亴鏃堕棿" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.leaveDate)}} + </el-descriptions-item> + <el-descriptions-item label="绂昏亴鍘熷洜" label-class-name="labelClass" content-class-name="contentClass"> + {{form.leaveReason}} + </el-descriptions-item> + <el-descriptions-item label="瀹℃牳鐘舵€�" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("auditStatus", form.auditStatus) }} + </el-descriptions-item> + </el-descriptions> + + </layout-view> +</template> + +<script> + import view from "@/assets/mixins/view"; + export default { + mixins: [view], + components: { + }, + methods: { + + }, + data() { + return { + size:"small", + column:2, + toString:[ + "gender", + "politicalstatus", + "staffType", + "status", + "auditStatus", + ], + toArrays: [ + + ], + toDate: [ + + ] + } + } + } +</script> +<style lang="less"> + .labelClass{ + width: 200px; + } + .el-descriptions__body{ + margin-left: 5px; + margin-right: 5px; + color: #606266; + background-color: #FFF; + } + .contentClass{ + width: 600px; + } +</style> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/staff/list.vue b/attendance-performance-manager-ui/admin/src/views/staff/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..cde68f1fd61875b0bcdbc8f16d3d6107c47857fe --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/list.vue @@ -0,0 +1,102 @@ +<template> + <div class="page"> + <LayoutTable :data="tableData" :config="tableConfig"> + </LayoutTable> + + + <drawer-show ref="drawerform" @ok="getData" /> + </div> +</template> + +<script> + /** 琛ㄥ崟寮瑰嚭妗嗘ā寮忛渶寮曞叆 */ + import drawerShow from "./drawershow"; + import table from "@/assets/mixins/table"; + export default { + name: "StaffList", + components: { + drawerShow +}, + mixins: [table], + created() { + }, + methods: { + /** 閲嶅啓鏂板鏂规硶 */ + toAdd(row) { + this.$refs.drawerform.add(row); + }, + /** 閲嶅啓缂栬緫鏂规硶 */ + toEdit(row) { + this.$refs.drawerform.edit(row); + }, + /** 閲嶅啓鏌ョ湅鏂规硶 */ + toView(row) { + this.$refs.drawerform.view(row); + }, + + }, + data() { + return { + config: { + search: [ + { + name: "name", + type: "text", + label: "鍛樺伐濮撳悕", + fuzzy: true + }, + { + name: "politicalstatus", + type: "select", + label: "鏀挎不闈㈣矊 ", + fuzzy: true + }, + { + name: "staffType", + type: "select", + label: "鍛樺伐绫诲瀷", + fuzzy: true + }, + { + name: "status", + type: "select", + label: "鍛樺伐鐘舵€�", + fuzzy: true + }, + ], + columns: [ + {type: "selection", width: 60}, + {type: "index",label: "搴忓彿",width: 50}, + + {label: "鍛樺伐濮撳悕", prop: "name"}, + + {label: "鎬у埆", prop: "gender",formatter: this.formatter}, + + {label: "鏀挎不闈㈣矊 ", prop: "politicalstatus",formatter: this.formatter}, + + {label: "鍛樺伐绫诲瀷", prop: "staffType",formatter: this.formatter}, + + {label: "鍛樺伐鐘舵€�", prop: "status",formatter: this.formatter}, + + {label: "鍏ヨ亴鏃堕棿", prop: "entryDate", formatter: this.formatterDate}, + + {label: "杞鏃堕棿", prop: "regularDate", formatter: this.formatterDate}, + + {label: "绂昏亴鏃堕棿", prop: "leaveDate", formatter: this.formatterDate}, + + {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, + { + label: "鎿嶄綔", + width: 240, + formatter: row => { + return ( + <table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> + ); + } + } + ] + } + }; + } + }; +</script> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/staff/regular/dialogshow.vue b/attendance-performance-manager-ui/admin/src/views/staff/regular/dialogshow.vue new file mode 100644 index 0000000000000000000000000000000000000000..e115f0cb601b12f048f933b07e1bac31af593041 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/regular/dialogshow.vue @@ -0,0 +1,143 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍛樺伐ID" prop="staffId" v-model="form.staffId" placeholder="璇疯緭鍏ュ憳宸D"/> + <Field label="鍛樺伐濮撳悕" prop="staffName" v-model="form.staffName" placeholder="璇疯緭鍏ュ憳宸ュ鍚�"/> + <Field label="鎬у埆" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="璇烽€夋嫨鎬у埆"/> + <Field label="鍑虹敓鏃ユ湡" prop="birthday" v-model="form.birthday" type="date" /> + <Field label="鐓х墖" prop="photoPath" v-model="form.photoPath" type="textarea" placeholder="璇疯緭鍏ョ収鐗�"/> + <Field label="鑱旂郴鐢佃瘽" prop="phoneNumber" v-model="form.phoneNumber" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"/> + <Field label="韬唤璇佸彿鐮�" prop="idCard" v-model="form.idCard" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜"/> + <Field label="宸ュ彿" prop="workNum" v-model="form.workNum" placeholder="璇疯緭鍏ュ伐鍙�"/> + <Field label="鏀挎不闈㈣矊 " prop="politicalstatus" v-model="form.politicalstatus" type="select" :enumData="dict.politicalstatus" placeholder="璇烽€夋嫨鏀挎不闈㈣矊 "/> + <Field label="鎵€灞為儴闂�" prop="deptId" v-model="form.deptId" placeholder="璇疯緭鍏ユ墍灞為儴闂�"/> + <Field label="鎵€灞為儴闂ㄥ悕绉�" prop="deptName" v-model="form.deptName" placeholder="璇疯緭鍏ユ墍灞為儴闂ㄥ悕绉�"/> + <Field label="鑱屼綅ID" prop="jobId" v-model="form.jobId" placeholder="璇疯緭鍏ヨ亴浣岻D"/> + <Field label="鑱屼綅鍚嶇О" prop="jobName" v-model="form.jobName" placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�"/> + <Field label="鍛樺伐绫诲瀷" prop="staffType" v-model="form.staffType" type="select" :enumData="dict.staffType" placeholder="璇烽€夋嫨鍛樺伐绫诲瀷"/> + <Field label="鍛樺伐鐘舵€�" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="璇烽€夋嫨鍛樺伐鐘舵€�"/> + <Field label="鍏ヨ亴鏃堕棿" prop="entryDate" v-model="form.entryDate" type="date" /> + <Field label="璁″垝杞鏃堕棿" prop="regularDate" v-model="form.regularDate" type="date" /> + <Field label="瀹℃牳鐘舵€�" prop="auditStatus" v-model="form.auditStatus" type="select" :enumData="dict.auditStatus" placeholder="璇烽€夋嫨瀹℃牳鐘舵€�"/> + + </el-row> + + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + import dialogShow from "./dialogshow"; + export default { + mixins: [form], + components: { + dialogShow , + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鍛樺伐杞淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString:[ + "gender", + "politicalstatus", + "staffType", + "status", + "auditStatus", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + staffName: [ + {required: true,message: "璇疯緭鍏ュ憳宸ュ鍚�", trigger: "blur" }, + {max: 64,message: "鏈€澶氬彧鑳藉綍鍏�64涓瓧绗�",trigger: "blur",}, + ], + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/regular/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鍛樺伐杞淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "staff/regular/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鍛樺伐杞淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/regular/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鍛樺伐杞淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + staffId : null, + staffName : "", + gender : 1, + birthday : null, + photoPath : "", + phoneNumber : "", + idCard : "", + workNum : "", + politicalstatus : 1, + deptId : null, + deptName : "", + jobId : null, + jobName : "", + staffType : 1, + status : 1, + entryDate : null, + regularDate : null, + auditStatus : 0, + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/staff/regular/drawershow.vue b/attendance-performance-manager-ui/admin/src/views/staff/regular/drawershow.vue new file mode 100644 index 0000000000000000000000000000000000000000..93570fe28856ebd01aaf0a7ba967a366120c09d8 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/regular/drawershow.vue @@ -0,0 +1,154 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-drawer + :title="title" + :visible.sync="open" + :direction="direction" + size="50%"> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-row> + <Field label="鍛樺伐ID" prop="staffId" v-model="form.staffId" placeholder="璇疯緭鍏ュ憳宸D"/> + <Field label="鍛樺伐濮撳悕" prop="staffName" v-model="form.staffName" placeholder="璇疯緭鍏ュ憳宸ュ鍚�"/> + <Field label="鎬у埆" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="璇烽€夋嫨鎬у埆"/> + <Field label="鍑虹敓鏃ユ湡" prop="birthday" v-model="form.birthday" type="date" /> + <Field label="鐓х墖" prop="photoPath" v-model="form.photoPath" type="textarea" placeholder="璇疯緭鍏ョ収鐗�"/> + <Field label="鑱旂郴鐢佃瘽" prop="phoneNumber" v-model="form.phoneNumber" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"/> + <Field label="韬唤璇佸彿鐮�" prop="idCard" v-model="form.idCard" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜"/> + <Field label="宸ュ彿" prop="workNum" v-model="form.workNum" placeholder="璇疯緭鍏ュ伐鍙�"/> + <Field label="鏀挎不闈㈣矊 " prop="politicalstatus" v-model="form.politicalstatus" type="select" :enumData="dict.politicalstatus" placeholder="璇烽€夋嫨鏀挎不闈㈣矊 "/> + <Field label="鎵€灞為儴闂�" prop="deptId" v-model="form.deptId" placeholder="璇疯緭鍏ユ墍灞為儴闂�"/> + <Field label="鎵€灞為儴闂ㄥ悕绉�" prop="deptName" v-model="form.deptName" placeholder="璇疯緭鍏ユ墍灞為儴闂ㄥ悕绉�"/> + <Field label="鑱屼綅ID" prop="jobId" v-model="form.jobId" placeholder="璇疯緭鍏ヨ亴浣岻D"/> + <Field label="鑱屼綅鍚嶇О" prop="jobName" v-model="form.jobName" placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�"/> + <Field label="鍛樺伐绫诲瀷" prop="staffType" v-model="form.staffType" type="select" :enumData="dict.staffType" placeholder="璇烽€夋嫨鍛樺伐绫诲瀷"/> + <Field label="鍛樺伐鐘舵€�" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="璇烽€夋嫨鍛樺伐鐘舵€�"/> + <Field label="鍏ヨ亴鏃堕棿" prop="entryDate" v-model="form.entryDate" type="date" /> + <Field label="璁″垝杞鏃堕棿" prop="regularDate" v-model="form.regularDate" type="date" /> + <Field label="瀹℃牳鐘舵€�" prop="auditStatus" v-model="form.auditStatus" type="select" :enumData="dict.auditStatus" placeholder="璇烽€夋嫨瀹℃牳鐘舵€�"/> + + </el-row> + + <form-buttons @submit='submitForm' noCancelBtn /> + </el-form> + + </el-drawer> +</template> + +<script> + import form from "@/assets/mixins/formdialog"; + export default { + name: "StaffRegularDetail", + mixins: [form], + components: { + + }, + created() { + this.changePath("staff/regular") + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鍛樺伐杞淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + direction:"rtl", + toString:[ + "gender", + "politicalstatus", + "staffType", + "status", + "auditStatus", + ], + toDate:[ + "birthday", + "entryDate", + "regularDate", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + staffName: [ + {required: true,message: "璇疯緭鍏ュ憳宸ュ鍚�", trigger: "blur" }, + {max: 64,message: "鏈€澶氬彧鑳藉綍鍏�64涓瓧绗�",trigger: "blur",}, + ], + createTime: [ + {required: true,message: "璇烽€夋嫨鍒涘缓鏃堕棿" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/regular/edit"; + this.getData(); + this.pageInfo.type="edit" + this.title = "淇敼鍛樺伐杞淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset() + this.urls.currUrl = "staff/regular/add"; + this.getData(); + this.pageInfo.type="add" + this.title = "鏂板鍛樺伐杞淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl ="staff/regular/view"; + this.getData(); + this.pageInfo.type="view" + this.title = "鍛樺伐杞淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + staffId : null, + staffName : "", + gender : 1, + birthday : null, + photoPath : "", + phoneNumber : "", + idCard : "", + workNum : "", + politicalstatus : 1, + deptId : null, + deptName : "", + jobId : null, + jobName : "", + staffType : 1, + status : 1, + entryDate : null, + regularDate : null, + auditStatus : 0, + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/attendance-performance-manager-ui/admin/src/views/staff/regular/list.vue b/attendance-performance-manager-ui/admin/src/views/staff/regular/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..428161d7b120138ca90bfda2c8e53b14222f6513 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/regular/list.vue @@ -0,0 +1,108 @@ +<template> + <div class="page"> + <LayoutTable :data="tableData" :config="tableConfig"> + </LayoutTable> + + + <drawer-show ref="drawerform" @ok="getData" /> + </div> +</template> + +<script> + /** 琛ㄥ崟寮瑰嚭妗嗘ā寮忛渶寮曞叆 */ + import drawerShow from "./drawershow"; + import table from "@/assets/mixins/table"; + export default { + name: "StaffRegularList", + components: { + drawerShow +}, + mixins: [table], + created() { + }, + methods: { + /** 閲嶅啓鏂板鏂规硶 */ + toAdd(row) { + this.$refs.drawerform.add(row); + }, + /** 閲嶅啓缂栬緫鏂规硶 */ + toEdit(row) { + this.$refs.drawerform.edit(row); + }, + /** 閲嶅啓鏌ョ湅鏂规硶 */ + toView(row) { + this.$refs.drawerform.view(row); + }, + + }, + data() { + return { + config: { + search: [ + { + name: "staffName", + type: "text", + label: "鍛樺伐濮撳悕", + fuzzy: true + }, + { + name: "politicalstatus", + type: "select", + label: "鏀挎不闈㈣矊 ", + fuzzy: true + }, + { + name: "staffType", + type: "select", + label: "鍛樺伐绫诲瀷", + fuzzy: true + }, + { + name: "status", + type: "select", + label: "鍛樺伐鐘舵€�", + fuzzy: true + }, + { + name: "auditStatus", + type: "select", + label: "瀹℃牳鐘舵€�", + fuzzy: true + }, + ], + columns: [ + {type: "selection", width: 60}, + {type: "index",label: "搴忓彿",width: 50}, + + {label: "鍛樺伐濮撳悕", prop: "staffName"}, + + {label: "鎬у埆", prop: "gender",formatter: this.formatter}, + + {label: "鏀挎不闈㈣矊 ", prop: "politicalstatus",formatter: this.formatter}, + + {label: "鍛樺伐绫诲瀷", prop: "staffType",formatter: this.formatter}, + + {label: "鍛樺伐鐘舵€�", prop: "status",formatter: this.formatter}, + + {label: "鍏ヨ亴鏃堕棿", prop: "entryDate", formatter: this.formatterDate}, + + {label: "璁″垝杞鏃堕棿", prop: "regularDate", formatter: this.formatterDate}, + + {label: "瀹℃牳鐘舵€�", prop: "auditStatus",formatter: this.formatter}, + + {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, + { + label: "鎿嶄綔", + width: 240, + formatter: row => { + return ( + <table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> + ); + } + } + ] + } + }; + } + }; +</script> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/staff/regular/view.vue b/attendance-performance-manager-ui/admin/src/views/staff/regular/view.vue new file mode 100644 index 0000000000000000000000000000000000000000..1e51499a9eee4883abf8fc3fb092e514a351e713 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/regular/view.vue @@ -0,0 +1,113 @@ +<template> + <layout-view> + <el-descriptions :title="title" :column="column" :size="size" :colon="false" border> + <template slot="title"> + <i class="el-icon-tickets"></i> + 鍩烘湰璇︾粏淇℃伅 + </template> + <template slot="extra"> + <el-button type="primary" @click="$router.go(-1)" size="small">杩斿洖</el-button> + </template> + <el-descriptions-item label="鍛樺伐ID" label-class-name="labelClass" content-class-name="contentClass"> + {{form.staffId}} + </el-descriptions-item> + <el-descriptions-item label="鍛樺伐濮撳悕" label-class-name="labelClass" content-class-name="contentClass"> + {{form.staffName}} + </el-descriptions-item> + <el-descriptions-item label="鎬у埆" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("gender", form.gender) }} + </el-descriptions-item> + <el-descriptions-item label="鍑虹敓鏃ユ湡" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.birthday)}} + </el-descriptions-item> + <el-descriptions-item label="鐓х墖" label-class-name="labelClass" content-class-name="contentClass"> + {{form.photoPath}} + </el-descriptions-item> + <el-descriptions-item label="鑱旂郴鐢佃瘽" label-class-name="labelClass" content-class-name="contentClass"> + {{form.phoneNumber}} + </el-descriptions-item> + <el-descriptions-item label="韬唤璇佸彿鐮�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.idCard}} + </el-descriptions-item> + <el-descriptions-item label="宸ュ彿" label-class-name="labelClass" content-class-name="contentClass"> + {{form.workNum}} + </el-descriptions-item> + <el-descriptions-item label="鏀挎不闈㈣矊 " label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("politicalstatus", form.politicalstatus) }} + </el-descriptions-item> + <el-descriptions-item label="鎵€灞為儴闂�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.deptId}} + </el-descriptions-item> + <el-descriptions-item label="鎵€灞為儴闂ㄥ悕绉�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.deptName}} + </el-descriptions-item> + <el-descriptions-item label="鑱屼綅ID" label-class-name="labelClass" content-class-name="contentClass"> + {{form.jobId}} + </el-descriptions-item> + <el-descriptions-item label="鑱屼綅鍚嶇О" label-class-name="labelClass" content-class-name="contentClass"> + {{form.jobName}} + </el-descriptions-item> + <el-descriptions-item label="鍛樺伐绫诲瀷" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("staffType", form.staffType) }} + </el-descriptions-item> + <el-descriptions-item label="鍛樺伐鐘舵€�" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("status", form.status) }} + </el-descriptions-item> + <el-descriptions-item label="鍏ヨ亴鏃堕棿" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.entryDate)}} + </el-descriptions-item> + <el-descriptions-item label="璁″垝杞鏃堕棿" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.regularDate)}} + </el-descriptions-item> + <el-descriptions-item label="瀹℃牳鐘舵€�" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("auditStatus", form.auditStatus) }} + </el-descriptions-item> + </el-descriptions> + + </layout-view> +</template> + +<script> + import view from "@/assets/mixins/view"; + export default { + mixins: [view], + components: { + }, + methods: { + + }, + data() { + return { + size:"small", + column:2, + toString:[ + "gender", + "politicalstatus", + "staffType", + "status", + "auditStatus", + ], + toArrays: [ + + ], + toDate: [ + + ] + } + } + } +</script> +<style lang="less"> + .labelClass{ + width: 200px; + } + .el-descriptions__body{ + margin-left: 5px; + margin-right: 5px; + color: #606266; + background-color: #FFF; + } + .contentClass{ + width: 600px; + } +</style> \ No newline at end of file diff --git a/attendance-performance-manager-ui/admin/src/views/staff/view.vue b/attendance-performance-manager-ui/admin/src/views/staff/view.vue new file mode 100644 index 0000000000000000000000000000000000000000..3bf9bb90c81e1eab38bf74830916f5ee11855207 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/view.vue @@ -0,0 +1,115 @@ +<template> + <layout-view> + <el-descriptions :title="title" :column="column" :size="size" :colon="false" border> + <template slot="title"> + <i class="el-icon-tickets"></i> + 鍩烘湰璇︾粏淇℃伅 + </template> + <template slot="extra"> + <el-button type="primary" @click="$router.go(-1)" size="small">杩斿洖</el-button> + </template> + <el-descriptions-item label="鍛樺伐濮撳悕" label-class-name="labelClass" content-class-name="contentClass"> + {{form.name}} + </el-descriptions-item> + <el-descriptions-item label="鎬у埆" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("gender", form.gender) }} + </el-descriptions-item> + <el-descriptions-item label="鍑虹敓鏃ユ湡" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.birthday)}} + </el-descriptions-item> + <el-descriptions-item label="鐓х墖" label-class-name="labelClass" content-class-name="contentClass"> + {{form.photoPath}} + </el-descriptions-item> + <el-descriptions-item label="鑱旂郴鐢佃瘽" label-class-name="labelClass" content-class-name="contentClass"> + {{form.phoneNumber}} + </el-descriptions-item> + <el-descriptions-item label="韬唤璇佸彿鐮�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.idCard}} + </el-descriptions-item> + <el-descriptions-item label="宸ュ彿" label-class-name="labelClass" content-class-name="contentClass"> + {{form.workNum}} + </el-descriptions-item> + <el-descriptions-item label="鏀挎不闈㈣矊 " label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("politicalstatus", form.politicalstatus) }} + </el-descriptions-item> + <el-descriptions-item label="鎵€灞為儴闂�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.deptId}} + </el-descriptions-item> + <el-descriptions-item label="鎵€灞為儴闂ㄥ悕绉�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.deptName}} + </el-descriptions-item> + <el-descriptions-item label="鑱屼綅ID" label-class-name="labelClass" content-class-name="contentClass"> + {{form.positionId}} + </el-descriptions-item> + <el-descriptions-item label="鑱屼綅鍚嶇О" label-class-name="labelClass" content-class-name="contentClass"> + {{form.positionName}} + </el-descriptions-item> + <el-descriptions-item label="鍛樺伐绫诲瀷" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("staffType", form.staffType) }} + </el-descriptions-item> + <el-descriptions-item label="鍛樺伐鐘舵€�" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatters("status", form.status) }} + </el-descriptions-item> + <el-descriptions-item label="鍏ヨ亴鐧昏琛�" label-class-name="labelClass" content-class-name="contentClass"> + {{form.registerPath}} + </el-descriptions-item> + <el-descriptions-item label="鍏ヨ亴鏃堕棿" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.entryDate)}} + </el-descriptions-item> + <el-descriptions-item label="杞鏃堕棿" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.regularDate)}} + </el-descriptions-item> + <el-descriptions-item label="绂昏亴鏃堕棿" label-class-name="labelClass" content-class-name="contentClass"> + {{ util_formatterDate(form.leaveDate)}} + </el-descriptions-item> + <el-descriptions-item label="澶囨敞" label-class-name="labelClass" content-class-name="contentClass"> + {{form.remark}} + </el-descriptions-item> + </el-descriptions> + + </layout-view> +</template> + +<script> + import view from "@/assets/mixins/view"; + export default { + mixins: [view], + components: { + }, + methods: { + + }, + data() { + return { + size:"small", + column:2, + toString:[ + "gender", + "politicalstatus", + "staffType", + "status", + ], + toArrays: [ + + ], + toDate: [ + + ] + } + } + } +</script> +<style lang="less"> + .labelClass{ + width: 200px; + } + .el-descriptions__body{ + margin-left: 5px; + margin-right: 5px; + color: #606266; + background-color: #FFF; + } + .contentClass{ + width: 600px; + } +</style> \ No newline at end of file diff --git a/attendance-performance-manager/src/test/java/com/mortals/httpclient/http-client.env.json b/attendance-performance-manager/src/test/java/com/mortals/httpclient/http-client.env.json index da5b4a2028aa393c398d92dcb42b65a9e400198a..dd57c56f9daa2073b7357745463354eaf67245af 100644 --- a/attendance-performance-manager/src/test/java/com/mortals/httpclient/http-client.env.json +++ b/attendance-performance-manager/src/test/java/com/mortals/httpclient/http-client.env.json @@ -1,10 +1,9 @@ { "local": { - "baseUrl": "http://127.0.0.1:17400/refined", - "baseLogin": "http://127.0.0.1:18222/m" + "baseUrl": "http://127.0.0.1:17500/attendance" }, "test": { - "baseUrl": "http://192.168.0.98:11091/m", + "baseUrl": "http://192.168.0.98:11039/attendance", "baseLogin": "http://192.168.0.98:11078/base" }, "portal": { diff --git a/db/module.sql b/db/module.sql index 70a2730c56d7e6037c62d5c1623d3e50fcac2bcf..81b632421edb8a70c69f18c5a010187abaf338f0 100644 --- a/db/module.sql +++ b/db/module.sql @@ -364,7 +364,7 @@ CREATE TABLE mortals_xhx_attendance_leave_record( `duration` int(9) COMMENT '鏃堕暱,鍗曚綅绉�', `reason` text COMMENT '璇峰亣浜嬬敱', `approverId` bigint(20) COMMENT '瀹℃壒璐熻矗浜篒d', - `approver` varchar COMMENT '瀹℃壒璐熻矗浜�', + `approver` varchar(64) COMMENT '瀹℃壒璐熻矗浜�', `attachment` varchar(255) COMMENT '闄勪欢', `attachmentPath` varchar(255) COMMENT '闄勪欢璺緞', `remark` varchar(255) COMMENT '澶囨敞',