websocket_final.html 68 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Real-time Product Information Updates</title>
  6. <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
  7. <style>
  8. body {
  9. font-family: sans-serif;
  10. }
  11. * {
  12. margin: 0;
  13. padding: 0;
  14. }
  15. img {
  16. border: 0;
  17. }
  18. ol,
  19. ul,
  20. li {
  21. list-style: none;
  22. }
  23. .product-info__warpper {
  24. height: 100vh;
  25. }
  26. .product-info__warpper.bg {
  27. background: url(http://aiqc.gloria.com.cn/images/title_image.jpg) no-repeat;
  28. background-size: cover;
  29. }
  30. .product-logo {
  31. position: fixed;
  32. bottom: 0;
  33. right: 0;
  34. width: 11.458333333333333vw;
  35. aspect-ratio: 1 / 1;
  36. background: url('data:image/png;base64,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KnX//f9ui8gmnfji3F1cW1YemU2oZQfKuG0bG5qXvTwUpndx86Fa0+MlWZay8U9vWPvvv410Cn95xmlF7SRNNlFT9uyWvvVPzM1/+F/XtJUf4TVODpyRsnSCmtUVmtZqTR7bg48Y253njtsg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL1fhXE+wAAAgZJREFU2Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CZA4NxoGYwAAgggEClA4CL12Y0AAggg4CbwHyw2t02S/Id0AAAAAElFTkSuQmCC');
  37. background-size: cover;
  38. z-index: 99;
  39. }
  40. .product-search {
  41. position: fixed;
  42. right: 40px;
  43. top: 40px;
  44. z-index: 99;
  45. }
  46. .product-search input {
  47. box-sizing: border-box;
  48. width: 280px;
  49. height: 42px;
  50. background: #F2F2F2;
  51. border: none;
  52. outline: none;
  53. padding-left: 24px;
  54. font-size: 18px;
  55. color: #232323;
  56. line-height: 42px;
  57. font-weight: 500;
  58. }
  59. .product-search input:focus {
  60. border: 2px solid #AE8877;
  61. line-height: 38px;
  62. padding-left: 22px;
  63. }
  64. .product-search input:focus~.product-search__icon svg path {
  65. fill: #AE8877;
  66. }
  67. .product-search input::placeholder {
  68. color: #86909C;
  69. }
  70. .product-search__icon {
  71. position: absolute;
  72. right: 0px;
  73. top: 0;
  74. height: 42px;
  75. width: 42px;
  76. display: flex;
  77. align-items: center;
  78. justify-content: center;
  79. cursor: pointer;
  80. }
  81. .product-search svg {
  82. width: 28px;
  83. height: 28px;
  84. }
  85. .product-info__content {
  86. width: 100%;
  87. height: 100%;
  88. display: none;
  89. }
  90. .product-info__content.open {
  91. display: flex;
  92. }
  93. .product-images {
  94. height: 100%;
  95. margin-right: 7.552083333333333vw;
  96. }
  97. .product-images img {
  98. display: block;
  99. height: 100%;
  100. }
  101. .product-info__item {
  102. padding-top: 13.425925925925927vh;
  103. }
  104. .product-item__skc {
  105. font-size: 3.125vw;
  106. color: #AE8877;
  107. line-height: 8.055555555555556vh;
  108. }
  109. .product-content {
  110. margin-top: 9.259259259259259vh;
  111. }
  112. .product-content .product-content__text {
  113. display: block;
  114. color: #232323;
  115. font-size: 1.875vw;
  116. line-height: 4.814814814814815vh;
  117. margin-bottom: 2.5925925925925925vh;
  118. }
  119. .product-content .product-content__text:last-child {
  120. margin-bottom: 0;
  121. }
  122. .product-search__list {
  123. box-sizing: border-box;
  124. position: fixed;
  125. top: 0;
  126. left: 0;
  127. z-index: 9;
  128. width: 100%;
  129. height: 100%;
  130. background-color: #fff;
  131. padding-top: 122px;
  132. padding-left: 120px;
  133. padding-right: 120px;
  134. padding-bottom: 20px;
  135. }
  136. .product-search__list-wrap {
  137. margin-right: -120px;
  138. display: flex;
  139. flex-wrap: wrap;
  140. align-content: flex-start;
  141. height: 100%;
  142. overflow-y: auto;
  143. }
  144. .product-search__list-item {
  145. width: 50%;
  146. height: 360px;
  147. display: flex;
  148. }
  149. .product-search__list-item-img {
  150. width: 360px;
  151. overflow: hidden;
  152. margin-right: 56px;
  153. position: relative;
  154. cursor: pointer;
  155. flex-shrink: 0;
  156. }
  157. .product-search__list-item-img img {
  158. width: 100%;
  159. }
  160. .product-search__list-item-img svg {
  161. position: absolute;
  162. bottom: 19px;
  163. right: 28px;
  164. width: 32px;
  165. height: 32px;
  166. cursor: pointer;
  167. }
  168. .product-search__list-item:nth-child(n + 3) {
  169. margin-top: 40px;
  170. }
  171. .product-search__back {
  172. position: absolute;
  173. top: 46px;
  174. left: 120px;
  175. font-size: 20px;
  176. line-height: 24px;
  177. color: #232323;
  178. cursor: pointer;
  179. display: flex;
  180. align-items: center;
  181. width: 100px;
  182. height: 42px;
  183. background-color: #AE8877;
  184. display: flex;
  185. align-items: center;
  186. justify-content: center;
  187. color: #fff;
  188. }
  189. .product-search__back svg {
  190. width: 24px;
  191. height: 24px;
  192. margin-right: 6px;
  193. }
  194. .product-search__list-item-goodsCode {
  195. font-weight: 500;
  196. font-size: 36px;
  197. color: #AE8877;
  198. line-height: 52px;
  199. margin-bottom: 36px;
  200. }
  201. .product-search__goods-info {
  202. font-weight: 500;
  203. font-size: 28px;
  204. color: #232323;
  205. line-height: 41px;
  206. }
  207. .product-search__goods-info+.product-search__goods-info {
  208. margin-top: 28px;
  209. }
  210. .product-img-full {
  211. position: fixed;
  212. z-index: 100;
  213. top: 0;
  214. left: 0;
  215. width: 100%;
  216. height: 100%;
  217. background: rgba(35, 35, 35, 0.502);
  218. }
  219. .product-img-full__wrap {
  220. width: 800px;
  221. position: absolute;
  222. top: 50%;
  223. left: 50%;
  224. transform: translate(-50%, -50%);
  225. }
  226. .product-img-full__wrap img {
  227. width: 100%;
  228. }
  229. .product-img-full__wrap svg {
  230. position: absolute;
  231. top: 28px;
  232. right: 33px;
  233. cursor: pointer;
  234. }
  235. </style>
  236. </head>
  237. <body>
  238. <div id="app">
  239. <div class="product-info__warpper" :class="{'bg': !initPage}">
  240. <div class="product-logo"></div>
  241. <div class="product-search">
  242. <input type="text" placeholder="请输入内容" v-model="barcode" @keyup.enter="searchProduct" />
  243. <div class="product-search__icon" @click="searchProduct">
  244. <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none"
  245. version="1.1" width="28" height="28" viewBox="0 0 28 28">
  246. <g>
  247. <g>
  248. <path
  249. d="M17.4394,19.2957C15.9875,20.3669,14.1927,21,12.25,21C7.41752,21,3.5,17.0825,3.5,12.25C3.5,7.41752,7.41752,3.5,12.25,3.5C17.0825,3.5,21,7.41752,21,12.25C21,14.1928,20.3668,15.9877,19.2956,17.4396L23.6842,21.8281C24.0258,22.1699,24.0258,22.7239,23.6842,23.0655L23.0654,23.6843C22.7236,24.0259,22.1697,24.0259,21.8279,23.6843L17.4394,19.2957ZM18.375,12.25C18.375,15.6328,15.6328,18.375,12.25,18.375C8.86725,18.375,6.125,15.6328,6.125,12.25C6.125,8.86725,8.86725,6.125,12.25,6.125C15.6328,6.125,18.375,8.86725,18.375,12.25Z"
  250. fill-rule="evenodd" fill="#4E5969" fill-opacity="1" />
  251. </g>
  252. </g>
  253. </svg>
  254. </div>
  255. </div>
  256. <div class="product-info__content" :class="{'open': initPage}" v-if="product && initPage">
  257. <div class="product-images">
  258. <img v-if="product.product_image && product.product_image.imgPath"
  259. :src="product.product_image.imgPath" alt="" />
  260. </div>
  261. <div class="product-info__item">
  262. <div class="product-item__skc">{{ product.barcode }}</div>
  263. <div class="product-content" v-if="product.product_info.data && product.product_info.data[0]">
  264. <span class="product-content__text">款&#x3000;&#x3000;号:{{ product.product_info.data[0].goodsCode
  265. }}</span>
  266. <span class="product-content__text">款式名称:{{ product.product_info.data[0].goodsName }}</span>
  267. <span class="product-content__text">色&#x3000;&#x3000;号:{{ colorData.colorCode }}</span>
  268. <span class="product-content__text">颜色名称:{{ colorData.colorName }}</span>
  269. </div>
  270. </div>
  271. </div>
  272. <div class="product-search__list" v-if="productSearchList.length > 0 && showSearchList">
  273. <div class="product-search__back" @click="closeSearchList">
  274. <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none"
  275. version="1.1" width="24" height="24" viewBox="0 0 24 24">
  276. <g>
  277. <g>
  278. <path
  279. d="M14.70711,6.707107Q14.847760000000001,6.566455,14.92388,6.382683Q15,6.198912,15,6Q15,5.9015086,14.98078,5.80491Q14.96157,5.708311,14.92388,5.617317Q14.88619,5.526322,14.83147,5.44443Q14.77675,5.362537,14.70711,5.292893Q14.63746,5.223249,14.55557,5.16853Q14.47368,5.113812,14.38268,5.076121Q14.29169,5.03843,14.19509,5.019215Q14.09849,5,14,5Q13.80109,5,13.61732,5.0761199999999995Q13.43355,5.152241,13.29289,5.292893L13.29252,5.293268L7.292893,11.29289Q7.152241,11.43355,7.0761199999999995,11.61732Q7,11.80109,7,12Q7,12.19891,7.0761199999999995,12.38268Q7.152241,12.56645,7.292893,12.70711L13.291920000000001,18.7061L13.29289,18.7071Q13.43355,18.8478,13.61732,18.9239Q13.80109,19,14,19Q14.09849,19,14.19509,18.980800000000002Q14.29169,18.9616,14.38268,18.9239Q14.47368,18.886200000000002,14.55557,18.8315Q14.63746,18.776699999999998,14.70711,18.7071Q14.77675,18.6375,14.83147,18.5556Q14.88619,18.4737,14.92388,18.3827Q14.96157,18.2917,14.98078,18.1951Q15,18.0985,15,18Q15,17.801099999999998,14.92388,17.6173Q14.847760000000001,17.433500000000002,14.70711,17.2929L9.41421,12L14.70673,6.707482L14.70711,6.707107L14.70711,6.707107Z"
  280. fill-rule="evenodd" fill="#fff" fill-opacity="1" />
  281. </g>
  282. </g>
  283. </svg>
  284. <span>返回</span>
  285. </div>
  286. <div class="product-search__list-wrap">
  287. <div class="product-search__list-item" v-for="item in productSearchList" :key="item.goodsCode">
  288. <div class="product-search__list-item-img" @click="imgFull=item.imgPath">
  289. <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  290. fill="none" version="1.1" width="32" height="32" viewBox="0 0 32 32">
  291. <g>
  292. <g>
  293. <g>
  294. <path
  295. d="M4.6953678125,5.9152164453125Q1.0830088125000001,9.5275764453125,1.0830078125,14.6361564453125Q1.0830078125,19.7448564453125,4.6953678125,23.3571564453125Q8.3077278125,26.9695564453125,13.4163078125,26.9695564453125Q18.5249078125,26.9695564453125,22.1373078125,23.3571564453125Q25.7497078125,19.7448564453125,25.7497078125,14.6361564453125Q25.7497078125,9.5275764453125,22.1373078125,5.9152164453125Q18.5250078125,2.3028564453125,13.4163078125,2.3028564453125Q8.3077278125,2.3028564453125,4.6953678125,5.9152164453125ZM6.1095778125,21.9429564453125Q3.0830078125,18.916356445312502,3.0830078125,14.6361564453125Q3.0830078125,10.356006445312499,6.1095778125,7.3294264453125Q9.136157812499999,4.3028564453125,13.4163078125,4.3028564453125Q17.696507812500002,4.3028564453125,20.7231078125,7.3294264453125Q23.7497078125,10.356006445312499,23.7497078125,14.6361564453125Q23.7497078125,18.916356445312502,20.7231078125,21.9429564453125Q17.696507812500002,24.9695564453125,13.4163078125,24.9695564453125Q9.136157812499999,24.9695564453125,6.1095778125,21.9429564453125Z"
  296. fill-rule="evenodd" fill="#232323" fill-opacity="1" />
  297. </g>
  298. <g>
  299. <path
  300. d="M12.41650390625,10.6361083984375Q12.41650390625,10.5376169984375,12.435718906249999,10.4410183984375Q12.45493390625,10.3444193984375,12.49262490625,10.2534253984375Q12.53031590625,10.1624303984375,12.58503390625,10.0805383984375Q12.63975290625,9.9986453984375,12.70939690625,9.9290013984375Q12.77904090625,9.8593573984375,12.86093390625,9.8046383984375Q12.94282590625,9.7499203984375,13.03382090625,9.7122293984375Q13.12481490625,9.6745383984375,13.22141390625,9.655323398437499Q13.31801250625,9.6361083984375,13.41650390625,9.6361083984375Q13.51499530625,9.6361083984375,13.61159390625,9.655323398437499Q13.70819290625,9.6745383984375,13.79918690625,9.7122293984375Q13.89018190625,9.7499203984375,13.97207390625,9.8046383984375Q14.05396690625,9.8593573984375,14.12361090625,9.9290013984375Q14.19325490625,9.9986453984375,14.24797390625,10.0805383984375Q14.30269190625,10.1624303984375,14.34038290625,10.2534253984375Q14.37807390625,10.3444193984375,14.397288906250001,10.4410183984375Q14.41650390625,10.5376169984375,14.41650390625,10.6361083984375L14.41650390625,18.6361083984375Q14.41650390625,18.734598398437498,14.397288906250001,18.8311983984375Q14.37807390625,18.9277983984375,14.34038290625,19.0187883984375Q14.30269190625,19.1097883984375,14.24797390625,19.1916783984375Q14.19325490625,19.2735683984375,14.12361090625,19.3432183984375Q14.05396690625,19.4128583984375,13.97207390625,19.4675783984375Q13.89018190625,19.5222983984375,13.79918690625,19.5599883984375Q13.70819290625,19.597678398437502,13.61159390625,19.6168883984375Q13.51499530625,19.6361083984375,13.41650390625,19.6361083984375Q13.31801250625,19.6361083984375,13.22141390625,19.6168883984375Q13.12481490625,19.597678398437502,13.03382090625,19.5599883984375Q12.94282590625,19.5222983984375,12.86093390625,19.4675783984375Q12.77904090625,19.4128583984375,12.70939690625,19.3432183984375Q12.63975290625,19.2735683984375,12.58503390625,19.1916783984375Q12.53031590625,19.1097883984375,12.49262490625,19.0187883984375Q12.45493390625,18.9277983984375,12.435718906249999,18.8311983984375Q12.41650390625,18.734598398437498,12.41650390625,18.6361083984375L12.41650390625,10.6361083984375Z"
  301. fill-rule="evenodd" fill="#232323" fill-opacity="1" />
  302. </g>
  303. <g>
  304. <path
  305. d="M9.41650390625,13.6361083984375L17.41650390625,13.6361083984375Q17.514993906249998,13.6361083984375,17.61159390625,13.655323398437499Q17.70819390625,13.6745383984375,17.79918390625,13.7122293984375Q17.89018390625,13.7499203984375,17.97207390625,13.8046383984375Q18.05396390625,13.8593573984375,18.12361390625,13.9290013984375Q18.19325390625,13.9986453984375,18.24797390625,14.0805383984375Q18.30269390625,14.1624303984375,18.34038390625,14.2534253984375Q18.378073906250002,14.3444193984375,18.39728390625,14.4410183984375Q18.41650390625,14.5376169984375,18.41650390625,14.6361083984375Q18.41650390625,14.7345997984375,18.39728390625,14.8311983984375Q18.378073906250002,14.9277973984375,18.34038390625,15.0187913984375Q18.30269390625,15.1097863984375,18.24797390625,15.1916783984375Q18.19325390625,15.2735713984375,18.12361390625,15.3432153984375Q18.05396390625,15.4128593984375,17.97207390625,15.4675783984375Q17.89018390625,15.5222963984375,17.79918390625,15.5599873984375Q17.70819390625,15.5976783984375,17.61159390625,15.616893398437501Q17.514993906249998,15.6361083984375,17.41650390625,15.6361083984375L9.41650390625,15.6361083984375Q9.31801250625,15.6361083984375,9.22141390625,15.616893398437501Q9.12481490625,15.5976783984375,9.03382090625,15.5599873984375Q8.94282590625,15.5222963984375,8.86093390625,15.4675783984375Q8.77904090625,15.4128593984375,8.70939690625,15.3432153984375Q8.63975290625,15.2735713984375,8.58503390625,15.1916783984375Q8.53031590625,15.1097863984375,8.49262490625,15.0187913984375Q8.45493390625,14.9277973984375,8.435718906249999,14.8311983984375Q8.41650390625,14.7345997984375,8.41650390625,14.6361083984375Q8.41650390625,14.5376169984375,8.435718906249999,14.4410183984375Q8.45493390625,14.3444193984375,8.49262490625,14.2534253984375Q8.53031590625,14.1624303984375,8.58503390625,14.0805383984375Q8.63975290625,13.9986453984375,8.70939690625,13.9290013984375Q8.77904090625,13.8593573984375,8.86093390625,13.8046383984375Q8.94282590625,13.7499203984375,9.03382090625,13.7122293984375Q9.12481490625,13.6745383984375,9.22141390625,13.655323398437499Q9.31801250625,13.6361083984375,9.41650390625,13.6361083984375Z"
  306. fill-rule="evenodd" fill="#232323" fill-opacity="1" />
  307. </g>
  308. <g>
  309. <path
  310. d="M22.272118265625,22.0770204765625L27.928667265625002,27.7335734765625Q28.069317265625,27.8742234765625,28.145437265625,28.0579934765625Q28.221567265624998,28.2417634765625,28.221567265624998,28.440683476562498Q28.221567265624998,28.5391734765625,28.202347265625,28.6357734765625Q28.183137265625,28.7323634765625,28.145437265625,28.8233634765625Q28.107747265625,28.9143534765625,28.053027265625,28.9962434765625Q27.998317265625,29.078143476562502,27.928667265625002,29.147783476562502Q27.859027265625002,29.2174334765625,27.777127265625,29.2721434765625Q27.695237265625,29.3268634765625,27.604247265625,29.3645534765625Q27.513247265625,29.4022534765625,27.416657265625,29.4214634765625Q27.320057265625,29.440683476562498,27.221567265624998,29.440683476562498Q27.022647265625,29.440683476562498,26.838877265625,29.3645534765625Q26.655107265625,29.2884334765625,26.514457265625,29.147783476562502L20.857590265625,23.4909204765625Q20.716938265625,23.3502674765625,20.640817265625,23.1664964765625Q20.564697265625,22.9827254765625,20.564697265625,22.7838134765625Q20.564697265625,22.6853220765625,20.583912265625,22.5887234765625Q20.603127265624998,22.4921244765625,20.640818265625,22.4011304765625Q20.678509265625,22.3101354765625,20.733227265625,22.2282434765625Q20.787946265625,22.1463504765625,20.857590265625,22.0767064765625Q20.927234265625,22.0070624765625,21.009127265625,21.9523434765625Q21.091019265625,21.8976254765625,21.182014265625,21.8599344765625Q21.273008265625,21.822243476562498,21.369607265625,21.8030284765625Q21.466205865625,21.7838134765625,21.564697265625,21.7838134765625Q21.763609265625,21.7838134765625,21.947380265625,21.8599334765625Q22.131152265625,21.9360544765625,22.271804265625,22.0767064765625L22.272118265625,22.0770204765625Z"
  311. fill-rule="evenodd" fill="#232323" fill-opacity="1" />
  312. </g>
  313. </g>
  314. </g>
  315. </svg>
  316. <img :src="item.imgPath" alt="" />
  317. </div>
  318. <div class="product-search__list-item-info">
  319. <div class="product-search__list-item-goodsCode">{{ item.goodsColor }}</div>
  320. <div class="product-search__goods-info">
  321. 款&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;号:{{ item.goodsCode }}</div>
  322. <div class="product-search__goods-info">款式名称:{{ item.goodsName }}</div>
  323. <div class="product-search__goods-info">色&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;号:{{
  324. item.colorCode }}
  325. </div>
  326. <div class="product-search__goods-info">颜色名称:{{ item.colorName }}</div>
  327. </div>
  328. </div>
  329. </div>
  330. </div>
  331. </div>
  332. <div class="product-img-full" v-if="imgFull" @click="imgFull=''">
  333. <div class="product-img-full__wrap" @click.stop>
  334. <img :src="imgFull" alt="" />
  335. <svg @click="imgFull=''" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  336. fill="none" version="1.1" width="32" height="32" viewBox="0 0 32 32">
  337. <g>
  338. <g>
  339. <g>
  340. <path
  341. d="M6.150585375,4.953870154296875L27.483759375,26.287058154296876Q27.624459375,26.427758154296875,27.700559375,26.611558154296876Q27.776659375,26.795258154296874,27.776659375,26.994158154296876Q27.776659375,27.092658154296874,27.757459375,27.189258154296876Q27.738259375,27.285858154296875,27.700559375,27.376858154296876Q27.662859375,27.467858154296874,27.608159375,27.549758154296875Q27.553459375,27.631658154296876,27.483759375,27.701258154296877Q27.414159375,27.770958154296874,27.332259375,27.825658154296875Q27.250359375,27.880358154296875,27.159359375,27.918058154296876Q27.068359375,27.955758154296873,26.971759375,27.974958154296875Q26.875159375,27.994158154296876,26.776659375,27.994158154296876Q26.577759375,27.994158154296876,26.394059375,27.918058154296876Q26.210259375,27.841958154296876,26.069559375,27.701258154296877L4.736371375,6.368084154296875L4.736252375,6.367965154296875Q4.595600375,6.227313154296875,4.5194793749999995,6.043541154296875Q4.443359375,5.859770154296875,4.443359375,5.660858154296875Q4.443359375,5.562366754296875,4.462574375,5.465768154296875Q4.481789375,5.369169154296875,4.519480375,5.278175154296875Q4.557171375,5.187180154296875,4.611889375,5.105288154296875Q4.666608375,5.023395154296875,4.736252375,4.953751154296875Q4.805896375,4.884107154296875,4.887789375,4.829388154296875Q4.969681375,4.774670154296875,5.060676375,4.736979154296875Q5.151670375,4.699288154296875,5.248269375,4.680073154296875Q5.344867975,4.660858154296875,5.443359375,4.660858154296875Q5.642271375,4.660858154296875,5.826042375,4.7369781542968745Q6.009814375,4.813099154296875,6.150466375,4.953751154296875L6.150585375,4.953870154296875Z"
  342. fill-rule="evenodd" fill="#333333" fill-opacity="1"
  343. style="mix-blend-mode:passthrough" />
  344. </g>
  345. <g>
  346. <path
  347. d="M27.483759375,6.367964154296875Q27.624459375,6.227312154296875,27.700559375,6.043541154296875Q27.776659375,5.859770154296875,27.776659375,5.660858154296875Q27.776659375,5.562366754296875,27.757459375,5.465768154296875Q27.738259375,5.369169154296875,27.700559375,5.278175154296875Q27.662859375,5.187180154296875,27.608159375,5.105288154296875Q27.553459375,5.023395154296875,27.483759375,4.953751154296875Q27.414159375,4.884107154296875,27.332259375,4.829388154296875Q27.250359375,4.774670154296875,27.159359375,4.736979154296875Q27.068359375,4.699288154296875,26.971759375,4.680073154296875Q26.875159375,4.660858154296875,26.776659375,4.660858154296875Q26.577759375,4.660858154296875,26.394059375,4.736979154296875Q26.210259375,4.813099154296875,26.069559375,4.953752154296875L4.736252375,26.287058154296876Q4.595600375,26.427758154296875,4.5194793749999995,26.611558154296876Q4.443359375,26.795258154296874,4.443359375,26.994158154296876Q4.443359375,27.092658154296874,4.462574375,27.189258154296876Q4.481789375,27.285858154296875,4.519480375,27.376858154296876Q4.557171375,27.467858154296874,4.611889375,27.549758154296875Q4.666608375,27.631658154296876,4.736252375,27.701258154296877Q4.805896375,27.770958154296874,4.887789375,27.825658154296875Q4.969681375,27.880358154296875,5.060676375,27.918058154296876Q5.151670375,27.955758154296873,5.248269375,27.974958154296875Q5.344867975,27.994158154296876,5.443359375,27.994158154296876Q5.642271375,27.994158154296876,5.826042375,27.918058154296876Q6.009813375,27.841958154296876,6.150465375,27.701258154296877L27.483759375,6.367965154296875L27.483759375,6.367964154296875Z"
  348. fill-rule="evenodd" fill="#333333" fill-opacity="1"
  349. style="mix-blend-mode:passthrough" />
  350. </g>
  351. </g>
  352. </g>
  353. </svg>
  354. </div>
  355. </div>
  356. </div>
  357. </div>
  358. <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  359. <script src="https://unpkg.com/element-ui/lib/index.js"></script>
  360. <script>
  361. new Vue({
  362. el: '#app',
  363. data() {
  364. return {
  365. initPage: false,
  366. product: {
  367. barcode: '',
  368. product_info: {},
  369. product_image: {}
  370. },
  371. colorData: {},
  372. ws: null,
  373. heartBeat: false,
  374. count: 0,
  375. messageInterval: null,
  376. messageIntervalNew: null,
  377. barcode: '',
  378. showSearchList: false,
  379. productSearchList: [],
  380. imgFull: ''
  381. };
  382. },
  383. created() {
  384. // 没有联网处理
  385. let isOnline = navigator.onLine;
  386. if (!isOnline) {
  387. var url = 'http://aiqc.gloria.com.cn/vue';
  388. this.loadExternalCSS(url + '/index.css');
  389. this.loadScript(url + '/vue.js');
  390. this.loadScript(url + '/index.js');
  391. }
  392. },
  393. mounted() {
  394. this.connectWebSocket();
  395. try {
  396. // 定义断开 WebSocket 连接的函数
  397. const closeWebSocket = () => {
  398. if (this.ws) {
  399. this.ws.close();
  400. }
  401. };
  402. // 监听 beforeunload 事件,在页面卸载前断开 WebSocket 连接
  403. window.addEventListener('beforeunload', (e) => {
  404. closeWebSocket();
  405. });
  406. // 监听 unload 事件,在页面卸载前断开 WebSocket 连接
  407. window.addEventListener('unload', (e) => {
  408. closeWebSocket();
  409. });
  410. // 生成要发送的消息内容
  411. const message = JSON.stringify({
  412. type: "test",
  413. timestamp: Date.now(),
  414. });
  415. this.messageIntervalNew = setInterval(() => {
  416. if (this.ws) {
  417. this.ws.send(message);
  418. }
  419. }, 1000); // 每1s发送一次消息
  420. } catch (error) {
  421. console.error('错误:', error);
  422. }
  423. },
  424. methods: {
  425. loadExternalCSS(url) {
  426. const link = document.createElement('link');
  427. link.rel = 'stylesheet';
  428. link.href = url;
  429. document.head.appendChild(link);
  430. },
  431. loadScript(src) {
  432. const script = document.createElement('script');
  433. script.src = src;
  434. document.head.appendChild(src);
  435. },
  436. connectWebSocket() {
  437. const urlParams = new URLSearchParams(window.location.search);
  438. const ipLastSegment = urlParams.get('ip_last_segment');
  439. const port = urlParams.get('port');
  440. const server = urlParams.get('server');
  441. if (ipLastSegment) {
  442. this.ws = new WebSocket(`ws://aiqc.gloria.com.cn:7066/ws-yolo?ip_last_segment=${ipLastSegment}`);
  443. } else {
  444. this.ws = new WebSocket(`ws://aiqc.gloria.com.cn:7066/ws?server=${server}&port=${port}`);
  445. }
  446. if (this.ws) {
  447. console.log(this.ws);
  448. this.ws.onmessage = (event) => {
  449. this.$nextTick(() => {
  450. try {
  451. const data = JSON.parse(event.data);
  452. // 如果接收到的数据的barcode与前一个一样,则不更新数据,否则更新数据
  453. /*
  454. if(this.product.barcode !== data.data.barcode){
  455. this.product = data.data;
  456. }
  457. */
  458. if (data.type && data.type == 'heartBeat') {
  459. // 心跳处理
  460. this.heartBeat = true
  461. this.startSendingMessages();
  462. console.log("Received data11:", data);
  463. } else {
  464. console.log("Received data:", data);
  465. this.heartBeat = false
  466. // product_info存在,并且图片地址为真的时候才赋值,不然就显示上一次数据
  467. const imagePathRegex = /\.(jpg|jpeg|png|gif|bmp|webp)(\?.*)?$/i;
  468. if (data.data.product_info || (data.data.product_image && imagePathRegex.test(data.data.product_image.imgPath))) {
  469. this.initPage = true;
  470. this.count++;
  471. this.product = data.data;
  472. let curData = this.product.product_info.data;
  473. if (curData && curData[0] && curData[0].colorData) {
  474. let barcode = this.product.barcode;
  475. if (barcode && barcode.length >= 12) {
  476. var extracted = barcode.slice(9, 12);
  477. var chooseColor = curData[0].colorData.filter(item => item.colorCode == extracted);
  478. if (chooseColor.length) {
  479. this.colorData = chooseColor[0];
  480. } else {
  481. this.colorData = curData[0].colorData[0];
  482. }
  483. } else {
  484. this.colorData = curData[0].colorData[0];
  485. }
  486. }
  487. }
  488. }
  489. } catch (error) {
  490. console.error("Error parsing or processing message:", error);
  491. }
  492. })
  493. };
  494. this.ws.onopen = () => {
  495. console.log("WebSocket connection established");
  496. };
  497. this.ws.onerror = (error) => {
  498. console.error("WebSocket error:", error);
  499. };
  500. this.ws.onclose = (event) => {
  501. console.log("WebSocket connection closed", event);
  502. this.stopSendingMessages();
  503. // 尝试重新连接
  504. setTimeout(() => {
  505. this.connectWebSocket();
  506. }, 1000);
  507. };
  508. } else {
  509. console.error("No ip_last_segment parameter found in the URL");
  510. }
  511. },
  512. createMessage() {
  513. // 生成要发送的消息内容
  514. const message = JSON.stringify({
  515. type: "heartBeat",
  516. timestamp: Date.now(),
  517. });
  518. return message;
  519. },
  520. startSendingMessages() {
  521. const message = this.createMessage();
  522. console.log('Send data:', message)
  523. this.ws.send(message);
  524. // this.messageInterval = setInterval(() => {
  525. // if (this.heartBeat) {
  526. // const message = this.createMessage();
  527. // console.log('Send data:', message)
  528. // this.ws.send(message);
  529. // }
  530. // }, 300); // 每300ms发送一次消息
  531. },
  532. stopSendingMessages() {
  533. if (this.messageInterval) {
  534. clearInterval(this.messageInterval);
  535. }
  536. },
  537. searchProduct() {
  538. if (!this.barcode) return;
  539. console.log('searchProduct', this.barcode)
  540. this.showSearchList = true;
  541. fetch('http://aiqc.gloria.com.cn:7066/search', {
  542. method: 'POST',
  543. headers: {
  544. 'Content-Type': 'application/json',
  545. },
  546. body: JSON.stringify({
  547. goods_code: this.barcode
  548. })
  549. })
  550. .then(res => res.json())
  551. .then(data => {
  552. this.productSearchList = data;
  553. }).finally(() => {
  554. this.barcode = '';
  555. })
  556. },
  557. closeSearchList() {
  558. this.barcode = '';
  559. this.showSearchList = false;
  560. this.productSearchList = [];
  561. }
  562. },
  563. beforeDestroy() {
  564. if (this.ws) {
  565. this.ws.close();
  566. }
  567. }
  568. });
  569. </script>
  570. </body>
  571. </html>