瀏覽代碼

数字监控

lilei 3 年之前
父節點
當前提交
e9e0d1e288

+ 63 - 63
src/config/router.config.js

@@ -123,12 +123,12 @@ export const asyncRouterMap = [
             ]
           },
           {
-            path: '/numsGoodsShelves/settlementManagement',
-            redirect: '/numsGoodsShelves/settlementManagement/list',
-            name: 'settlementManagement',
+            path: '/numsGoodsShelves/shelfMonitoring',
+            redirect: '/numsGoodsShelves/shelfMonitoring/list',
+            name: 'shelfMonitoring',
             component: BlankLayout,
             meta: {
-              title: '结算管理',
+              title: '货架监控',
               icon: 'monitor'
               // permission: 'M_salesQueryList'
             },
@@ -136,33 +136,21 @@ export const asyncRouterMap = [
             children: [
               {
                 path: 'list',
-                name: 'settlementManagementList',
-                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/settlementManagement/list.vue'),
+                name: 'shelfMonitoringList',
+                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/shelfMonitoring/list.vue'),
                 meta: {
-                  title: '结算管理列表',
+                  title: '货架监控列表',
                   icon: 'monitor',
                   hidden: true
                   // permission: 'M_salesQueryList'
                 }
               },
               {
-                path: 'unDetail/:id',
-                name: 'unSettlementDetail',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/numsGoodsShelves/settlementManagement/unSettlementDetail.vue'),
-                meta: {
-                  title: '待结算明细',
-                  icon: 'monitor',
-                  hidden: true,
-                  replaceTab: true
-                  // permission: 'M_salesQueryList'
-                }
-              },
-              {
-                path: 'detail/:id',
-                name: 'settlementDetail',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/numsGoodsShelves/settlementManagement/settlementDetail.vue'),
+                path: 'warehouseDetail/:shelfPlaceSn/:productSn',
+                name: 'shelfMonitoringWarehouseDetail',
+                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/shelfMonitoring/warehouseDetail.vue'),
                 meta: {
-                  title: '结算历史',
+                  title: '货架监控出入库明细',
                   icon: 'monitor',
                   hidden: true,
                   replaceTab: true
@@ -172,12 +160,12 @@ export const asyncRouterMap = [
             ]
           },
           {
-            path: '/numsGoodsShelves/withdrawalManagement',
-            redirect: '/numsGoodsShelves/withdrawalManagement/list',
-            name: 'withdrawalManagement',
+            path: '/numsGoodsShelves/replenishmentManagement',
+            redirect: '/numsGoodsShelves/replenishmentManagement/list',
+            name: 'replenishmentManagement',
             component: BlankLayout,
             meta: {
-              title: '提现管理',
+              title: '补货管理',
               icon: 'monitor'
               // permission: 'M_salesQueryList'
             },
@@ -185,10 +173,10 @@ export const asyncRouterMap = [
             children: [
               {
                 path: 'list',
-                name: 'withdrawalManagementList',
-                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/withdrawalManagement/list.vue'),
+                name: 'replenishmentManagementList',
+                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/replenishmentManagement/list.vue'),
                 meta: {
-                  title: '提现管理列表',
+                  title: '补货管理列表',
                   icon: 'monitor',
                   hidden: true
                   // permission: 'M_salesQueryList'
@@ -197,12 +185,12 @@ export const asyncRouterMap = [
             ]
           },
           {
-            path: '/numsGoodsShelves/accountManagement',
-            redirect: '/numsGoodsShelves/accountManagement/list',
-            name: 'accountManagement',
+            path: '/numsGoodsShelves/recallManagement',
+            redirect: '/numsGoodsShelves/recallManagement/list',
+            name: 'recallManagement',
             component: BlankLayout,
             meta: {
-              title: '账户明细',
+              title: '调回管理',
               icon: 'monitor'
               // permission: 'M_salesQueryList'
             },
@@ -210,10 +198,10 @@ export const asyncRouterMap = [
             children: [
               {
                 path: 'list',
-                name: 'accountManagementList',
-                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/accountManagement/list.vue'),
+                name: 'recallManagementList',
+                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/recallManagement/list.vue'),
                 meta: {
-                  title: '账户明细列表',
+                  title: '调回管理列表',
                   icon: 'monitor',
                   hidden: true
                   // permission: 'M_salesQueryList'
@@ -222,12 +210,12 @@ export const asyncRouterMap = [
             ]
           },
           {
-            path: '/numsGoodsShelves/shelfMonitoring',
-            redirect: '/numsGoodsShelves/shelfMonitoring/list',
-            name: 'shelfMonitoring',
+            path: '/numsGoodsShelves/settlementManagement',
+            redirect: '/numsGoodsShelves/settlementManagement/list',
+            name: 'settlementManagement',
             component: BlankLayout,
             meta: {
-              title: '货架监控',
+              title: '结算管理',
               icon: 'monitor'
               // permission: 'M_salesQueryList'
             },
@@ -235,21 +223,33 @@ export const asyncRouterMap = [
             children: [
               {
                 path: 'list',
-                name: 'shelfMonitoringList',
-                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/shelfMonitoring/list.vue'),
+                name: 'settlementManagementList',
+                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/settlementManagement/list.vue'),
                 meta: {
-                  title: '货架监控列表',
+                  title: '结算管理列表',
                   icon: 'monitor',
                   hidden: true
                   // permission: 'M_salesQueryList'
                 }
               },
               {
-                path: 'warehouseDetail/:shelfPlaceSn/:productSn',
-                name: 'shelfMonitoringWarehouseDetail',
-                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/shelfMonitoring/warehouseDetail.vue'),
+                path: 'unDetail/:id',
+                name: 'unSettlementDetail',
+                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/numsGoodsShelves/settlementManagement/unSettlementDetail.vue'),
                 meta: {
-                  title: '货架监控出入库明细',
+                  title: '待结算明细',
+                  icon: 'monitor',
+                  hidden: true,
+                  replaceTab: true
+                  // permission: 'M_salesQueryList'
+                }
+              },
+              {
+                path: 'detail/:id',
+                name: 'settlementDetail',
+                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/numsGoodsShelves/settlementManagement/settlementDetail.vue'),
+                meta: {
+                  title: '结算历史',
                   icon: 'monitor',
                   hidden: true,
                   replaceTab: true
@@ -259,12 +259,12 @@ export const asyncRouterMap = [
             ]
           },
           {
-            path: '/numsGoodsShelves/replenishmentManagement',
-            redirect: '/numsGoodsShelves/replenishmentManagement/list',
-            name: 'replenishmentManagement',
+            path: '/numsGoodsShelves/withdrawalManagement',
+            redirect: '/numsGoodsShelves/withdrawalManagement/list',
+            name: 'withdrawalManagement',
             component: BlankLayout,
             meta: {
-              title: '补货管理',
+              title: '提现管理',
               icon: 'monitor'
               // permission: 'M_salesQueryList'
             },
@@ -272,10 +272,10 @@ export const asyncRouterMap = [
             children: [
               {
                 path: 'list',
-                name: 'replenishmentManagementList',
-                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/replenishmentManagement/list.vue'),
+                name: 'withdrawalManagementList',
+                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/withdrawalManagement/list.vue'),
                 meta: {
-                  title: '补货管理列表',
+                  title: '提现管理列表',
                   icon: 'monitor',
                   hidden: true
                   // permission: 'M_salesQueryList'
@@ -284,12 +284,12 @@ export const asyncRouterMap = [
             ]
           },
           {
-            path: '/numsGoodsShelves/recallManagement',
-            redirect: '/numsGoodsShelves/recallManagement/list',
-            name: 'recallManagement',
+            path: '/numsGoodsShelves/accountManagement',
+            redirect: '/numsGoodsShelves/accountManagement/list',
+            name: 'accountManagement',
             component: BlankLayout,
             meta: {
-              title: '调回管理',
+              title: '账户明细',
               icon: 'monitor'
               // permission: 'M_salesQueryList'
             },
@@ -297,17 +297,17 @@ export const asyncRouterMap = [
             children: [
               {
                 path: 'list',
-                name: 'recallManagementList',
-                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/recallManagement/list.vue'),
+                name: 'accountManagementList',
+                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/accountManagement/list.vue'),
                 meta: {
-                  title: '调回管理列表',
+                  title: '账户明细列表',
                   icon: 'monitor',
                   hidden: true
                   // permission: 'M_salesQueryList'
                 }
               }
             ]
-          }
+          },
         ]
       },
       // 销售管理

+ 22 - 0
src/libs/JGPrint.js

@@ -2,6 +2,28 @@ import confirm from 'ant-design-vue/es/modal/confirm'
 import notification from 'ant-design-vue/es/notification'
 import { getLodop } from '@/libs/LodopFuncs'
 import moment from 'moment'
+// 打印页签,支持批量打印
+export const JGPrintTag = function(data){
+  const LODOP = getLodop(document.getElementById('LODOP_OB'), document.getElementById('LODOP_EM'))
+  if (!LODOP) {
+    confirm({
+      title: '提示?',
+      content: h => <div>打印控件未安装,请先下载并安装。安装完成后,刷新页面即可打印。</div>,
+      okText: '立即下载',
+      okType: 'danger',
+      cancelText: '暂不打印',
+      onOk () {
+        window.open('http://www.lodop.net/demolist/CLodop_Setup_for_Win32NT.zip')
+      }
+    })
+    return
+  }
+  LODOP.SET_SHOW_MODE('HIDE_PAPER_BOARD', 1) //  隐藏底图上有模拟走纸板的条纹线
+  LODOP.SET_PRINT_MODE('POS_BASEON_PAPER', true) // 可使输出以纸张边缘为基点
+  LODOP.ADD_PRINT_HTM(0, 0, '100%', '100%', document.getElementById('print').innerHTML)
+  LODOP.SET_PRINT_PAGESIZE(1, '40mm', '30mm')
+  LODOP.PRINT()
+}
 // 打印控件
 export const JGPrint = function (data, type, printerType) {
   if (!data) {

+ 3 - 46
src/views/numsGoodsShelves/replenishmentManagement/list.vue

@@ -30,7 +30,6 @@
             </template>
             <a-col :md="6" :sm="24">
               <span class="table-page-search-submitButtons">
-                <a-button type="info" @click="printTest">打印</a-button>
                 <a-button type="primary" style="margin-left: 5px" @click="$refs.table.refresh(true)" :disabled="disabled" id="replenishmentManagementList-refresh">查询</a-button>
                 <a-button style="margin-left: 5px" @click="resetSearchForm()" :disabled="disabled" id="replenishmentManagementList-reset">重置</a-button>
                 <a @click="advanced = !advanced" style="margin-left: 5px">
@@ -101,32 +100,10 @@
       <!-- 签收 -->
       <put-warehousing-modal :openModal="openPutWarehousingModal" :nowData="nowData" @ok="handlePutWarehousingOk" @close="handleCancel" />
     </a-spin>
-
-    <div id="print">
-      <div class="print-pages" style="font-size: 9px;padding:3pt 0 3pt 6pt;">
-        <div class="storeName" style="text-align: center;font-weight: bold;margin: 2pt 0;">箭冠汽配西安大兴店</div>
-        <div style="overflow: hidden;display: flex;justify-content: space-between;">
-          <div style="padding-right: 3pt;">
-            <div class="shelfName" style="margin-bottom: 2pt;">
-              西安车领主常青二路数字货架
-            </div>
-            <div class="productCode" style="font-weight: bold;">JA-11070N</div>
-            <div class="productName">箭牌空气滤清器 07款丰田新皇冠2.5 / 3.0</div>
-            <div class="userName" style="margin-top: 2pt;font-size: 8px;"><span style="margin: 0 5pt 0 0;">2021-10-01  15:30</span> <span>王明</span></div>
-          </div>
-          <div>
-            <div class="productSno" style="font-size: 16pt;text-align: center;">A08</div>
-            <div class="qrcode" ref="qrCodeUrl" style="width: 40px;height: 40px;overflow: hidden;"></div>
-          </div>
-        </div>
-      </div>
-    </div>
   </a-card>
 </template>
 
 <script>
-import QRCode from 'qrcodejs2'
-import { getLodop } from '@/libs/LodopFuncs'
 import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import getDate from '@/libs/getDate.js'
@@ -201,9 +178,9 @@ export default {
         })
       },
       subColumns: [
-        { title: '序号', dataIndex: 'no', width: '8%', align: 'center' },
+        { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '产品编码', dataIndex: 'product.code', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '产品名称', dataIndex: 'product.name', width: '28%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '产品名称', dataIndex: 'product.name', width: '32%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '补货应发总量', dataIndex: 'qty', width: '12%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '实发总量', dataIndex: 'confirmQty', width: '12%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '签收总量', dataIndex: 'putQty', width: '12%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
@@ -223,24 +200,6 @@ export default {
     }
   },
   methods: {
-    printTest () {
-      var qrcode = new QRCode(this.$refs.qrCodeUrl, {
-        text: 'dealerSn=1033242&shelfSn=342326735950757888&productCode=RPF2340&shelfPlaceCode=A01&shelfPlaceSn=123213', // 需要转换为二维码的内容
-        width: 40,
-        height: 40,
-        colorDark: '#000000',
-        colorLight: '#ffffff',
-        correctLevel: QRCode.CorrectLevel.H
-      })
-      const LODOP = getLodop(document.getElementById('LODOP_OB'), document.getElementById('LODOP_EM'))
-      console.log(LODOP, 'LODOP')
-      // LODOP.ADD_PRINT_RECT(0, 0, '40mm', '30mm', 0, 1)
-      LODOP.SET_SHOW_MODE('HIDE_PAPER_BOARD', 1) //  隐藏底图上有模拟走纸板的条纹线
-      LODOP.SET_PRINT_MODE('POS_BASEON_PAPER', true) // 可使输出以纸张边缘为基点
-      LODOP.ADD_PRINT_HTM(0, 0, '100%', '100%', document.getElementById('print').innerHTML)
-      LODOP.SET_PRINT_PAGESIZE(1, '40mm', '30mm')
-      LODOP.PREVIEW()
-    },
     // 确认
     handleConfirm (row) {
       this.nowData = row
@@ -277,9 +236,7 @@ export default {
     },
     // 打印贴签 ok
     handlePrintStickerOk () {
-      this.nowData = null
-      this.openPrintStickerModal = false
-      this.queryByTypeSum()
+
     },
     // 出库
     handleOutWarehousing (row) {

+ 32 - 0
src/views/numsGoodsShelves/replenishmentManagement/printStickerModal.vue

@@ -48,11 +48,33 @@
         <a-button id="replenishmentManagement-printSticker-modal-back" @click="isShow = false" style="margin-left: 15px;">取消</a-button>
       </div>
     </a-spin>
+
+    <div id="print">
+      <div class="print-pages" style="font-size: 9px;padding:3pt 0 3pt 6pt;">
+        <div class="storeName" style="text-align: center;font-weight: bold;margin: 2pt 0;">箭冠汽配西安大兴店</div>
+        <div style="overflow: hidden;display: flex;justify-content: space-between;">
+          <div style="padding-right: 3pt;">
+            <div class="shelfName" style="margin-bottom: 2pt;">
+              西安车领主常青二路数字货架
+            </div>
+            <div class="productCode" style="font-weight: bold;">JA-11070N</div>
+            <div class="productName">箭牌空气滤清器 07款丰田新皇冠2.5 / 3.0</div>
+            <div class="userName" style="margin-top: 2pt;font-size: 8px;"><span style="margin: 0 5pt 0 0;">2021-10-01  15:30</span> <span>王明</span></div>
+          </div>
+          <div>
+            <div class="productSno" style="font-size: 16pt;text-align: center;">A08</div>
+            <div class="qrcode" ref="qrCodeUrl" style="width: 40px;height: 40px;overflow: hidden;"></div>
+          </div>
+        </div>
+      </div>
+    </div>
   </a-modal>
 </template>
 
 <script>
 import { commonMixin } from '@/utils/mixin'
+import QRCode from 'qrcodejs2'
+import { getLodop } from '@/libs/LodopFuncs'
 import { STable, VSelect } from '@/components'
 import { shelfReplenishDetailList, shelfReplenishDetail, shelfReplenishPrintSign } from '@/api/shelfReplenish'
 export default {
@@ -114,6 +136,16 @@ export default {
     }
   },
   methods: {
+    printTest () {
+      const qrcode = new QRCode(this.$refs.qrCodeUrl, {
+        text: 'dealerSn=1033242&shelfSn=342326735950757888&productCode=RPF2340&shelfPlaceCode=A01&shelfPlaceSn=123213', // 需要转换为二维码的内容
+        width: 40,
+        height: 40,
+        colorDark: '#000000',
+        colorLight: '#ffffff',
+        correctLevel: QRCode.CorrectLevel.H
+      })
+    },
     // 表格选中项
     rowSelectionFun (obj) {
       this.rowSelectionInfo = obj || null

+ 2 - 3
src/views/numsGoodsShelves/replenishmentManagement/replenishmentDetail.vue

@@ -69,10 +69,10 @@ export default {
         { title: '产品编码', dataIndex: 'product.code', width: '22%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品名称', dataIndex: 'product.name', width: '28%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '补货实发数量', dataIndex: 'confirmQty', width: '12%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '单位', dataIndex: 'product.unit', width: '6%', align: 'center', customRender: function (text) { return text || '--' } }
+        { title: '单位', dataIndex: 'product.unit', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
         // { title: '成本价', dataIndex: 'product.unit', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
         // { title: '成本小计', dataIndex: 'product.unit', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
-        // { title: '是否急件', dataIndex: 'product.unit', width: '15%', align: 'center', customRender: function (text) { return text || '--' } }
+        { title: '是否急件', dataIndex: 'oosFlag', width: '15%', align: 'center', customRender: function (text) { return text == 1 ? '是' : '否' } }
       ],
       // 加载数据方法 必须为 Promise 对象
       loadData: parameter => {
@@ -113,7 +113,6 @@ export default {
       vm.$nextTick(() => {
         vm.spinning = false
         vm.disabled = false
-        vm.$refs.table.refresh(true)
         vm.getDetail()
       })
     }

+ 5 - 5
src/views/numsGoodsShelves/shelfMonitoring/list.vue

@@ -94,11 +94,11 @@
       </div>
       <div v-show="isSearch">
         <div style="margin-bottom: 10px">
-          <div style="display: inline-block;margin-right: 15px;vertical-align: middle;">
-            <a-divider type="vertical" style="background: #FF7D0C;width: 3px;heigh: 16px;" />
+          <div style="display: inline-block;margin-right: 15px;vertical-align: middle;font-weight: bold;font-size: 14px;">
+            <a-divider type="vertical" style="background: #FF7D0C;width: 3px;height: 16px;" />
             <span>{{ shelfName || '--' }}</span>
           </div>
-          <a-button type="primary" class="button-error" id="shelfMonitoringList-export" @click="handleAddBack">新增调回单</a-button>
+          <!-- <a-button type="primary" class="button-error" id="shelfMonitoringList-export" @click="handleAddBack">新增调回单</a-button> -->
           <span style="margin-left: 5px">
             <template v-if="rowSelectionInfo&&rowSelectionInfo.selectedRowKeys.length > 0">
               {{ `已选 ${rowSelectionInfo.selectedRowKeys.length} 项` }}
@@ -180,12 +180,12 @@ export default {
       columns: [
         { title: '货位号', dataIndex: 'shelfPlaceCode', width: '13%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '绑定产品编码', dataIndex: 'productCode', width: '13%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '绑定产品名称', dataIndex: 'productName', width: '18%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '绑定产品名称', dataIndex: 'productName', width: '23%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '货位产品状态', scopedSlots: { customRender: 'state' }, width: '15%', align: 'center' },
         { title: '当前库存', dataIndex: 'qty', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '最大库容', dataIndex: 'maxQty', width: '8%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '滞销天数', dataIndex: 'unsalableDays', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '操作', scopedSlots: { customRender: 'action' }, width: '15%', align: 'left' }
+        { title: '操作', scopedSlots: { customRender: 'action' }, width: '10%', align: 'left' }
       ],
       // 加载数据方法 必须为 Promise 对象
       loadData: parameter => {

+ 1 - 1
src/views/numsGoodsShelves/shelfMonitoring/warehouseDetail.vue

@@ -5,7 +5,7 @@
         <!-- 自定义的二级文字标题 -->
         <template slot="subTitle">
           <a id="shelfMonitoringWarehousing-back-btn" href="javascript:;" @click="handleBack"><a-icon type="left" /> 返回列表</a>
-          <span class="store-info" v-if="basicInfoData && (basicInfoData.shelfName || basicInfoData.shelfPlaceName)">{{ basicInfoData && basicInfoData.shelfName || '' }} —— {{ basicInfoData && basicInfoData.shelfPlaceName || '' }}</span>
+          <span class="store-info" v-if="basicInfoData">{{ basicInfoData.shelfName || '' }} —— 货位号{{ basicInfoData.shelfPlaceCode || '' }}</span>
         </template>
       </a-page-header>
       <!-- 内容 -->

+ 1 - 1
vue.config.js

@@ -108,7 +108,7 @@ const vueConfig = {
     // If you want to turn on the proxy, please remove the mockjs /src/main.jsL11
     proxy: {
       '/api': {
-        target: 'http://192.168.16.155:8503/qpls-md',
+        target: 'http://192.168.16.151:80/qpls-md',
         // target: 'http://192.168.16.107:7300/mock/61aad8ea5688cb3878d81e39/qpls-md',
         // ws: false,
         ws: true,