Просмотр исходного кода

创建支付中间页面,对接支付,添加sku打印

yangg 1 год назад
Родитель
Сommit
793f08205b
59 измененных файлов с 283 добавлено и 97 удалено
  1. 1 1
      manager-admin/dist/index.html
  2. 0 0
      manager-admin/dist/static/js/0.7d330831657e92d7b461.js
  3. BIN
      manager-admin/dist/static/js/0.7d330831657e92d7b461.js.gz
  4. 0 0
      manager-admin/dist/static/js/0.d607b652ce46e8b19bcf.js
  5. BIN
      manager-admin/dist/static/js/0.d607b652ce46e8b19bcf.js.gz
  6. BIN
      manager-admin/dist/static/js/12.4550901970ec6fd7e86a.js.gz
  7. 0 0
      manager-admin/dist/static/js/12.cef9f1cad956c23abfbc.js
  8. BIN
      manager-admin/dist/static/js/12.cef9f1cad956c23abfbc.js.gz
  9. BIN
      manager-admin/dist/static/js/13.908cb2e7c2d8d4ba887b.js.gz
  10. 0 0
      manager-admin/dist/static/js/13.f8bff3e137fb2e28ee1d.js
  11. BIN
      manager-admin/dist/static/js/13.f8bff3e137fb2e28ee1d.js.gz
  12. 0 0
      manager-admin/dist/static/js/14.6056ad6cf88f85a05833.js
  13. BIN
      manager-admin/dist/static/js/14.6056ad6cf88f85a05833.js.gz
  14. 0 0
      manager-admin/dist/static/js/27.0e0322bda7143668c3f6.js
  15. BIN
      manager-admin/dist/static/js/27.0e0322bda7143668c3f6.js.gz
  16. 0 0
      manager-admin/dist/static/js/27.1792b5a82acbaad4b7de.js
  17. 0 0
      manager-admin/dist/static/js/28.1ca543984d17714df9a0.js
  18. BIN
      manager-admin/dist/static/js/28.1ca543984d17714df9a0.js.gz
  19. 0 0
      manager-admin/dist/static/js/29.81f2af635045b8ee13ca.js
  20. BIN
      manager-admin/dist/static/js/29.ba555b96e4a25b6f619b.js.gz
  21. 0 0
      manager-admin/dist/static/js/30.5a308b9fb4abf8eae8c8.js
  22. BIN
      manager-admin/dist/static/js/30.5a308b9fb4abf8eae8c8.js.gz
  23. 0 0
      manager-admin/dist/static/js/31.033792915cf9cbc4c988.js
  24. BIN
      manager-admin/dist/static/js/31.033792915cf9cbc4c988.js.gz
  25. BIN
      manager-admin/dist/static/js/32.1f03211538cb548e4972.js.gz
  26. 0 0
      manager-admin/dist/static/js/32.74cd91be5b95e3b804dc.js
  27. BIN
      manager-admin/dist/static/js/32.74cd91be5b95e3b804dc.js.gz
  28. BIN
      manager-admin/dist/static/js/33.58bdb3f0405453d8258c.js.gz
  29. 0 0
      manager-admin/dist/static/js/33.b5205da44702760ac40c.js
  30. BIN
      manager-admin/dist/static/js/33.b5205da44702760ac40c.js.gz
  31. BIN
      manager-admin/dist/static/js/48.498cdc0dbd650f410f3c.js.gz
  32. 0 0
      manager-admin/dist/static/js/48.e6e0b6207d18b44f422b.js
  33. BIN
      manager-admin/dist/static/js/48.e6e0b6207d18b44f422b.js.gz
  34. 0 0
      manager-admin/dist/static/js/51.eb5762a99fe90a6bd326.js
  35. 0 0
      manager-admin/dist/static/js/51.eb5762a99fe90a6bd326.js.gz
  36. 0 0
      manager-admin/dist/static/js/58.e0eec1427141d5bbf2a5.js
  37. BIN
      manager-admin/dist/static/js/58.e0eec1427141d5bbf2a5.js.gz
  38. 0 0
      manager-admin/dist/static/js/6.6a2fad478778510ebbcb.js
  39. BIN
      manager-admin/dist/static/js/6.6a2fad478778510ebbcb.js.gz
  40. BIN
      manager-admin/dist/static/js/6.f363e1566cf723a7eb34.js.gz
  41. 0 0
      manager-admin/dist/static/js/7.4d2bf3040661cd07e893.js
  42. BIN
      manager-admin/dist/static/js/7.4d2bf3040661cd07e893.js.gz
  43. 0 0
      manager-admin/dist/static/js/7.df958bd29035de034257.js
  44. BIN
      manager-admin/dist/static/js/7.df958bd29035de034257.js.gz
  45. 0 0
      manager-admin/dist/static/js/app.a74e9fe7f589c3618e4b.js
  46. BIN
      manager-admin/dist/static/js/app.a74e9fe7f589c3618e4b.js.gz
  47. 0 0
      manager-admin/dist/static/js/manifest.1ab18d9774ef0b0e632b.js
  48. 0 0
      manager-admin/dist/static/js/manifest.4eb76d2733670735effe.js
  49. 10 0
      manager-admin/src/api/setting.js
  50. 81 0
      manager-admin/src/components/payType.vue
  51. 2 2
      manager-admin/src/permission.js
  52. 5 2
      manager-admin/src/router/index.js
  53. 70 8
      manager-admin/src/views/basicSetting/skuSort.vue
  54. 1 1
      manager-admin/src/views/setting/serialList.vue
  55. 1 0
      manager-admin/src/views/stock/goodsExchange/addInventory.vue
  56. 83 78
      manager-admin/src/views/stock/order.vue
  57. 27 4
      manager-admin/src/views/stock/orderCheck.vue
  58. 1 0
      manager-admin/src/views/stock/orderOutbound.vue
  59. 1 1
      ui-domain/api.js

