From e51ccb9bfc6712bd405ffd69d7365b542ef350f4 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期三, 29 四月 2026 11:56:17 +0800
Subject: [PATCH] 支付宝支付ddd

---
 admin/src/components/business/OperaShopInfoWindow.vue    |    3 
 admin/src/api/business/shopInfo.js                       |    3 +
 admin/src/components/business/OperaPrinterEditWindow.vue |   74 ++++++++++++++++++++++++
 small-program/utils/http.api.js                          |    2 
 admin/admin/index.html                                   |    2 
 small-program/shop/pages/order-details/order-details.vue |   23 +++++++
 admin/src/views/business/storeList.vue                   |   16 ++++
 7 files changed, 119 insertions(+), 4 deletions(-)

diff --git a/admin/admin/index.html b/admin/admin/index.html
index 9a92c36..3ee3312 100644
--- a/admin/admin/index.html
+++ b/admin/admin/index.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>楂橀搧绔欒鏉庡瘎瀛樼鐞嗙郴缁�</title><link href="static/css/app.48a9fe75.css" rel="preload" as="style"><link href="static/css/chunk-vendors.d9e68312.css" rel="preload" as="style"><link href="static/js/app.b9055ec1.js" rel="preload" as="script"><link href="static/js/chunk-vendors.ff1e50a7.js" rel="preload" as="script"><link href="static/css/chunk-vendors.d9e68312.css" rel="stylesheet"><link href="static/css/app.48a9fe75.css" rel="stylesheet"></head><body><div id="app"></div><script src="static/js/chunk-vendors.ff1e50a7.js"></script><script src="static/js/app.b9055ec1.js"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>楂橀搧绔欒鏉庡瘎瀛樼鐞嗙郴缁�</title><link href="static/css/app.973c4f23.css" rel="preload" as="style"><link href="static/css/chunk-vendors.d9e68312.css" rel="preload" as="style"><link href="static/js/app.c8723425.js" rel="preload" as="script"><link href="static/js/chunk-vendors.ff1e50a7.js" rel="preload" as="script"><link href="static/css/chunk-vendors.d9e68312.css" rel="stylesheet"><link href="static/css/app.973c4f23.css" rel="stylesheet"></head><body><div id="app"></div><script src="static/js/chunk-vendors.ff1e50a7.js"></script><script src="static/js/app.c8723425.js"></script></body></html>
\ No newline at end of file
diff --git a/admin/src/api/business/shopInfo.js b/admin/src/api/business/shopInfo.js
index 3ec1001..e0ade04 100644
--- a/admin/src/api/business/shopInfo.js
+++ b/admin/src/api/business/shopInfo.js
@@ -17,6 +17,9 @@
 export function updateById (data) {
   return request.post('/business/shopInfo/updateShop', data)
 }
