From 42935de0c2ec1a626cef63bce7c79da0e0708d32 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期五, 28 二月 2025 14:43:30 +0800 Subject: [PATCH] 人员-培训记录搬迁 --- src/views/CNAS/personnel/personnelInfo/tabs/training-record.vue | 245 +++++++++++++++++++++--------------------------- 1 files changed, 106 insertions(+), 139 deletions(-) diff --git a/src/views/CNAS/personnel/personnelInfo/tabs/training-record.vue b/src/views/CNAS/personnel/personnelInfo/tabs/training-record.vue index 6ac536f..a2642b7 100644 --- a/src/views/CNAS/personnel/personnelInfo/tabs/training-record.vue +++ b/src/views/CNAS/personnel/personnelInfo/tabs/training-record.vue @@ -2,82 +2,54 @@ <template> <div> <div class="flex_table"> - <div v-if="isDepartment" style="width: 50%"> -<!-- <TableCard :showTitle="false">--> -<!-- <template v-slot:form>--> -<!-- <div class="items_center">--> -<!-- <span>濮撳悕</span>--> -<!-- <el-input v-model="trainingPagination.userName" class="search" clearable placeholder="璇疯緭鍏�" size="small"></el-input>--> -<!-- <el-button size="small" type="primary" @click="getPersonnelTraining(departId)">鏌ヨ</el-button>--> -<!-- </div>--> -<!-- <div>--> -<!--<!– <el-button :loading="outLoading" size="small" type="primary" @click="exportExcel">瀵煎嚭</el-button>–>--> -<!-- </div>--> -<!-- </template>--> -<!-- <template v-slot:table>--> -<!-- <ZTTable--> -<!-- :column="trainingColumn"--> -<!-- :currentChange="currentChange"--> -<!-- :height="'calc(100vh - 18em)'"--> -<!-- :highlightCurrentRow="true"--> -<!-- :table-data="trainingTableData"--> -<!-- :table-loading="trainingLoading"--> -<!-- style="padding: 0 15px;">--> -<!-- </ZTTable>--> -<!-- <div class="pagination">--> -<!-- <div></div>--> -<!-- <el-pagination--> -<!-- :page-size="trainingPagination.size"--> -<!-- :page-sizes="[10, 20, 30, 40]"--> -<!-- :total="trainingPagination.total"--> -<!-- layout="total, sizes, prev, pager, next, jumper"--> -<!-- @current-change="handleYearCurrentTraining"--> -<!-- @size-change="handleYearSizeChangeTraining">--> -<!-- </el-pagination>--> -<!-- </div>--> -<!-- </template>--> -<!-- </TableCard>--> -<!-- </div>--> -<!-- <div :style="`width: ${isDepartment ? '50%' : '100%'};`">--> -<!-- <TableCard :showTitle="false">--> -<!-- <template v-slot:form>--> -<!-- <div class="items_center">--> -<!-- <span>骞翠唤</span>--> -<!-- <el-date-picker--> -<!-- v-model="searchForm.trainingDate"--> -<!-- clearable--> -<!-- format="yyyy"--> -<!-- placeholder="閫夋嫨骞�"--> -<!-- size="small"--> -<!-- style="margin: 0 10px"--> -<!-- type="year"--> -<!-- value-format="yyyy">--> -<!-- </el-date-picker>--> -<!-- <el-button size="small" type="primary" @click="queryPersonnelDetailsPage(currentChangeRow.userId)">鏌ヨ</el-button>--> -<!-- <el-button size="small" type="primary" @click="openDownloadDia(currentChangeRow)">瀵煎嚭</el-button>--> -<!-- </div>--> -<!-- </template>--> -<!-- <template v-slot:table>--> -<!-- <ZTTable--> -<!-- :column="trainingPersonColumn"--> -<!-- :height="'calc(100vh - 18em)'"--> -<!-- :table-data="trainingPersonTableData"--> -<!-- :table-loading="trainingPersonLoading"--> -<!-- style="padding: 0 15px;">--> -<!-- </ZTTable>--> -<!-- <div class="pagination">--> -<!-- <div></div>--> -<!-- <el-pagination--> -<!-- :page-size="trainingPersonPagination.size"--> -<!-- :page-sizes="[10, 20, 30, 40]"--> -<!-- :total="trainingPersonPagination.total"--> -<!-- layout="total, sizes, prev, pager, next, jumper"--> -<!-- @current-change="handleYearCurrentPagination"--> -<!-- @size-change="handleYearSizeChangePagination">--> -<!-- </el-pagination>--> -<!-- </div>--> -<!-- </template>--> -<!-- </TableCard>--> + <div v-if="isDepartment" style="width: 49%"> + <div class="title"> + <span style="font-weight: bold">骞村害璁″垝</span> + </div> + <div style="display: flex;justify-content: space-between;"> + <el-form :model="trainingPagination" ref="trainingPagination" size="small" :inline="true"> + <el-form-item label="濮撳悕"> + <el-input v-model="trainingPagination.userName" class="search" clearable placeholder="璇疯緭鍏�" size="small"></el-input> + </el-form-item> + <el-form-item> + <el-button size="small" type="primary" @click="getPersonnelTraining(departId)">鏌ヨ</el-button> + </el-form-item> + </el-form> + </div> + <lims-table :tableData="trainingTableData" :column="trainingColumn" + ref="trainingTableData" + :currentChange="currentChange" :highlightCurrentRow="true" + @pagination="pagination" :height="'calc(100vh - 22em)'" + :page="trainingPagination" :tableLoading="trainingLoading"></lims-table> + </div> + <div :style="`width: ${isDepartment ? '49%' : '100%'};`"> + <div class="title"> + <span style="font-weight: bold">骞村害璁″垝鏄庣粏</span> + </div> + <div style="display: flex;justify-content: space-between;"> + <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> + <el-form-item label="骞翠唤"> + <el-date-picker + v-model="searchForm.trainingDate" + clearable + format="yyyy" + placeholder="閫夋嫨骞�" + size="small" + type="year" + value-format="yyyy"> + </el-date-picker> + </el-form-item> + <el-form-item> + <el-button size="small" type="primary" @click="queryPersonnelDetailsPage(currentChangeRow.userId)">鏌ヨ</el-button> + </el-form-item> + </el-form> + <div> + <el-button size="small" type="primary" @click="openDownloadDia(currentChangeRow)">瀵煎嚭</el-button> + </div> + </div> + <lims-table :tableData="trainingPersonTableData" :column="trainingPersonColumn" + :height="'calc(100vh - 22em)'" @pagination="pagination1" + :page="trainingPersonPagination" :tableLoading="trainingPersonLoading"></lims-table> </div> </div> </div> @@ -85,8 +57,15 @@ <script> +import limsTable from "@/components/Table/lims-table.vue"; +import { + exportTrainingRecord, + queryPersonnelDetails, + trainingSelectTrainingRecord +} from "@/api/cnas/personal/personTrainingRecord"; + export default { - components: {}, + components: {limsTable}, props: { departId: { type: Number, @@ -215,48 +194,31 @@ if (!date) { date = this.$moment().format('YYYY') } - console.log('date----', date); - this.$axios.get( this.$api.personnel.exportTrainingRecord+ '?userId=' + row.userId + '&trainingDate=' + date,{responseType: "blob"}).then(res => { + exportTrainingRecord({userId: row.userId, trainingDate: date}).then(res => { this.outLoading = false const blob = new Blob([res],{ type: 'application/msword' }); - //灏咮lob 瀵硅薄杞崲鎴愬瓧绗︿覆 - let reader = new FileReader(); - reader.readAsText(blob, 'utf-8'); - reader.onload = () => { - try { - let result = JSON.parse(reader.result); - if (result.message) { - this.$message.error(result.message); - } else { - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - link.download = '鍩硅璁板綍瀵煎嚭' + '.docx'; - link.click(); - this.$message.success('瀵煎嚭鎴愬姛') - } - } catch (err) { - console.log(err); - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - link.download = '鍩硅璁板綍瀵煎嚭' + '.docx'; - link.click(); - this.$message.success('瀵煎嚭鎴愬姛') - } - } + this.$download.saveAs(blob, '鍩硅璁板綍瀵煎嚭.docx'); }) }, // 鑾峰彇瀹為獙瀹�-鍩硅璁″垝鍒楄〃淇℃伅 getPersonnelTraining(departId) { - // const name = this.isDepartment ? 'departmentId' : 'userId'; - this.$axios.get(`${this.$api.personnel.trainingSelectTrainingRecord}?departmentId=${departId}&size=${this.trainingPagination.size}¤t=${this.trainingPagination.current}&userName=${this.trainingPagination.userName}`).then(res => { + const params = { + departmentId: departId, + size: this.trainingPagination.size, + current: this.trainingPagination.current, + userName: this.trainingPagination.userName, + } + this.trainingLoading = true + trainingSelectTrainingRecord(params).then(res => { + this.trainingLoading = false this.trainingTableData = res.data.records; this.trainingPagination.total = res.data.total; if (this.trainingTableData.length > 0) { - this.currentChange(this.trainingTableData[0]); + this.$refs.trainingTableData.setCurrentRow(this.trainingTableData[0]) } - }); + }).catch(err => { + this.trainingLoading = false + }) }, // 鑾峰彇涓汉-鍩硅璁″垝鍒楄〃淇℃伅 currentChange(row) { @@ -270,29 +232,31 @@ if (this.searchForm.trainingDate === null) { this.searchForm.trainingDate = '' } - this.$axios.get(`${this.$api.personnel.queryPersonnelDetails}?userId=${userId}&size=${this.trainingPersonPagination.size}¤t=${this.trainingPersonPagination.current}&trainingDate=${this.searchForm.trainingDate}`).then(res => { + const params = { + userId: userId, + size: this.trainingPersonPagination.size, + current: this.trainingPersonPagination.current, + trainingDate: this.searchForm.trainingDate, + } + this.trainingPersonLoading = true + queryPersonnelDetails(params).then(res => { + this.trainingPersonLoading = false this.trainingPersonTableData = res.data.records; this.trainingPersonPagination.total = res.data.total; - }); + }).catch(err => { + this.trainingPersonLoading = false + }) }, // 鍒嗛〉 - handleYearCurrentTraining(page) { - this.trainingPagination.curent = page; - this.getPersonnelTraining(this.departId); - }, - handleYearSizeChangeTraining(size) { - this.trainingPagination.size = size; + pagination(page) { + this.trainingPagination.size = page.limit; this.getPersonnelTraining(this.departId); }, // 鍒嗛〉 - handleYearCurrentPagination(page) { - this.trainingPersonPagination.curent = page; + pagination1(page) { + this.trainingPersonPagination.size = page.limit; this.queryPersonnelDetailsPage(this.currentChangeRow.userId); }, - handleYearSizeChangePagination(size) { - this.trainingPersonPagination.size = size; - this.queryPersonnelDetailsPage(this.currentChangeRow.userId); - } }, watch: { departId: { @@ -308,29 +272,32 @@ }; </script> <style scoped> ->>> .el-form-item { - margin-bottom: 13px; -} - .flex_table { display: flex; flex-direction: row; justify-content: space-between; } -.pagination { - display: flex; - justify-content: space-between; - margin-top: 10px; -} - -.items_center { - display: flex; - align-items: center; -} - .search { width: 150px; - padding: 0 6px; +} +.title { + position: relative; + font-size: 16px; + color: #333; + font-weight: 400; + padding-left: 10px; + margin-bottom: 10px; +} + +.title::before { + position: absolute; + left: 0; + top: 4px; + content: ''; + width: 4px; + height: 16px; + background-color: #3A7BFA; + border-radius: 2px; } </style> -- Gitblit v1.9.3