+ 1 - 1
manager-admin/dist/index.html

@@ -1,3 +1,3 @@
 <!DOCTYPE html><html><head><meta charset=utf-8><script>var ua = window.navigator.userAgent
     var isIe = /MSIE|Trident/.test(ua)
-    // if (isIe) window.location.href = 'http://support.dmeng.net/upgrade-your-browser.html?referrer=' + encodeURIComponent(window.location.href)</script><script src=/static/js/envs.js></script><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=renderer content=webkit><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><title>erp</title><link rel="shortcut icon" href=/favicon.ico><link href=/static/css/app.d458c2a7b2e24b0f5e2ff09cf75e6099.css rel=stylesheet></head><body><div id=app><div style="display: flex;width: 100vw;height: 100vh;justify-content:center;align-items:center"><img src=/static/img/index.ripple-radio-preloader.gif alt=""></div></div><script src=/static/js/jquery.min.js></script><script src=/static/js/xlsx.full.min.js></script><script src=/static/js/echarts.min.js></script><script src=/static/js/base64.min.js></script><script src=/static/js/psl.min.js></script><script src=/static/UE/ueditor.config.js></script><script src=/static/UE/ueditor.all.js></script><script src=/static/UE/lang/zh-cn/zh-cn.js></script><script src=/static/UE/ueditor.parse.js></script><script src="//webapi.amap.com/maps?v=2.0&key=a4553619077791eb0a6df2f450b9a03b&plugin=AMap.CircleEditor"></script><script src=//webapi.amap.com/ui/1.1/main.js></script><script type=text/javascript src=/static/js/manifest.1ab18d9774ef0b0e632b.js></script><script type=text/javascript src=/static/js/vendor.e72fb649b0be4190decb.js></script><script type=text/javascript src=/static/js/app.c59bdbd5d0449b8d1c84.js></script></body></html>
+    // if (isIe) window.location.href = 'http://support.dmeng.net/upgrade-your-browser.html?referrer=' + encodeURIComponent(window.location.href)</script><script src=/static/js/envs.js></script><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=renderer content=webkit><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><title>erp</title><link rel="shortcut icon" href=/favicon.ico><link href=/static/css/app.d458c2a7b2e24b0f5e2ff09cf75e6099.css rel=stylesheet></head><body><div id=app><div style="display: flex;width: 100vw;height: 100vh;justify-content:center;align-items:center"><img src=/static/img/index.ripple-radio-preloader.gif alt=""></div></div><script src=/static/js/jquery.min.js></script><script src=/static/js/xlsx.full.min.js></script><script src=/static/js/echarts.min.js></script><script src=/static/js/base64.min.js></script><script src=/static/js/psl.min.js></script><script src=/static/UE/ueditor.config.js></script><script src=/static/UE/ueditor.all.js></script><script src=/static/UE/lang/zh-cn/zh-cn.js></script><script src=/static/UE/ueditor.parse.js></script><script src="//webapi.amap.com/maps?v=2.0&key=a4553619077791eb0a6df2f450b9a03b&plugin=AMap.CircleEditor"></script><script src=//webapi.amap.com/ui/1.1/main.js></script><script type=text/javascript src=/static/js/manifest.4eb76d2733670735effe.js></script><script type=text/javascript src=/static/js/vendor.e72fb649b0be4190decb.js></script><script type=text/javascript src=/static/js/app.a74e9fe7f589c3618e4b.js></script></body></html>

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/0.7d330831657e92d7b461.js


BIN
manager-admin/dist/static/js/0.7d330831657e92d7b461.js.gz


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/0.d607b652ce46e8b19bcf.js