+export function maintainPrinter (data) {
+  return request.post('/business/shopInfo/maintainPrinter', data)
+}
 
 export function deleteById (id) {
   return request.get(`/business/shopInfo/delete/${id}`)
diff --git a/admin/src/components/business/OperaPrinterEditWindow.vue b/admin/src/components/business/OperaPrinterEditWindow.vue
new file mode 100644
index 0000000..86bd5fd
--- /dev/null
+++ b/admin/src/components/business/OperaPrinterEditWindow.vue
@@ -0,0 +1,74 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    @confirm="confirm"
+  >
+    <div class="tip-warn" >
+      <i class="el-icon-warning"></i>
+      姝e湪涓洪棬搴椼��<span style="color: red;font-weight: 600;">{{form.name}}</span>銆戣缃墦鍗版満淇℃伅</div>
+    <el-form :model="form" ref="form" :rules="rules">
+      <el-form-item label="鎵撳嵃鏈哄簭鍒楀彿" prop="printerSn">
+        <el-input v-model="form.printerSn" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import {maintainPrinter} from '@/api/business/shopInfo'
+export default {
+  name: 'OperaCategoryWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      isUploading: false,
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        name: null,
+        printerSn: ''
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+        printerSn: [{ required: true, message: '璇疯緭鍏ユ墦鍗版満搴忓垪鍙�' }]
+      }
+    }
+  },
+  methods: {
+    open (title, target) {
+      console.log("=======================",target)
+      this.title = title
+      this.visible = true
+      this.form = target
+
+      console.log("=======================",  this.form)
+    },
+    __confirmEdit () {
+      this.$refs.form.validate((valid) => {
+        if (!valid) {
+          return
+        }
+        // 璋冪敤鏇存柊鎺ュ彛
+        this.isWorking = true
+        maintainPrinter(this.form)
+          .then(() => {
+            this.visible = false
+            this.$tip.apiSuccess('淇敼鎴愬姛')
+            this.$emit('success')
+          })
+          .catch(e => {
+            this.$tip.apiFailed(e)
+          })
+          .finally(() => {
+            this.isWorking = false
+          })
+      })
+    }
+  }
+}
+</script>
diff --git a/admin/src/components/business/OperaShopInfoWindow.vue b/admin/src/components/business/OperaShopInfoWindow.vue
index 78edb32..bb4bd6c 100644
--- a/admin/src/components/business/OperaShopInfoWindow.vue
+++ b/admin/src/components/business/OperaShopInfoWindow.vue
@@ -290,9 +290,10 @@
   components: { GlobalWindow, Pagination,OperaOrderDetail },
   data () {
     return {
+      title: '',
       activeTab: 'performance',
       storeInfo: {},
-      visible:false,
+      visible: false,
       searchForm: {
         orderNo: '',
         goodsInfo: '',
diff --git a/admin/src/views/business/storeList.vue b/admin/src/views/business/storeList.vue
index 8d86712..c55fd6b 100644
--- a/admin/src/views/business/storeList.vue
+++ b/admin/src/views/business/storeList.vue
@@ -19,6 +19,9 @@
       <el-form-item label="鑱旂郴鐢佃瘽" prop="linkPhone">
         <el-input v-model="searchForm.linkPhone" clearable placeholder="璇疯緭鍏ヨ仈绯荤數璇�" @keypress.enter.native="search"></el-input>
       </el-form-item>
+      <el-form-item label="鑱旂郴鐢佃瘽" prop="linkPhone">
+        <el-input v-model="searchForm.linkPhone" clearable placeholder="璇疯緭鍏ヨ仈绯荤數璇�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
       <el-form-item label="娉ㄥ唽鏃堕棿" prop="createTimeStr">
         <el-date-picker type="daterange" v-model="searchForm.createTimeStr" clearable value-format="yyyy-MM-dd"
                         range-separator="-" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" @change="handleDateChange" />
@@ -56,6 +59,12 @@
         <el-table-column prop="address" label="闂ㄥ簵鍦板潃" min-width="200px"></el-table-column>
         <el-table-column prop="linkName" label="鑱旂郴浜�" min-width="100px"></el-table-column>
         <el-table-column prop="linkPhone" label="鑱旂郴鐢佃瘽" min-width="120px"></el-table-column>
+        <el-table-column prop="printerSn" label="鎵撳嵃鏈哄簭鍒楀彿" min-width="160px">
+          <template slot-scope="{row}">
+            <span class="greenstate"  style="cursor: pointer"   @click="$refs.operaPrinterEditWindow.open('闂ㄥ簵鎵撳嵃鏈鸿缃�', row)" v-if="row.printerSn"  >{{ row.printerSn }}</span>
+            <span class="redstate" style="cursor: pointer" v-else  @click="$refs.operaPrinterEditWindow.open('闂ㄥ簵鎵撳嵃鏈鸿缃�', row)"> 鏈缃�</span>
+          </template>
+        </el-table-column>
         <el-table-column prop="createTime" label="娉ㄥ唽鏃ユ湡" min-width="160px"></el-table-column>
         <el-table-column label="璐﹀彿鐘舵��" min-width="100px">
           <template slot-scope="{row}">
@@ -64,9 +73,10 @@
             </el-switch>
           </template>
         </el-table-column>
-        <el-table-column label="鎿嶄綔" min-width="150" fixed="right">
+        <el-table-column label="鎿嶄綔" min-width="180" fixed="right">
           <template slot-scope="{row}">
             <el-button type="text" @click="handleEdit(row)">缂栬緫</el-button>
+            <el-button type="text" @click="$refs.operaPrinterEditWindow.open('闂ㄥ簵鎵撳嵃鏈鸿缃�', row)">鎵撳嵃鏈鸿缃�</el-button>
             <el-button type="text" @click="handleResetPwd(row)">閲嶇疆瀵嗙爜</el-button>
           </template>
         </el-table-column>
@@ -81,6 +91,7 @@
     <!-- 闂ㄥ簵璇︽儏 -->
     <OperaShopInfoWindow ref="operaShopInfoWindow" />
     <!-- 缂栬緫闂ㄥ簵 -->
+    <OperaPrinterEditWindow ref="operaPrinterEditWindow" @success="search" />
     <OperaShopEditWindow ref="operaShopEditWindow" @success="search" />
   </TableLayout>
 </template>
@@ -91,11 +102,12 @@
 import Pagination from '@/components/common/Pagination'
 import OperaShopInfoWindow from '@/components/business/OperaShopInfoWindow'
 import OperaShopEditWindow from '@/components/business/OperaShopEditWindow'
+import OperaPrinterEditWindow from '@/components/business/OperaPrinterEditWindow'
 import { changeStatus, resetPassword } from '@/api/business/shopInfo'
 export default {
   name: 'StoreList',
   extends: BaseTable,
-  components: { TableLayout, Pagination, OperaShopInfoWindow, OperaShopEditWindow },
+  components: { TableLayout, Pagination, OperaShopInfoWindow, OperaShopEditWindow,OperaPrinterEditWindow },
   data () {
     return {
       searchForm: {
diff --git a/small-program/shop/pages/order-details/order-details.vue b/small-program/shop/pages/order-details/order-details.vue
index c043d50..1e92830 100644
--- a/small-program/shop/pages/order-details/order-details.vue
+++ b/small-program/shop/pages/order-details/order-details.vue
@@ -234,6 +234,7 @@
 				<view class="btn kong" @click="contactPhoneDo(info.takePhone)" v-if="info.status === 1 || info.status === 5" >鑱旂郴瀹㈡埛</view>
 				<view class="btn kong" @click="contactPhoneDo(info.driverPhone)" v-if="info.type ===1&&(info.status === 4 || info.status === 3)">鑱旂郴楠戞墜</view>
 				<view class="btn you"  v-if="info.status ===1  || info.status ===4 "   @click="hexiaoOrder(info)" >鏀朵欢鏍搁攢</view>
+				<view class="btn you"  v-if="info.status ==2 || info.status ===3  || info.status ===4  "   @click="printerOrder(info)" >鎵撳嵃鏍囩</view>
 				<view class="btn you" v-if="info.status ===5 &&(info.overdueStatus ==0 || info.overdueStatus == 1)" @click="hexiaoOrder(info)" >纭鍒板簵</view>
 				<view class="btn you" v-if="info.status ===5 && (info.overdueStatus == 4 || info.overdueStatus == 2)" @click="hexiaoOrder(info)" >鍙栦欢鏍搁攢</view>
 			</view>
@@ -266,6 +267,7 @@
 		},
 		data() {
 			return {
+				loading:false,
 				id:null,
 				qrcodeImage:null,
 				showCancel:false,
@@ -307,6 +309,27 @@
 			cancelOrder(item){
 				this.showCancel = !this.showCancel
 			}, 
+			async printerOrder(){
+				if(this.loading){
+					return
+				}
+				this.loading =true
+				try{
+					var that =this
+					 that.$u.api.printOrderLabel({ orderId: this.id }).then(res=>{
+						 if (res.code === 200 ) {
+							 uni.showToast({
+							 	title:'鍙戣捣鎵撳嵃璇锋眰鎴愬姛',
+								icon:'none'
+							 })
+						 } 
+						 that.loading =false
+					 })
+				}catch(e){
+					this.loading =false
+				} 
+				
+			},
 			async cancelOrderDo(){
 				var that =this
 				let res = await that.$u.api.cancelOrder({ orderId: this.id });
diff --git a/small-program/utils/http.api.js b/small-program/utils/http.api.js
index 7ce6284..dff1fd7 100644
--- a/small-program/utils/http.api.js
+++ b/small-program/utils/http.api.js
@@ -60,7 +60,9 @@
 	let getActiveOrderTip= (params = {}) => vm.$u.http.get('web/config/getActiveOrderTip',{ params });	// 棣栭〉杩涜涓鍗曟彁绀�
 	let maintainInfo= (data = {}) => vm.$u.http.post('web/shopInfo/maintainInfo',data);	// 鏌ヨ闂ㄥ簵缁存姢淇℃伅
 	let maintainShopInfo= (data = {}) => vm.$u.http.post('web/shopInfo/maintain',data);	// 鏌ヨ闂ㄥ簵缁存姢淇℃伅
+	let printOrderLabel = (params = {}) => vm.$u.http.get('web/shopInfo/printOrderLabel/'+params.orderId,{ params });	//闂ㄥ簵璁㈠崟鎵撳嵃
 	vm.$u.api = {
+		printOrderLabel,
 		getActiveOrderTip,
 		logOutShop,
 		maintainShopInfo,

--
Gitblit v1.9.3