From 446b145667da80b046c9e87706a08a34d1ab8a26 Mon Sep 17 00:00:00 2001 From: 15820893422 <1978476055@qq.com> Date: Mon, 1 Apr 2024 18:55:52 +0800 Subject: [PATCH] add --- .env.development | 6 +- src/api/order.js | 37 ++- src/utils/newToExcel.js | 336 +++++++++++---------- src/views/freight/express/index.vue | 1 + src/views/order/list/index.vue | 28 +- src/views/product/productComment/index.vue | 2 +- src/views/product/productExamine/index.vue | 35 ++- src/views/product/productExamine/info.vue | 293 +++++++++++++++++- src/views/setting/devise/visualization.vue | 67 +++- 9 files changed, 612 insertions(+), 193 deletions(-) diff --git a/.env.development b/.env.development index 913e81c..9b94a65 100644 --- a/.env.development +++ b/.env.development @@ -3,12 +3,12 @@ ENV = 'development' # http://192.168.1.43:8324/admin # http://mer.crmeb.net/admin # base api -# VUE_APP_BASE_API = 'http://192.168.31.106:8324' -VUE_APP_BASE_API = 'http://many.shop.lo' +VUE_APP_BASE_API = 'http://192.168.1.32:8080' +# VUE_APP_BASE_API = 'https://plus.hwms.shop' # socket 连接地址 # VUE_APP_WS_URL = 'ws://0.0.0.0:8324' -VUE_APP_WS_URL = 'ws://many.shop.lo' +VUE_APP_WS_URL = 'ws://plus.hwms.shop' # vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable, # to control whether the babel-plugin-dynamic-import-node plugin is enabled. diff --git a/src/api/order.js b/src/api/order.js index 054ec21..63e1ec0 100644 --- a/src/api/order.js +++ b/src/api/order.js @@ -15,7 +15,12 @@ import request from './request' export function orderListApi(data) { return request.get('order/lst', data) } - +/** + * @description 开启退款 + */ +export function openRefundApi(id) { + return request.get(`store/order/open_refund/${id}`) +} /** * @description 订单 -- 表头 */ @@ -27,7 +32,7 @@ export function chartApi() { * @description 订单 -- 卡片 */ export function cardListApi(data) { - return request.get('order/title', data) + return request.get('order/title', data) } /** * @description 订单 -- 编辑 @@ -52,7 +57,7 @@ export function orderDetailApi(id) { /** * @description 订单 -- 记录 */ - export function orderLogApi(id, data) { +export function orderLogApi(id, data) { return request.get(`order/status/${id}`, data) } /** @@ -83,13 +88,13 @@ export function getExpress(id) { * @description 导出订单 */ export function exportOrderApi(data) { - return request.get(`order/excel`, data ) + return request.get(`order/excel`, data) } /** * @description 导出退款单 */ - export function exportRefundOrderApi(data) { - return request.get(`order/refund/excel`, data ) +export function exportRefundOrderApi(data) { + return request.get(`order/refund/excel`, data) } /** * @description 导出文件列表 @@ -118,48 +123,48 @@ export function takeOrderListApi(data) { /** * @description 核销订单 -- 卡片 */ - export function takeCardListApi(data) { - return request.get('order/take_title', data) +export function takeCardListApi(data) { + return request.get('order/take_title', data) } /** * @description 导出列表 -- 文件类型 */ - export function excelFileType() { - return request.get('excel/type') +export function excelFileType() { + return request.get('excel/type') } /** * @description 发送货 -- 门店列表 */ - export function getStoreLst() { +export function getStoreLst() { return request.get(`delivery/station/options`) } /** * @description 同城配送 -- 订单列表 */ - export function deliveryOrderLst(data) { +export function deliveryOrderLst(data) { return request.get(`delivery/order/lst`, data) } /** * @description 同城订单 -- 取消 */ - export function deliveryOrderCancle(id) { +export function deliveryOrderCancle(id) { return request.get(`delivery/order/cancel/${id}/form`) } /** * @description 同城配送 -- 充值记录列表 */ - export function rechargeLst(data) { +export function rechargeLst(data) { return request.get(`delivery/station/payLst`, data) } /** * @description 同城配送 -- 充值记录卡片数据 */ - export function rechargeCardApi() { +export function rechargeCardApi() { return request.get(`delivery/title`) } /** * @description 同城配送 -- 充值余额 */ - export function rechargeBalancei() { +export function rechargeBalancei() { return request.get(`delivery/belence`) } \ No newline at end of file diff --git a/src/utils/newToExcel.js b/src/utils/newToExcel.js index 735e916..50263e5 100644 --- a/src/utils/newToExcel.js +++ b/src/utils/newToExcel.js @@ -12,191 +12,193 @@ import { isEmpty } from 'element-ui/lib/utils/util'; import ExcelJS from 'exceljs' import * as FileSaver from 'file-saver' -export default function createWorkBook(header, title, data, foot, filename,sheets){ - const letter = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']; +export default function createWorkBook(header, title, data, foot, filename, sheets) { + const letter = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']; let lcomun = 1; - let worksheet ; + let worksheet; - const workBook = new ExcelJS.Workbook(); + const workBook = new ExcelJS.Workbook(); let long = header.length; -/** - * 创建工作薄 - * @param {*} sheets - */ -function createSheets(sheets) { - let sheet = Array.isArray(sheets) ? sheets[0] : sheets; - let style = Array.isArray(sheets) ? sheets[1] : {}; - worksheet = workBook.addWorksheet(sheet,style); -} + /** + * 创建工作薄 + * @param {*} sheets + */ + function createSheets(sheets) { + let sheet = Array.isArray(sheets) ? sheets[0] : sheets; + let style = Array.isArray(sheets) ? sheets[1] : {}; + worksheet = workBook.addWorksheet(sheet, style); + } -/** - * 设置表名介绍等 - * @param {*} title - * @param {*} long - */ -function setTitle(title,long){ - if (isEmpty(title)) return ; - title = Array.isArray(title) ? title : title.split(','); - for (let i = 0; i < title.length; i++) { - let ti = worksheet.getRow(i + 1); - ti.getCell(1).value = title[i]; - ti.height = 30; - ti.font = {bold: true,size: 20,vertAlign: 'subscript',}; - ti.alignment = { vertical: 'bottom', horizontal: 'center' }; - ti.outlineLevel = 1; - worksheet.mergeCells(i + 1 , 1, i + 1, long) - ti.commit(); + /** + * 设置表名介绍等 + * @param {*} title + * @param {*} long + */ + function setTitle(title, long) { + if (isEmpty(title)) return; + title = Array.isArray(title) ? title : title.split(','); + for (let i = 0; i < title.length; i++) { + let ti = worksheet.getRow(i + 1); + ti.getCell(1).value = title[i]; + ti.height = 30; + ti.font = { bold: true, size: 20, vertAlign: 'subscript', }; + ti.alignment = { vertical: 'bottom', horizontal: 'center' }; + ti.outlineLevel = 1; + worksheet.mergeCells(i + 1, 1, i + 1, long) + ti.commit(); + lcomun++; + } + } + /** + * 设置表头行 + * @param {*} header + */ + function setHeader(header) { + if (isEmpty(header)) return; + const headerRow = worksheet.getRow(lcomun); + for (let index = 1; index <= header.length; index++) { + headerRow.getCell(index).value = header[index - 1]; + } + headerRow.height = 25; + headerRow.width = 50; + headerRow.font = { bold: true, size: 18, vertAlign: 'subscript', }; + headerRow.alignment = { vertical: 'bottom', horizontal: 'center' }; + headerRow.outlineLevel = 1; + headerRow.commit(); lcomun++; } -} -/** - * 设置表头行 - * @param {*} header - */ -function setHeader(header){ - if (isEmpty(header)) return ; - const headerRow = worksheet.getRow(lcomun); - for (let index = 1; index <= header.length; index++) { - headerRow.getCell(index).value = header[index - 1]; - } - headerRow.height = 25; - headerRow.width = 50; - headerRow.font = {bold: true, size: 18,vertAlign: 'subscript',}; - headerRow.alignment = { vertical: 'bottom', horizontal: 'center' }; - headerRow.outlineLevel = 1; - headerRow.commit(); - lcomun++; -} -/** - * 导出内容 - * @param {*} data - */ -function setContent(data){ - if (isEmpty(data)) return ; - for (let h = 0; h < data.length; h++) { - let satarLcomun = lcomun; - let lcomunNow = worksheet.getRow(lcomun); - let hasMerge = false; - let starKey = 0; - let endKey = 0; - /** 循环列 */ - //需要操作第几列 - let sk = 0; - for (let l = 0; l < data[h].length; l++) { - if (Array.isArray(data[h][l])) { - //数组长度 - starKey = sk; - hasMerge = true; - setArrayContent(data[h][l],sk); - sk = sk + data[h][l][0].length - endKey =sk; - } else { - //不是数组 - lcomunNow.getCell(getLetter(sk)).value = data[h][l]; - lcomunNow.getCell(getLetter(sk)).border = {top: {style:'thin'},left: {style:'thin'},bottom: {style:'thin'},right: {style:'thin'}}; - lcomunNow.alignment = { vertical: 'middle', horizontal: 'center' }; - sk++ - } - } - if (hasMerge) setMergeLcomun(satarLcomun, lcomun, starKey, endKey); - lcomunNow.height = 25; - lcomunNow.commit(); - lcomun++ - } -} -/** - * 占多行的数组 - * @param {*} arr - * @param {*} sk - */ -function setArrayContent(arr, sk) { /** - * 循环二维数组,在循环行 + * 导出内容 + * @param {*} data */ - let al = arr.length; - let sl = al - 1 ; - for (let i = 0; i < arr.length; i++ ) { - let lcomunNow = worksheet.getRow(lcomun); - for(let v = 0; v < arr[i].length; v++) { - lcomunNow.getCell(getLetter(sk+v)).value = arr[i][v]; - lcomunNow.getCell(getLetter(sk+v)).border = {top: {style:'thin'},left: {style:'thin'},bottom: {style:'thin'},right: {style:'thin'}}; - lcomunNow.alignment = { vertical: 'middle', horizontal: 'center' }; - } - lcomunNow.height = 25; - lcomunNow.commit() - if (i < sl) lcomun++ - } -} -/** - * 合并操作 - * @param {*} satarLcomun - * @param {*} endLcomun - * @param {*} starKey - * @param {*} endKey - */ -function setMergeLcomun(satarLcomun, endLcomun, starKey, endKey){ - for(let ml = 0 ; ml < long ; ml++ ){ - if (ml < starKey || ml >= endKey) { - worksheet.mergeCells(getLetter(ml) + satarLcomun +':'+getLetter(ml) + endLcomun) - } - } -} - -/** - * 设置表末尾统计备注等 - * @param {*} footData - */ -function setFoot(footData){ - if (isEmpty(footData)) return ; - if (Array.isArray(footData)) { - for (let f = 0; f < footData.length; f++) { + function setContent(data) { + if (isEmpty(data)) return; + for (let h = 0; h < data.length; h++) { + let satarLcomun = lcomun; let lcomunNow = worksheet.getRow(lcomun); - lcomunNow.getCell(1).value = footData[f]; - lcomunNow.getCell(1).border = {top: {style:'thin'},left: {style:'thin'},bottom: {style:'thin'},right: {style:'thin'}}; - lcomunNow.alignment = { vertical: 'middle', horizontal: 'left' }; - worksheet.mergeCells('A' + lcomun +':'+getLetter(long-1) + lcomun) + let hasMerge = false; + let starKey = 0; + let endKey = 0; + /** 循环列 */ + //需要操作第几列 + let sk = 0; + for (let l = 0; l < data[h].length; l++) { + if (Array.isArray(data[h][l])) { + //数组长度 + starKey = sk; + hasMerge = true; + setArrayContent(data[h][l], sk); + if (data[h][l][0]) { + sk = sk + data[h][l][0].length + } + endKey = sk; + } else { + //不是数组 + lcomunNow.getCell(getLetter(sk)).value = data[h][l]; + lcomunNow.getCell(getLetter(sk)).border = { top: { style: 'thin' }, left: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' } }; + lcomunNow.alignment = { vertical: 'middle', horizontal: 'center' }; + sk++ + } + } + if (hasMerge) setMergeLcomun(satarLcomun, lcomun, starKey, endKey); + lcomunNow.height = 25; + lcomunNow.commit(); lcomun++ } - } else { - let lcomunNow = worksheet.getRow(lcomun); - lcomunNow.getCell(1).value = footData[f]; - lcomunNow.getCell(1).border = {top: {style:'thin'},left: {style:'thin'},bottom: {style:'thin'},right: {style:'thin'}}; - lcomunNow.alignment = { vertical: 'middle', horizontal: 'left' }; - worksheet.mergeCells('A' + lcomun +':'+getLetter(long-1) + lcomun) } -} - -/** - * 处理超过26个字母的列 - * @param {*} number - * @returns - */ -function getLetter(number){ - if (number < 26) { - return letter[number]; - } else { - let n = number % 26 - let l = Math.floor(number % 26) - return letter[l]+letter[n] + /** + * 占多行的数组 + * @param {*} arr + * @param {*} sk + */ + function setArrayContent(arr, sk) { + /** + * 循环二维数组,在循环行 + */ + let al = arr.length; + let sl = al - 1; + for (let i = 0; i < arr.length; i++) { + let lcomunNow = worksheet.getRow(lcomun); + for (let v = 0; v < arr[i].length; v++) { + lcomunNow.getCell(getLetter(sk + v)).value = arr[i][v]; + lcomunNow.getCell(getLetter(sk + v)).border = { top: { style: 'thin' }, left: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' } }; + lcomunNow.alignment = { vertical: 'middle', horizontal: 'center' }; + } + lcomunNow.height = 25; + lcomunNow.commit() + if (i < sl) lcomun++ + } + } + /** + * 合并操作 + * @param {*} satarLcomun + * @param {*} endLcomun + * @param {*} starKey + * @param {*} endKey + */ + function setMergeLcomun(satarLcomun, endLcomun, starKey, endKey) { + for (let ml = 0; ml < long; ml++) { + if (ml < starKey || ml >= endKey) { + worksheet.mergeCells(getLetter(ml) + satarLcomun + ':' + getLetter(ml) + endLcomun) + } + } } -} -/** - * 导出下载 - * @param {*} filename - */ -function saveAndDowloade(filename){ - if (!filename) filename = new Date().getTime(); - workBook.xlsx.writeBuffer().then(data => { - const blob = new Blob([data], {type: 'application/octet-stream'}) - FileSaver.saveAs(blob, filename + '.xlsx') - }) -} + /** + * 设置表末尾统计备注等 + * @param {*} footData + */ + function setFoot(footData) { + if (isEmpty(footData)) return; + if (Array.isArray(footData)) { + for (let f = 0; f < footData.length; f++) { + let lcomunNow = worksheet.getRow(lcomun); + lcomunNow.getCell(1).value = footData[f]; + lcomunNow.getCell(1).border = { top: { style: 'thin' }, left: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' } }; + lcomunNow.alignment = { vertical: 'middle', horizontal: 'left' }; + worksheet.mergeCells('A' + lcomun + ':' + getLetter(long - 1) + lcomun) + lcomun++ + } + } else { + let lcomunNow = worksheet.getRow(lcomun); + lcomunNow.getCell(1).value = footData[f]; + lcomunNow.getCell(1).border = { top: { style: 'thin' }, left: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' } }; + lcomunNow.alignment = { vertical: 'middle', horizontal: 'left' }; + worksheet.mergeCells('A' + lcomun + ':' + getLetter(long - 1) + lcomun) + } + } + + /** + * 处理超过26个字母的列 + * @param {*} number + * @returns + */ + function getLetter(number) { + if (number < 26) { + return letter[number]; + } else { + let n = number % 26 + let l = Math.floor(number % 26) + return letter[l] + letter[n] + } + } + + /** + * 导出下载 + * @param {*} filename + */ + function saveAndDowloade(filename) { + if (!filename) filename = new Date().getTime(); + workBook.xlsx.writeBuffer().then(data => { + const blob = new Blob([data], { type: 'application/octet-stream' }) + FileSaver.saveAs(blob, filename + '.xlsx') + }) + } createSheets(sheets); - setTitle(title,long); + setTitle(title, long); setHeader(header); setContent(data); setFoot(foot); diff --git a/src/views/freight/express/index.vue b/src/views/freight/express/index.vue index 41982ba..2f1631c 100644 --- a/src/views/freight/express/index.vue +++ b/src/views/freight/express/index.vue @@ -14,6 +14,7 @@
同步物流公司 + 添加物流公司
@@ -300,6 +301,7 @@ >查看退款单 详情 + @@ -344,7 +346,7 @@ // +---------------------------------------------------------------------- // | Author: CRMEB Team // +---------------------------------------------------------------------- -import { orderListApi, chartApi, cardListApi, exportOrderApi } from "@/api/order"; +import { orderListApi, chartApi, cardListApi, exportOrderApi,openRefundApi } from "@/api/order"; import { merSelectApi } from "@/api/product"; import userDetails from '../../user/list/userDetails'; import orderDetail from './orderDetails.vue'; @@ -563,6 +565,30 @@ export default { // this.$refs.orderDetail.onOrderDetails(id); // this.$refs.orderDetail.onOrderLog(id); }, + // 开启退款 + // onOrderOpenRefund(id) { + // this.$confirm('此操作将开启退款, 是否继续?', '提示', { + // confirmButtonText: '确定', + // cancelButtonText: '取消', + // type: 'warning' + // }).then(() => { + // openRefundApi(id).then((res)=>{ + // if(res.status == '200'){ + // this.$message({ + // type: 'success', + // message: '开启退款!' + // }); + // } + // console.log(res, "res"); + // }) + // // this.$message({ + // // type: 'success', + // // message: '开启退款!' + // // }); + // }).catch(() => { + + // }); + // }, pageChangeLog(page) { this.tableFromLog.page = page; this.getList(''); diff --git a/src/views/product/productComment/index.vue b/src/views/product/productComment/index.vue index fd4bea1..2672fe4 100644 --- a/src/views/product/productComment/index.vue +++ b/src/views/product/productComment/index.vue @@ -52,7 +52,7 @@ - 添加自评 + diff --git a/src/views/product/productExamine/index.vue b/src/views/product/productExamine/index.vue index d9173b6..3e7ee76 100644 --- a/src/views/product/productExamine/index.vue +++ b/src/views/product/productExamine/index.vue @@ -51,6 +51,22 @@ + + + 搜索 重置 @@ -109,12 +125,12 @@ - + - + @@ -122,12 +138,14 @@ + + + + + 店铺名称:{{ projectData.merchant&&projectData.merchant.mer_name }} + 入住企业名称: + + 营业执照: +
+ +
+
+ 店铺联系人: {{ projectData.merchant&&projectData.merchant.service_phone }} + 联系人电话:{{ projectData.unit_name }} +
@@ -157,6 +367,20 @@ 拒绝 + +
+
+ +
+
+ +
+
+
@@ -259,14 +483,36 @@ export default { ], refusal: [ { required: true, message: '请填写拒绝原因', trigger: 'blur' } + ], + status_img: [ + { required: true, message: '请上传佐证图片', trigger: 'blur' } ] }, isAppend: true, proId: 0, + aptitude:0, + qualification:{ + production_name: '', + businessList: [], + licenceList: [], + trademarkList: [], + authorizedList: [], + commodityList: [], + otherList: [], + importBusinessList: [], + importAuthorizedList: [], + customsList: [], + packingList: [], + importOtherList: [], + commodity_type: 0, + brands_name: '', + import_name: '' + }, ruleForm: { refusal: '', status: 1, - id: '' + id: '', + status_img:'' }, formThead: Object.assign({}, objTitle), manyTabDate: {}, @@ -296,6 +542,21 @@ export default { } }, methods: { + getType(val){ + var regex = /(?:\.([^.]+))?$/; + let suffix = regex.exec(val.url)[1] + return suffix == 'pdf' + }, + // 点击商品图 + modalPicTap(tit, num, i) { + const _this = this; + const attr = []; + this.$modalUpload(function(img) { + if (tit === "1" && !num) { + _this.ruleForm.status_img = img[0]; + } + }, tit); + }, onSubmit() { this.isShow ? this.ruleForm.id = this.proId : this.ruleForm.id = this.ids productStatusApi(this.ruleForm).then(res => { @@ -317,6 +578,7 @@ export default { this.loading = true productDetailApi(id).then(res => { this.projectData = res.data + this.qualification = res.data.qualification this.svip_type = res.data.svip_price_type if (this.projectData.spec_type === 0) { @@ -353,6 +615,34 @@ export default { .projectInfo ::v-deep .el-dialog__body{ padding-top: 0 !important; } + .upload{ + display: flex; + flex-direction: row; + align-content: center; + height: 60px; + // line-height: 60px; + margin-bottom: 10px; + &_right{ + display: flex; + height: 60px; + } + &_left{ + width: 115px; + } + .txt{ + width: 60px; + height: 60px; + line-height: 60px; + overflow: hidden; + display: inline-block; + text-overflow: ellipsis; + white-space: nowrap; + border: 1px solid #DCDFE6; + border-radius: 4px; + margin-right: 10px; + color: blue; + } + } .projectInfo ::v-deep .el-tabs__content{ padding-left: 10px !important; } @@ -393,5 +683,6 @@ export default { } .demo-image__preview{ display: inline-block; + vertical-align: middle; } diff --git a/src/views/setting/devise/visualization.vue b/src/views/setting/devise/visualization.vue index cba2e06..a19fc25 100644 --- a/src/views/setting/devise/visualization.vue +++ b/src/views/setting/devise/visualization.vue @@ -23,7 +23,7 @@ - +
@@ -69,6 +69,16 @@
+
+ +
+
暂无照片,请添加~
+ + + + + +
@@ -221,6 +231,52 @@
+ +
+
+
+
+ +
+
+ +
+
+ +
+ +
+
+
+
+ 图片名称: +
+ +
+
+
+ 链接地址: +
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
@@ -306,7 +362,7 @@ -
+
{{name != 'points_mall_district' ? '轮播图设置' : '积分金刚区设置'}}
@@ -592,6 +648,11 @@ export default { let row = JSON.parse(el.$el.dataset.item); this.pageId = row.group_id; let time = new Date().getTime() * 1000 + console.log(this.name); + if(this.name == "home_pop_frame"){ + this.guide = 1; + return this.info(this.name); + } if (this.name == "open_screen_advertising") { this.guide = 2; this.info(this.name); @@ -679,6 +740,8 @@ export default { this.loadingExist = true; let data = {data: this.tabList.list} if(this.guide == 2){data.config={open_screen_switch: this.formItem.open_screen_switch,open_screen_time: this.formItem.open_screen_time,open_screen_space: this.formItem.open_screen_space}} + // if(this.guide == 1){data.config={open_screen_switch: this.formItem.open_screen_switch,open_screen_time: this.formItem.open_screen_time,open_screen_space: this.formItem.open_screen_space}} + // groupSaveApi(this.name,data) groupSaveApi(this.name,data) .then((res) => { this.loadingExist = false;