BIN
manager-admin/dist/static/js/0.d607b652ce46e8b19bcf.js.gz


BIN
manager-admin/dist/static/js/12.4550901970ec6fd7e86a.js.gz


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/12.cef9f1cad956c23abfbc.js


BIN
manager-admin/dist/static/js/12.cef9f1cad956c23abfbc.js.gz


BIN
manager-admin/dist/static/js/13.908cb2e7c2d8d4ba887b.js.gz


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/13.f8bff3e137fb2e28ee1d.js


BIN
manager-admin/dist/static/js/13.f8bff3e137fb2e28ee1d.js.gz


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/14.6056ad6cf88f85a05833.js


BIN
manager-admin/dist/static/js/14.c2c41f652a33e7dc3ab4.js.gz → manager-admin/dist/static/js/14.6056ad6cf88f85a05833.js.gz


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/27.0e0322bda7143668c3f6.js


BIN
manager-admin/dist/static/js/27.0e0322bda7143668c3f6.js.gz


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/27.1792b5a82acbaad4b7de.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/28.1ca543984d17714df9a0.js


BIN
manager-admin/dist/static/js/28.1ca543984d17714df9a0.js.gz


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/29.81f2af635045b8ee13ca.js


BIN
manager-admin/dist/static/js/29.ba555b96e4a25b6f619b.js.gz


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/30.5a308b9fb4abf8eae8c8.js


BIN
manager-admin/dist/static/js/31.a9fd79dfbbabdc228c8c.js.gz → manager-admin/dist/static/js/30.5a308b9fb4abf8eae8c8.js.gz


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/31.033792915cf9cbc4c988.js


BIN
manager-admin/dist/static/js/31.033792915cf9cbc4c988.js.gz


BIN
manager-admin/dist/static/js/32.1f03211538cb548e4972.js.gz


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/32.74cd91be5b95e3b804dc.js


BIN
manager-admin/dist/static/js/32.74cd91be5b95e3b804dc.js.gz


BIN
manager-admin/dist/static/js/33.58bdb3f0405453d8258c.js.gz


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/33.b5205da44702760ac40c.js


BIN
manager-admin/dist/static/js/33.b5205da44702760ac40c.js.gz


BIN
manager-admin/dist/static/js/48.498cdc0dbd650f410f3c.js.gz


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/48.e6e0b6207d18b44f422b.js


BIN
manager-admin/dist/static/js/48.e6e0b6207d18b44f422b.js.gz


+ 0 - 0
manager-admin/dist/static/js/51.afa0deb0383eca601da6.js → manager-admin/dist/static/js/51.eb5762a99fe90a6bd326.js


+ 0 - 0
manager-admin/dist/static/js/51.afa0deb0383eca601da6.js.gz → manager-admin/dist/static/js/51.eb5762a99fe90a6bd326.js.gz


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/58.e0eec1427141d5bbf2a5.js


BIN
manager-admin/dist/static/js/58.4e2a425d11b82a55e1e4.js.gz → manager-admin/dist/static/js/58.e0eec1427141d5bbf2a5.js.gz


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/6.6a2fad478778510ebbcb.js


BIN
manager-admin/dist/static/js/6.6a2fad478778510ebbcb.js.gz


BIN
manager-admin/dist/static/js/6.f363e1566cf723a7eb34.js.gz


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/7.4d2bf3040661cd07e893.js


BIN
manager-admin/dist/static/js/7.4d2bf3040661cd07e893.js.gz


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/7.df958bd29035de034257.js


BIN
manager-admin/dist/static/js/7.df958bd29035de034257.js.gz


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/app.a74e9fe7f589c3618e4b.js


BIN
manager-admin/dist/static/js/app.c59bdbd5d0449b8d1c84.js.gz → manager-admin/dist/static/js/app.a74e9fe7f589c3618e4b.js.gz


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/manifest.1ab18d9774ef0b0e632b.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
manager-admin/dist/static/js/manifest.4eb76d2733670735effe.js


+ 10 - 0
manager-admin/src/api/setting.js

@@ -346,4 +346,14 @@ export function updateSnCode(id,snCode) {
     headers: { 'Content-Type': 'application/json' },
    
   })
+}
+//
+export function getPayUrl(params) {
+  return request({
+    url: `/admin/erp/pay/getPayUrl`,
+    method: 'post',
+    headers: { 'Content-Type': 'application/json' },
+    needToken: false,
+    data: params
+  })
 }

+ 81 - 0
manager-admin/src/components/payType.vue

