warehouse-deliver-goods-afterSale.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>仓库管理-发货-创业帮</title>
  6. <meta name="keywords" content="仓库管理-发货-创业帮">
  7. <meta name="description" content="仓库管理-发货-创业帮">
  8. <meta content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,shrink-to-fit=no,user-scalable=no" name="viewport" viewport="cover">
  9. <meta name="apple-mobile-web-app-capable" content="yes">
  10. <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
  11. <meta content="telephone=no" name="format-detection">
  12. <meta content="email=no" name="format-detection">
  13. <meta name="apple-mobile-web-app-title" content="仓库管理-发货-创业帮">
  14. <meta http-equiv="Cache-Control" content="no-siteapp">
  15. <link rel="stylesheet" href="./static/css/main.css">
  16. <style>
  17. .jcsb{
  18. justify-content: space-between;
  19. }
  20. </style>
  21. </head>
  22. <body class="pt0 pb0" style="padding-top:0;">
  23. <div class="warehouse rel h100p" id="app" v-cloak>
  24. <van-nav-bar class="user_rank_explan_title user_title_normal titlef16 rightc333" left-arrow :title="title" v-if="toptitleisshow" @click-left="goback">
  25. <template #left> <img src="./static/images/left.png" alt=""></template>
  26. </van-nav-bar>
  27. <van-notice-bar wrapable color="#eea75b" :scrollable="false" text="请审慎确认该机具是否满足换新条件,并收到损坏机具后再进行划拨,验货无误后请将损坏机具发回至总仓,总仓审核后补货,总仓同时审核上限为10单。"></van-notice-bar>
  28. <div class="van-tabs__content pl16 pr16 mt16">
  29. <div class="userinfopanel df panel">
  30. <div class="info f14 c333" id="copyob">
  31. <div class="item">{{userinfo.BackProductType}}:<span class="ml4">1台 </span></div>
  32. <div class="item">{{userinfo.ChangeTime}}</div>
  33. <div class="item">{{userinfo.ReceiveName}}<span class="ml4">{{userinfo.Mobile}}</span></div>
  34. <div class="item">{{userinfo.Address}}</div>
  35. <div class="item">提货方式:<span class="ml4 spcolor">{{userinfo.DeliveryType === 2 ? '上门自提' : '邮寄到付'}}</span></div>
  36. <div class="item df" style="align-items:center;">换新原因:<span class="ml4 mr6">{{userinfo.Reason}}</span>
  37. <div @click="show = true"><img src="./static/images/icon-help@2x.png" alt="" width="24" height="24"></div>
  38. </div>
  39. </div>
  40. <div class="copy tc f14" :data-clipboard-text="userinfo.RealName +' '+ userinfo.Mobile + ' ' + userinfo.Areas+userinfo.Address" data-clipboard-action="copy" ref="copy" @click="copyinfo" @mouseenter="copyinfo">
  41. <div>复制收件信息 </div>
  42. <div>(姓名、电话、信息)</div>
  43. </div>
  44. </div>
  45. <div class="option df f14 top_line">
  46. <div class="c333">机具换新</div>
  47. <button class="bgcfff" @click="transfer('逐台划拨')">选择机具</button>
  48. </div>
  49. <div class="sale f16">
  50. <div class="undatatipssale tc c999" v-if="snlist.length === 0">暂无SN数据</div>
  51. <van-cell-group>
  52. <van-cell v-for="(item, index) in snlist" :key="item.Id" clickable :title="`SN码: ${item.PosSn}`"></van-cell>
  53. </van-cell-group>
  54. </div>
  55. <div class="f14 c333 mb12">备注:<span class="ml4">{{userinfo.Note}}</span></div>
  56. <div class="f14 c333 mb12" v-if="!isnopic">机具照片</div>
  57. <div class="f14 c333 mb12" v-if="isnopic">机具照片: 暂无照片</div>
  58. <div class="imgbox df">
  59. <van-image v-for="item in imglist" :src="item" width="2.9333rem" height="2.9333rem" fit="contain" @click="preview(item)"></van-image>
  60. </div>
  61. </div>
  62. <div class="botton_btn fixed cfff f14 df">
  63. <div class="left" @click="backOrder">驳回订单</div>
  64. <div class="right" @click="posttransfer">划拨</div>
  65. </div>
  66. <van-popup v-model="preView">
  67. <div class="tc ovh" @touchstart="gtouchstart" @touchend="gtouchend" @touchmove="gtouchmove">
  68. <van-image class="thumbnails" :src="preViewUrl" width="9.0667rem" style="float:left;"></van-image>
  69. </div>
  70. </van-popup>
  71. <van-popup v-model="show" style="border-radius:.4267rem;width:83%;">
  72. <div class="warp-box" style="height:auto;">
  73. <div class="f16 c333 tc b">换新条件详情</div>
  74. <div class="f14 mt8 c333">仅当机具满足以下条件时方可进行划拨,不满足条件时请点击驳回订单或咨询创业帮客服,若未满足条件时仍进行划拨,则将从分仓奖励中扣除,同时减少本分仓同时可进行的换新处理数量</div>
  75. <div class="f14 mt10 c333">充电问题:充不进去电、开机黑屏</div>
  76. <div class="f14 mt8 c333">存储已满问题:机具提示96+ 存储空间已满</div>
  77. <div class="f14 mt8 c333">不能签字问题:机具签字功能失效</div>
  78. <div class="f14 mt8 mb20 c333">硬件问题:按键失灵、屏幕损坏、外壳严重损坏影响正常使用</div>
  79. <van-button class="btn" round color="#FDD500" block @click="show = false">我知道了</van-button>
  80. </div>
  81. </van-popup>
  82. <van-popup v-model="iserror" style="border-radius:.4267rem;width:83%;">
  83. <div class="warp-box" style="height:auto;">
  84. <div class="f16 c333 tc b">划拨失败</div>
  85. <div class="f14 mt8 c333">划拨失败,补货状态为待审核的售后单已超过 10 单,请确认已回寄至总仓后联系总仓处理</div>
  86. <van-button class="btn" round color="#FDD500" block @click="iserror = false">好的</van-button>
  87. </div>
  88. </van-popup>
  89. <van-popup v-model="istrans" style="border-radius:.4267rem;width:83%;">
  90. <div class="warp-box" style="height:auto;">
  91. <div class="f16 c333 tc b">确认划拨</div>
  92. <div class="f14 mt8 c333">划拨后换新机可正常使用,请协助创客将故障机邮寄至成都总仓,总仓审核后补货,同时审核上限为10单</div>
  93. <div class="df jcsb">
  94. <van-button class="btn" round block @click="istrans = false" style="width:48%;">否</van-button>
  95. <van-button class="btn" round color="#FDD500" block @click="submitfn" style="width:48%;">是</van-button>
  96. </div>
  97. </div>
  98. </van-popup>
  99. </div>
  100. <script src="./static/js/clipboard.min.js"></script>
  101. <script src="./static/js/klm-vv.min.js"></script>
  102. <script src="./static/js/appfunc.min.js"></script>
  103. <script src="./static/js/klm-axios-config.js"></script>
  104. <script src="./static/js/publicfn.js"></script>
  105. <script>
  106. function OnStart(){
  107. app.onstartfn();
  108. };
  109. // 通过 CDN 引入时不会自动注册 Lazyload 组件
  110. // 可以通过下面的方式手动注册
  111. Vue.use(vant.Lazyload);
  112. Vue.use(vant.Dialog);
  113. // 在 #app 标签下渲染一个按钮组件
  114. let app = new Vue({
  115. el: '#app',
  116. data() {
  117. return {
  118. istrans:false,
  119. iserror:false,
  120. toptitleisshow:false,
  121. title:'',
  122. active: 1,
  123. //- 下拉刷新
  124. loading: false,
  125. finished: false,
  126. refreshing: false,
  127. show:false,
  128. preView:false,
  129. preViewUrl:'',
  130. userinfo:{},
  131. snlist: [
  132. ],
  133. imglist:[
  134. ],
  135. isnopic:false,
  136. };
  137. },
  138. async created() {
  139. this.title = PublicLib.getCookieInfo('warehouseName');
  140. this.toptitleisshow = toptitleisshow;
  141. this.getorderdetail();
  142. PublicLib.SetTitle({Title:PublicLib.getCookieInfo('warehouseName')});
  143. //- this.onstartfn();
  144. },
  145. methods: {
  146. async onstartfn(){
  147. if(PublicLib.getCookieInfo('transferType') === '逐台划拨' && PublicLib.getCookieInfo('warehouseisback') === 'true'){
  148. PublicLib.putCookieInfo('warehouseisback', '');
  149. this.snlist = JSON.parse(PublicLib.getCookieInfo('warehouseSnList'));
  150. }else if(PublicLib.getCookieInfo('transferType') === '整箱划拨' && PublicLib.getCookieInfo('warehouseisback') === 'true'){
  151. PublicLib.putCookieInfo('warehouseisback', '');
  152. const res = await getRequest('api/v1/pos/posmachines/wholesearch?t='+Math.random(6),JSON.stringify(JSON.parse(PublicLib.getCookieInfo('warehouseSnList'))));
  153. this.snlist = res.data;
  154. };
  155. this.snlist.splice( 1 , this.snlist.length - 1);
  156. PublicLib.putCookieInfo('warehouseSnList', JSON.stringify([]));
  157. },
  158. giveToast(str){
  159. vant.Toast(str);
  160. },
  161. copyinfo(){
  162. const that = this;
  163. const clipboard = new ClipboardJS(this.$refs.copy);
  164. clipboard.on('success', function(e) {
  165. that.giveToast('复制成功');
  166. });
  167. clipboard.on('error', function(e) {
  168. that.giveToast('复制失败,请手动选择复制!');
  169. });
  170. },
  171. async getorderdetail(){
  172. const UserId = PublicLib.getCookieInfo('userId');
  173. const Id = PublicLib.getCookieInfo('orderId');
  174. const res = await getRequest('api/v1/pos/machinechange/detail?t='+Math.random(6),JSON.stringify({UserId,Id}));
  175. if(res.status !== '1') return tips('获取订单详情失败');
  176. this.userinfo = res.data;
  177. this.imglist = res.data.PosPhoto;
  178. if(this.imglist.length === 0){
  179. this.isnopic = true;
  180. };
  181. },
  182. preview(url){
  183. this.preViewUrl = url
  184. this.preView = true
  185. },
  186. goback(){
  187. PublicLib.GoBack({Level:1});
  188. },
  189. //- 跳转划拨搜索
  190. transfer(type){
  191. PublicLib.putCookieInfo('transferType', type);
  192. PublicLib.Goto({Url:'warehouse-deliver-transfer'});
  193. },
  194. snnolist(){
  195. return this.snlist.map(item=>item.Id).join(',');
  196. },
  197. backOrder(){
  198. const that = this;
  199. vant.Dialog.confirm({
  200. message: '确认驳回',
  201. confirmButtonText:'是',
  202. cancelButtonText:'否',
  203. })
  204. .then(() => {
  205. that.return();
  206. });
  207. },
  208. //- 驳回
  209. async return(){
  210. const StoreId = PublicLib.getCookieInfo('warehouseId');
  211. const OrderId = this.userinfo.OrderId;
  212. res = await postRequest('api/v1/storestockchange/refuseforchange?t='+Math.random(6),JSON.stringify({StoreId,OrderId}));
  213. if(res.status !== '1') return tips('订单驳回失败,请重试!');
  214. tips('订单驳回成功');
  215. this.snlist = [];
  216. setTimeout(()=>{
  217. PublicLib.GoBack({Level:1});
  218. },2000)
  219. },
  220. //- 划拨
  221. async posttransfer(){
  222. if(this.snlist.length === 0) return tips('请先选择划拨SN号!');
  223. if(this.snlist.length !== 1) return tips('请选择订单数量SN号进行划拨!');
  224. this.istrans = true;
  225. },
  226. async submitfn(){
  227. const StoreId = PublicLib.getCookieInfo('warehouseId');
  228. //- const OrderId = PublicLib.getCookieInfo('orderId');
  229. const OrderId = this.userinfo.OrderId;
  230. let res = null;
  231. switch(PublicLib.getCookieInfo('transferType')) {
  232. case '逐台划拨':
  233. res = await postRequest('api/v1/storestockchange/transferforchange?t='+Math.random(6),JSON.stringify({ToUserId:this.userinfo.UserId,StoreId,SnIds:this.snnolist(),OrderId}));
  234. break;
  235. };
  236. if(res.status !== '1') return this.iserror = true;;
  237. tips('机具换新划拨成功');
  238. this.snlist = [];
  239. setTimeout(()=>{
  240. PublicLib.GoBack({Level:1});
  241. },2000)
  242. },
  243. gtouchstart(){
  244. const that = this;
  245. this.timeOutEvent = setTimeout(()=>{
  246. that.longPress()
  247. },500);
  248. },
  249. gtouchend(){
  250. clearTimeout(this.timeOutEvent);
  251. },
  252. gtouchmove(){
  253. clearTimeout(this.timeOutEvent);
  254. this.timeOutEvent = 0;
  255. },
  256. longPress(){
  257. this.timeOutEvent = 0;
  258. PublicLib.SaveToSd({PicPath:this.preViewUrl});
  259. // 下载分享图片
  260. },
  261. }
  262. });
  263. </script>
  264. </body>
  265. </html>