From 8032f1bf258ceaf5e34d9c5b3c0923d8e190a8f0 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期二, 19 三月 2024 17:32:40 +0800 Subject: [PATCH] 报备 --- src/api/platform/point.js | 9 + src/api/platform/report.js | 44 +++++ src/components/FileUpload/index.vue | 2 src/views/system/report/index.vue | 421 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 475 insertions(+), 1 deletions(-) diff --git a/src/api/platform/point.js b/src/api/platform/point.js index 67804eb..2f2e05e 100644 --- a/src/api/platform/point.js +++ b/src/api/platform/point.js @@ -61,3 +61,12 @@ method: 'delete' }) } + +// 鐐逛綅涓嬫媺鍒楄〃 +export function pointSelectData(param) { + return request({ + url: '/yw-point/select', + method: 'get', + params: param + }) +} diff --git a/src/api/platform/report.js b/src/api/platform/report.js new file mode 100644 index 0000000..8193869 --- /dev/null +++ b/src/api/platform/report.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 鏌ヨ鎶ュ鍒楄〃 +export function listReport(data) { + return request({ + url: '/report/page', + method: 'post', + data: data + }) +} + +// 鏌ヨ鎶ュ璇︾粏 +export function getReport(id) { + return request({ + url: '/report/' + id, + method: 'get' + }) +} + +// 鏂板鎶ュ +export function addReport(data) { + return request({ + url: '/report', + method: 'post', + data: data + }) +} + +// 淇敼鎶ュ +export function updateReport(data) { + return request({ + url: '/report', + method: 'put', + data: data + }) +} + +// 鍒犻櫎鎶ュ +export function delReport(id) { + return request({ + url: '/report/' + id, + method: 'delete' + }) +} diff --git a/src/components/FileUpload/index.vue b/src/components/FileUpload/index.vue index c7f6b0a..1e8728c 100644 --- a/src/components/FileUpload/index.vue +++ b/src/components/FileUpload/index.vue @@ -60,7 +60,7 @@ // 鏂囦欢绫诲瀷, 渚嬪['png', 'jpg', 'jpeg'] fileType: { type: Array, - default: () => ["doc", "xls", "ppt", "txt", "pdf"], + default: () => ["doc", "xls", "ppt", "txt", "pdf","png","jpg"], }, // 鏄惁鏄剧ず鎻愮ず isShowTip: { diff --git a/src/views/system/report/index.vue b/src/views/system/report/index.vue new file mode 100644 index 0000000..e78d801 --- /dev/null +++ b/src/views/system/report/index.vue @@ -0,0 +1,421 @@ +<template> + <div class="app-container"> + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> + <el-form-item label="杩愮淮浜哄憳" prop="peopleId"> + <el-input + v-model="queryParams.peopleId" + placeholder="杩愮淮浜哄憳濮撳悕" + clearable + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item label="鐐逛綅" prop="pointId"> + <el-input + v-model="queryParams.pointId" + placeholder="鐐逛綅" + clearable + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item label="鎶ュ鏃堕棿"> + <el-date-picker + v-model="daterangeCreateTime" + style="width: 240px" + value-format="yyyy-MM-dd" + type="daterange" + range-separator="-" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + ></el-date-picker> + </el-form-item> + <el-form-item> + <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button> + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-form> + + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button + type="primary" + plain + icon="el-icon-plus" + size="mini" + @click="handleAdd" + >鏂板</el-button> + </el-col> +<!-- <el-col :span="1.5">--> +<!-- <el-button--> +<!-- type="success"--> +<!-- plain--> +<!-- icon="el-icon-edit"--> +<!-- size="mini"--> +<!-- :disabled="single"--> +<!-- @click="handleUpdate"--> +<!-- >淇敼</el-button>--> +<!-- </el-col>--> + <el-col :span="1.5"> + <el-button + type="danger" + plain + icon="el-icon-delete" + size="mini" + :disabled="multiple" + @click="handleDelete" + >鍒犻櫎</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="warning" + plain + icon="el-icon-download" + size="mini" + @click="handleExport" + >瀵煎嚭</el-button> + </el-col> + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> + </el-row> + + <el-table v-loading="loading" :data="reportList" @selection-change="handleSelectionChange"> + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="杩愮淮鍗曚綅" align="center" prop="unitName" /> + <el-table-column label="鎶ュ浜哄憳" align="center" prop="peopleName" /> + <el-table-column label="鐐逛綅" align="center" prop="pointName" /> + <el-table-column label="鎶ュ鍐呭" align="center" prop="reportContent" /> + <el-table-column label="涓婃姤鏉愭枡" align="center" prop="reportMaterials" /> + <el-table-column label="鏁呴殰绫诲瀷" align="center" prop="errorType" /> + <el-table-column label="瀹℃牳鏃堕棿" align="center" prop="auditingTime" width="180"> + <template slot-scope="scope"> + <span>{{ parseTime(scope.row.auditingTime, '{y}-{m}-{d}') }}</span> + </template> + </el-table-column> + <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width"> + <template slot-scope="scope"> +<!-- <el-button--> +<!-- size="mini"--> +<!-- type="text"--> +<!-- icon="el-icon-edit"--> +<!-- @click="handleUpdate(scope.row)"--> +<!-- v-hasPermi="['system:report:edit']"--> +<!-- >淇敼</el-button>--> + <el-button + size="mini" + type="text" + icon="el-icon-edit" + @click="handleAuditing(scope.row)" + v-hasPermi="['system:report:auditing']" + >瀹℃牳</el-button> + <el-button + size="mini" + type="text" + icon="el-icon-delete" + @click="handleDelete(scope.row)" + v-hasPermi="['system:report:remove']" + >鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + + <pagination + v-show="total>0" + :total="total" + :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + + <!-- 娣诲姞鎴栦慨鏀规姤澶囧璇濇 --> + <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="80px"> + <el-form-item label="鐐逛綅" prop="pointId"> + <el-select + v-model="form.pointId" + filterable + remote + reserve-keyword + placeholder="璇烽�夋嫨鐐逛綅" + :remote-method="remoteGetPoints" + :loading="selectLoading"> + <el-option + v-for="item in pointList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="鏁呴殰绫诲瀷" prop="errorType"> + <el-select v-model="form.errorType"> + <el-option label="甯傛斂鏂藉伐" value="甯傛斂鏂藉伐"/> + <el-option label="璁惧鏁呴殰" value="璁惧鏁呴殰"/> + <el-option label="璁惧閬楀け" value="璁惧閬楀け"/> + </el-select> + </el-form-item> + <el-form-item label="鎶ュ鍐呭" prop="reportContent"> + <editor v-model="form.reportContent" :min-height="192"/> + </el-form-item> + <el-form-item label="涓婃姤鏉愭枡" prop="reportMaterials"> + <file-upload v-model="form.reportMaterials"/> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> + + + <!-- 瀹℃牳鎶ュ --> + <el-dialog title="鎶ュ瀹℃牳" :visible.sync="auditingOpen" width="500px" append-to-body> + <el-form ref="form" :model="auditingForm" :rules="auditingRules" label-width="80px"> + <el-form-item label="鐐逛綅"> + <el-input v-model="auditingForm.pointName" disabled /> + </el-form-item> + <el-form-item label="杩愮淮鍗曚綅"> + <el-input v-model="auditingForm.unitName" disabled /> + </el-form-item> + <el-form-item label="鎶ュ浜哄憳"> + <el-input v-model="auditingForm.peopleName" disabled /> + </el-form-item> + <el-form-item label="鏁呴殰绫诲瀷"> + <el-input v-model="auditingForm.errorType" disabled /> + </el-form-item> + <el-form-item label="鎶ュ鍐呭"> + <el-input v-model="auditingForm.pointName" disabled /> + </el-form-item> + <el-form-item label="瀹℃牳缁撴灉" prop="auditing"> + <el-radio v-model="auditingForm.auditing" label="pass">閫氳繃</el-radio> + <el-radio v-model="auditingForm.auditing" label="reject">椹冲洖</el-radio> + </el-form-item> + <el-form-item label="瀹℃牳鎰忚" prop="suggest"> + <el-input v-model="auditingForm.suggest"/> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary">纭� 瀹�</el-button> + <el-button @click="auditingCancel">鍙� 娑�</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> +import { listReport, getReport, delReport, addReport, updateReport } from "@/api/platform/report"; +import { pointSelectData } from "@/api/platform/point"; + +export default { + name: "Report", + data() { + return { + // 鐐逛綅list + pointList: [], + // 閬僵灞� + loading: true, + // 涓嬫媺鍔犺浇 + selectLoading: false, + // 閫変腑鏁扮粍 + ids: [], + // 闈炲崟涓鐢� + single: true, + // 闈炲涓鐢� + multiple: true, + // 鏄剧ず鎼滅储鏉′欢 + showSearch: true, + // 鎬绘潯鏁� + total: 0, + // 鎶ュ琛ㄦ牸鏁版嵁 + reportList: [], + // 寮瑰嚭灞傛爣棰� + title: "", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + // 鏁呴殰绫诲瀷鏃堕棿鑼冨洿 + daterangeCreateTime: [], + // 鏁呴殰绫诲瀷鏃堕棿鑼冨洿 + daterangeAuditingTime: [], + auditingOpen: false, + auditingForm: { + id: null, + unitName: "", + pointName: "", + peopleName: "", + errorType: "", + reportContent: "", + auditing: "", + suggest: "" + }, + // 鏌ヨ鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + unitId: null, + peopleId: null, + pointId: null, + createTime: null, + auditingTime: null, + errorType: null + }, + // 琛ㄥ崟鍙傛暟 + form: {}, + auditingRules: { + auditing: [ + { required: true, message: "璇峰仛鍑哄鏍哥粨鏋�", trigger: "blur" } + ], + }, + // 琛ㄥ崟鏍¢獙 + rules: { + pointId: [ + { required: true, message: "鐐逛綅涓嶈兘涓虹┖", trigger: "blur" } + ], + reportContent: [ + { required: true, message: "鎶ュ鍐呭涓嶈兘涓虹┖", trigger: "blur" } + ], + reportMaterials: [ + { required: true, message: "涓婃姤鏉愭枡涓嶈兘涓虹┖", trigger: "blur" } + ], + } + }; + }, + created() { + this.getList(); + }, + methods: { + auditingCancel() { + this.auditingOpen = false + }, + handleAuditing(row) { + this.auditingOpen = true; + this.auditingForm.id =row.id + this.auditingForm.pointName =row.pointName + this.auditingForm.unitName =row.unitName + this.auditingForm.peopleName =row.peopleName + this.auditingForm.errorType =row.errorType + this.auditingForm.reportContent =row.reportContent + }, + // 杩滅▼鎼滅储鐐逛綅 + remoteGetPoints(query) { + if (query !== '') { + this.selectLoading = true; + let data = { + "keyword": query + } + pointSelectData(data).then(res => { + this.pointList = res.data; + this.selectLoading = false; + }) + } else { + this.pointList = []; + } + }, + /** 鏌ヨ鎶ュ鍒楄〃 */ + getList() { + this.loading = true; + if (null != this.daterangeCreateTime && '' != this.daterangeCreateTime) { + this.queryParams["beginCreateTime"] = this.daterangeCreateTime[0]; + this.queryParams["endCreateTime"] = this.daterangeCreateTime[1]; + } + if (null != this.daterangeAuditingTime && '' != this.daterangeAuditingTime) { + this.queryParams["beginAuditingTime"] = this.daterangeAuditingTime[0]; + this.queryParams["endAuditingTime"] = this.daterangeAuditingTime[1]; + } + listReport(this.queryParams).then(response => { + this.reportList = response.data; + this.total = response.total; + this.loading = false; + }); + }, + // 鍙栨秷鎸夐挳 + cancel() { + this.open = false; + this.reset(); + }, + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + id: null, + unitId: null, + peopleId: null, + pointId: null, + createTime: null, + updateTime: null, + auditingTime: null, + reportContent: null, + reportMaterials: null, + deleted: null, + errorType: null + }; + this.resetForm("form"); + }, + /** 鎼滅储鎸夐挳鎿嶄綔 */ + handleQuery() { + this.queryParams.pageNum = 1; + this.getList(); + }, + /** 閲嶇疆鎸夐挳鎿嶄綔 */ + resetQuery() { + this.daterangeCreateTime = []; + this.daterangeAuditingTime = []; + this.resetForm("queryForm"); + this.handleQuery(); + }, + // 澶氶�夋閫変腑鏁版嵁 + handleSelectionChange(selection) { + this.ids = selection.map(item => item.id) + this.single = selection.length!==1 + this.multiple = !selection.length + }, + /** 鏂板鎸夐挳鎿嶄綔 */ + handleAdd() { + this.reset(); + this.open = true; + this.title = "娣诲姞鎶ュ"; + }, + /** 淇敼鎸夐挳鎿嶄綔 */ + handleUpdate(row) { + this.reset(); + const id = row.id || this.ids + getReport(id).then(response => { + this.form = response.data; + this.open = true; + this.title = "淇敼鎶ュ"; + }); + }, + /** 鎻愪氦鎸夐挳 */ + submitForm() { + this.$refs["form"].validate(valid => { + if (valid) { + if (this.form.id != null) { + updateReport(this.form).then(response => { + this.$modal.msgSuccess("淇敼鎴愬姛"); + this.open = false; + this.getList(); + }); + } else { + addReport(this.form).then(response => { + this.$modal.msgSuccess("鏂板鎴愬姛"); + this.open = false; + this.getList(); + }); + } + } + }); + }, + /** 鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDelete(row) { + const ids = row.id || this.ids; + this.$modal.confirm('鏄惁纭鍒犻櫎鎶ュ缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(function() { + return delReport(ids); + }).then(() => { + this.getList(); + this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); + }).catch(() => {}); + }, + /** 瀵煎嚭鎸夐挳鎿嶄綔 */ + handleExport() { + this.download('system/report/export', { + ...this.queryParams + }, `report_${new Date().getTime()}.xlsx`) + } + } +}; +</script> -- Gitblit v1.8.0