@@ -0,0 +1,81 @@
+<template>
+    <div class="center">
+        <div class="header_info">
+            <p>订单编号: <span>{{ sn }}</span></p>
+            <p>付款金额:<span> ¥</span><span>{{ price }}</span></p>
+        </div>
+        <div class="btn">
+            <el-button type="primary" style="width: 100%;font-size: 18px;" @click="goPay">
+                确认支付
+            </el-button>
+        </div>
+    </div>
+</template>
+
+<script>
+import * as API_Setting from "@/api/setting";
+export default {
+    data() {
+        return {
+            scanSource: '未知扫码来源',
+            sn: '',
+            price: '',
+            payUrl: "",
+        };
+    },
+    methods: {
+        goPay() {
+            API_Setting.getPayUrl({ order_id: this.$route.query.id, pay_type: this.scanSource }).then(res => {
+               /*  this.payUrl = res */
+                document.write(res)
+              /*   const form = document.querySelector('form[name="punchout_form"]');
+                if (form) {
+                    form.submit();
+                } */
+
+            })
+        },
+        detectScanSource() {
+            this.price = this.$route.query.price
+            this.sn = this.$route.query.sn
+            let ua = window.navigator.userAgent.toLowerCase();
+            if (ua.match(/MicroMessenger/i) == 'micromessenger') {
+                this.scanSource = 'wx'
+            } else if (ua.match(/AlipayClient/i) == 'alipayclient') {
+                this.scanSource = 'ali'
+            } else {
+                this.scanSource = 'unknown';
+            }
+
+        },
+    },
+    mounted() {
+        this.detectScanSource()
+    }
+};
+</script>
+
+<style scoped>
+.center {
+    width: 100%;
+    padding: 15px;
+}
+
+.header_info {
+    border-radius: 10px;
+    padding: 10px;
+    width: 100%;
+    background-color: #fff;
+}
+
+p {
+    padding-top: 5px;
+    padding-bottom: 5px;
+}
+
+.btn {
+    width: 100%;
+    margin-top: 80px;
+
+}
+</style>

+ 2 - 2
manager-admin/src/permission.js

@@ -6,13 +6,13 @@ import { Message } from 'element-ui'
 import Storage from '@/utils/storage'
 import { Foundation } from '~/ui-utils'
 
