From 725225aab4797b01dd5bf7c70031d41dae033dff Mon Sep 17 00:00:00 2001 From: quanyawei <401863037@qq.com> Date: Thu, 26 Oct 2023 14:10:51 +0800 Subject: [PATCH] fix:走行车导出 --- src/views/sectionReport/index.vue | 283 ++++++++++++++++++++++++++++++++------------------------ 1 files changed, 161 insertions(+), 122 deletions(-) diff --git a/src/views/sectionReport/index.vue b/src/views/sectionReport/index.vue index 62a0d31..97467e1 100644 --- a/src/views/sectionReport/index.vue +++ b/src/views/sectionReport/index.vue @@ -8,8 +8,7 @@ :key="item.value" :label="item.label" :value="item.value" - > - </el-option> + /> </el-select> </div> <div> @@ -19,8 +18,7 @@ :key="item.value" :label="item.label" :value="item.value" - > - </el-option> + /> </el-select> </div> <div> @@ -35,8 +33,7 @@ :key="index" :label="item.name" :value="item.mac" - > - </el-option> + /> </el-select> </div> <div class="block"> @@ -48,14 +45,13 @@ end-placeholder="������������" :picker-options="pickerOptions" value-format="yyyy-MM-dd HH:mm:ss" - > - </el-date-picker> + /> </div> <div> - <el-button type="primary" @click="selectReport">������</el-button> + <el-button type="primary" @click="selectReport"> ������ </el-button> </div> <div> - <!-- <el-button type="primary" @click="exportword">������word</el-button> --> + <el-button type="primary" @click="exportword"> ������word </el-button> </div> </div> <el-dialog title="���������������" :visible.sync="dialogVisible" width="60%"> @@ -66,24 +62,21 @@ " style="width: 100%" > - <el-table-column type="index" width="180" label="������"> - </el-table-column> - <el-table-column label="������" prop="road"> </el-table-column> - <el-table-column label="���������������(���/���������)" prop="value"> - </el-table-column> + <el-table-column type="index" width="180" label="������" /> + <el-table-column label="������" prop="road" /> + <el-table-column label="���������������(���/���������)" prop="value" /> </el-table> <el-pagination - @size-change="handleSizeChange" - @current-change="handleCurrentChange" :current-page="PageNum" :page-size="PageSize" layout="total, prev, pager, next, jumper" :total="total" - > - </el-pagination> + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + /> <el-upload - class="upload-demo" ref="upload" + class="upload-demo" action="" :on-change="handleChange" :on-remove="handleRemove" @@ -92,31 +85,31 @@ :limit="10" style="margin-top: 1rem" > - <el-button slot="trigger" size="small" type="primary" - >������������</el-button - > + <el-button slot="trigger" size="small" type="primary"> + ������������ + </el-button> <div slot="tip" class="el-upload__tip" style="color: red"> ������������������������������������,������������������1MB��� </div> </el-upload> </div> <div slot="footer" class="dialog-footer"> - <el-button @click="dialogVisible = false">��� ���</el-button> - <el-button type="primary" :disabled="isDisplay" @click="baoC" - >������</el-button - > + <el-button @click="dialogVisible = false"> ��� ��� </el-button> + <el-button type="primary" :disabled="isDisplay" @click="baoC"> + ������ + </el-button> </div> </el-dialog> <el-table :data="tableData" style="width: 100%; overflow-y: auto; height: 82%" > - <el-table-column prop="time" label="������������"> </el-table-column> + <el-table-column prop="time" label="������������" /> <el-table-column label="������"> <template slot-scope="scope"> - <el-button type="text" size="medium" @click="expReport(scope.row)" - >������</el-button - > + <el-button type="text" size="medium" @click="expReport(scope.row)"> + ������ + </el-button> </template> </el-table-column> </el-table> @@ -136,7 +129,7 @@ //import ��������������������������������������������������� components: {}, props: {}, - data() { + data () { //������������������ return { date: this.dateTypeFormat('YYYY-mm-dd', new Date()), @@ -183,7 +176,7 @@ // ������������ ������������ this.timeOne = minDate.getTime() // ��������������������� ������������������ // // ������������������������������������������������������������ - if (maxDate) this.timeOne = '' + if (maxDate) { this.timeOne = '' } }, disabledDate: (time) => { if (this.timeOne) { @@ -199,7 +192,7 @@ return time.getTime() > new Date() } }, - reportName: '' + reportName: '', }, } }, @@ -207,16 +200,38 @@ computed: {}, // ������data������������������ watch: { - value1(n, o) { + value1 (n, o) { if (n === null) { this.value1 = [] } }, }, + //������������ - ��������������������������������� this ��������� + created () { + this.$request({ + url: 'cruiser/selectCruisers', + method: 'get', + }) + .then((res) => { + this.carMac = res.data + }) + .catch((err) => { + console.log(err) + }) + }, + //������������ - ��������������������������� DOM ��������� + mounted () { }, + beforeCreate () { }, //������������ - ������������ + beforeMount () { }, //������������ - ������������ + beforeUpdate () { }, //������������ - ������������ + updated () { }, //������������ - ������������ + beforeDestroy () { }, //������������ - ������������ + destroyed () { }, //������������ - ������������ + activated () { }, //������������ methods: { - baoC() { - this.valueDate.fileLists=[] + baoC () { + this.valueDate.fileLists = [] // const baseUrl = `${requestObj.baseUrl}/static/img/` // var images = [ // ['7f633687-8321-4f89-bffc-9a52f94cfb77.jpg'], @@ -250,9 +265,11 @@ // this.valueDate.fileLists[i] = [{ url: baseUrl + imagesObj[i] }] // } // } - console.log(this.fileList, '123') const formData = new FormData() formData.append(`id`, this.id) + formData.append(`mac`, this.carInput) + formData.append(`time1`, this.value1[0]) + formData.append(`time2`, this.value1[1]) this.fileList.map((v) => { formData.append(`files`, v.raw) console.log(v.raw) @@ -263,78 +280,119 @@ method: 'post', headers: { 'Content-Type': 'multipart/form-data' }, // ��������������������������������� data: formData, - }).then((res) => { - console.log(res) - // this.valueDate=res.data - const baseUrl = `${requestObj.baseUrl}/static/img/` - if (res.data.images.file2 === ''&&res.data.images.file1 === '') { - res.data.images.file1=[] - res.data.images.file2=[] - var images = [res.data.images.file1, res.data.images.file2] - } else if (res.data.images.file2 === '') { - res.data.images.file2=[] - var images = [[res.data.images.file1], res.data.images.file2] - } else if (res.data.images.file1 === '') { - res.data.images.file1=[] - var images = [res.data.images.file1, res.data.images.file2.split(',')] - } else { - var images = [ - [res.data.images.file1], - res.data.images.file2.split(','), - ] - } - var info = 0 - var num = 0 - for (let i = 0; i < images.length; i++) { - // console.log(images) - if (!this.valueDate.fileLists[i]) this.valueDate.fileLists[i] = [] - if (images[i].length) { - num++ - info += images[i].length - for (let j = 0; j < images[i].length; j++) { - this.valueDate.fileLists[i].push(baseUrl + images[i][j]) - console.log(baseUrl + images[i][j]) + }) + .then((res) => { + console.log(res) + // this.valueDate=res.data + const baseUrl = `${requestObj.baseUrl}/static/img/` + if (res.data.images.file2 === '' && res.data.images.file1 === '') { + res.data.images.file1 = [] + res.data.images.file2 = [] + var images = [res.data.images.file1, res.data.images.file2] + } else if (res.data.images.file2 === '') { + res.data.images.file2 = [] + var images = [[res.data.images.file1], res.data.images.file2] + } else if (res.data.images.file1 === '') { + res.data.images.file1 = [] + var images = [res.data.images.file1, res.data.images.file2.split(',')] + } else { + var images = [ + [res.data.images.file1], + res.data.images.file2.split(','), + ] + } + var info = 0 + var num = 0 + for (let i = 0; i < images.length; i++) { + // console.log(images) + if (!this.valueDate.fileLists[i]) { this.valueDate.fileLists[i] = [] } + if (images[i].length) { + num++ + info += images[i].length + for (let j = 0; j < images[i].length; j++) { + this.valueDate.fileLists[i].push(baseUrl + images[i][j]) + console.log(baseUrl + images[i][j]) + } } } - } - // images=[] - console.log(this.valueDate.fileLists,'images'); - res.data.list1.map((item, index) => { - item.index = index + 1 + // images=[] + console.log(this.valueDate.fileLists, 'images') + res.data.list1.map((item, index) => { + item.index = index + 1 + }) + res.data.list2.map((item, index) => { + item.index = index + 1 + }) + this.valueDate.index = info + this.valueDate.num = num + this.valueDate.date = this.date + this.valueDate.list1 = res.data.list1 + this.valueDate.list2 = res.data.list2 + this.valueDate.time = res.data.time + exportLUImage( + '/Section.docx', + this.valueDate, + `${this.reportName}.docx` + ) }) - res.data.list2.map((item, index) => { - item.index = index + 1 - }) - this.valueDate.index = info - this.valueDate.num = num - this.valueDate.date = this.date - this.valueDate.list1 = res.data.list1 - this.valueDate.list2 = res.data.list2 - this.valueDate.time = res.data.time - exportLUImage('/Section.docx', this.valueDate, `${this.reportName}.docx`) - }) }, - handleRemove(file, fileList) { + handleRemove (file, fileList) { console.log(file, fileList) }, - handleChange(file, fileList) { + handleChange (file, fileList) { // console.log(file); this.file = file this.fileList = fileList console.log(this.fileList) }, - handleSizeChange(size) { + handleSizeChange (size) { this.PageNum = 1 this.PageSize = size }, - handleCurrentChange(num) { + handleCurrentChange (num) { this.PageNum = num }, - openPic() { + openPic () { this.dialogVisible = true }, + exportword () { + if (this.carInput === '') { + this.$message('������������������') + return false + } + this.dateList = [] + this.columnList = [] + this.$request({ + url: 'cruiser/dailyDustlds', + method: 'post', + data: { + mac: this.carInput, + startTime: this.value1[0], + endTime: this.value1[1], + }, + responseType: 'blob', + }) + .then((res) => { - selectReport() { + this.getOutExcel('������������', res) + + }) + .catch(res => { + this.$message(res.message) + }) + }, + getOutExcel (fileName, res) { + let blob = new Blob([res], { + type: `application/msword`, //word���������msword,pdf���������pdf + }) + let objectUrl = URL.createObjectURL(blob) + let link = document.createElement('a') + link.href = objectUrl + link.setAttribute('download', fileName) + document.body.appendChild(link) + link.click() + }, + selectReport () { if (this.carInput === '') { this.$message('������������������') return false @@ -361,7 +419,9 @@ } info.map((v) => { console.log(v) - var time = v.time.substring(0, 10).split('-').join('') + var time = v.time.substring(0, 10) + .split('-') + .join('') if (this.cityChoose === 'gx') { v.time = `���������������������������������������������������${time}` } else { @@ -376,7 +436,7 @@ }) }, - expReport(obj) { + expReport (obj) { console.log(obj) this.dialogVisible = true this.id = obj.id @@ -386,14 +446,15 @@ params: { id: obj.id, }, - }).then((res) => { - // console.log(res) - this.tableData1 = res.data.list - this.total = res.data.count - // console.log(this.pagesize) }) + .then((res) => { + // console.log(res) + this.tableData1 = res.data.list + this.total = res.data.count + // console.log(this.pagesize) + }) }, - getBase64(file) { + getBase64 (file) { return new Promise(function (resolve, reject) { var reader = new FileReader() let imgResult = '' @@ -409,29 +470,7 @@ } }) }, - }, - //������������ - ��������������������������������� this ��������� - created() { - this.$request({ - url: 'cruiser/selectCruisers', - method: 'get', - }) - .then((res) => { - this.carMac = res.data - }) - .catch((err) => { - console.log(err) - }) - }, - //������������ - ��������������������������� DOM ��������� - mounted() {}, - beforeCreate() {}, //������������ - ������������ - beforeMount() {}, //������������ - ������������ - beforeUpdate() {}, //������������ - ������������ - updated() {}, //������������ - ������������ - beforeDestroy() {}, //������������ - ������������ - destroyed() {}, //������������ - ������������ - activated() {}, //���������������keep-alive������������������������������������ + }, //���������������keep-alive������������������������������������ } </script> <style scoped> -- Gitblit v1.8.0