orderInfo.vue 60 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840
  1. <template>
  2. <!-- <div class="detail-dialog">-->
  3. <el-dialog
  4. :title="
  5. !dataForm.orderNumber
  6. ? this.$i18n.t('crud.addTitle')
  7. : this.$i18n.t('order.orderDetail')
  8. "
  9. :close-on-click-modal="false"
  10. :visible.sync="visible"
  11. :append-to-body="true"
  12. width="80%"
  13. v-if="visible"
  14. top="1vh"
  15. @close="closeDialog"
  16. >
  17. <div class="new-page-title">
  18. <div class="line" />
  19. <div class="text">
  20. {{
  21. !dataForm.orderNumber
  22. ? this.$i18n.t('crud.addTitle')
  23. : this.$i18n.t('order.orderDetail')
  24. }}
  25. </div>
  26. </div>
  27. <el-form
  28. :model="dataForm"
  29. ref="dataForm"
  30. @keyup.enter.native="dataFormSubmit()"
  31. label-width="auto"
  32. >
  33. <div class="mod-order-orderInfo">
  34. <div class="content">
  35. <div class="order-number">
  36. <div class="number">
  37. <span class="text">{{ $t("order.number") }}:</span>
  38. {{ dataForm.orderNumber }}
  39. </div>
  40. <div class="time">
  41. <span class="text">{{ $t("order.createTime") }}:</span>
  42. {{ dataForm.createTime }}
  43. </div>
  44. <div style="margin-left: 5px; margin-right: 20px">
  45. <el-button type="text" @click="modifyCreateTimeVisible=true">修改时间</el-button>
  46. </div>
  47. <div class="type">
  48. {{
  49. [
  50. $t("order.normalOrder"),
  51. $t("order.groupPurchaseOrder"),
  52. $t("order.spikeOrder"),
  53. ][dataForm.orderType]
  54. }}
  55. </div>
  56. </div>
  57. <div class="order-state">
  58. <div class="state-box">
  59. <div class="state">
  60. {{
  61. [
  62. $t("order.waitingFosPayment"),
  63. $t("order.waitiooShip"),
  64. $t("order.waitingFeGoods"),
  65. $t("order.waitingtion"),
  66. $t("order.commoditful"),
  67. $t("order.commodityFailed"),
  68. $t("order.commodited"),
  69. ][dataForm.status - 1]
  70. }}
  71. </div>
  72. <div class="state-des">
  73. <div v-if="dataForm.status === 1">
  74. {{ $t("order.buyerDidNTime") }}
  75. </div>
  76. <div v-if="dataForm.status === 2">
  77. {{ $t("order.buyPleF") }}
  78. </div>
  79. <div v-if="dataForm.status === 3 && dataForm.dvyType !== 2">
  80. {{ $t("order.shelF") }}
  81. </div>
  82. <div v-if="dataForm.status === 3 && dataForm.dvyType === 2">
  83. {{ $t("order.buyA") }}
  84. </div>
  85. <!-- <div v-if="dataForm.status === 4">订单已完成,等待买家发表评价。</div> -->
  86. <div v-if="dataForm.status === 5">{{ $t("order.buyB") }}</div>
  87. <div v-if="dataForm.status === 6">
  88. {{ $t("order.orderCanc") }}
  89. </div>
  90. <div v-if="dataForm.status === 7">
  91. {{ $t("order.outTimeCanOrd") }}
  92. </div>
  93. </div>
  94. <div class="actions">
  95. <div
  96. class="item-btn default-btn"
  97. v-if="dataForm.status <= 2 && dataForm.dvyType !== 2 && dataForm.orderMold !== 1"
  98. @click="changeUserAddrOrder(dataForm.userAddrOrder)"
  99. >{{$t("components.modifyUseAddress")}}</div>
  100. </div>
  101. <!-- <div class="actions">
  102. <div class="item" v-if="dataForm.status === 1">
  103. <div class="el-button--text">{{$t("temp.modify")}}价格</div>
  104. </div>
  105. <div class="item" v-if="dataForm.status === 2">
  106. <div class="el-button--text">立即发货</div>
  107. <div
  108. class="item-btn"
  109. @click="changeUserAddrOrder(dataForm.userAddrOrder)"
  110. >{{$t("temp.modify")}}收货地址</div>
  111. </div>
  112. <div class="item" v-if="dataForm.status === 3">
  113. <div class="el-button--text">延长收货</div>
  114. </div>
  115. </div>-->
  116. </div>
  117. <div class="state-steps">
  118. <el-form-item>
  119. <el-steps
  120. :active="stepsStatus"
  121. align-center
  122. :process-status="dataForm.status == 6 ? 'error' : 'wait'"
  123. >
  124. <el-step
  125. :title="this.$i18n.t('order.submitOrders')"
  126. :description="dataForm.createTime"
  127. ></el-step>
  128. <el-step
  129. :title="this.$i18n.t('order.theBuyerHasPaid')"
  130. :description="dataForm.payTime"
  131. ></el-step>
  132. <el-step
  133. :title="
  134. dataForm.dvyType === 2
  135. ? this.$i18n.t('order.buyerHasMentioned')
  136. : this.$i18n.t('order.shippedBySeller')
  137. "
  138. :description="dataForm.dvyTime"
  139. ></el-step>
  140. <el-step
  141. :title="this.$i18n.t('order.buyerHasReceived')"
  142. :description="dataForm.finallyTime"
  143. ></el-step>
  144. </el-steps>
  145. </el-form-item>
  146. </div>
  147. </div>
  148. <div
  149. class="packages"
  150. v-if="
  151. dataForm.deliveryExpresses && dataForm.deliveryExpresses.length
  152. "
  153. >
  154. <div class="p-tab" v-if="dataForm.deliveryExpresses.length > 1">
  155. <div
  156. :class="indexs === index ? 'item active' : 'item'"
  157. @click="onClickListDelivery(deliveryExpresse, index)"
  158. v-for="(
  159. deliveryExpresse, index
  160. ) in dataForm.deliveryExpresses"
  161. :key="index"
  162. >
  163. {{ $t("order.package") }}{{ index + 1 }}
  164. </div>
  165. </div>
  166. <div class="p-con" v-if="deliveryExpresse">
  167. <div class="deliver-msg">
  168. <div class="d-item">
  169. <div class="text" :style="$t('language') === 'English' ? 'width:210px;' : 'width:80px;'">{{ $t("order.delType") }}:</div>
  170. <div class="res">
  171. {{
  172. [
  173. this.$i18n.t("order.distribution"),
  174. this.$i18n.t("order.selfMention"),
  175. this.$i18n.t("order.noNeedRequired"),
  176. this.$i18n.t("order.sameCityDelivery")
  177. ][deliveryExpresse.deliveryType - 1] || [
  178. this.$i18n.t("order.distribution"),
  179. this.$i18n.t("order.selfMention"),
  180. this.$i18n.t("order.noNeedRequired"),
  181. this.$i18n.t("order.sameCityDelivery")
  182. ][dataForm.dvyType - 1]
  183. }}
  184. </div>
  185. </div>
  186. <div class="d-item">
  187. <div class="text" :style="$t('language') === 'English' ? 'width:210px;' : 'width:80px;'">{{ $t("order.deliveryTime") }}:</div>
  188. <div class="res">{{ deliveryExpresse.createTime }}</div>
  189. </div>
  190. <div class="d-item" v-if="deliveryExpresse.deliveryType !== 3&&deliveryExpresse.deliveryType !== 4">
  191. <div class="text" :style="$t('language') === 'English' ? 'width:210px;' : 'width:80px;'">{{ $t("order.courierCompany") }}:</div>
  192. <div class="res">
  193. {{ deliveryExpresse.deliveryDto.companyName }}
  194. </div>
  195. </div>
  196. <div class="d-item" v-if="deliveryExpresse.deliveryType !== 3&&deliveryExpresse.deliveryType !== 4">
  197. <div class="text" :style="$t('language') === 'English' ? 'width:210px;' : 'width:80px;'">{{ $t("order.waybillNumber") }}:</div>
  198. <div class="res">
  199. {{ deliveryExpresse.deliveryDto.dvyFlowId }}
  200. </div>
  201. </div>
  202. <!-- <div class="d-goods over">
  203. <div class="arrow-box">
  204. <div class="arrow prev disable"></div>
  205. <div class="arrow next"></div>
  206. </div>
  207. <div class="goods-box">
  208. <div
  209. class="item"
  210. v-for="(orderItem,index) in deliveryExpresse.orderItems"
  211. :key="index"
  212. >
  213. <div class="img">
  214. <img :src="orderItem.pic" alt />
  215. </div>
  216. <div class="name">{{orderItem.prodName}}</div>
  217. <div class="number">数量:{{orderItem.prodCount}}</div>
  218. </div>
  219. </div>
  220. </div>-->
  221. <div
  222. class="d-goods"
  223. :class="{ over: deliveryExpresse.orderItems.length > 5 }"
  224. >
  225. <div
  226. class="arrow prev"
  227. @click="prevItem"
  228. :class="{
  229. disable:
  230. deliveryExpresse.orderItems.length - 5 <= 0 ||
  231. this.offsetCount < 1,
  232. }"
  233. ></div>
  234. <div
  235. class="arrow next"
  236. @click="nextItem"
  237. :class="{
  238. disable:
  239. deliveryExpresse.orderItems.length - 5 <= 0 ||
  240. this.offsetCount >=
  241. deliveryExpresse.orderItems.length - 5,
  242. }"
  243. ></div>
  244. <div class="item-goods">
  245. <div class="goods-box" ref="carouser">
  246. <div
  247. class="item"
  248. v-for="(
  249. orderItem, index
  250. ) in deliveryExpresse.orderItems"
  251. :key="index"
  252. >
  253. <div class="img">
  254. <!-- <img :src="orderItem.pic" alt /> -->
  255. <prod-pic
  256. :pic="orderItem.pic"
  257. ></prod-pic>
  258. <div class="number">×{{ orderItem.prodCount }}</div>
  259. </div>
  260. <div class="name">{{ orderItem.prodName }}</div>
  261. </div>
  262. </div>
  263. </div>
  264. </div>
  265. </div>
  266. <div class="logistics">
  267. <div
  268. class="l-tit"
  269. v-if="deliveryExpresse && deliveryExpresse.deliveryDto"
  270. >
  271. <span class="text"
  272. >{{ $t("order.logisticsStatus") }}:</span
  273. >
  274. <span
  275. class="l-state"
  276. v-if="deliveryExpresse.deliveryDto.state === 0"
  277. >{{ $t("order.noRecord") }}</span
  278. >
  279. <span
  280. class="l-state"
  281. v-if="deliveryExpresse.deliveryDto.state === 1"
  282. >{{ $t("order.collected") }}</span
  283. >
  284. <span
  285. class="l-state"
  286. v-if="deliveryExpresse.deliveryDto.state === 2"
  287. >{{ $t("order.delivering") }}</span
  288. >
  289. <span
  290. class="l-state"
  291. v-if="deliveryExpresse.deliveryDto.state === 3"
  292. >{{ $t("order.haveBeenReceived") }}</span
  293. >
  294. <span
  295. class="l-state"
  296. v-if="deliveryExpresse.deliveryDto.state === 201"
  297. >{{ $t("order.reachTheDestinationCity") }}</span
  298. >
  299. <span
  300. class="l-state"
  301. v-if="deliveryExpresse.deliveryDto.state === 4"
  302. >{{ $t("order.problemPiece") }}</span
  303. >
  304. </div>
  305. <div
  306. class="logistics-box"
  307. v-if="deliveryExpresse && deliveryExpresse.deliveryDto"
  308. >
  309. <div
  310. class="item"
  311. v-if="
  312. deliveryExpresse.deliveryDto.state === 0 &&
  313. dataForm.status == 5 &&
  314. dataForm.finallyTime !== null
  315. "
  316. >
  317. <div class="time">{{ dataForm.finallyTime }}</div>
  318. <div class="text">
  319. {{ $t("order.receivedGoods") }}
  320. </div>
  321. </div>
  322. <div
  323. class="item"
  324. v-for="(trace, index) in deliveryExpresse.deliveryDto
  325. .traces"
  326. :key="index"
  327. >
  328. <div class="time">{{ trace.acceptTime }}</div>
  329. <div class="text">{{ trace.acceptStation }}</div>
  330. </div>
  331. <div
  332. class="item"
  333. v-if="
  334. deliveryExpresse.deliveryDto.traces &&
  335. deliveryExpresse.deliveryDto.traces.length < 1
  336. "
  337. >
  338. {{ $t("order.noLogisticsInformation") }}
  339. </div>
  340. <div
  341. class="item"
  342. v-if="dataForm.status >= 3 && dataForm.dvyTime !== null"
  343. >
  344. <div class="time">{{ dataForm.dvyTime }}</div>
  345. <div class="text">
  346. {{ $t("order.merchantHasShippedWa") }}
  347. </div>
  348. </div>
  349. <div
  350. class="item"
  351. v-if="dataForm.status >= 2 && dataForm.payTime !== null"
  352. >
  353. <div class="time">{{ dataForm.payTime }}</div>
  354. <div class="text">{{ $t("order.buyerHasPaidWa") }}</div>
  355. </div>
  356. <div :class="['item', dataForm.status >= 1?'left-line':'']" v-if="dataForm.status >= 1">
  357. <div class="time">{{ dataForm.createTime }}</div>
  358. <div class="text">
  359. {{ $t("order.buyerSubmittedAnOrder") }}
  360. </div>
  361. </div>
  362. </div>
  363. </div>
  364. </div>
  365. </div>
  366. <div :class="['order-info',$t('language') === 'English'?'flex-wrap':'']">
  367. <div :class="['info-item',$t('language') === 'English'?'small-width':'']" v-if="dataForm.userAddrOrder && dataForm.userAddrOrder !== null">
  368. <div class="item-tit">
  369. {{ $t("order.recipientInformation") }}
  370. </div>
  371. <div class="item">
  372. <div class="text">
  373. {{
  374. dataForm.dvyType === 2
  375. ? $t("order.deliveryPerson")
  376. : $t("publics.addressee")
  377. }}:
  378. </div>
  379. <div class="res">{{ dataForm.userAddrOrder.receiver }}</div>
  380. </div>
  381. <div class="item">
  382. <div class="text">{{ $t("shop.contactTel") }}:</div>
  383. <div class="res">{{ dataForm.userAddrOrder.mobile }}</div>
  384. </div>
  385. <div class="item" v-if="dataForm.dvyType !== 2">
  386. <div class="text">{{ $t("publics.deliveryAddr") }}:</div>
  387. <div class="res">
  388. {{ dataForm.userAddrOrder.province
  389. }}{{ dataForm.userAddrOrder.city
  390. }}{{ dataForm.userAddrOrder.area
  391. }}{{ dataForm.userAddrOrder.street
  392. }}{{ dataForm.userAddrOrder.addr }}
  393. </div>
  394. <!-- <div class="res">北京市 北京市 朝阳区 元大都城垣遗址公园6号 辣婆婆(东元大都店)</div> -->
  395. </div>
  396. </div>
  397. <div :class="['info-item',$t('language') === 'English'?'small-width':'']">
  398. <div class="item-tit">
  399. {{ $t("order.shippingInformation") }}
  400. </div>
  401. <div class="item">
  402. <div class="text">{{ $t("order.delType") }}:</div>
  403. <div class="res">
  404. {{
  405. [
  406. $t("order.distribution"),
  407. $t("order.buyerMention"),
  408. $t("order.noNeedRequired"),
  409. $t("order.sameCityDelivery"),
  410. ][dataForm.dvyType - 1]
  411. }}
  412. </div>
  413. <div class="res" v-if="dataForm.dvyType === null">
  414. {{ $t("order.no") }}
  415. </div>
  416. <!-- <div class="res" v-if="dataForm.dvyType == 1">快递</div>
  417. <div class="res" v-if="dataForm.dvyType == 2">自提</div>
  418. <div class="res" v-if="dataForm.dvyType == 3">无需快递</div>-->
  419. </div>
  420. <div class="item">
  421. <div class="text">{{ $t("order.deliveryTime") }}:</div>
  422. <div class="res">{{ dataForm.dvyTime }}</div>
  423. <div class="res" v-if="dataForm.dvyTime === null">
  424. {{ $t("order.no") }}
  425. </div>
  426. </div>
  427. <div class="item" v-if="dataForm.dvyType === 2">
  428. <div class="text">{{$t("station.stationNames")}}:</div>
  429. <div class="res">{{ dataForm.stationName }}</div>
  430. </div>
  431. </div>
  432. <div :class="['info-item',$t('language') === 'English'?'small-width':'']" v-if="dataForm.orderMold === 1">
  433. <div class="item-tit">
  434. {{ $t("order.virtualInfo") }}
  435. </div>
  436. <div class="item">
  437. <div class="text">{{ $t("order.virtualMsg") }}:</div>
  438. <div class="res">
  439. <div
  440. v-for="(virtualRemark,index) in virtualRemarkList"
  441. :key="index" >
  442. {{
  443. virtualRemark.name
  444. }}:{{
  445. virtualRemark.value
  446. }}
  447. </div>
  448. </div>
  449. </div>
  450. </div>
  451. <div :class="['info-item',$t('language') === 'English'?'small-width':'']">
  452. <div class="item-tit">{{ $t("order.paymentInformation") }}</div>
  453. <div class="item">
  454. <div class="text">{{ $t("order.actualAmount") }}:</div>
  455. <!-- <div class="res">{{dataForm.actualTotal}}元</div> -->
  456. {{
  457. dataForm.actualTotal +
  458. $t("admin.dollar") +
  459. " + " +
  460. dataForm.score +
  461. $t("order.integral")
  462. }}
  463. </div>
  464. <div class="item">
  465. <div class="text">{{ $t("order.paymentMethod") }}:</div>
  466. <span v-if="dataForm.payType === null || dataForm.status === 1">{{
  467. $t("order.unpaid")
  468. }}</span>
  469. <div
  470. class="res"
  471. v-else
  472. >
  473. {{
  474. [
  475. this.$i18n.t("order.pointsPayment"),
  476. this.$i18n.t("order.wecProPay"),
  477. this.$i18n.t("order.alipayPCPayment"),
  478. this.$i18n.t("order.wechatScanCodePayment"),
  479. this.$i18n.t("order.wechatH5Payment"),
  480. this.$i18n.t("order.weclAccountPay"),
  481. this.$i18n.t("order.alipayH5Payment"),
  482. this.$i18n.t("order.alipayAPPPayment"),
  483. this.$i18n.t("order.wechatAPPPayment"),
  484. $t("order.balancePayment"),
  485. $t("order.payPalPayment"),
  486. ][dataForm.payType]
  487. }}
  488. </div>
  489. </div>
  490. <div class="item">
  491. <div class="text">{{ $t("order.paymentTime") }}:</div>
  492. <div class="res">{{ dataForm.payTime }}</div>
  493. <div class="res" v-if="dataForm.payTime === null">
  494. {{ $t("order.no") }}
  495. </div>
  496. </div>
  497. <div class="item">
  498. <div class="text">商户单号:</div>
  499. <div class="res" v-if="payNo != null">{{ payNo }}</div>
  500. </div>
  501. </div>
  502. <div :class="['info-item',$t('language') === 'English'?'small-width':'']">
  503. <div class="item-tit">{{ $t("order.buyerInformation") }}</div>
  504. <div class="item">
  505. <div class="text">{{ $t("order.buyerSNickname") }}:</div>
  506. <div class="res">{{ dataForm.nickName }}</div>
  507. <div class="res" v-if="dataForm.nickName === null">
  508. {{ $t("order.no") }}
  509. </div>
  510. </div>
  511. <div class="item">
  512. <div class="text">买家手机:</div>
  513. <div class="res">{{ dataForm.userMobile }}</div>
  514. </div>
  515. <!-- 用户没有设置手机号,所以暂时注释掉-->
  516. <!-- <div class="item">-->
  517. <!-- <div class="text">{{$t('order.buyerPhone')}}:</div>-->
  518. <!-- <div-->
  519. <!-- class="res"-->
  520. <!-- v-if="!dataForm.userMobile || dataForm.userMobile === ''"-->
  521. <!-- >{{$t('order.no')}}</div>-->
  522. <!-- <div class="res" v-else>{{dataForm.userMobile}}</div>-->
  523. <!-- </div>-->
  524. <div class="item">
  525. <div class="text">{{ $t("order.orderRemarks") }}:</div>
  526. <div class="res">{{ dataForm.remarks }}</div>
  527. <div
  528. class="res">
  529. <el-button type="text" @click="buyerRemarkVisible=true">修改</el-button>
  530. </div>
  531. </div>
  532. </div>
  533. <div :class="['info-item',$t('language') === 'English'?'small-width':'']">
  534. <div class="item-tit">打印订单信息</div>
  535. <el-row :gutter="20">
  536. <el-col :span="12">
  537. <div class="item">
  538. <div class="text">打印渠道:</div>
  539. <div class="res">{{ printOrder.printChannel }}</div>
  540. </div>
  541. </el-col>
  542. <el-col :span="12">
  543. <div class="item" style="width:320px;">
  544. <div class="text">订单状态:</div>
  545. <!-- <el-button v-if="printOrder.status == 0 || printOrder.status == null" type="primary" size="mini" @click="openPrintOrderDialog">创建订单</el-button>-->
  546. <div class="res" v-if="printOrder.status == 1">已发起,待确认</div>
  547. <div class="res" v-else-if="printOrder.status == 2">待付款,已确认</div>
  548. <div class="res" v-else-if="printOrder.status == 3">待生产,已付款</div>
  549. <div class="res" v-else-if="printOrder.status == 4">待发货,已生产</div>
  550. <div class="res" v-else-if="printOrder.status == 5">待收货,已发货</div>
  551. <div class="res" v-else-if="printOrder.status == 6">交易取消</div>
  552. <div class="res" v-else-if="printOrder.status == 7">售后</div>
  553. <div class="res" v-else-if="printOrder.status == 10">交易完成,已收货</div>
  554. <div class="res" v-else-if="printOrder.status == 11">失败</div>
  555. <div class="res" v-else>未知</div>
  556. <div class="res" style="margin-left: 5px"><el-button :loading="orderDeliveryLoading" v-if="printOrder.status != 0 && printOrder.status != null" type="success" size="mini" @click="getOrderDelivery">更新</el-button></div>
  557. </div>
  558. </el-col>
  559. </el-row>
  560. <el-row :gutter="20">
  561. <el-col :span="12">
  562. <div class="item" style="width:360px;">
  563. <div class="text">三方订单号:</div>
  564. <div class="res" >{{ printOrder.orderNo }}</div>
  565. </div>
  566. </el-col>
  567. </el-row>
  568. <el-row>
  569. <el-col :span="12">
  570. <div class="item">
  571. <div class="text">PDF文件:</div>
  572. <el-link v-if="printOrder.printChannel === 'Lightning' && printOrder.pdfList.length > 0" type="primary" :underline="false" :href="resourcesUrl + printOrder.pdfList[0].pdfUrl" target="_blank">查看文件</el-link>
  573. <el-button :loading="generatePdfLoading" v-if="printOrder.printChannel === 'Lightning' && dataForm.status === 6" type="primary" size="mini" @click="generatePdf">生成PDF</el-button>
  574. </div>
  575. </el-col>
  576. <el-col :span="12">
  577. <div class="item" style="width:320px;">
  578. <div class="text">审阅状态:</div>
  579. <el-button v-if="dataForm.auditStatus==0" type="warning" size="mini" style="margin-right: 20px" @click="handleAuditStatus(dataForm.orderNumber)">待审阅</el-button>
  580. <el-button v-else-if="dataForm.auditStatus==1" type="success" size="mini" style="margin-right: 20px" @click="handleAuditStatus(dataForm.orderNumber)">已审阅</el-button>
  581. <el-button v-else type="warning" size="mini" style="margin-right: 20px" @click="handleAuditStatus(dataForm.orderNumber)">待审阅</el-button>
  582. </div>
  583. </el-col>
  584. </el-row>
  585. <el-row>
  586. <el-col :span="24">
  587. <div class="item">
  588. <div class="item" style="width:360px;" v-if="printOrder.status === 3">物流信息:{{printOrder.deliveryName}} | {{printOrder.deliveryNo}}</div>
  589. <div class="item" style="width:360px;" v-else>物流信息</div>
  590. <el-button type="primary" size="mini" v-if="orderStatus == 2" @click="openDeliveryDialog">发货</el-button>
  591. </div>
  592. </el-col>
  593. </el-row>
  594. </div>
  595. </div>
  596. <div class="goods-list">
  597. <el-table
  598. :data="prodList"
  599. header-cell-class-name="table-header"
  600. :default-expand-all="true"
  601. row-class-name="table-row">
  602. <el-table-column type="expand">
  603. <template slot-scope="scope">
  604. <OrderCardItem :orderItem="scope.row" v-if="showOrderCard"/>
  605. </template>
  606. </el-table-column>
  607. <el-table-column prop="" :label="this.$i18n.t('home.product')">
  608. <template slot-scope="scope">
  609. <!-- 商品信息 -->
  610. <div class="df">
  611. <!-- <img
  612. class="prod-img"
  613. :src="resourcesUrl + scope.row.pic"
  614. /> -->
  615. <prod-pic
  616. width="60"
  617. :pic="scope.row.pic"
  618. class="prod-pic"
  619. ></prod-pic>
  620. <div class="name">
  621. <div>
  622. <span v-if="scope.row.giveawayOrderItemId" class="gift-icon">{{ $t("order.giveawayPord") }}</span>
  623. <span>{{ scope.row.prodName }}</span>
  624. </div>
  625. <div
  626. class="order-status"
  627. v-if="
  628. scope.row.returnMoneySts &&
  629. scope.row.returnMoneySts < 5 &&
  630. scope.row.returnMoneySts > 0
  631. "
  632. >
  633. {{
  634. $t("order.refunding")
  635. }}
  636. </div>
  637. <div
  638. class="order-status"
  639. v-if="
  640. scope.row.returnMoneySts &&
  641. scope.row.returnMoneySts === 5
  642. "
  643. >
  644. {{
  645. $t("order.refundsuccessfully")
  646. }}
  647. </div>
  648. </div>
  649. </div>
  650. <!-- / 商品信息 -->
  651. <!-- 赠品 -->
  652. <div v-if="dataForm.orderItems.length > 1" class="gift-prod">
  653. <div v-for="item in scope.row.giveawayList" class="item">
  654. <span class="name">{{'【' + $t("order.giveawayPord") + '】'}}{{item.prodName}}</span>
  655. <span class="num">×{{item.prodCount}}</span>
  656. </div>
  657. </div>
  658. <!-- / 赠品 -->
  659. </template>
  660. </el-table-column>
  661. <el-table-column
  662. prop="price"
  663. :label="this.$i18n.t('order.unitPrice')"
  664. width="180"
  665. align="center"
  666. >
  667. <template slot-scope="scope">
  668. <span>{{ scope.row.giveawayOrderItemId ? '-' : scope.row.price }}</span>
  669. </template>
  670. </el-table-column>
  671. <el-table-column
  672. prop="count"
  673. :label="this.$i18n.t('order.quantity')"
  674. width="180"
  675. align="center"
  676. >
  677. <template slot-scope="scope">
  678. <span>{{ scope.row.prodCount }}</span>
  679. </template>
  680. </el-table-column>
  681. <el-table-column
  682. prop="count"
  683. :label="this.$i18n.t('marketing.discountedPrice')"
  684. width="180"
  685. align="center"
  686. >
  687. <template slot-scope="scope">
  688. <span>{{ scope.row.giveawayOrderItemId ? '-' : scope.row.shareReduce }}</span>
  689. </template>
  690. </el-table-column>
  691. <el-table-column
  692. prop="totalPrice"
  693. :label="this.$i18n.t('order.totalPrice')"
  694. width="180"
  695. align="center"
  696. >
  697. <template slot-scope="scope">
  698. <span>{{ scope.row.giveawayOrderItemId ? '-' : scope.row.productTotalAmount }}</span>
  699. </template>
  700. </el-table-column>
  701. </el-table>
  702. <div class="goods-total">
  703. <div class="text-box">
  704. <div class="item">
  705. <div class="text">{{ $t("order.prodTotalPrice") }}:</div>
  706. <div class="number">¥{{ dataForm.total }}</div>
  707. </div>
  708. <div class="item" v-if="dataForm.reduceAmount">
  709. <div class="text">{{ $t("marketing.discountedPrice") }}:</div>
  710. <div class="number">¥{{ dataForm.reduceAmount }}</div>
  711. </div>
  712. <div class="item" v-if="dataForm.freightAmount">
  713. <div class="text">{{ $t("order.shippingFees") }}:</div>
  714. <div class="number">¥{{ dataForm.freightAmount }}</div>
  715. </div>
  716. <div class="item act-price">
  717. <div class="text">{{ $t("order.actualAmount") }}:</div>
  718. <div class="number">¥{{ dataForm.actualTotal }}{{ dataForm.score?" + "+ dataForm.score +$t("order.integral"):''}}</div>
  719. </div>
  720. </div>
  721. </div>
  722. </div>
  723. <div class="order-log">
  724. <div class="log-title">{{ $t("order.logs") }}</div>
  725. <div class="log-cont" v-if="dataForm.createTime">
  726. {{ dataForm.createTime }} {{ dataForm.nickName }}
  727. {{ $t("order.createOrder") }}
  728. </div>
  729. <div class="log-cont" v-if="dataForm.payTime">
  730. {{ dataForm.payTime }} {{ dataForm.nickName }}
  731. {{ $t("order.payment") }}
  732. </div>
  733. <div class="log-cont" v-if="dataForm.dvyTime">
  734. {{ dataForm.dvyTime }}
  735. <!-- -->
  736. {{
  737. dataForm.dvyType === 2
  738. ? dataForm.nickName + $t("order.orderPickup")
  739. : $t("order.deliverys")
  740. }}
  741. </div>
  742. <div class="log-cont" v-if="dataForm.finallyTime">
  743. {{ dataForm.finallyTime }} {{ dataForm.nickName
  744. }}{{ $t("order.completed") }}
  745. </div>
  746. <div class="log-cont" v-if="dataForm.cancelTime">
  747. {{ dataForm.cancelTime }} {{ dataForm.nickName }}
  748. {{ $t("order.cancelOrder") }}
  749. </div>
  750. <div class="log-cont" v-if="dataForm.updateTime">
  751. {{ dataForm.updateTime }} {{ dataForm.nickName }}
  752. {{ $t("order.orderUpdate") }}
  753. </div>
  754. </div>
  755. <!-- ___ -->
  756. </div>
  757. </div>
  758. </el-form>
  759. <!-- 弹窗, 新增 / 修改 -->
  760. <order-addr-update
  761. v-if="orderAddrUpdateVisible"
  762. ref="orderAddrUpdate"
  763. @refreshUserAddrOrder="getDataList"
  764. ></order-addr-update>
  765. <order-remark-update
  766. v-if="orderRemarkUpdateVisible"
  767. ref="orderRemarkUpdate"
  768. @refreshUserRemarkOrder="getDataList"
  769. ></order-remark-update>
  770. <!-- 弹窗, 新增 / 修改 -->
  771. <order-pdf-generate
  772. v-if="orderGeneratePdfVisible"
  773. ref="orderPdfGenerate"
  774. ></order-pdf-generate>
  775. <!-- 弹窗, 新增 / 修改 -->
  776. <order-print-create
  777. v-if="orderPrintCreateVisible"
  778. ref="orderPrintCreate"
  779. ></order-print-create>
  780. <order-delivery-update
  781. v-if="devyVisible"
  782. ref="orderDeliveryUpdate"
  783. ></order-delivery-update>
  784. <el-dialog
  785. :append-to-body="true"
  786. title="修改买家备注"
  787. :visible.sync="buyerRemarkVisible"
  788. v-if="buyerRemarkVisible"
  789. width="30%"
  790. left
  791. :close-on-click-modal="false"
  792. :close-on-press-escape="false">
  793. <el-form :model="dataForm" label-position="right">
  794. <el-form-item label="备注" label-width="70px">
  795. <el-input v-model="dataForm.remarks" autocomplete="off"></el-input>
  796. </el-form-item>
  797. </el-form>
  798. <div slot="footer" class="dialog-footer">
  799. <el-button type="primary" @click="modifyBuyerRemarks()">确认</el-button>
  800. </div>
  801. </el-dialog>
  802. <el-dialog
  803. :append-to-body="true"
  804. title="修改下单时间"
  805. :visible.sync="modifyCreateTimeVisible"
  806. v-if="modifyCreateTimeVisible"
  807. width="30%"
  808. left
  809. :close-on-click-modal="false"
  810. :close-on-press-escape="false">
  811. <el-form :model="dataForm" label-position="right">
  812. <el-form-item label="备注" label-width="70px">
  813. <el-date-picker v-model="dataForm.createTime"
  814. type="datetime"
  815. :placeholder="this.$i18n.t('admin.seleData')"
  816. value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
  817. </el-form-item>
  818. </el-form>
  819. <div slot="footer" class="dialog-footer">
  820. <el-button type="primary" @click="modifyOrderCreateTime()">确认</el-button>
  821. </div>
  822. </el-dialog>
  823. </el-dialog>
  824. <!-- </div>-->
  825. </template>
  826. <script>
  827. import OrderAddrUpdate from '@/components/order-addr-update'
  828. import OrderRemarkUpdate from '@/components/order-remark-update'
  829. import ProdPic from '@/components/prod-pic'
  830. import OrderCardItem from '@/components/order-card-item'
  831. import OrderPrintCreate from '@/components/order-print-create'
  832. import OrderPdfGenerate from '@/components/order-pdf-generate'
  833. import OrderDeliveryUpdate from './order-delivery-update'
  834. export default {
  835. name: 'order-info',
  836. data () {
  837. return {
  838. visible: false,
  839. virtualRemarkList: [],
  840. dataForm: {
  841. orderId: 0,
  842. virtualRemark: '',
  843. orderNumber: '',
  844. remarks: '',
  845. shopRemarks: '',
  846. total: 0,
  847. deliveryExpresses: [],
  848. actualTotal: 0,
  849. dvyType: '',
  850. status: 1,
  851. addrOrderId: 0,
  852. nickName: '',
  853. orderItems: [],
  854. orderTime: '',
  855. updateTime: '',
  856. payTime: '',
  857. dvyTime: '',
  858. finallyTime: '',
  859. cancelTime: '',
  860. orderType: '',
  861. userAddrOrder: {},
  862. shopId:null,
  863. auditStatus: 0
  864. },
  865. resourcesUrl: process.env.VUE_APP_RESOURCES_URL,
  866. deliveryExpresse: {
  867. deliveryDto: {}
  868. },
  869. payNo: null,
  870. indexs: 0,
  871. orderRemarkUpdateVisible: false,
  872. orderAddrUpdateVisible: false,
  873. orderPrintCreateVisible: false,
  874. orderGeneratePdfVisible: false,
  875. modifyCreateTimeVisible:false,
  876. offsetCount: 0, // 偏移量
  877. // 商品列表
  878. prodList: [],
  879. printOrder:{
  880. orderNumber:null,
  881. orderNo:null,
  882. worksUrl:null,
  883. printChannel:null,
  884. photoPages:null,
  885. status:null,
  886. deliveryName: null,
  887. deliveryNo: null,
  888. prodType: null,
  889. pdfList: [],
  890. },
  891. selectPrintChannel: null,
  892. selectPrintSkuId: null,
  893. generatePdfLoading: false,
  894. orderDeliveryLoading: false,
  895. devyVisible: false,
  896. orderStatus: 1,
  897. prodType: "",
  898. buyerRemarkVisible:false,
  899. showOrderCard: false
  900. }
  901. },
  902. components: {
  903. OrderAddrUpdate,
  904. OrderRemarkUpdate,
  905. ProdPic,
  906. OrderCardItem,
  907. OrderPdfGenerate,
  908. OrderPrintCreate,
  909. OrderDeliveryUpdate,
  910. },
  911. watch: {
  912. visible: function () {
  913. if (!this.visible) {
  914. this.orderRemarkUpdateVisible = false
  915. this.orderAddrUpdateVisible = false
  916. this.orderPrintCreateVisible = false
  917. }
  918. },
  919. deliveryExpresse: function (newVal, oldVal) {
  920. this.$nextTick(() => {
  921. this.offsetCount = 0 // 初始化变量
  922. if (this.deliveryExpresse) {
  923. this.$refs.carouser.style.left = '0px'
  924. }
  925. })
  926. }
  927. },
  928. computed: {
  929. stepsStatus: function () {
  930. if (this.dataForm.finallyTime) {
  931. return 4
  932. }
  933. if (this.dataForm.dvyTime) {
  934. return 3
  935. }
  936. if (this.dataForm.payTime) {
  937. return 2
  938. }
  939. if (this.dataForm.createTime) {
  940. return 1
  941. }
  942. }
  943. },
  944. created () {
  945. // this.dataForm.orderNumber = this.$route.query.orderNumber || 0
  946. // this.dataForm.shopId = this.$route.query.shopId || null
  947. // this.orderStatus = this.$route.query.status || null
  948. // this.init()
  949. // this.initPrintOrder()
  950. },
  951. methods: {
  952. closeDialog(){
  953. this.visible = false;
  954. this.showOrderCard = false;
  955. },
  956. init (params) {
  957. this.dataForm.orderNumber = params.orderNumber || 0
  958. this.dataForm.shopId = params.shopId || null
  959. this.orderStatus = params.status || null
  960. this.visible = true
  961. this.$nextTick(() => {
  962. this.$refs['dataForm'].resetFields()
  963. })
  964. if (this.dataForm.orderNumber) {
  965. this.indexs = 0
  966. // 修改
  967. this.$http({
  968. url: this.$http.adornUrl(`/order/delivery/orderInfo/${this.dataForm.orderNumber}`),
  969. method: 'get',
  970. params: this.$http.adornParams()
  971. }).then(({ data }) => {
  972. console.log(data)
  973. this.dataForm = data
  974. this.deliveryExpresse = this.dataForm.deliveryExpresses[0]
  975. this.virtualRemarkList = JSON.parse(this.dataForm.virtualRemark)
  976. // 处理商品列表
  977. this.prodList = data.orderItems
  978. if (data.orderItems.length === 1 &&
  979. data.orderItems[0].giveawayList &&
  980. data.orderItems[0].giveawayList.length) {
  981. // 单个商品且有赠品时,将主商品和赠品放在同一级列表中展示
  982. this.prodList = [...data.orderItems, ...data.orderItems[0].giveawayList]
  983. }
  984. this.showOrderCard = true;
  985. this.initPrintOrder();
  986. if(this.dataForm.payType === 1){
  987. //查询微信单号
  988. this.getWxPayNoByOrderNumber(this.dataForm.orderNumber);
  989. }else{
  990. this.payNo = null;
  991. }
  992. })
  993. }
  994. },
  995. generatePdf () {
  996. this.$confirm('确认要生成PDF吗?', '提示', {
  997. confirmButtonText: '确定',
  998. cancelButtonText: '取消',
  999. type: 'warning'
  1000. }).then(() => {
  1001. this.generatePdfLoading = true;
  1002. this.$http({
  1003. url: this.$http.adornUrl('/printOrderPdf/printOrderPdf/generateLightningPdf'),
  1004. method: 'post',
  1005. data: this.$http.adornData({
  1006. orderNumber: this.dataForm.orderNumber
  1007. }),
  1008. }).then(({ data }) => {
  1009. this.generatePdfLoading = false;
  1010. if(data){
  1011. this.$message({
  1012. message: data,
  1013. type: 'success'
  1014. })
  1015. }else{
  1016. this.$message({
  1017. message: data,
  1018. type: 'error'
  1019. })
  1020. }
  1021. }).catch(e =>{
  1022. this.generatePdfLoading = false
  1023. this.$message({
  1024. message: e,
  1025. type: 'error'
  1026. })
  1027. })
  1028. });
  1029. },
  1030. initPrintOrder() {
  1031. if (this.dataForm.orderNumber) {
  1032. this.$http({
  1033. url: this.$http.adornUrl("/printOrder/printOrder/info/getByOrderNumber"),
  1034. method: 'get',
  1035. params: this.$http.adornParams({orderNumber: this.dataForm.orderNumber})
  1036. }).then(({ data }) => {
  1037. if(data){
  1038. this.printOrder = data;
  1039. }else{
  1040. this.printOrder.orderNo = null;
  1041. this.printOrder.worksUrl = null;
  1042. this.printOrder.printChannel = null;
  1043. this.printOrder.photoPages = null;
  1044. this.printOrder.status = null;
  1045. this.printOrder.deliveryName = null;
  1046. this.printOrder.deliveryNo = null;
  1047. this.printOrder.prodType = null;
  1048. this.printOrder.pdfList = [];
  1049. }
  1050. this.printOrder.orderNumber = this.dataForm.orderNumber;
  1051. this.printOrder.shopId = this.dataForm.shopId;
  1052. })
  1053. }
  1054. },
  1055. getWxPayNoByOrderNumber(orderNumber){
  1056. this.$http({
  1057. url: this.$http.adornUrl(`/order/order/getWxPyaNoByOrderNumber`),
  1058. method: 'get',
  1059. params: this.$http.adornParams({orderNumber, orderNumber})
  1060. }).then(({ data }) => {
  1061. this.payNo = data.payNo;
  1062. })
  1063. },
  1064. modifyBuyerRemarks(){
  1065. this.$http({
  1066. url: this.$http.adornUrl('/order/order/modifyRemarks'),
  1067. method: 'post',
  1068. data: this.$http.adornData({
  1069. orderNumber: this.dataForm.orderNumber,
  1070. remarks: this.dataForm.remarks
  1071. }),
  1072. }).then(({ data }) => {
  1073. this.buyerRemarkVisible = false
  1074. if(data){
  1075. this.$message({
  1076. message: "修改成功",
  1077. type: 'success'
  1078. })
  1079. }else{
  1080. this.$message({
  1081. message: "修改失败",
  1082. type: 'error'
  1083. })
  1084. }
  1085. })
  1086. },
  1087. //修改下单时间
  1088. modifyOrderCreateTime(){
  1089. this.$http({
  1090. url: this.$http.adornUrl('/order/order/modifyOrderCreateTime'),
  1091. method: 'post',
  1092. data: this.$http.adornData({
  1093. orderNumber: this.dataForm.orderNumber,
  1094. createTime: this.dataForm.createTime
  1095. }),
  1096. }).then(({ data }) => {
  1097. if(data){
  1098. this.modifyCreateTimeVisible = false;
  1099. this.$message({
  1100. message: "修改成功",
  1101. type: 'success'
  1102. })
  1103. }else{
  1104. this.$message({
  1105. message: "修改失败",
  1106. type: 'error'
  1107. })
  1108. }
  1109. })
  1110. },
  1111. /**
  1112. * 生成作品打印PDF
  1113. */
  1114. generatePrintPdf () {
  1115. this.generatePdfLoading = true;
  1116. this.$http({
  1117. url: this.$http.adornUrl('/order/thirdPrintOrder/generatePrintPdf'),
  1118. method: 'post',
  1119. data: this.$http.adornData({
  1120. orderNumber: this.dataForm.orderNumber,
  1121. shopId: this.dataForm.shopId,
  1122. prodType: this.prodType
  1123. }),
  1124. }).then(({ data }) => {
  1125. if(data.status === "success"){
  1126. this.generatePdfLoading = false;
  1127. this.printOrder.worksUrl = data.result.worksUrl;
  1128. window.open(this.resourcesUrl + data.result.worksUrl);
  1129. }else{
  1130. this.generatePdfLoading = false;
  1131. this.$message({
  1132. message: data.msg,
  1133. type: 'error'
  1134. })
  1135. }
  1136. })
  1137. },
  1138. openGeneratePdfDialog(){
  1139. this.orderGeneratePdfVisible = true
  1140. this.$nextTick(() => {
  1141. const From = JSON.parse(JSON.stringify(this.printOrder))
  1142. this.$refs.orderPdfGenerate.init(From)
  1143. })
  1144. },
  1145. openPrintOrderDialog(){
  1146. this.orderPrintCreateVisible = true
  1147. this.$nextTick(() => {
  1148. const From = JSON.parse(JSON.stringify(this.printOrder))
  1149. this.$refs.orderPrintCreate.init(From)
  1150. })
  1151. },
  1152. openDeliveryDialog(){
  1153. this.devyVisible = true
  1154. this.$nextTick(() => {
  1155. this.$refs.orderDeliveryUpdate.init(this.dataForm)
  1156. })
  1157. },
  1158. getOrderDelivery(){
  1159. this.$http({
  1160. url: this.$http.adornUrl('/order/thirdPrintOrder/orderDelivery'),
  1161. method: 'post',
  1162. data: this.$http.adornData({
  1163. orderNumber: this.dataForm.orderNumber
  1164. }),
  1165. }).then(({ data }) => {
  1166. if(data.status === "success"){
  1167. this.printOrder.status = data.result.order_status;
  1168. this.printOrder.logisticName = data.result.logistics_name;
  1169. this.printOrder.deliveryCode = data.result.delivery_code;
  1170. }else{
  1171. this.$message({
  1172. message: data.msg,
  1173. type: 'error'
  1174. })
  1175. }
  1176. })
  1177. },
  1178. handleAuditStatus(orderNumber){
  1179. this.$http({
  1180. url: this.$http.adornUrl('/order/order/auditStatus/' + orderNumber),
  1181. method: 'post',
  1182. }).then(({ data }) => {
  1183. if(data.status === "success"){
  1184. this.$message({
  1185. message: data.msg,
  1186. type: 'success'
  1187. });
  1188. this.dataForm.auditStatus = this.dataForm.auditStatus == 0 || this.dataForm.auditStatus == null? 1:0;
  1189. let auditStatusReturn = {auditStatus: this.dataForm.auditStatus, orderNumber: orderNumber};
  1190. this.$emit('orderAuditStatusUpdate', auditStatusReturn)
  1191. }else{
  1192. this.$message({
  1193. message: data.msg,
  1194. type: 'error'
  1195. })
  1196. }
  1197. })
  1198. },
  1199. getDataList () {
  1200. this.$http({
  1201. url: this.$http.adornUrl(`/order/delivery/orderInfo/${this.dataForm.orderNumber}`),
  1202. method: 'get',
  1203. params: this.$http.adornParams()
  1204. }).then(({ data }) => {
  1205. this.dataForm = data
  1206. this.deliveryExpresse = this.dataForm.deliveryExpresses[0]
  1207. })
  1208. },
  1209. /**
  1210. * 物流事件
  1211. */
  1212. onClickListDelivery (delivery, index) {
  1213. this.$http({
  1214. url: this.$http.adornUrl(`/order/delivery/deliveryOrder/${delivery.orderDeliveryId}`),
  1215. method: 'get'
  1216. }).then(({ data }) => {
  1217. this.deliveryExpresse = data
  1218. // console.log('onClickListDelivery-data', data)
  1219. })
  1220. this.indexs = index
  1221. },
  1222. // 商品切换
  1223. prevItem () {
  1224. var len = this.deliveryExpresse.orderItems.length
  1225. if (len - 5 > 0) {
  1226. if (this.offsetCount > 0) {
  1227. this.offsetCount--
  1228. this.$refs.carouser.style.left = '-' + (70 * this.offsetCount) + 'px'
  1229. } else {
  1230. return false
  1231. }
  1232. } else if (len - 5 <= 0) {
  1233. return false
  1234. } else {
  1235. return false
  1236. }
  1237. },
  1238. nextItem () {
  1239. var len = this.deliveryExpresse.orderItems.length
  1240. if (len - 5 > 0) {
  1241. if (this.offsetCount < len - 5) {
  1242. this.offsetCount++
  1243. this.$refs.carouser.style.left = '-' + (70 * this.offsetCount) + 'px'
  1244. } else if (len - 5 <= 0) {
  1245. return false
  1246. } else {
  1247. return false
  1248. }
  1249. } else {
  1250. return false
  1251. }
  1252. },
  1253. // 表单提交
  1254. dataFormSubmit () {
  1255. },
  1256. // 修改地址
  1257. changeUserAddrOrder (userAddrOrder) {
  1258. this.orderAddrUpdateVisible = true
  1259. this.$nextTick(() => {
  1260. const From = JSON.parse(JSON.stringify(this.dataForm))
  1261. this.$refs.orderAddrUpdate.init(From)
  1262. })
  1263. },
  1264. // 修改备注
  1265. changeRemarks () {
  1266. this.orderRemarkUpdateVisible = true
  1267. this.$nextTick(() => {
  1268. this.$refs.orderRemarkUpdate.init(this.dataForm)
  1269. })
  1270. }
  1271. }
  1272. }
  1273. </script>
  1274. <style>
  1275. .detail-dialog .el-dialog {
  1276. min-width: 950px;
  1277. margin-top: 10vh !important;
  1278. }
  1279. .detail-dialog .goods-list .has-gutter th.is-leaf {
  1280. background: #f7f8fa;
  1281. color: #333;
  1282. border-bottom: 1px solid #ebeef5;
  1283. font-weight: 400;
  1284. border-right: 0;
  1285. }
  1286. .detail-dialog .goods-list .el-table td {
  1287. border-right: 0;
  1288. }
  1289. .left-line {
  1290. /* padding-left: 30px;
  1291. padding-bottom: 10px;
  1292. padding-top: 15px;
  1293. margin-left: -30px;
  1294. margin-top: -10px !important;
  1295. background-color: #fff; */
  1296. border-left: 1px solid #fff !important;
  1297. }
  1298. </style>
  1299. <style lang="scss" scoped>
  1300. .mod-order-orderInfo {
  1301. height: 100%;
  1302. width: 100%;
  1303. font: 14px Arial, "PingFang SC", "Hiragino Sans GB", STHeiti,
  1304. "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif;
  1305. color: #333;
  1306. .order-number {
  1307. display: flex;
  1308. align-items: center;
  1309. font-size: 14px;
  1310. margin-left: 20px;
  1311. }
  1312. .order-number .text {
  1313. color: #999;
  1314. }
  1315. .order-number .number,
  1316. .order-number .time {
  1317. display: flex;
  1318. align-items: center;
  1319. }
  1320. .order-number .time {
  1321. margin: 0 15px;
  1322. }
  1323. .order-state {
  1324. position: relative;
  1325. margin-top: 15px;
  1326. border: 1px solid #eee;
  1327. display: flex;
  1328. align-items: center;
  1329. justify-content: center;
  1330. }
  1331. .order-state .state-box {
  1332. padding: 20px 15px;
  1333. width: 40%;
  1334. border-right: 1px solid #eee;
  1335. }
  1336. .order-state .state-box .state {
  1337. font-size: 20px;
  1338. font-weight: 700;
  1339. line-height: 28px;
  1340. }
  1341. .order-state .state-box .state-des {
  1342. margin-top: 10px;
  1343. color: #999;
  1344. }
  1345. .order-state .state-box .actions {
  1346. margin-top: 15px;
  1347. }
  1348. .order-state .state-box .actions .item {
  1349. display: flex;
  1350. align-items: center;
  1351. }
  1352. .order-state .state-box .actions .item .el-button--text {
  1353. cursor: pointer;
  1354. }
  1355. .order-state .state-box .actions .item .item-btn {
  1356. padding: 3px 10px;
  1357. border: 1px solid #eee;
  1358. border-radius: 2px;
  1359. }
  1360. .order-state .state-steps {
  1361. flex: 1;
  1362. // margin-left: -80px;
  1363. padding-bottom: 10px;
  1364. }
  1365. .order-state .state-steps .el-form-item {
  1366. margin-bottom: 0;
  1367. }
  1368. .packages {
  1369. margin-top: 15px;
  1370. }
  1371. .packages .p-tab {
  1372. display: flex;
  1373. align-items: center;
  1374. width: 100%;
  1375. background: #F7F8FA;
  1376. border: 1px solid #E8E9EC;
  1377. border-bottom: none;
  1378. height: 44px;
  1379. }
  1380. .packages .p-tab .item {
  1381. background: #F7F8FA;
  1382. // border: 1px solid #EAEAEA;
  1383. margin-right: -1px;
  1384. margin-bottom: -1px;
  1385. position: relative;
  1386. text-align: center;
  1387. line-height: 44px;
  1388. width: 90px;
  1389. cursor: pointer;
  1390. font-size: 12px;
  1391. font-weight: bold;
  1392. height: 44px;
  1393. // border-right: 1px solid #EAEAEA;
  1394. }
  1395. .packages .p-tab .item:first-child {
  1396. // border-radius: 3px 0 0 0;
  1397. border-left: none;
  1398. }
  1399. .packages .p-tab .item:last-child {
  1400. // border-radius: 0 3px 0 0;
  1401. border-left: none;
  1402. }
  1403. .packages .p-tab .item.active {
  1404. background: #fff;
  1405. // border: 1px solid #E8E9EC;
  1406. }
  1407. .packages .p-con {
  1408. border: 1px solid #eee;
  1409. padding: 20px;
  1410. display: flex;
  1411. }
  1412. .packages .p-con .deliver-msg {
  1413. width: 40%;
  1414. min-width: 430px;
  1415. }
  1416. .packages .p-con .deliver-msg .d-item {
  1417. display: flex;
  1418. align-items: center;
  1419. margin-bottom: 10px;
  1420. }
  1421. .packages .p-con .deliver-msg .d-item .text {
  1422. width: 80px;
  1423. }
  1424. .packages .p-con .deliver-msg .d-goods {
  1425. position: relative;
  1426. width: 340px;
  1427. margin: 30px 0 0;
  1428. }
  1429. .packages .p-con .deliver-msg .d-goods.over {
  1430. margin: 30px 32px 0;
  1431. }
  1432. .packages .p-con .deliver-msg .d-goods .arrow {
  1433. position: absolute;
  1434. top: 28px;
  1435. width: 22px;
  1436. height: 22px;
  1437. background: #eee;
  1438. border-radius: 50%;
  1439. cursor: pointer;
  1440. display: none;
  1441. }
  1442. .packages .p-con .deliver-msg .d-goods .arrow.disable {
  1443. opacity: 0.5;
  1444. cursor: not-allowed;
  1445. }
  1446. .packages .p-con .deliver-msg .d-goods.over .arrow {
  1447. display: block;
  1448. }
  1449. .packages .p-con .deliver-msg .d-goods .arrow.prev {
  1450. left: -32px;
  1451. }
  1452. .packages .p-con .deliver-msg .d-goods .arrow.next {
  1453. right: -32px;
  1454. -webkit-transform: rotate(180deg);
  1455. -moz-transform: rotate(180deg);
  1456. transform: rotate(180deg);
  1457. }
  1458. .packages .p-con .deliver-msg .d-goods .arrow::before {
  1459. position: absolute;
  1460. left: 9px;
  1461. top: 8px;
  1462. display: block;
  1463. width: 5px;
  1464. height: 5px;
  1465. content: " ";
  1466. font-size: 0;
  1467. border: 1px solid #666;
  1468. border-width: 1px 1px 0 0;
  1469. -webkit-transform: rotate(225deg);
  1470. -moz-transform: rotate(225deg);
  1471. transform: rotate(225deg);
  1472. }
  1473. .packages .p-con .deliver-msg .d-goods .item-goods {
  1474. position: relative;
  1475. width: 340px;
  1476. height: 80px;
  1477. overflow: hidden;
  1478. }
  1479. .packages .p-con .deliver-msg .d-goods .goods-box {
  1480. position: absolute;
  1481. left: 0;
  1482. display: flex;
  1483. margin-top: 0;
  1484. -webkit-transition: all 0.3s;
  1485. -moz-transition: all 0.3s;
  1486. transition: all 0.3s;
  1487. }
  1488. .packages .p-con .deliver-msg .d-goods .goods-box .item {
  1489. margin-right: 10px;
  1490. font-size: 12px;
  1491. cursor: pointer;
  1492. }
  1493. .packages .p-con .deliver-msg .d-goods .goods-box .item:last-child {
  1494. margin: 0;
  1495. }
  1496. .packages .p-con .deliver-msg .d-goods .goods-box .item .img {
  1497. width: 60px;
  1498. height: 60px;
  1499. font-size: 0;
  1500. margin-bottom: 4px;
  1501. position: relative;
  1502. }
  1503. .packages .p-con .deliver-msg .d-goods .goods-box .item .img img {
  1504. width: 100%;
  1505. height: 100%;
  1506. }
  1507. .packages .p-con .deliver-msg .d-goods .goods-box .item .img .number {
  1508. position: absolute;
  1509. bottom: 0;
  1510. right: 0;
  1511. background: rgba(0, 0, 0, 0.3);
  1512. color: #fff;
  1513. border-radius: 6px 0 6px 0;
  1514. font-size: 12px;
  1515. height: 16px;
  1516. line-height: 16px;
  1517. padding: 0 5px;
  1518. }
  1519. .packages .p-con .deliver-msg .d-goods .goods-box .item .name {
  1520. width: 60px;
  1521. height: 16px;
  1522. line-height: 16px;
  1523. white-space: nowrap;
  1524. overflow: hidden;
  1525. text-overflow: ellipsis;
  1526. color: #999;
  1527. }
  1528. .packages .p-con .logistics {
  1529. flex: 1;
  1530. }
  1531. .packages .p-con .logistics .l-tit {
  1532. display: flex;
  1533. }
  1534. .packages .p-con .logistics .l-tit .l-state {
  1535. color: #155BD4;
  1536. }
  1537. .packages .p-con .logistics .logistics-box {
  1538. height: 175px;
  1539. overflow-y: scroll;
  1540. position: relative;
  1541. margin-top: 15px;
  1542. }
  1543. .packages .p-con .logistics .logistics-box::before {
  1544. position: absolute;
  1545. left: 0;
  1546. top: 0;
  1547. display: block;
  1548. width: 10px;
  1549. height: 10px;
  1550. content: " ";
  1551. font-size: 0;
  1552. background: #fff;
  1553. z-index: 1;
  1554. }
  1555. .packages .p-con .logistics .logistics-box::after {
  1556. position: absolute;
  1557. left: 6px;
  1558. top: 0;
  1559. display: block;
  1560. // width: 1px;
  1561. height: 100%;
  1562. content: " ";
  1563. font-size: 0;
  1564. background: #eee;
  1565. z-index: 0;
  1566. }
  1567. .packages .p-con .logistics .logistics-box .item {
  1568. padding: 0px 0 40px 25px;
  1569. position: relative;
  1570. margin-left: 6px;
  1571. border-left: 1px solid #eee;
  1572. }
  1573. .packages .p-con .logistics .logistics-box .item::before {
  1574. position: absolute;
  1575. left: -10px;
  1576. top: 0px;
  1577. display: block;
  1578. width: 19px;
  1579. height: 19px;
  1580. border-radius: 50%;
  1581. content: " ";
  1582. font-size: 0;
  1583. background: #ccc;
  1584. border: 5px solid #fff;
  1585. z-index: 2;
  1586. }
  1587. .packages .p-con .logistics .logistics-box .item:first-child:before {
  1588. background: #c00;
  1589. }
  1590. .packages .p-con .logistics .logistics-box .item .time {
  1591. color: #999;
  1592. }
  1593. .packages .p-con .logistics .logistics-box .item .text {
  1594. margin-top: 5px;
  1595. width: 400px;
  1596. }
  1597. .order-info {
  1598. background: #f7f8fa;
  1599. margin-top: 15px;
  1600. display: flex;
  1601. padding: 20px;
  1602. }
  1603. .order-info .info-item {
  1604. width: 25%;
  1605. padding-right: 30px;
  1606. }
  1607. .order-info .info-item .item-tit {
  1608. font-weight: 600;
  1609. }
  1610. .order-info .info-item .item {
  1611. margin-top: 10px;
  1612. display: flex;
  1613. line-height: 20px;
  1614. }
  1615. .order-info .info-item .item .res{
  1616. word-break: break-word;
  1617. }
  1618. .order-info .info-item .item .text {
  1619. // width: 75px;
  1620. white-space: nowrap;
  1621. }
  1622. .goods-list {
  1623. margin-top: 15px;
  1624. }
  1625. .goods-list .df {
  1626. display: flex;
  1627. align-items: center;
  1628. }
  1629. .goods-list .df .prod-img {
  1630. display: block;
  1631. width: 60px !important;
  1632. height: 60px !important;
  1633. margin-right: 5px;
  1634. }
  1635. .goods-list .df .prod-pic {
  1636. max-width: 60px;
  1637. margin-right: 6px;
  1638. flex: 1;
  1639. }
  1640. .goods-list .df .name {
  1641. line-height: 20px;
  1642. flex: 1;
  1643. }
  1644. .goods-list .df .gift-icon {
  1645. display: inline-block;
  1646. min-width: 34px;
  1647. max-height: 21px;
  1648. text-align: center;
  1649. padding: 4px;
  1650. border-radius: 4px;
  1651. background: #e43130;
  1652. color: #fff;
  1653. font-size: 13px;
  1654. line-height: 1em;
  1655. margin-right: 5px;
  1656. }
  1657. .goods-list .goods-total {
  1658. display: flex;
  1659. justify-content: flex-end;
  1660. margin-top: 20px;
  1661. }
  1662. .goods-list .goods-total .item {
  1663. display: flex;
  1664. align-items: center;
  1665. justify-content: space-between;
  1666. color: #999;
  1667. margin-top: 5px;
  1668. }
  1669. .goods-list .goods-total .item .text {
  1670. max-width: 220px;
  1671. text-align: right;
  1672. }
  1673. .goods-list .goods-total .item .number {
  1674. width: 150px;
  1675. text-align: center;
  1676. }
  1677. .goods-list .goods-total .item.act-price {
  1678. margin-top: 20px;
  1679. color: #333;
  1680. font-weight: 600;
  1681. }
  1682. .goods-list .goods-total .item.act-price .number {
  1683. color: #c00;
  1684. }
  1685. .order-log {
  1686. margin-top: 20px;
  1687. border-top: 1px dashed #e9eaec;
  1688. padding: 20px 10px;
  1689. }
  1690. .order-log .log-title {
  1691. height: 30px;
  1692. width: 100%;
  1693. line-height: 30px;
  1694. font-weight: bold;
  1695. }
  1696. .order-log .log-cont {
  1697. color: #666666;
  1698. margin-top: 10px;
  1699. }
  1700. .order-status {
  1701. display: inline-block;
  1702. width: auto;
  1703. text-align: center;
  1704. margin-top: 5px;
  1705. padding: 0px 4px;
  1706. border: 1px solid #e43130;
  1707. border-radius: 2px;
  1708. color: #e43130;
  1709. font-size: 12px;
  1710. }
  1711. }
  1712. // .el-step.is-horizontal .el-step__line {
  1713. // top: 19px !important;
  1714. // }
  1715. div ::v-deep .el-step.is-center .el-step__head {
  1716. display: flex;
  1717. justify-content: center;
  1718. align-items: center;
  1719. }
  1720. // 赠品
  1721. .gift-prod .item {
  1722. margin-top: 5px;
  1723. line-height: 1em;
  1724. .name {
  1725. display: inline-block;
  1726. margin-right: 15px;
  1727. line-height: 20px;
  1728. // max-width: 400px;
  1729. // overflow: hidden;
  1730. // text-overflow: ellipsis;
  1731. // white-space: nowrap;
  1732. }
  1733. }
  1734. // 小屏样式适配
  1735. .flex-wrap {
  1736. flex-wrap: wrap;
  1737. }
  1738. .small-width {
  1739. width: 50% !important;
  1740. margin-bottom: 10px;
  1741. }
  1742. .remarkSpan{
  1743. display: inline-block;
  1744. line-height: 24px;
  1745. padding: 5px 0;
  1746. margin-right: 10px;
  1747. word-wrap: break-word;
  1748. word-break: break-all;
  1749. overflow: hidden;
  1750. }
  1751. </style>