-const whiteList = ['/login', '/franchise/login']
+const whiteList = ['/login', '/franchise/login','/payType']
 
 router.beforeEach((to, from, next) => {
   NProgress.start()
   const refreshToken = Storage.getItem('admin_refresh_token')
   if (refreshToken) {
-    if ((to.path === '/login' || to.path === '/franchise/login') && store.getters.addRouters.length) {
+    if ((to.path === '/login' || to.path === '/franchise/login'|| to.path === '/payType') && store.getters.addRouters.length) {
       Foundation.toFirstRoute(router, next)
       NProgress.done()
     } else {

+ 5 - 2
manager-admin/src/router/index.js

@@ -17,7 +17,9 @@ export const constantRouterMap = [
   { path: '/login', component: () => import('@/views/login/index'), hidden: true },
   { path: '/franchise/login', component: () => import('@/views/login/index'), hidden: true },
   { path: '/404', component: () => import('@/views/errorPage/404'), hidden: true },
-  { path: '/401', component: () => import('@/views/errorPage/401'), hidden: true }
+  { path: '/401', component: () => import('@/views/errorPage/401'), hidden: true },
+  {path: '/payType', component: () => import('@/components/payType.vue'), hidden: false },
+ 
 ]
 
 export default new Router({
@@ -281,7 +283,8 @@ const asyncRouters = [
       { path: 'station', component: () => import('@/views/setting/tool-manage/station'), name: 'station', meta: { title: 'station' } },
     ]
   },
-  { path: '*', redirect: '/404', hidden: true }
+  { path: '*', redirect: '/404', hidden: true },
+  
 ]
 
 export const asyncRouterMap = asyncRouters

+ 70 - 8
manager-admin/src/views/basicSetting/skuSort.vue

@@ -1,8 +1,10 @@
 <template>
   <div>
-    <en-table-layout :tableData="tableData.data" :loading="loading" class="draggable-table">
+    <en-table-layout :tableData="tableData.data" :loading="loading" class="draggable-table" @selection-change="handleSelectionChange">
       <div slot="toolbar" class="inner-toolbar inner-toolbar2">
         <div class="toolbar-btns">
+          <el-button size="mini" type="primary" :disabled="multipleSelection.length === 0"
+          @click="batchPrint">批量打印</el-button>
         </div>
         <!-- <en-table-search @search="searchEvent" @advancedSearch="advancedSearchEvent" advanced advancedWidth="465"
             placeholder=''>
@@ -28,11 +30,12 @@
 
       <template slot="table-columns">
         <el-table-column label="" width="100">
-          <template >
+          <template>
             <span class="drag-handle">&#9776;</span> <!-- 拖拽图标 -->
             <!-- 其他操作按钮 -->
           </template>
         </el-table-column>
+        <el-table-column type="selection" width="55" />
         <el-table-column prop="goods_vo.name" label="商品名称">
           <template slot-scope="scope">
             <span class="selectable">{{ scope.row.goods_vo.name }}</span>
@@ -49,9 +52,9 @@
           </template>
         </el-table-column>
         <el-table-column prop="spec_name" label="规格型号">
-          <template slot-scope="scope">
+          <!-- <template slot-scope="scope">
             <span class="selectable">{{ scope.row.spec_name }}</span>
-          </template>
+          </template> -->
         </el-table-column>
         <!-- <el-table-column label="条码" align="center">
           <template slot-scope="scope">{{ scope.row.bar_code }}</template>
@@ -61,6 +64,11 @@
             <span class="selectable">{{ scope.row.sort }}</span>
           </template>
         </el-table-column>
+        <el-table-column label="操作" width="310">
+          <template slot-scope="scope">
+            <el-button size="mini" @click="PrintIng(scope.row)">打印SKU</el-button>
+          </template>
+        </el-table-column>
       </template>
 
       <el-pagination v-if="tableData" slot="pagination" @size-change="handlePageSizeChange"
@@ -78,6 +86,22 @@
         <div class="logInfo">日志级别:{{ currDetailLog.level === 'important' ? '重要' : '一般' }}</div>
         <div class="logInfo">操作时间:{{ currDetailLog.operate_time | unixToDate }}</div>
       </el-dialog> -->
+    <el-dialog title="打印预览" :visible.sync="PrintVisible" width="940px" center @close="handleCancle">
+      <el-button size="mini" type="primary" @click="handlePrintGoodsLend" class="print">打印</el-button>
+      <div id="deliverySheet" style="width: 900px">
+        <div class="tips-t" v-for="(item, index) in codeList" :key="index">
+          <div>
+            <!-- <div class="qrcode-pic" ref="codeItem" ></div> -->
+            <div class="numOrder">
+
+            </div>
+            <div style="margin-top: 10px; font-size: 20px; text-align: center">
+              <barcode :value="item" format="CODE128"></barcode>
+            </div>
+          </div>
+        </div>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -85,7 +109,7 @@
 import * as API_Setting from '@/api/setting';
 import * as API_ProductClass from '@/api/productClass';
 import Sortable from "sortablejs";
-
+import Print from "print-js";
 export default {
   name: 'systemLogs',
   data() {
@@ -106,7 +130,12 @@ export default {
       // 当前日志详情信息
       currDetailLog: {},
       // 高级搜索数据
-      advancedForm: {}
+      advancedForm: {},
+      PrintVisible:false,
+      codeList:[],
+      barcodeValue:"",
+      // 当前已选择的行
+      multipleSelection: [],
     }
   },
   mounted() {
@@ -114,6 +143,37 @@ export default {
     this.rowDrop();
   },
   methods: {
+    /** 多选改变 */
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+     // 批量打印
+     batchPrint() {
+      const ids = this.multipleSelection.map((item) => item.sku);
+      this.codeList = ids;
+      this.PrintVisible = true;
+    },
+    /** 打印对账详情 */
+    handlePrintGoodsLend() {
+      Print({
+        printable: "deliverySheet",
+        type: "html",
+        targetStyles: ["*"],
+        ignoreElements: ["no-logs", "goods-image", "no-btn"],
+      });
+    },
+    handleCancle() {
+      this.PrintVisible = false;
+      this.codeList = [];
+    },
+    // 打印
+    PrintIng(row) {
+      this.barcodeValue = row.sku;
+      this.$nextTick(() => {
+        this.codeList.push(row.sku);
+        this.PrintVisible = true;
+      });
+    },
     // 行拖拽
     rowDrop() {
       const tbody = document.querySelector(".draggable-table .el-table__body-wrapper tbody");
@@ -227,7 +287,7 @@ export default {
 
 <style>
 .inner-toolbar2 {
-  justify-content: flex-end !important;
+  justify-content: flex-start !important;
 }
 
 .inner-toolbar2 .dateSearch {
@@ -249,8 +309,10 @@ export default {
   overflow: hidden;
 
 }
+
 .drag-handle {
-  cursor: move; /* 设置鼠标为拖拽样式 */
+  cursor: move;
+  /* 设置鼠标为拖拽样式 */
 }
 
 .face-image {

+ 1 - 1
manager-admin/src/views/setting/serialList.vue

@@ -338,7 +338,7 @@ export default {
       });
     },
     handleCancle() {
-      this.dialogVisible = false;
+      this.PrintVisible = false;
       this.codeList = [];
     },
     // 打印

+ 1 - 0
manager-admin/src/views/stock/goodsExchange/addInventory.vue

@@ -823,6 +823,7 @@ export default {
       }
       this.scanDialogVisible = true;
       this.$nextTick(() => {
+        console.log(this.$refs.input);
         this.$refs.input.focus();
       });
     },

+ 83 - 78
manager-admin/src/views/stock/order.vue

@@ -8,18 +8,9 @@
         <el-row>
           <el-col :span="8">
             <el-form-item label="订单日期">
-              <el-date-picker
-                v-model="advancedForm.goodsExchange_time_range"
-                type="daterange"
-                align="center"
-                :editable="false"
-                unlink-panels
-                :clearable="false"
-                :default-time="['00:00:00', '23:59:59']"
-                range-separator="-"
-                start-placeholder="开始日期"
-                end-placeholder="结束日期"
-                value-format="timestamp"
+              <el-date-picker v-model="advancedForm.goodsExchange_time_range" type="daterange" align="center"
+                :editable="false" unlink-panels :clearable="false" :default-time="['00:00:00', '23:59:59']"
+                range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" value-format="timestamp"
                 :picker-options="{
                   disabledDate(time) {
                     return (
@@ -29,56 +20,36 @@
                         new Date().getMonth(),
                         new Date().getDate()
                       ).getTime() +
-                        86400000 -
-                        1
+                      86400000 -
+                      1
                     );
                   },
                   shortcuts: MixinPickerShortcuts,
-                }"
-              >
+                }">
               </el-date-picker>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="仓库">
               <el-select v-model="advancedForm.warehouse_id" clearable>
-                <el-option
-                  v-for="item in warehouseList"
-                  :key="item.id"
-                  :label="item.name"
-                  :value="item.id"
-                />
+                <el-option v-for="item in warehouseList" :key="item.id" :label="item.name" :value="item.id" />
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="订单编号">
-              <el-input
-                v-model="advancedForm.sn"
-                placeholder="请输入订单编号"
-              ></el-input>
+              <el-input v-model="advancedForm.sn" placeholder="请输入订单编号"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
       </el-form>
       <el-button @click="advancedSearchEvent"> 搜索 </el-button>
     </div>
-    <en-table-layout
-      toolbar
-      pagination
-      :loading="loading"
-      :tableData="tableData"
-      @selection-change="handleSelectionChange"
-    >
+    <en-table-layout toolbar pagination :loading="loading" :tableData="tableData"
+      @selection-change="handleSelectionChange">
       <div slot="toolbar" class="inner-toolbar">
         <div class="toolbar-btns">
-          <el-button
-            size="mini"
-            type="primary"
-            v-if="checkPermission(['order:add'])"
-            @click="handleAdd"
-            >新增</el-button
-          >
+          <el-button size="mini" type="primary" v-if="checkPermission(['order:add'])" @click="handleAdd">新增</el-button>
           <!-- <el-button size="mini" type="primary" v-if="checkPermission(['order:outbound'])"
             @click="batchOutbound">批量出库</el-button> -->
         </div>
@@ -128,8 +99,8 @@
                 </el-form-item>
               </el-form>:selectable="canWarehouseOut"
             </template>
-          </en-table-search>
-        </div> -->
+</en-table-search>
+</div> -->
       </div>
       <template slot="table-columns">
         <el-table-column type="selection" width="55" />
@@ -179,47 +150,36 @@
           </template>
         </el-table-column>
         <el-table-column prop="status" label="订单类型">
-          <template slot-scope="scope">{{ scope.row.type=='TO_B'?'销售订单':'租赁订单' }}</template>
+          <template slot-scope="scope">{{ scope.row.type == 'TO_B' ? '销售订单' : '租赁订单' }}</template>
+        </el-table-column>
+        <el-table-column prop="status" label="支付状态">
+          <template slot-scope="scope">{{ scope.row.has_pay_return ? '已支付' : '未支付' }}</template>
         </el-table-column>
         <el-table-column label="操作" width="300">
           <template slot-scope="scope">
-            <el-button size="mini" @click="handleAudit(scope.row)"
-              >查看</el-button
-            >
-            <el-button
-              size="mini"
-              type="success"
-              v-if="scope.row.status === 'TO_BE_COMMIT'"
-              @click="handleSubmit(scope.row.id)"
-              >确认</el-button
-            >
-            
-            <el-button
-              size="mini"
-              @click="handleEdit(scope.row)"
-              v-if="scope.row.status === 'TO_BE_COMMIT'"
-              >编辑</el-button
-            >
+            <el-button size="mini" @click="handleAudit(scope.row)">查看</el-button>
+            <el-button size="mini" type="success" v-if="scope.row.status === 'TO_BE_COMMIT'"
+              @click="handleSubmit(scope.row.id)">确认</el-button>
+            <el-button size="mini" @click="handleEdit(scope.row)"
+              v-if="scope.row.status === 'TO_BE_COMMIT'">编辑</el-button>
             <el-button size="mini" type="danger" v-if="scope.row.type === 'TO_C'"
-                       @click="handleWithdraw(scope.row.id)">延期</el-button>
+              @click="handleWithdraw(scope.row.id)">延期</el-button>
+            <el-button size="mini" type="danger" v-if="!scope.row.has_pay_return"
+              @click="payTypes(scope.row)">支付</el-button>
             <!-- <el-button size="mini" type="primary" v-if="scope.row.allowable.payment && checkPermission(['order:payment'])"
                        @click="handlePayment(scope.row.id)">设为已支付</el-button> -->
           </template>
         </el-table-column>
       </template>
-      <el-pagination
-        slot="pagination"
-        v-if="pageData"
-        @size-change="handlePageSizeChange"
-        @current-change="handlePageCurrentChange"
-        :current-page="pageData.page_no"
-        :page-sizes="[10, 20, 50, 100]"
-        :page-size="pageData.page_size"
-        layout="total, sizes, prev, pager, next, jumper"
-        :total="pageData.data_total"
-      >
+      <el-pagination slot="pagination" v-if="pageData" @size-change="handlePageSizeChange"
+        @current-change="handlePageCurrentChange" :current-page="pageData.page_no" :page-sizes="[10, 20, 50, 100]"
+        :page-size="pageData.page_size" layout="total, sizes, prev, pager, next, jumper" :total="pageData.data_total">
       </el-pagination>
     </en-table-layout>
+    <el-dialog title="扫码支付" :visible.sync="payVisible" width="30%" :close-on-click-modal="false" @close="closeDialog">
+      <div id="qrCode" style="    display: flex;
+    justify-content: center;" ref="qrCodeDiv"></div>
+    </el-dialog>
   </div>
 </template>
 
@@ -229,6 +189,7 @@ import Storage from "@/utils/storage";
 import * as API_BasicSetting from "@/api/basicSetting";
 import * as API_Setting from "@/api/setting";
 import * as API_CollectingAccount from "@/api/collectingAccount";
+import QRCode from 'qrcodejs2'
 export default {
   name: "orderList",
   data() {
@@ -264,6 +225,12 @@ export default {
       deliveryTypeList: [
       ],
       customerList: [],
+      payVisible: false,
+      payCode: '',
+      //当前地址
+      payurl: "",
+      paySn: '',
+      pay_price: 0
     };
   },
   mounted() {
@@ -291,6 +258,35 @@ export default {
     next();
   },
   methods: {
+    closeDialog() {
+      this.payVisible = false
+      this.payCode = ''
+      this.paySn = ""
+      this.pay_price = ''
+    },
+    /* 支付 */
+    payTypes(val) {
+      this.payurl = window.location.href.split('#')[0]
+      this.payVisible = true
+      this.payCode = val.id
+      this.paySn = val.sn
+      this.pay_price = val.pay_price
+      this.creatQrCode()
+    },
+    // 二维码生成
+    creatQrCode() {
+      this.$nextTick(() => {
+        this.$refs.qrCodeDiv.innerHTML = "";
+        new QRCode(this.$refs.qrCodeDiv, {
+          text: this.payurl + '#/payType?id=' + this.payCode + '&sn=' + this.paySn + '&price=' + this.pay_price,
+          width: 200,
+          height: 200,
+          colorDark: "#333333", //二维码颜色
+          colorLight: "#ffffff", //二维码背景色
+          correctLevel: QRCode.CorrectLevel.L//容错率,L/M/H
+        })
+      }, 500);
+    },
     memberType(val) {
       let name = "";
       this.customerList.map((el) => {
@@ -306,7 +302,7 @@ export default {
         .then((response) => {
           this.customerList = response.data;
         })
-        .catch(() => {});
+        .catch(() => { });
     },
     //配送方式查看
     deliveryType(val) {
@@ -457,7 +453,7 @@ export default {
     handleAudit(order) {
       this.$router.push({
         name: "orderDetail",
-        params: { id: order.id, callback: this.GET_OrderList,type:'check' },
+        params: { id: order.id, callback: this.GET_OrderList, type: 'check' },
       });
     },
     /** 订单设为已支付 */
@@ -482,7 +478,7 @@ export default {
     async handleWithdraw(id) {
       this.$router.push({
         name: "orderEdit",
-        params: { id: id,type:'pone' },
+        params: { id: id, type: 'pone' },
       });
     },
 
@@ -496,7 +492,7 @@ export default {
           page_size: response.page_size,
           data_total: response.data_total,
         };
-      }).catch(() => { 
+      }).catch(() => {
         this.loading = false;
       })
     },
@@ -511,16 +507,19 @@ export default {
   padding: 30px 20px 5px;
   border-radius: 5px;
   background-color: #fff;
+
   .el-button {
     width: 100px;
   }
 }
+
 .search {
   display: flex;
   align-items: center;
   background: #fff;
   overflow: hidden;
   padding: 30px 10px 10px 10px;
+
   /deep/ .el-form-item {
     .el-form-item__content {
       .el-input {
@@ -528,11 +527,13 @@ export default {
       }
     }
   }
+
   .el-button {
     margin-top: -19px;
     margin-left: 20px;
   }
 }
+
 /* .container {
   padding: 10px 10px 0 10px;
 } */
@@ -699,7 +700,7 @@ export default {
 }
 
 /*分页信息*/
-section > div {
+section>div {
   position: relative;
 }
 
@@ -717,5 +718,9 @@ section > div {
   color: red;
   font-size: 12px;
 }
-</style>
 
+.el-dialog__body {
+  display: flex;
+  justify-content: center;
+}
+</style>

+ 27 - 4
manager-admin/src/views/stock/orderCheck.vue

@@ -187,16 +187,21 @@
                 </el-table>
             </div>
             <el-row style="margin-top: 15px;margin-bottom: 20px;">
-                <el-col :span="12">
+                <el-col :span="8">
                     <el-form-item label="应付金额:" prop="pay_price" :rules="rules.pay_price">
                         <span>{{ "¥" + price }}</span>
                     </el-form-item>
                 </el-col>
-                <el-col :span="12">
+                <el-col :span="8">
                     <el-form-item label="实付金额:" prop="real_price" :rules="rules.pay_price">
                         {{ OrderForm.real_price }}
                         <!-- <el-input v-model="OrderForm.real_price" placeholder="请输入"
-                            :disabled="type == 'pone'"></el-input> -->
+                            :disabled="type == 'pone'"></el-input>  style="display: flex;justify-content: center;" -->
+                    </el-form-item>
+                </el-col>
+                <el-col :span="8">
+                    <el-form-item label="扫码支付:" prop="real_price" :rules="rules.pay_price">
+                        <div id="qrCode" ref="qrCodeDiv"></div>
                     </el-form-item>
                 </el-col>
             </el-row>
@@ -288,7 +293,7 @@ import {
 } from "element-china-area-data";
 import Print from "print-js";
 import html2canvas from "html2canvas";
-
+import QRCode from 'qrcodejs2'
 const initOrderForm = {
     product_list: [],
     payment_list: [],
@@ -553,12 +558,14 @@ export default {
                 size: 10
             },//商品分页
             orderType: '',//条形码查看类型
+            payurl:"",
         };
     },
     computed: {
         ...mapGetters(["user"])
     },
     mounted() {
+        this.payurl = window.location.href.split('#')[0]
         this.type = this.$route.params.type
         this.orderType = this.$route.params.type
         this.GET_WarehouseList();
@@ -568,8 +575,23 @@ export default {
         this.GET_CollectingAccountList();
         // 获取客户列表
         this.GET_CustomerList();
+        
     },
     methods: {
+        // 二维码生成
+        creatQrCode() {
+            console.log(this.OrderForm);
+            this.$nextTick(() => {
+                new QRCode(this.$refs.qrCodeDiv, {
+                    text: this.payurl + '#/payType?id=' + this.id + '&sn=' + this.barcodeValue + '&price=' + this.OrderForm.real_price,
+                    width: 200,
+                    height: 200,
+                    colorDark: "#333333", //二维码颜色
+                    colorLight: "#ffffff", //二维码背景色
+                    correctLevel: QRCode.CorrectLevel.L//容错率,L/M/H
+                })
+            }, 500);
+        },
         cleanUrl(url) {
             // 检查URL是否以.png结尾
             if (url.endsWith('.png')) {
@@ -1154,6 +1176,7 @@ export default {
                     this.time.push(response.start_time);
                     this.time.push(response.end_time);
                 }
+                this.creatQrCode() 
             });
         },
     },

+ 1 - 0
manager-admin/src/views/stock/orderOutbound.vue

@@ -599,6 +599,7 @@ export default {
         selfPickupNum: '',
         remark: "",
         declared_value: "",
+        total_volume:"",
         appointment_type: 0,
         total_weight: "",
         //发货人

+ 1 - 1
ui-domain/api.js

@@ -9,7 +9,7 @@
 module.exports = {
   // 开发环境 192.168.8.103:9999
   dev: {
-    admin: window.__ENV__.API_ADMIN || 'http://192.168.8.103:9999'
+    admin: window.__ENV__.API_ADMIN || 'http://192.168.8.103:9999'//https://apidoc.raycos.net http://192.168.8.103:9999
   },
   // 测试环境apidoc.raycos.net 60.204.236.53:9999
   test: {

Некоторые файлы не были показаны из-за большого количества измененных файлов