order.vue 89 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539
  1. <template>
  2. <div class="mod-order-order">
  3. <!-- <top-task></top-task>-->
  4. <div class="search-bar">
  5. <el-form
  6. :inline="true"
  7. :model="dataForm"
  8. @keyup.enter.native="getDataList(this.page)"
  9. size="small"
  10. >
  11. <div class="input-row">
  12. <!-- &nbsp;&nbsp;&nbsp; -->
  13. <el-form-item :label="this.$i18n.t('order.number') + ':'" :label-width=" lang === 'en' ? '145px' : '85px'">
  14. <el-input
  15. v-model="dataForm.orderNumber"
  16. :placeholder="this.$i18n.t('order.number')"
  17. clearable
  18. size="small"
  19. ></el-input>
  20. </el-form-item>
  21. <el-form-item label="产品名称" :label-width=" lang === 'en' ? '145px' : '85px'">
  22. <template>
  23. <el-select
  24. v-model="dataForm.prodName"
  25. size="small"
  26. clearable
  27. placeholder="产品名称">
  28. <el-option key="wxyj" label="无双圆角小卡" value="无双圆角小卡"></el-option>
  29. <el-option key="wxzj" label="无双直角小卡" value="无双直角小卡"></el-option>
  30. <el-option key="yjxk" label="典藏圆角小卡" value="典藏圆角小卡"></el-option>
  31. <el-option key="zjxk" label="典藏直角小卡" value="典藏直角小卡"></el-option>
  32. <el-option key="gg" label="宫格" value="宫格"></el-option>
  33. <el-option key="pld" label="拍立得" value="拍立得"></el-option>
  34. <el-option key="zpfm" label="直拍封面" value="直拍封面"></el-option>
  35. <el-option key="pg" label="票根" value="票根"></el-option>
  36. <el-option key="sq" label="书签" value="书签"></el-option>
  37. <el-option key="mxp" label="明信片" value="明信片"></el-option>
  38. <el-option key="fk" label="方卡" value="方卡"></el-option>
  39. <el-option key="hz" label="徽章" value="徽章"></el-option>
  40. <el-option key="sf" label="手幅" value="手幅"></el-option>
  41. <el-option key="tz" label="贴纸" value="贴纸"></el-option>
  42. <el-option key="zy" label="自印" value="自印"></el-option>
  43. </el-select>
  44. </template>
  45. </el-form-item>
  46. <el-form-item label="产品材质" :label-width=" lang === 'en' ? '145px' : '85px'">
  47. <el-select
  48. v-model="dataForm.skuName"
  49. clearable
  50. placeholder="产品材质"
  51. size="small">
  52. <el-option key="lm" label="镜面膜" value="镜面膜"></el-option>
  53. <el-option key="ym" label="哑膜" value="哑膜"></el-option>
  54. <el-option key="ls" label="镭射" value="镭射"></el-option>
  55. <el-option key="bls" label="玻璃碎" value="玻璃碎"></el-option>
  56. <el-option key="mtx" label="满天星" value="满天星"></el-option>
  57. <el-option key="xxm" label="星星" value="星星"></el-option>
  58. <el-option key="axm" label="爱心膜" value="爱心膜"></el-option>
  59. <el-option key="szxs" label="十字星闪" value="十字星闪"></el-option>
  60. <el-option key="wjx" label="五角旗星" value="五角旗星"></el-option>
  61. <el-option key="yhm" label="烟花膜" value="烟花膜"></el-option>
  62. </el-select>
  63. </el-form-item>
  64. <!--<el-form-item :label="this.$i18n.t('order.orderType') + ':'" :label-width=" lang === 'en' ? '145px' : '85px'">
  65. <el-select
  66. v-model="dataForm.orderType"
  67. clearable
  68. :placeholder="this.$i18n.t('order.orderType')"
  69. size="small"
  70. >
  71. <el-option
  72. v-for="item in orderType"
  73. :key="item.value"
  74. :label="item.label"
  75. :value="item.value"
  76. ></el-option>
  77. </el-select>
  78. </el-form-item>-->
  79. <!--<el-form-item :label="this.$i18n.t('order.orderMold') + ':'" :label-width=" lang === 'en' ? '145px' : '85px'">
  80. <el-select
  81. v-model="dataForm.orderMold"
  82. clearable
  83. :placeholder="this.$i18n.t('order.orderMold')"
  84. size="small"
  85. >
  86. <el-option
  87. v-for="item in orderMold"
  88. :key="item.value"
  89. :label="item.label"
  90. :value="item.value"
  91. ></el-option>
  92. </el-select>
  93. </el-form-item>-->
  94. <el-form-item label="审阅状态" :label-width=" lang === 'en' ? '145px' : '85px'">
  95. <el-select
  96. v-model="dataForm.auditStatus"
  97. clearable
  98. placeholder="审阅状态"
  99. size="small">
  100. <el-option key="1" label="已审阅" value="1"></el-option>
  101. <el-option key="0" label="待审阅" value="0"></el-option>
  102. </el-select>
  103. </el-form-item>
  104. <el-form-item label="是否推广" :label-width=" lang === 'en' ? '145px' : '85px'">
  105. <el-select
  106. v-model="dataForm.isPromotion"
  107. clearable
  108. placeholder="是否推广"
  109. size="small">
  110. <el-option key="1" label="推广单" value="1"></el-option>
  111. <el-option key="0" label="普通单" value="0"></el-option>
  112. </el-select>
  113. </el-form-item>
  114. <!--<el-form-item :label="this.$i18n.t('group.orderStatus') + ':'" :label-width=" lang === 'en' ? '145px' : '85px'">
  115. <el-select
  116. v-model="status"
  117. clearable
  118. :placeholder="this.$i18n.t('order.statusMsg')"
  119. size="small"
  120. @change="orderStatus"
  121. >
  122. <el-option
  123. v-for="item in options"
  124. :key="item.value"
  125. :label="item.label"
  126. :value="item.value"
  127. ></el-option>
  128. </el-select>
  129. </el-form-item>-->
  130. <el-form-item :label="this.$i18n.t('order.theRecipientSName') + ':'" :label-width=" lang === 'en' ? '145px' : '100px'">
  131. <el-input
  132. v-model="dataForm.receiver"
  133. :placeholder="this.$i18n.t('order.pleaseEnRecipName')"
  134. clearable
  135. size="small"
  136. ></el-input>
  137. </el-form-item>
  138. <el-form-item :label="this.$i18n.t('shop.contactTel') + ':'" :label-width=" lang === 'en' ? '145px' : '85px'">
  139. <el-input
  140. v-model="dataForm.mobile"
  141. :placeholder="this.$i18n.t('order.pleaseEnterNumber')"
  142. clearable
  143. size="small"
  144. ></el-input>
  145. </el-form-item>
  146. <!--<el-form-item :label="this.$i18n.t('order.paymentMethod') + ':'" :label-width=" lang === 'en' ? '145px' : '85px'">
  147. <template>
  148. <el-select
  149. v-model="dataForm.payType"
  150. size="small"
  151. clearable
  152. :placeholder="this.$i18n.t('order.paymentMethod')"
  153. >
  154. <el-option
  155. v-for="item in payType"
  156. :key="item.value"
  157. :label="item.label"
  158. :value="item.value"
  159. ></el-option>
  160. </el-select>
  161. </template>
  162. </el-form-item>-->
  163. <!-- &nbsp;&nbsp;&nbsp; -->
  164. <el-form-item label="快递单号" :label-width=" lang === 'en' ? '145px' : '85px'">
  165. <el-input
  166. v-model="dataForm.dvyFlowId"
  167. placeholder="请输入快递单号"
  168. clearable
  169. size="small"
  170. ></el-input>
  171. </el-form-item>
  172. <!--<el-form-item :label="this.$i18n.t('order.afterSalesStatus') + ':'" :label-width=" lang === 'en' ? '145px' : '85px'">
  173. <template>
  174. <el-select
  175. v-model="dataForm.refundStatus"
  176. clearable
  177. :placeholder="this.$i18n.t('order.afterSalesStatus')"
  178. size="small"
  179. >
  180. <el-option
  181. v-for="item in refund"
  182. :key="item.value"
  183. :label="item.label"
  184. :value="item.value"
  185. ></el-option>
  186. </el-select>
  187. </template>
  188. </el-form-item>-->
  189. <!-- <el-form-item :label="this.$i18n.t('order.logisticsType') + ':'" :label-width=" lang === 'en' ? '145px' : '85px'">-->
  190. <!-- <template>-->
  191. <!-- <el-select-->
  192. <!-- v-model="dataForm.dvyType"-->
  193. <!-- clearable-->
  194. <!-- :placeholder="this.$i18n.t('order.logisticsType')"-->
  195. <!-- size="small"-->
  196. <!-- >-->
  197. <!-- <el-option-->
  198. <!-- v-for="item in dvyType"-->
  199. <!-- :key="item.value"-->
  200. <!-- :label="item.label"-->
  201. <!-- :value="item.value"-->
  202. <!-- ></el-option>-->
  203. <!-- </el-select>-->
  204. <!-- </template>-->
  205. <!-- </el-form-item>-->
  206. <!-- <el-form-item :label="this.$i18n.t('station.prodStation') + ':'" :label-width=" lang === 'en' ? '145px' : '100px'">-->
  207. <!-- <el-input-->
  208. <!-- v-model="dataForm.stationName"-->
  209. <!-- :placeholder="this.$i18n.t('station.prodStation')"-->
  210. <!-- clearable-->
  211. <!-- size="small"-->
  212. <!-- ></el-input>-->
  213. <!-- </el-form-item>-->
  214. <el-form-item label="订购数量:" :label-width=" lang === 'en' ? '145px' : '85px'">
  215. <InputNumberRange v-model="productNumsRange"></InputNumberRange>
  216. </el-form-item>
  217. <!-- &nbsp;&nbsp;&nbsp; -->
  218. <el-form-item :label="this.$i18n.t('order.createTime') + ':' " :label-width=" lang === 'en' ? '145px' : '85px'">
  219. <el-date-picker
  220. size="small"
  221. v-model="dateRange"
  222. type="datetimerange"
  223. :range-separator="this.$i18n.t('time.tip')"
  224. value-format="yyyy-MM-dd HH:mm:ss"
  225. :start-placeholder="this.$i18n.t('time.start')"
  226. :end-placeholder="this.$i18n.t('time.end')"
  227. ></el-date-picker
  228. >
  229. </el-form-item>
  230. <el-form-item>
  231. <div class="default-btn" :class="{ 'is-active': timeActive === 1 }" @click="setDateRange(1)">{{
  232. $t("time.t")
  233. }}</div>
  234. <div class="default-btn" :class="{ 'is-active': timeActive === 2 }" @click="setDateRange(2)">{{
  235. $t("time.y")
  236. }}</div>
  237. <div class="default-btn" :class="{ 'is-active': timeActive === 3 }" @click="setDateRange(3)">{{
  238. $t("time.n")
  239. }}</div>
  240. <div class="default-btn" :class="{ 'is-active': timeActive === 4 }" @click="setDateRange(4)">{{
  241. $t("temp.m")
  242. }}</div>
  243. <div
  244. class="default-btn primary-btn"
  245. @click="searchChange(true)"
  246. >{{ $t("order.query") }}</div
  247. >
  248. <!-- <div-->
  249. <!-- class="default-btn"-->
  250. <!-- @click="getSoldExcel()"-->
  251. <!-- >{{ $t("formData.export") }}</div-->
  252. <!-- >-->
  253. <div
  254. class="default-btn"
  255. @click="clear()"
  256. >{{ $t("shop.resetMap") }}</div
  257. >
  258. <!-- <div-->
  259. <!-- v-if="isAuth('order:order:exportunorder')"-->
  260. <!-- class="default-btn"-->
  261. <!-- @click="uploadSpu"-->
  262. <!-- >{{ $t("order.BulkShipping") }}</div-->
  263. <!-- >-->
  264. </el-form-item>
  265. <el-form-item label="产品专区" :label-width=" lang === 'en' ? '145px' : '85px'">
  266. <el-select
  267. v-model="dataForm.prodZone"
  268. clearable
  269. placeholder="产品专区"
  270. size="small">
  271. <el-option key="jm" label="集美" value="集美"></el-option>
  272. <el-option key="sk" label="闪卡" value="闪卡"></el-option>
  273. <el-option key="Seventeen" label="Seventeen" value="Seventeen"></el-option>
  274. <el-option key="ZEROBASEONE" label="ZEROBASEONE" value="ZEROBASEONE"></el-option>
  275. </el-select>
  276. </el-form-item>
  277. </div>
  278. </el-form>
  279. </div>
  280. <div class="main">
  281. <div class="content">
  282. <!-- 导航 -->
  283. <div class="order-status-nav clearfix">
  284. <ul class="nav-list clearfix">
  285. <li
  286. :class="['nav-item', activeName == 0 ? 'selected' : '']"
  287. data-sts="0"
  288. @click="selectNav($event)"
  289. >
  290. {{ $t('time.a') }}
  291. </li>
  292. <li
  293. :class="['nav-item', activeName == 1 ? 'selected' : '']"
  294. data-sts="1"
  295. @click="selectNav($event)"
  296. >
  297. {{ $t('order.pendingPayment') }}
  298. </li>
  299. <li
  300. :class="['nav-item', activeName == 2 ? 'selected' : '']"
  301. data-sts="2"
  302. @click="selectNav($event)"
  303. >
  304. {{ $t('order.toBeShipped') }}
  305. </li>
  306. <li
  307. :class="['nav-item', activeName == 3 ? 'selected' : '']"
  308. data-sts="3"
  309. @click="selectNav($event)"
  310. >
  311. {{ $t("order.pendingReceipt") }}
  312. </li>
  313. <li
  314. :class="['nav-item', activeName == 5 ? 'selected' : '']"
  315. data-sts="5"
  316. @click="selectNav($event)"
  317. >
  318. {{ $t("order.successfulTransaction") }}
  319. </li>
  320. <li
  321. :class="['nav-item', activeName == 6 ? 'selected' : '']"
  322. data-sts="6"
  323. @click="selectNav($event)"
  324. >
  325. {{ $t("order.transactionFailed") }}
  326. </li>
  327. <li
  328. :class="['nav-item', activeName == 7 ? 'selected' : '']"
  329. data-sts="7"
  330. @click="selectNav($event)"
  331. >
  332. {{ $t("group.waitGroup") }}
  333. </li>
  334. <li
  335. :class="['nav-item', activeName == 8 ? 'selected' : '']"
  336. data-sts="8"
  337. @click="selectNav($event)"
  338. >
  339. 待推送打印
  340. </li>
  341. <li
  342. :class="['nav-item', activeName == 9 ? 'selected' : '']"
  343. data-sts="9"
  344. @click="selectNav($event)"
  345. >
  346. 打印待发货
  347. </li>
  348. <li
  349. :class="['nav-item', activeName == 10 ? 'selected' : '']"
  350. data-sts="10"
  351. @click="selectNav($event)"
  352. >
  353. 普通待发货
  354. </li>
  355. </ul>
  356. <ul class="nav-right"></ul>
  357. </div>
  358. <el-checkbox @change="checked=>handleSelectAll(checked)" class="all-check-btn" v-model="selectAll">全选 </el-checkbox>
  359. <span v-if="dataListSelections.size" class="had-selected">已选 {{dataListSelections.size}}</span>
  360. <div
  361. class="default-btn"
  362. @click="openGeneratePrintPdfBatchDialog">
  363. 批量生成PDF
  364. </div>
  365. <div
  366. class="default-btn"
  367. @click="openCreateOrderBatchDialog">
  368. 批量推送订单
  369. </div>
  370. <div
  371. class="default-btn"
  372. @click="deliveryThirdBatch">
  373. 批量发货
  374. </div>
  375. <el-button style="margin-left: 20px" size="small" type="primary" @click="openPromotionDialog">
  376. 推广数据
  377. </el-button>
  378. <el-button style="margin-left: 20px" size="small" type="primary" :loading="exportDeliveryLoading" @click="handleExportDelivery">
  379. 导出发货信息
  380. </el-button>
  381. <!-- 列标题 -->
  382. <div :class="['tit', showHeadScroll ? 'fixed-top' : '']">
  383. <el-row style="width: 100%">
  384. <el-col :span="5" id="prod-info-title">
  385. <span class="item product">{{ $t("temp.prodInfo") }}</span>
  386. </el-col>
  387. <el-col :span="3" id="price-title" class="transaction-price">
  388. <span class="item">{{ $t("order.transaQuantity") }}</span>
  389. </el-col>
  390. <el-col :span="3" class="column-title">
  391. <span class="item">{{ $t("order.actualPaymentAmount") }}</span>
  392. </el-col>
  393. <el-col :span="2" class="column-title">
  394. <span class="item">{{ $t("order.paymentMethod") }}</span>
  395. </el-col>
  396. <el-col :span="3" class="column-title">
  397. <span class="item">{{ $t("order.buyerConsignee") }}</span>
  398. </el-col>
  399. <el-col :span="2" class="column-title">
  400. <span class="item">{{ $t("group.orderStatus") }}</span>
  401. </el-col>
  402. <el-col :span="2" class="column-title">
  403. <span class="item">{{ $t("order.afterSalesStatus") }}</span>
  404. </el-col>
  405. <el-col :span="2" class="column-title">
  406. <span class="item">客服备注</span>
  407. </el-col>
  408. <el-col :span="2" class="column-title">
  409. <span class="item">{{ $t("publics.operating") }}</span>
  410. </el-col>
  411. </el-row>
  412. </div>
  413. <div
  414. class="prod"
  415. v-for="(order, index) in dataList"
  416. :key="order.orderId"
  417. >
  418. <div class="prod-tit">
  419. <el-checkbox v-model="order.checkStatus" :ref="'checkbox' + index" @change="checked=>handleSelectionChange(checked, order.orderNumber)"></el-checkbox>
  420. <span class="order-index">No.{{index + 1}}</span>
  421. <span class="order-number">{{ $t("order.number") }}:{{ order.orderNumber }}</span>
  422. <span class="order-time">{{ $t("order.createTime") }}:{{ order.createTime }}</span>
  423. <el-tag effect="dark" v-if="order.auditStatus==0" type="danger">待审阅</el-tag>
  424. <el-tag effect="dark" v-else-if="order.auditStatus==1" type="success">已审阅</el-tag>
  425. <el-tag effect="dark" v-else type="danger">待审阅</el-tag>
  426. <div v-if="order.isPromotion === 1">
  427. <el-tag effect="dark" v-if="order.isPromotion === 1" type="primary">推广单</el-tag>
  428. <el-button type="text" @click="openOrderPromotionDialog(order.orderNumber, order.prodName)">推广链接</el-button>
  429. </div>
  430. <!-- <span>店铺名称:{{order.shopName}}</span> -->
  431. <!-- <span>买家:19999999999</span>
  432. <span >联系电话:19999999999</span>-->
  433. </div>
  434. <div class="prod-cont">
  435. <el-row style="width: 100%">
  436. <el-col :span="8" style="height: 100%">
  437. <div class="item prod-item">
  438. <div
  439. class="items name"
  440. v-for="orderItem in order.orderItems"
  441. :key="orderItem.orderItemId"
  442. >
  443. <!-- 商品信息 -->
  444. <div class="order-prod-item-info">
  445. <div class="info">
  446. <div class="prod-image">
  447. <prod-pic
  448. height="60"
  449. width="60"
  450. :pic="orderItem.pic"
  451. ></prod-pic>
  452. </div>
  453. <div class="prod-name">
  454. <div class="prod-con">
  455. <div class="prod-name-txt">
  456. {{ orderItem.prodName }}
  457. </div>
  458. <div
  459. class="order-status"
  460. v-if="order.orderType === 1 || order.orderType === 2"
  461. >
  462. {{
  463. order.orderType === 1
  464. ? $t("order.groupPurchaseOrder")
  465. : order.orderType === 2
  466. ? $t("order.spikeOrder")
  467. : ""
  468. }}
  469. </div>
  470. <div
  471. class="order-status"
  472. v-if="order.orderMold === 1"
  473. >
  474. {{ $t("order.virtualOrder") }}
  475. </div>
  476. <div
  477. class="order-status"
  478. v-if="
  479. !orderItem.returnMoneySts ||
  480. orderItem.returnMoneySts < 0 ||
  481. orderItem.returnMoneySts > 5
  482. "
  483. >
  484. {{
  485. orderItem.status === 0 && order.status === 2
  486. ? $t("order.pendingReceipt")
  487. : [
  488. "",
  489. $t("order.pendingPayment"),
  490. $t("order.toBeShipped"),
  491. $t("order.pendingReceipt"),
  492. "",
  493. $t("order.successfulTransaction"),
  494. $t("order.transactionFailed"),
  495. $t("group.waitGroup"),
  496. ][order.status]
  497. }}
  498. </div>
  499. <div class="order-status" v-else>
  500. {{
  501. [
  502. "",
  503. $t("order.buyerApplication"),
  504. $t("order.sellerAccepts"),
  505. $t("order.selShipment"),
  506. $t("order.sellerReceipt"),
  507. $t("order.refundSuccessfully"),
  508. ][orderItem.returnMoneySts]
  509. }}
  510. </div>
  511. <div
  512. class="order-status"
  513. v-if="order.dvyType === 2 || order.dvyType === 4"
  514. >
  515. {{
  516. order.dvyType === 2
  517. ? $t("order.selfMention")
  518. : order.dvyType === 4
  519. ? $t("order.sameCityDelivery")
  520. : ""
  521. }}
  522. </div>
  523. <!-- <span class="prod-info">{{orderItem.skuName}}</span> -->
  524. <div
  525. class="order-status"
  526. v-if="orderItem.preSaleTime !== null"
  527. >
  528. {{ $t('order.EstimatedDeliveryTime') }}{{ orderItem.preSaleTime }}
  529. </div>
  530. </div>
  531. </div>
  532. </div>
  533. <!-- 赠品信息 -->
  534. <div v-if="orderItem.giveawayList" class="order-prod-item-give-con">
  535. <div class="giveaway-item" v-for="(giveawayItem, giveIndex) in orderItem.giveawayList" :key="giveIndex">
  536. <div class="giveaway-item-name"> 【{{$i18n.t('order.giveawayPord')}}】 {{giveawayItem.prodName}}</div>
  537. <div class="giveaway-item-sku-count">{{giveawayItem.skuName || ''}} x{{giveawayItem.prodCount}}</div>
  538. </div>
  539. </div>
  540. </div>
  541. <div class="prod-price">
  542. <span>{{ orderItem.price.toFixed(2) }}</span>
  543. <span
  544. >{{ orderItem.prodCount
  545. }}{{ $t("marketing.item") }}</span
  546. >
  547. </div>
  548. </div>
  549. </div>
  550. </el-col>
  551. <el-col :span="3" style="height: 100%">
  552. <div class="item">
  553. <div>
  554. <span class="totalprice"
  555. >{{ order.actualTotal.toFixed(2)}}
  556. </span
  557. >
  558. <span
  559. class="totalprice"
  560. v-if="order.payScore && order.payScore > 0"
  561. >+ {{ order.payScore }}{{ $t("order.integral") }}</span
  562. >
  563. <span class="totalprice" v-if="order.freightAmount && order.freightAmount - order.platformFreeFreightAmount > 0"
  564. >({{ $t("order.includingFreight") }}:{{
  565. (order.freightAmount - order.platformFreeFreightAmount).toFixed(2)
  566. }})</span
  567. >
  568. <br />
  569. <span
  570. >{{ $t("order.total") }}{{ order.productNums
  571. }}{{ $t("marketing.item") }}</span
  572. >
  573. <br />
  574. <div
  575. class="default-btn text-btn"
  576. @click="editAmount(order)"
  577. v-if="order.status === 1"
  578. >{{ $t("order.modifyTheAmount") }}</div
  579. >
  580. </div>
  581. </div>
  582. </el-col>
  583. <!-- 支付方式 -->
  584. <el-col :span="2" style="height: 100%">
  585. <div class="item">
  586. <div>
  587. <span v-if="(!order.payType && order.payType != 0) || order.status === 1">{{
  588. $t("order.unpaid")
  589. }}</span>
  590. <span v-else>
  591. {{
  592. [
  593. $t("order.pointsPayment"),
  594. $t("order.wecProPay"),
  595. $t("order.alipayPCPayment"),
  596. $t("order.wechatScanCodePayment"),
  597. $t("order.wechatH5Payment"),
  598. $t("order.weclAccountPay"),
  599. $t("order.alipayH5Payment"),
  600. $t("order.alipayAPPPayment"),
  601. $t("order.wechatAPPPayment"),
  602. $t("order.balancePayment"),
  603. $t("order.payPalPayment"),
  604. ][order.payType]
  605. }}
  606. </span>
  607. </div>
  608. </div>
  609. </el-col>
  610. <!-- 买家信息 -->
  611. <el-col :span="3" style="height: 100%">
  612. <div class="item">
  613. <div class="buyer-info">
  614. <div>
  615. <el-tooltip placement="top">
  616. <div slot="content" style="font-size: 16px">
  617. <div v-if="order.userAddrOrder">
  618. <span>{{order.userAddrOrder.province }}</span>
  619. <span>{{order.userAddrOrder.city }}</span>
  620. <span>{{order.userAddrOrder.area }}</span>
  621. <span>{{order.userAddrOrder.street }}</span>
  622. <span>{{order.userAddrOrder.addr }}</span>
  623. </div>
  624. </div>
  625. <div>
  626. <div class="buyer-name">{{ order.receiverName }}</div>
  627. <div class="buyer-phone">{{ order.receiverMobile }}</div><br/>
  628. <div class="buyer-phone" v-if="order.deliveryNo" style="text-decoration:underline;cursor: pointer; color: dodgerblue;font-size: 16px" @click="openDeliveryPage(order.deliveryNo, order.dvyNo)">{{order.deliveryNo}}</div>
  629. </div>
  630. </el-tooltip>
  631. </div>
  632. </div>
  633. </div>
  634. </el-col>
  635. <el-col :span="2" style="height: 100%">
  636. <div class="item">
  637. <!-- <span v-if="order.refundStatus === 1" size="small" type="danger">退款申请中</span> -->
  638. <span>
  639. <span
  640. v-if="order.status === 1"
  641. size="small"
  642. type="danger"
  643. >{{ $t("order.pendingPayment") }}</span
  644. >
  645. <span
  646. v-else-if="order.status === 2"
  647. size="small"
  648. type="danger"
  649. >{{ $t("order.toBeShipped") }}</span
  650. >
  651. <span
  652. v-else-if="order.status === 3"
  653. size="small"
  654. type="danger"
  655. >{{ $t("order.pendingReceipt") }}</span
  656. >
  657. <span
  658. v-else-if="order.status === 7"
  659. size="small"
  660. type="danger"
  661. >{{ $t("group.waitGroup") }}</span
  662. >
  663. <span
  664. v-else-if="order.status === 5"
  665. size="small"
  666. type="danger"
  667. >{{ $t("order.successfulTransaction") }}</span
  668. >
  669. <span v-else-if="order.status === 6" size="small">{{
  670. $t("order.transactionFailed")
  671. }}</span>
  672. </span>
  673. </div>
  674. </el-col>
  675. <el-col :span="2" style="height: 100%">
  676. <div class="item">
  677. <span v-if="order.refundStatus === 1">{{ $t("order.refundApplication") }}</span>
  678. <span v-else-if="order.refundStatus === 2">{{ $t("order.refundsuccessfully") }}</span>
  679. <span v-else-if="order.refundStatus === 3">{{ $t("order.partialRefundSucc") }}</span>
  680. <span v-else-if="order.refundStatus === 4">{{ $t("order.refundFailed") }}</span>
  681. <span v-else>{{$t("order.noAfterSales")}}</span>
  682. </div>
  683. </el-col>
  684. <el-col :span="2" style="height: 100%">
  685. <div class="item">
  686. <el-tooltip placement="top" v-if="order.remarks">
  687. <div slot="content" style="font-size: 16px">
  688. <span>{{ order.remarks }}</span>
  689. </div>
  690. <div>
  691. <div class="buyer-name" style="color:red;overflow: hidden; width: 100px; text-overflow:ellipsis">{{ order.remarks }}</div>
  692. </div>
  693. </el-tooltip>
  694. <span v-else>暂无备注</span>
  695. </div>
  696. </el-col>
  697. <el-col :span="2" style="height: 100%">
  698. <div class="item">
  699. <div class="operate">
  700. <!-- <button onclick="">打印订单</button><br> -->
  701. <div
  702. v-if="isAuth('order:get:info')"
  703. class="default-btn text-btn operate-btn"
  704. @click="addOrUpdateHandle(order.orderNumber, order.shopId, order.status)"
  705. >{{ $t("order.seeDetails") }}</div
  706. >
  707. <div
  708. class="default-btn text-btn operate-btn"
  709. @click="toImbox(order)"
  710. >{{ $t("order.contactBuyer") }}</div
  711. >
  712. <div
  713. class="default-btn text-btn operate-btn"
  714. v-if="
  715. isAuth('order:delivery:orderItemsDelivery') &&
  716. order.status == 3 &&
  717. (!order.refundStatus || order.refundStatus > 2) &&
  718. order.dvyType === 1
  719. "
  720. @click="reviseLogistics(order.orderNumber)"
  721. >{{ $t("order.modifyLogistics") }}</div
  722. >
  723. <div
  724. class="default-btn text-btn operate-btn"
  725. v-if="isAuth('order:delivery:orderItemsDelivery') && order.status === 2 && order.dvyType !== 2 && order.orderMold !== 1"
  726. @click="changeOrder(order)"
  727. >{{ $t("order.delivery") }}</div
  728. >
  729. <div
  730. class="default-btn text-btn operate-btn"
  731. v-if="order.isPromotion === 1"
  732. @click="markPromotion(order)"
  733. >取消推广
  734. </div>
  735. <!--<div
  736. class="default-btn text-btn operate-btn"
  737. v-else
  738. @click="markPromotion(order)"
  739. >标记推广
  740. </div>-->
  741. <div
  742. class="default-btn text-btn operate-btn"
  743. v-if="order.status === 1"
  744. @click="orderConfirmPay(order)"
  745. >确认支付
  746. </div>
  747. <!--<div
  748. class="default-btn text-btn operate-btn"
  749. v-if="order.status == 2"
  750. @click="scanDelivey(order)"
  751. >扫码发货
  752. </div>-->
  753. <div
  754. class="default-btn text-btn operate-btn"
  755. v-if="isAuth('admin:station:orderItemsDelivery') && order.status === 2 && order.dvyType === 2"
  756. @click="stationOrder(order)"
  757. >{{ $t("order.pickUp") }}</div
  758. >
  759. <div
  760. class="default-btn text-btn operate-btn"
  761. v-if="isAuth('admin:station:orderItemsDelivery') && (!order.refundStatus || order.refundStatus > 2)
  762. && order.orderMold === 1 && order.writeOffNum !== 0 && (order.status === 3 ||order.status === 5)
  763. && order.writeOffCodes && order.writeOffCodes.length > 0 "
  764. @click="stationOrder(order)"
  765. >{{ $t("order.Writeoffs") }}</div
  766. >
  767. <div
  768. class="default-btn text-btn operate-btn"
  769. @click="refundRoute(order.orderNumber)"
  770. v-if="isAuth('admin:orderRefund:update') && order.refundStatus"
  771. >{{ $t("order.refundInformation") }}</div
  772. >
  773. <!--<div
  774. class="default-btn text-btn operate-btn"
  775. @click="generatePrintPdf(order.orderNumber, order.shopId)">{{ $t("order.generatePrintPdf") }}</div>-->
  776. </div>
  777. </div>
  778. </el-col>
  779. </el-row>
  780. </div>
  781. <!-- <div class="remark">
  782. <div class="buyer-remark">
  783. <span>备注:{{order.remarks}}</span>
  784. </div>
  785. </div>-->
  786. </div>
  787. <div class="empty" v-if="!dataList.length">
  788. {{ $t("order.noData") }}
  789. </div>
  790. </div>
  791. </div>
  792. <el-pagination
  793. ref="orderListTable"
  794. v-if="dataList.length"
  795. @size-change="sizeChangeHandle"
  796. @current-change="currentChangeHandle"
  797. :current-page="page.currentPage"
  798. :page-sizes="[10, 20, 50, 100]"
  799. :page-size="page.pageSize"
  800. :total="page.total"
  801. layout="total, sizes, prev, pager, next, jumper"
  802. ></el-pagination>
  803. <!-- 弹窗, 新增 / 修改 -->
  804. <order-station
  805. v-if="orderStationVisible"
  806. ref="orderStation"
  807. @refreshOrderStationDataList="getDataList"
  808. ></order-station>
  809. <consignment-info
  810. v-if="consignmentInfoVisible"
  811. ref="consignmentInfo"
  812. @inputCallback="getWaitingConsignmentExcel"
  813. ></consignment-info>
  814. <orderAmount-update
  815. v-if="orderAmountUpdateVisible"
  816. ref="orderAmountUpdate"
  817. @refreshOrderAmountUpdate="getDataList"
  818. ></orderAmount-update>
  819. <order-delivery-update
  820. v-if="devyVisible"
  821. ref="orderDeliveryUpdate"
  822. @refreshOrderDeliveryUpdate="getDataList"
  823. ></order-delivery-update>
  824. <!-- 修改物流弹窗 -->
  825. <!-- <el-dialog :title="修改物流" width="70%"></el-dialog> -->
  826. <el-dialog
  827. :title="this.$i18n.t('order.modifyLogistics')"
  828. :close-on-click-modal="false"
  829. :visible.sync="logVisible"
  830. @closed="handleClose"
  831. width="50%"
  832. >
  833. <!-- 修改 -->
  834. <div class="revise-log" v-if="isReviseLog">
  835. <div class="change-logistics">
  836. <div class="warning">{{ $t("order.ifModifyTheLog") }}</div>
  837. <div class="log-list">
  838. <div
  839. class="item"
  840. v-for="(logItem, index) in logisticsInfo"
  841. :key="index"
  842. >
  843. <div class="i-tit">
  844. <div class="big">{{ $t("order.package") }}{{ index + 1 }}</div>
  845. <div class="text">
  846. {{ $t("order.total") }} {{ logItem.productNums }}
  847. {{ $t("marketing.item") }}{{ $t("home.product") }}
  848. </div>
  849. </div>
  850. <!-- <div class="i-con">
  851. <div class="label">发货方式:</div>
  852. <div class="con">
  853. <div class="con-radio">
  854. <input type="radio" name="checkit" value="" checked="true"/><span>需要物流</span>
  855. </div>
  856. </div>
  857. </div>
  858. <div class="i-con">
  859. <div class="label">物流公司:</div>
  860. <div class="con">
  861. <div class="con-select">申通快递</div>
  862. <div class="con-text">
  863. <div class="text">运单号编:</div>
  864. <input type="text" />
  865. </div>
  866. </div>
  867. </div>-->
  868. <el-form
  869. :model="logDataForm"
  870. ref="logDataForm"
  871. @keyup.enter.native="logDataFormSubmit()"
  872. :label-width=" lang === 'en' ? '205px' : '95px'"
  873. >
  874. <div class="item-goods">
  875. <div class="goods-box" ref="carouser">
  876. <div
  877. class="item"
  878. v-for="(
  879. orderItem, index
  880. ) in logItem.orderItems"
  881. :key="index"
  882. >
  883. <div class="img">
  884. <prod-pic
  885. height="60"
  886. width="60"
  887. :pic="orderItem.pic"
  888. ></prod-pic>
  889. <div class="number">×{{ orderItem.prodCount }}</div>
  890. </div>
  891. <div class="name">{{ orderItem.prodName }}</div>
  892. </div>
  893. </div>
  894. </div>
  895. <el-form-item
  896. :label="$t('order.delType') + ':'"
  897. style="margin-left:15px;"
  898. >
  899. <el-radio-group v-model="logItem.deliveryType">
  900. <el-radio :label="1" v-model="radio" disabled>{{
  901. $t("order.distribution")
  902. }}</el-radio>
  903. <el-radio :label="3" v-model="radio" disabled>{{
  904. $t("order.noNeedRequired")
  905. }}</el-radio>
  906. </el-radio-group>
  907. </el-form-item>
  908. <div v-if="logItem.deliveryType === 1" class="info-int">
  909. <el-form-item
  910. :label="$t('order.courierCompany') + ':'"
  911. class="form-item"
  912. style="margin-left:15px;"
  913. >
  914. <div class="con">
  915. <el-select v-model="logItem.dvyId" size="small">
  916. <!-- :placeholder="this.$i18n.t('tip.select')" -->
  917. <el-option
  918. v-for="item in logDataForm.dvyNames"
  919. :key="item.dvyId"
  920. :label="item.dvyName"
  921. :value="item.dvyId"
  922. ></el-option>
  923. </el-select>
  924. </div>
  925. </el-form-item>
  926. <el-form-item
  927. :label="$t('order.trackingNumber') + ':'"
  928. class="form-item"
  929. >
  930. <el-input
  931. v-model="logItem.dvyFlowId"
  932. controls-position="right"
  933. :min="0"
  934. size="small"
  935. ></el-input>
  936. <!-- :label="this.$i18n.t('order.trackingNumber')" -->
  937. </el-form-item>
  938. </div>
  939. </el-form>
  940. </div>
  941. </div>
  942. </div>
  943. </div>
  944. <!-- 确认 -->
  945. <div class="change-logistics" v-if="!isReviseLog">
  946. <div class="warning">{{ $t("order.ifModifyTheLog") }}</div>
  947. <el-table class="log-info-table" :data="confirmList">
  948. <!-- <div v-for="(item,index) in confirmList" :key="index"> -->
  949. <el-table-column
  950. property="dvyIdName"
  951. :label="this.$i18n.t('order.packageName')"
  952. width="220"
  953. style="text-align: left"
  954. ></el-table-column>
  955. <el-table-column
  956. property="productNums"
  957. :label="this.$i18n.t('order.amountOfGoods')"
  958. width="140"
  959. ></el-table-column>
  960. <el-table-column
  961. property="delMethod"
  962. :label="this.$i18n.t('order.deliveryMethod')"
  963. width="140"
  964. ></el-table-column>
  965. <el-table-column
  966. property="dvyName"
  967. :label="this.$i18n.t('order.logisticsCompany')"
  968. width="170"
  969. ></el-table-column>
  970. <el-table-column
  971. property="dvyFlowId"
  972. :label="this.$i18n.t('order.trackingNumber')"
  973. ></el-table-column>
  974. <!-- </div> -->
  975. </el-table>
  976. </div>
  977. <div slot="footer" v-if="isReviseLog" class="dialog-footer">
  978. <div class="default-btn" @click="logVisible = false">{{
  979. $t("crud.filter.cancelBtn")
  980. }}</div>
  981. <div class="default-btn primary-btn" @click="logDataFormSubmit()">{{
  982. $t("order.save")
  983. }}</div>
  984. </div>
  985. <div slot="footer" v-if="!isReviseLog" class="dialog-footer">
  986. <div class="default-btn" @click="backToRevise()">{{
  987. $t("order.backToModify")
  988. }}</div>
  989. <div class="default-btn primary-btn" @click="confirmRevise()">{{
  990. $t("order.confirmTheChanges")
  991. }}</div>
  992. </div>
  993. </el-dialog>
  994. <!-- /修改物流弹窗 -->
  995. <order-upload v-if="uploadVisible" ref="spuUpload" :param="dataForm" @refreshDataList1="getWaitingConsignmentExcel" />
  996. <order-info ref="orderInfo" @orderAuditStatusUpdate="handleOrderAuditStatusUpdate"></order-info>
  997. <orderPromotion ref="orderPromotion" ></orderPromotion>
  998. <el-dialog
  999. title="批量生成PDF"
  1000. :modal="false"
  1001. top="200px"
  1002. :close-on-click-modal="false"
  1003. :visible.sync="generatePrintPdfBatchVisible">
  1004. <el-form
  1005. ref="dataForm"
  1006. label-width="80px">
  1007. <el-form-item label="打印渠道" prop="printChannel">
  1008. <el-select v-model="printChannel" clearable filterable>
  1009. <!-- <el-option key="GSART" label="广森" value="GSART"></el-option>-->
  1010. <!-- <el-option key="WoNiu" label="蜗牛" value="WoNiu"></el-option>-->
  1011. <el-option key="KuaiYin" label="快印" value="KuaiYin"></el-option>
  1012. <el-option key="Lightning" label="闪电" value="Lightning"></el-option>
  1013. </el-select>
  1014. </el-form-item>
  1015. </el-form>
  1016. <span slot="footer">
  1017. <el-button type="info" @click="visible = false">{{$t("crud.filter.cancelBtn")}}</el-button>
  1018. <el-button type="primary" @click="generatePrintPdfBatch">{{$t("crud.filter.submitBtn")}}</el-button>
  1019. </span>
  1020. </el-dialog>
  1021. <el-dialog
  1022. title="确认打印订单"
  1023. :modal="false"
  1024. top="200px"
  1025. :close-on-click-modal="false"
  1026. :visible.sync="orderCreateBatchVisible">
  1027. <el-form
  1028. :model="dataForm"
  1029. ref="dataForm"
  1030. label-width="80px"
  1031. >
  1032. <el-form-item label="打印渠道" prop="printChannel">
  1033. <el-select v-model="printChannel" clearable filterable>
  1034. <!--<el-option key="GSART" label="广森" value="GSART"></el-option>
  1035. <el-option key="WoNiu" label="蜗牛" value="WoNiu"></el-option>-->
  1036. <el-option key="KuaiYin" label="快印" value="KuaiYin"></el-option>
  1037. <el-option key="Lightning" label="闪电" value="Lightning"></el-option>
  1038. </el-select>
  1039. </el-form-item>
  1040. </el-form>
  1041. <span slot="footer">
  1042. <el-button type="info" @click="visible = false">{{$t("crud.filter.cancelBtn")}}</el-button>
  1043. <el-button :loading="orderCreateBatchLoading" type="primary" @click="createOrderBatch">{{$t("crud.filter.submitBtn")}}</el-button>
  1044. </span>
  1045. </el-dialog>
  1046. </div>
  1047. </template>
  1048. <script>
  1049. import OrderStation from './order-station'
  1050. import ConsignmentInfo from './consignment-info'
  1051. import OrderAmountUpdate from './orderAmount-update'
  1052. import OrderDeliveryUpdate from './order-delivery-update'
  1053. import OrderUpload from './order-upload'
  1054. import moment from 'moment'
  1055. import ProdPic from '@/components/prod-pic'
  1056. import OrderInfo from "./orderInfo";
  1057. import TopTask from '@/components/top-task';
  1058. import InputNumberRange from '@/components/input-number-range';
  1059. import OrderPromotion from './orderPromotion';
  1060. import {} from "@/utils/excel";
  1061. import {downloadXls} from "@/utils/excel";
  1062. export default {
  1063. data () {
  1064. return {
  1065. // 是否全选
  1066. selectAll: false,
  1067. showHeadScroll: false, // 修改物流相关
  1068. logVisible: false,
  1069. radio: '1',
  1070. logisticsInfo: [], // 包裹列表
  1071. logDataForm: {
  1072. dvyId: '', // 当前物流公司id
  1073. dvyFlowId: '', // 物流单号
  1074. dvyNames: [] // 物流公司列表
  1075. },
  1076. uploadVisible: false,
  1077. lang: localStorage.getItem('lang'),
  1078. // logDataRule: {
  1079. // dvyFlowId: [
  1080. // { required: true, message: this.$i18n.t('publics.noNull'), trigger: 'blur' }
  1081. // ]
  1082. // },
  1083. errorNum: 0,
  1084. // 确认修改弹窗
  1085. isReviseLog: true, // 是否正在修改物流信息
  1086. confirmList: [], // 确认修改信息
  1087. dataForm: {},
  1088. sts: 0,
  1089. dateRange: [],
  1090. productNumsRange:[],
  1091. status: null,
  1092. options: [{
  1093. value: 1,
  1094. label: this.$i18n.t('order.pendingPayment')
  1095. },
  1096. {
  1097. value: 2,
  1098. label: this.$i18n.t('order.toBeShipped')
  1099. },
  1100. {
  1101. value: 3,
  1102. label: this.$i18n.t('order.pendingReceipt')
  1103. },
  1104. {
  1105. value: 5,
  1106. label: this.$i18n.t('order.successfulTransaction')
  1107. },
  1108. {
  1109. value: 6,
  1110. label: this.$i18n.t('order.transactionFailed')
  1111. },
  1112. {
  1113. value: 7,
  1114. label: this.$i18n.t('group.waitGroup')
  1115. },
  1116. {
  1117. value: 8,
  1118. label: '待推送打印'
  1119. },
  1120. {
  1121. value: 9,
  1122. label: '打印待发货'
  1123. },
  1124. {
  1125. value: 10,
  1126. label: '普通待发货'
  1127. },
  1128. {
  1129. value: 11,
  1130. label: '普通打印待发货'
  1131. }],
  1132. refund: [{
  1133. value: 0,
  1134. label: this.$i18n.t('order.noAfterSales')
  1135. },
  1136. {
  1137. value: 1,
  1138. label: this.$i18n.t('order.requestARefund')
  1139. },
  1140. {
  1141. value: 2,
  1142. label: this.$i18n.t('order.refundsuccessfully')
  1143. },
  1144. {
  1145. value: 3,
  1146. label: this.$i18n.t('order.partialRefundSucc')
  1147. },
  1148. {
  1149. value: 4,
  1150. label: this.$i18n.t('order.refundFailed')
  1151. }],
  1152. orderType: [{
  1153. value: 0,
  1154. label: this.$i18n.t('order.normalOrder')
  1155. }, {
  1156. value: 1,
  1157. label: this.$i18n.t('order.groupPurchaseOrder')
  1158. }, {
  1159. value: 2,
  1160. label: this.$i18n.t('order.spikeOrder')
  1161. }],
  1162. orderMold: [{
  1163. value: 0,
  1164. label: this.$i18n.t('order.physicalOrder')
  1165. }, {
  1166. value: 1,
  1167. label: this.$i18n.t('order.virtualOrder')
  1168. }],
  1169. dvyType: [{
  1170. value: 1,
  1171. label: this.$i18n.t('order.expressDelivery')
  1172. },
  1173. {
  1174. value: 2,
  1175. label: this.$i18n.t('order.selfMention')
  1176. },
  1177. {
  1178. value: 3,
  1179. label: this.$i18n.t('order.noNeedRequired')
  1180. },
  1181. {
  1182. value: 4,
  1183. label: this.$i18n.t('order.sameCityDelivery')
  1184. }],
  1185. payType: [{
  1186. value: 0,
  1187. label: this.$i18n.t('order.pointsPayment')
  1188. }, {
  1189. value: 1,
  1190. label: this.$i18n.t('admin.weChatPay')
  1191. }, {
  1192. value: 2,
  1193. label: this.$i18n.t('admin.aliPay')
  1194. }, {
  1195. value: 3,
  1196. label: this.$i18n.t('admin.balancePay')
  1197. }, {
  1198. value: 4,
  1199. label: this.$i18n.t('order.payPalPayment')
  1200. }],
  1201. resourcesUrl: process.env.VUE_APP_RESOURCES_URL,
  1202. dataList: [],
  1203. page: {
  1204. total: 0, // 总页数
  1205. currentPage: 1, // 当前页数
  1206. pageSize: 10 // 每页显示多少条
  1207. },
  1208. dataListLoading: false,
  1209. dataListSelections: new Set(),
  1210. devyVisible: false,
  1211. orderStationVisible: false,
  1212. consignmentInfoVisible: false,
  1213. orderAmountUpdateVisible: false,
  1214. activeName: '0',
  1215. timeActive: null,
  1216. priceWidth: '109px',
  1217. infoWidth: '400px',
  1218. generatePrintPdfBatchVisible: false,
  1219. orderCreateBatchVisible: false,
  1220. printChannel: "KuaiYin",
  1221. orderCreateBatchLoading: false,
  1222. exportDeliveryLoading:false,
  1223. confirmPayLoading: false,
  1224. }
  1225. },
  1226. components: {
  1227. OrderInfo,
  1228. OrderStation,
  1229. OrderAmountUpdate,
  1230. OrderDeliveryUpdate,
  1231. ConsignmentInfo,
  1232. OrderUpload,
  1233. ProdPic,
  1234. TopTask,
  1235. InputNumberRange,
  1236. OrderPromotion
  1237. },
  1238. computed: {
  1239. // 二级菜单折叠状态
  1240. sidebarFold: {
  1241. get () { return this.$store.state.common.sidebarFold },
  1242. set (val) { this.$store.commit('common/updateSidebarFold', val) }
  1243. }
  1244. },
  1245. created () {
  1246. // 首页跳转状态参数
  1247. this.activeName = this.$route.query.status ? String(this.$route.query.status) : '0'
  1248. this.sts = this.$route.query.status || 0
  1249. this.status = this.sts === 0 ? null : Number(this.sts)
  1250. // 携带参数查询
  1251. this.getDataList(this.page, this.$route.query)
  1252. // 请求物流公司
  1253. this.getLogisticsList()
  1254. },
  1255. activated () {
  1256. // 携带参数查询
  1257. var query = this.$route.query
  1258. if (Object.keys(query).length > 0) {
  1259. this.getDataList(this.page, query)
  1260. }
  1261. },
  1262. mounted () {
  1263. // 监听页面滚动
  1264. // window.addEventListener('scroll', this.scrollToTop)
  1265. // setTimeout(() => {
  1266. // this.getEleWidth()
  1267. // })
  1268. // window.onresize = () => {
  1269. // return (() => {
  1270. // setTimeout(() => {
  1271. // this.getEleWidth()
  1272. // })
  1273. // })()
  1274. // }
  1275. },
  1276. watch: {
  1277. },
  1278. methods: {
  1279. orderConfirmPay(order){
  1280. let _this = this
  1281. if (order.orderItems[0].actualTotal === 0.01){
  1282. toConfirmPay()
  1283. }else{
  1284. this.orderAmountUpdateVisible = true
  1285. this.$nextTick(()=>{
  1286. this.$refs.orderAmountUpdate.init(order)
  1287. this.$refs.orderAmountUpdate.setOrderAmountAndFreight(order, toConfirmPay)
  1288. })
  1289. }
  1290. function toConfirmPay() {
  1291. _this.$confirm('确定完成支付吗?', '提示', {
  1292. confirmButtonText: '确定',
  1293. cancelButtonText: '取消',
  1294. type: 'warning'
  1295. }).then(() => {
  1296. let dataBody = {"orderNumbers": order.orderNumber, "payType":9};
  1297. _this.$http({
  1298. url: _this.$http.adornUrl('/order/order/pay'),
  1299. method: 'post',
  1300. data:_this.$http.adornData(dataBody)
  1301. }).then(({ data }) => {
  1302. _this.$message.success("下单确认成功")
  1303. _this.getDataList(this.page)
  1304. })
  1305. });
  1306. }
  1307. },
  1308. scanDelivery(order){
  1309. },
  1310. handleExportDelivery(){
  1311. this.exportDeliveryLoading = true;
  1312. this.$http({
  1313. url: this.$http.adornUrl('/order/order/exportDeliveryInfo'),
  1314. method: 'GET',
  1315. params: this.$http.adornParams({startTime: this.dateRange[0], endTime: this.dateRange[1]}),
  1316. responseType: 'blob'
  1317. }).then(({data}) => {
  1318. this.exportDeliveryLoading = false;
  1319. let fileName = "微信发货订单信息";
  1320. downloadXls(data, fileName + ".xlsx");
  1321. }).catch((error) => {
  1322. this.exportDeliveryLoading = false;
  1323. this.$message.error(error)
  1324. })
  1325. },
  1326. openGeneratePrintPdfBatchDialog(){
  1327. this.generatePrintPdfBatchVisible = true;
  1328. },
  1329. openCreateOrderBatchDialog(){
  1330. this.orderCreateBatchVisible = true;
  1331. },
  1332. handleOrderAuditStatusUpdate(auditStatusReturn){
  1333. let it = this;
  1334. this.dataList.forEach((item, index) => {
  1335. if(item.orderNumber == auditStatusReturn.orderNumber){
  1336. it.$set(item,'auditStatus',auditStatusReturn.auditStatus)
  1337. return;
  1338. }
  1339. })
  1340. },
  1341. /**
  1342. * 全选按钮
  1343. */
  1344. handleSelectAll (checked) {
  1345. let it = this;
  1346. if(checked){
  1347. this.dataList.forEach((item, index) => {
  1348. it.$set(item,'checkStatus',true)
  1349. it.dataListSelections.add(item.orderNumber);
  1350. it.selectAll = true
  1351. })
  1352. }else{
  1353. this.dataList.forEach((item, index) => {
  1354. it.$set(item,'checkStatus',false)
  1355. it.dataListSelections.delete(item.orderNumber);
  1356. it.selectAll = false;
  1357. })
  1358. }
  1359. },
  1360. handleSelectionChange(checked, orderNumber){
  1361. if(checked){
  1362. this.dataListSelections.add(orderNumber);
  1363. }else{
  1364. this.dataListSelections.delete(orderNumber)
  1365. }
  1366. },
  1367. getEleWidth () {
  1368. let div = document.getElementById('price-title') // prod-info-title
  1369. let div1 = document.getElementById('prod-info-title')
  1370. if (!div && !div1) {
  1371. return
  1372. }
  1373. let w = div.offsetWidth // 返回元素的总宽度
  1374. let w1 = div1.offsetWidth
  1375. this.priceWidth = w + 'px'
  1376. this.infoWidth = w1 + 'px'
  1377. },
  1378. /**
  1379. * 关闭 修改物流弹窗
  1380. */
  1381. handleClose () {
  1382. this.isReviseLog = true
  1383. },
  1384. /**
  1385. * 页面滚动事件
  1386. */
  1387. scrollToTop () {
  1388. let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
  1389. this.showHeadScroll = scrollTop > 400
  1390. },
  1391. /**
  1392. * 获取包裹物流信息
  1393. */
  1394. reviseLogistics (orderNumber) {
  1395. // console.log(orderNumber)
  1396. this.logVisible = !this.logVisible
  1397. this.$http({
  1398. url: this.$http.adornUrl('/order/delivery/getOrderDeliveries/' + orderNumber),
  1399. method: 'put'
  1400. }).then(({ data }) => {
  1401. this.logisticsInfo = data
  1402. this.logisticsInfo.forEach((el, index) => {
  1403. el.newDvyFlowId = el.dvyFlowId
  1404. el.newDvyId = el.dvyId
  1405. el.dvyIdName = this.$i18n.t('order.package') + Number(index + 1)
  1406. // 修改弹窗
  1407. this.confirmList = [] // 清空确认列表
  1408. })
  1409. })
  1410. this.errorNum = 0
  1411. },
  1412. /**
  1413. * 请求物流公司列表
  1414. */
  1415. getLogisticsList () {
  1416. this.$http({
  1417. url: this.$http.adornUrl('/admin/delivery/list'),
  1418. method: 'get',
  1419. params: this.$http.adornParams()
  1420. }).then(({ data }) => {
  1421. this.logDataForm.dvyNames = data
  1422. })
  1423. },
  1424. /**
  1425. * 生成作品打印PDF
  1426. */
  1427. generatePrintPdf (orderNumber, shopId) {
  1428. this.$http({
  1429. url: this.$http.adornUrl('/order/thirdPrintOrder/generatePrintPdf'),
  1430. method: 'post',
  1431. data: this.$http.adornData({
  1432. orderNumber: orderNumber,
  1433. shopId: shopId
  1434. }),
  1435. }).then(({ data }) => {
  1436. if(data.status === "success"){
  1437. window.open(this.resourcesUrl + data.result.workUrl);
  1438. }else{
  1439. this.$message({
  1440. message: data.msg,
  1441. type: 'danger'
  1442. })
  1443. }
  1444. })
  1445. },
  1446. /**
  1447. * 批量生成打印订单PDF
  1448. */
  1449. generatePrintPdfBatch(){
  1450. let dataBody = {"orderNumberList": [...this.dataListSelections], "printChannel":this.printChannel};
  1451. this.$http({
  1452. url: this.$http.adornUrl('/order/thirdPrintOrder/generatePrintPdfBatch'),
  1453. method: 'post',
  1454. data: this.$http.adornData(dataBody)
  1455. }).then(({ data }) => {
  1456. if(data.status === "success"){
  1457. console.log("发送showTask")
  1458. this.$Bus.$emit('showTask', true)
  1459. }else{
  1460. this.$message({
  1461. message: data.msg,
  1462. type: 'error'
  1463. })
  1464. }
  1465. })
  1466. },
  1467. /**
  1468. * 批量推送打印订单P
  1469. */
  1470. createOrderBatch(){
  1471. this.orderCreateBatchLoading = true;
  1472. let dataBody = {"orderNumberList": [...this.dataListSelections], "printChannel":this.printChannel};
  1473. this.$http({
  1474. url: this.$http.adornUrl('/order/thirdPrintOrder/createOrderBatch'),
  1475. method: 'post',
  1476. data: this.$http.adornData(dataBody)
  1477. }).then(({ data }) => {
  1478. this.orderCreateBatchLoading = false;
  1479. if(data.status === "success"){
  1480. this.$message({
  1481. message: data.msg,
  1482. type: 'success'
  1483. })
  1484. }else{
  1485. this.$message({
  1486. message: data.msg,
  1487. type: 'error'
  1488. })
  1489. }
  1490. }).catch(()=>{
  1491. this.orderCreateBatchLoading = false;
  1492. })
  1493. },
  1494. /**
  1495. * 批量第三方发货
  1496. */
  1497. deliveryThirdBatch(){
  1498. let deliveryOrderItemParamList = [];
  1499. this.dataListSelections.forEach(item =>{
  1500. let deliveryOrderItemParam = {};
  1501. deliveryOrderItemParam.orderNumber = item;
  1502. deliveryOrderItemParam.deliveryType = 1
  1503. deliveryOrderItemParamList.push(deliveryOrderItemParam);
  1504. })
  1505. let dataBody = {"deliveryOrderItemParamList": deliveryOrderItemParamList};
  1506. this.$http({
  1507. url: this.$http.adornUrl('/order/delivery/orderItemsDeliveryThirdBatch'),
  1508. method: 'PUT',
  1509. data: this.$http.adornData(dataBody)
  1510. }).then(({ data }) => {
  1511. this.dataListSelections = new Set();
  1512. if(data.status === "success"){
  1513. this.$message({
  1514. message: "发货成功",
  1515. type: 'success'
  1516. })
  1517. }else{
  1518. this.$message({
  1519. message: data.msg,
  1520. type: 'danger'
  1521. })
  1522. }
  1523. })
  1524. },
  1525. /**
  1526. * 点击保存
  1527. */
  1528. logDataFormSubmit () {
  1529. // let reviseLogList = []
  1530. let flag = true
  1531. let logisticsInfo = this.logisticsInfo
  1532. logisticsInfo.map((el, index) => {
  1533. if (el.deliveryType === 3) {
  1534. return
  1535. }
  1536. if (!flag) {
  1537. return false
  1538. }
  1539. // console.log('logisticsInfo', el.logisticsInfo)
  1540. // console.log('el.dvyFlowId', el.dvyFlowId)
  1541. var reg = /^[a-zA-Z0-9]{4,30}$/
  1542. if (el.dvyFlowId.length === 0) {
  1543. this.$message({
  1544. message: this.$i18n.t('order.logEmpty'),
  1545. type: 'warning'
  1546. })
  1547. flag = false
  1548. this.errorNum = 1
  1549. // throw ('物流单号不能为空')
  1550. // return false
  1551. } else if (!reg.test(el.dvyFlowId)) {
  1552. this.$message({
  1553. message: this.$i18n.t('order.checkDvyId'),
  1554. type: 'warning'
  1555. })
  1556. flag = false
  1557. this.errorNum = 1
  1558. } else {
  1559. this.errorNum = 0
  1560. // console.log(el.newDvyFlowId)
  1561. let confirmList = this.confirmList
  1562. if ((el.newDvyFlowId.length !== 0 && el.newDvyFlowId !== el.dvyFlowId) || (el.newDvyId !== el.dvyId)) {
  1563. confirmList.push(el)
  1564. confirmList.forEach((el, index) => {
  1565. el.delMethod = this.$i18n.t('order.logistics')
  1566. // el.packageName = "包裹" + Number(index+1)
  1567. this.logDataForm.dvyNames.forEach((dvyName, index) => {
  1568. if (el.dvyId === dvyName.dvyId) {
  1569. el.dvyName = dvyName.dvyName
  1570. }
  1571. })
  1572. })
  1573. this.confirmList = confirmList
  1574. }
  1575. }
  1576. // console.log('确认列表:', this.confirmList)
  1577. // this.confirmList.forEach((el, index) => {
  1578. // })
  1579. })
  1580. // console.log(this.errorNum)
  1581. if (this.errorNum === 1) {
  1582. return
  1583. } else if (this.confirmList.length === 0) {
  1584. this.$message({
  1585. message: this.$i18n.t('order.noLogIsChanged'),
  1586. type: 'warning'
  1587. })
  1588. flag = false
  1589. }
  1590. if (flag) {
  1591. this.isReviseLog = false // 修改弹窗
  1592. }
  1593. },
  1594. /**
  1595. * 确认修改物流信息
  1596. */
  1597. confirmRevise () {
  1598. // let dvyOrderParam = {
  1599. // deliveryOrders: this.confirmList
  1600. // }
  1601. this.$http({
  1602. url: this.$http.adornUrl('/order/delivery/updateOrderDeliveries'),
  1603. method: 'put',
  1604. data: this.$http.adornData({
  1605. deliveryOrders: this.confirmList
  1606. }),
  1607. params: this.$http.adornParams()
  1608. }).then(({ data }) => {
  1609. this.$message({
  1610. message: this.$i18n.t('publics.operation'),
  1611. type: 'success'
  1612. })
  1613. this.isReviseLog = true
  1614. this.logVisible = false
  1615. })
  1616. },
  1617. /**
  1618. * 返回修改(物流信息)
  1619. */
  1620. backToRevise () {
  1621. this.isReviseLog = true
  1622. // 修改弹窗
  1623. this.confirmList = [] // 清空确认列表
  1624. },
  1625. /**
  1626. * 获取数据列表
  1627. */
  1628. getDataList (page, params, newData = false) {
  1629. page = (page === undefined ? this.page : page)
  1630. this.dataListLoading = true
  1631. if (newData || !this.theData) {
  1632. this.theData = {
  1633. current: page == null ? this.page.currentPage : page.currentPage,
  1634. size: page == null ? this.page.pageSize : page.pageSize,
  1635. 'orderNumber': this.dataForm.orderNumber,
  1636. 'orderType': this.dataForm.orderType,
  1637. 'orderMold': this.dataForm.orderMold,
  1638. 'payType': this.dataForm.payType,
  1639. 'receiver': this.dataForm.receiver,
  1640. 'mobile': this.dataForm.mobile,
  1641. 'status': this.status,
  1642. 'dvyType': this.dataForm.dvyType,
  1643. 'stationName': this.dataForm.stationName,
  1644. 'refundStatus': this.dataForm.refundStatus,
  1645. 'startTime': this.dateRange === null ? null : this.dateRange[0], // 开始时间
  1646. 'endTime': this.dateRange === null ? null : this.dateRange[1], // 结束时间
  1647. 'startProductNums': this.productNumsRange === null ? null : this.productNumsRange[0], // 订购数量起
  1648. 'endProductNums': this.productNumsRange === null ? null : this.productNumsRange[1], // 订购数量起
  1649. 'auditStatus': this.dataForm.auditStatus, // 审阅状态
  1650. 'prodName': this.dataForm.prodName, // 产品名称,
  1651. 'dvyFlowId': this.dataForm.dvyFlowId, //快递单号
  1652. 'skuName': this.dataForm.skuName,
  1653. 'isPromotion': this.dataForm.isPromotion,
  1654. 'prodZone': this.dataForm.prodZone
  1655. }
  1656. } else {
  1657. this.theData.current = page == null ? this.page.currentPage : page.currentPage
  1658. this.theData.size = page == null ? this.page.pageSize : page.pageSize
  1659. this.theData.status = this.status
  1660. }
  1661. this.$http({
  1662. url: this.$http.adornUrl('/order/order/page'),
  1663. method: 'get',
  1664. params: this.$http.adornParams(
  1665. Object.assign(this.theData, params
  1666. ), false
  1667. )
  1668. }).then(({ data }) => {
  1669. this.dataList = data.records
  1670. this.page.total = data.total
  1671. this.sts = !this.status ? 0 : this.status
  1672. this.dataListLoading = false
  1673. this.activeName = !this.status ? '0' : this.status + ''
  1674. })
  1675. },
  1676. getWaitPrintPage(page, params, newData = false){
  1677. this.dataListLoading = true
  1678. if (newData || !this.theData) {
  1679. this.theData = {
  1680. current: page == null ? this.page.currentPage : page.currentPage,
  1681. size: page == null ? this.page.pageSize : page.pageSize,
  1682. 'orderNumber': this.dataForm.orderNumber,
  1683. // 'prodName': this.dataForm.prodName,
  1684. 'orderType': this.dataForm.orderType,
  1685. 'orderMold': this.dataForm.orderMold,
  1686. 'payType': this.dataForm.payType,
  1687. 'receiver': this.dataForm.receiver,
  1688. 'mobile': this.dataForm.mobile,
  1689. 'status': this.status,
  1690. 'dvyType': this.dataForm.dvyType,
  1691. 'stationName': this.dataForm.stationName,
  1692. 'refundStatus': this.dataForm.refundStatus,
  1693. 'startTime': this.dateRange === null ? null : this.dateRange[0], // 开始时间
  1694. 'endTime': this.dateRange === null ? null : this.dateRange[1], // 结束时间
  1695. 'startProductNums': this.productNumsRange === null ? null : this.productNumsRange[0], // 订购数量起
  1696. 'endProductNums': this.productNumsRange === null ? null : this.productNumsRange[1], // 订购数量起
  1697. 'auditStatus': this.dataForm.auditStatus, // 审阅状态
  1698. 'prodName': this.dataForm.prodName, // 产品名称
  1699. 'skuName': this.dataForm.skuName, // 产品名称,
  1700. 'isPromotion': this.dataForm.isPromotion,
  1701. 'prodZone': this.dataForm.prodZone
  1702. }
  1703. } else {
  1704. this.theData.current = page == null ? this.page.currentPage : page.currentPage
  1705. this.theData.size = page == null ? this.page.pageSize : page.pageSize
  1706. this.theData.status = this.status
  1707. }
  1708. this.$http({
  1709. url: this.$http.adornUrl('/order/order/waitPrintPage'),
  1710. method: 'get',
  1711. params: this.$http.adornParams(
  1712. Object.assign(this.theData, params
  1713. ), false
  1714. )
  1715. }).then(({ data }) => {
  1716. this.dataList = data.records
  1717. this.page.total = data.total
  1718. this.sts = !this.status ? 0 : this.status
  1719. this.dataListLoading = false
  1720. this.activeName = !this.status ? '0' : this.status + ''
  1721. })
  1722. },
  1723. getWaitPrintDeliveryPage(page, params, newData = false){
  1724. this.dataListLoading = true
  1725. if (newData || !this.theData) {
  1726. this.theData = {
  1727. current: page == null ? this.page.currentPage : page.currentPage,
  1728. size: page == null ? this.page.pageSize : page.pageSize,
  1729. 'orderNumber': this.dataForm.orderNumber,
  1730. // 'prodName': this.dataForm.prodName,
  1731. 'orderType': this.dataForm.orderType,
  1732. 'orderMold': this.dataForm.orderMold,
  1733. 'payType': this.dataForm.payType,
  1734. 'receiver': this.dataForm.receiver,
  1735. 'mobile': this.dataForm.mobile,
  1736. 'status': this.status,
  1737. 'dvyType': this.dataForm.dvyType,
  1738. 'stationName': this.dataForm.stationName,
  1739. 'refundStatus': this.dataForm.refundStatus,
  1740. 'startTime': this.dateRange === null ? null : this.dateRange[0], // 开始时间
  1741. 'endTime': this.dateRange === null ? null : this.dateRange[1] // 结束时间
  1742. }
  1743. } else {
  1744. this.theData.current = page == null ? this.page.currentPage : page.currentPage
  1745. this.theData.size = page == null ? this.page.pageSize : page.pageSize
  1746. this.theData.status = this.status
  1747. }
  1748. this.$http({
  1749. url: this.$http.adornUrl('/order/order/waitPrintDeliveryPage'),
  1750. method: 'get',
  1751. params: this.$http.adornParams(
  1752. Object.assign(this.theData, params
  1753. ), false
  1754. )
  1755. }).then(({ data }) => {
  1756. this.dataList = data.records
  1757. this.page.total = data.total
  1758. this.sts = !this.status ? 0 : this.status
  1759. this.dataListLoading = false
  1760. this.activeName = !this.status ? '0' : this.status + ''
  1761. })
  1762. },
  1763. getWaitNormalPrintPage(page, params, newData = false){
  1764. this.dataListLoading = true
  1765. if (newData || !this.theData) {
  1766. this.theData = {
  1767. current: page == null ? this.page.currentPage : page.currentPage,
  1768. size: page == null ? this.page.pageSize : page.pageSize,
  1769. 'orderNumber': this.dataForm.orderNumber,
  1770. // 'prodName': this.dataForm.prodName,
  1771. 'orderType': this.dataForm.orderType,
  1772. 'orderMold': this.dataForm.orderMold,
  1773. 'payType': this.dataForm.payType,
  1774. 'receiver': this.dataForm.receiver,
  1775. 'mobile': this.dataForm.mobile,
  1776. 'status': this.status,
  1777. 'dvyType': this.dataForm.dvyType,
  1778. 'stationName': this.dataForm.stationName,
  1779. 'refundStatus': this.dataForm.refundStatus,
  1780. 'startTime': this.dateRange === null ? null : this.dateRange[0], // 开始时间
  1781. 'endTime': this.dateRange === null ? null : this.dateRange[1], // 结束时间,
  1782. 'prodZone': this.dataForm.prodZone,
  1783. }
  1784. } else {
  1785. this.theData.current = page == null ? this.page.currentPage : page.currentPage
  1786. this.theData.size = page == null ? this.page.pageSize : page.pageSize
  1787. this.theData.status = this.status
  1788. }
  1789. this.$http({
  1790. url: this.$http.adornUrl('/order/order/waitNormalPrintPage'),
  1791. method: 'get',
  1792. params: this.$http.adornParams(
  1793. Object.assign(this.theData, params
  1794. ), false
  1795. )
  1796. }).then(({ data }) => {
  1797. this.dataList = data.records
  1798. this.page.total = data.total
  1799. this.sts = !this.status ? 0 : this.status
  1800. this.dataListLoading = false
  1801. this.activeName = !this.status ? '0' : this.status + ''
  1802. })
  1803. },
  1804. // 每页数
  1805. sizeChangeHandle (val) {
  1806. this.page.pageSize = val
  1807. this.page.currentPage = 1
  1808. this.getDataList(this.page)
  1809. },
  1810. // 当前页
  1811. currentChangeHandle (val) {
  1812. this.dataListSelections = new Set();
  1813. this.page.currentPage = val
  1814. // this.getDataList(this.page)
  1815. if(this.status == 8){
  1816. this.getWaitPrintPage(this.page)
  1817. }else if(this.status == 9){
  1818. this.getWaitPrintDeliveryPage(this.page)
  1819. }else if(this.status == 10){
  1820. this.getWaitNormalPrintPage(this.page)
  1821. }else{
  1822. this.getDataList(this.page)
  1823. }
  1824. },
  1825. /**
  1826. * 导航选择状态
  1827. */
  1828. selectNav (e) {
  1829. var sts = e.currentTarget.dataset.sts;
  1830. this.activeName = parseInt(sts);
  1831. this.status = this.activeName === 0 ? null : parseInt(sts)
  1832. this.page.currentPage = 1
  1833. if(this.status == 8){
  1834. this.getWaitPrintPage(this.page)
  1835. }else if(this.status == 9){
  1836. this.getWaitPrintDeliveryPage(this.page)
  1837. }else if(this.status == 10){
  1838. this.getWaitNormalPrintPage(this.page)
  1839. }else{
  1840. this.getDataList(this.page)
  1841. }
  1842. },
  1843. // 多选
  1844. selectionChangeHandle (val) {
  1845. this.dataListSelections = val
  1846. },
  1847. orderStatus (val) {
  1848. this.status = val
  1849. this.activeName = val + ''
  1850. this.getDataList(this.page)
  1851. },
  1852. /**
  1853. * 根据选项设置时间
  1854. * 1:今天 2:昨天 3: 近七天 4:近30天 5:近60天
  1855. */
  1856. setDateRange (val) {
  1857. this.timeActive = val
  1858. var startDay = null
  1859. var endDay = null
  1860. if (val === 1) {
  1861. startDay = 0
  1862. endDay = 0
  1863. } else if (val === 2) {
  1864. startDay = -1
  1865. endDay = -1
  1866. } else if (val === 3) {
  1867. startDay = -7
  1868. endDay = -1
  1869. } else if (val === 4) {
  1870. startDay = -30
  1871. endDay = -1
  1872. } else {
  1873. return
  1874. }
  1875. // 开始时间
  1876. let startTime = moment().add(startDay, 'days').startOf('days').format('LL')
  1877. // 结束时间
  1878. let endTime = moment().add(endDay, 'days').endOf('days').format('LL')
  1879. this.dateRange = [startTime, endTime]
  1880. },
  1881. // 查看订单
  1882. addOrUpdateHandle (orderNumber, shopId, status) {
  1883. this.$refs.orderInfo.init({
  1884. orderNumber: orderNumber,
  1885. shopId: shopId,
  1886. status: status
  1887. })
  1888. /*
  1889. this.$router.push({
  1890. path: '/order-orderInfo',
  1891. query: {
  1892. orderNumber: orderNumber,
  1893. shopId: shopId,
  1894. status: status
  1895. }
  1896. })*/
  1897. },
  1898. // 前往消息盒子
  1899. toImbox (order) {
  1900. window.open(location.href.split('#')[0] + '#/imBox?userId=' + order.userId + '&orderNumber=' + order.orderNumber, 'view_window')
  1901. },
  1902. // 退款路由跳转
  1903. refundRoute (val) {
  1904. this.$router.push({
  1905. path: '/order-orderRefund',
  1906. query: { orderNumber: val }
  1907. })
  1908. },
  1909. // 删除
  1910. deleteHandle (id) {
  1911. var ids = id ? [id] : this.dataListSelections.map(item => {
  1912. return item.orderId
  1913. })
  1914. this.$confirm(`${this.$i18n.t('sys.makeSure')}[${id ? this.$i18n.t('text.delBtn') : this.$i18n.t('sys.batchDelete')}]${this.$i18n.t('text.menu')}?`, this.$i18n.t('text.tips'), {
  1915. confirmButtonText: this.$i18n.t('crud.filter.submitBtn'),
  1916. cancelButtonText: this.$i18n.t('crud.filter.cancelBtn'),
  1917. type: 'warning'
  1918. }).then(() => {
  1919. this.$http({
  1920. url: this.$http.adornUrl(`/prod/spec/${ids}`),
  1921. method: 'delete',
  1922. data: this.$http.adornData(ids, false)
  1923. }).then(({ data }) => {
  1924. this.$message({
  1925. message: this.$i18n.t('publics.operation'),
  1926. type: 'success',
  1927. duration: 1500,
  1928. onClose: () => {
  1929. this.getDataList(this.page)
  1930. }
  1931. })
  1932. })
  1933. }).catch(() => { })
  1934. },
  1935. showConsignmentInfo () {
  1936. this.consignmentInfoVisible = true
  1937. this.$nextTick(() => {
  1938. this.$refs.consignmentInfo.init()
  1939. })
  1940. },
  1941. getWaitingConsignmentExcel () {
  1942. this.getDataList(this.page)
  1943. },
  1944. uploadSpu () {
  1945. this.dataForm.startTime = this.dateRange === null ? null : this.dateRange[0]
  1946. this.dataForm.endTime = this.dateRange === null ? null : this.dateRange[1]
  1947. this.uploadVisible = true
  1948. this.$nextTick(() => {
  1949. this.$refs.spuUpload.init()
  1950. })
  1951. },
  1952. // 清空按钮
  1953. clear () {
  1954. this.dataForm = {}
  1955. this.dateRange = []
  1956. this.status = null
  1957. this.timeActive = null
  1958. },
  1959. // 搜索查询
  1960. searchChange (newData = false) {
  1961. let it = this;
  1962. this.dataList.forEach((item, index) => {
  1963. it.$set(item,'checkStatus',false)
  1964. it.dataListSelections.delete(item.orderNumber);
  1965. it.selectAll = false;
  1966. it.checked = false;
  1967. })
  1968. this.dataListSelections = new Set();
  1969. this.selectAll = false;
  1970. this.selectSheets = 0;
  1971. this.page.currentPage = 1
  1972. // this.getDataList(this.page, null, newData)
  1973. if(this.status === 8){
  1974. this.getWaitPrintPage(this.page, null, newData)
  1975. }else if(this.status === 9){
  1976. this.getWaitPrintDeliveryPage(this.page, null, newData)
  1977. }else if(this.status === 10){
  1978. this.getWaitNormalPrintPage(this.page, null, newData)
  1979. }else{
  1980. this.getDataList(this.page, null, newData)
  1981. }
  1982. },
  1983. /**
  1984. * 更改订单金额
  1985. */
  1986. editAmount (order) {
  1987. this.orderAmountUpdateVisible = true
  1988. this.$nextTick(() => {
  1989. debugger
  1990. this.$refs.orderAmountUpdate.init(order)
  1991. })
  1992. },
  1993. /**
  1994. * 发货
  1995. */
  1996. changeOrder (order) {
  1997. this.devyVisible = true
  1998. this.$nextTick(() => {
  1999. this.$refs.orderDeliveryUpdate.init(order)
  2000. })
  2001. },
  2002. /**
  2003. * 标记推广
  2004. */
  2005. markPromotion(order){
  2006. this.$http({
  2007. url: this.$http.adornUrl('/order/order/markPromotion/' + order.orderNumber),
  2008. method: 'POST',
  2009. }).then(({ data }) => {
  2010. if(data){
  2011. this.$message({
  2012. message: "标记成功",
  2013. type: 'success'
  2014. });
  2015. this.getDataList(this.page, null, false);
  2016. }else{
  2017. this.$message({
  2018. message: "标记失败",
  2019. type: 'error'
  2020. })
  2021. }
  2022. })
  2023. },
  2024. /**
  2025. * 提货
  2026. */
  2027. stationOrder (order) {
  2028. this.orderStationVisible = true
  2029. this.$nextTick(() => {
  2030. this.$refs.orderStation.init(order)
  2031. })
  2032. },
  2033. getSoldExcel () {
  2034. if (!this.dateRange || this.dateRange.length < 2) {
  2035. this.$message.error(this.$i18n.t('order.pleExpOrderFirst'))
  2036. return
  2037. }
  2038. this.$confirm(`${this.$i18n.t('order.exportReport')}`, this.$i18n.t('text.tips'), {
  2039. confirmButtonText: this.$i18n.t('crud.filter.submitBtn'),
  2040. cancelButtonText: this.$i18n.t('crud.filter.cancelBtn'),
  2041. type: 'warning'
  2042. }).then(() => {
  2043. this.$http({
  2044. url: this.$http.adornUrl('/order/order/soldExcel'),
  2045. method: 'get',
  2046. params: this.$http.adornParams({
  2047. 'orderNumber': this.dataForm.orderNumber,
  2048. // 'prodName': this.dataForm.prodName,
  2049. 'orderType': this.dataForm.orderType,
  2050. 'payType': this.dataForm.payType,
  2051. 'lang': this.lang === 'en' ? 1 : 0,
  2052. 'receiver': this.dataForm.receiver,
  2053. 'mobile': this.dataForm.mobile,
  2054. 'status': this.status,
  2055. 'dvyType': this.dataForm.dvyType,
  2056. 'stationName': this.dataForm.stationName,
  2057. 'refundStatus': this.dataForm.refundStatus,
  2058. 'startTime': this.dateRange === null ? null : this.dateRange[0], // 开始时间
  2059. 'endTime': this.dateRange === null ? null : this.dateRange[1] // 结束时间
  2060. }),
  2061. responseType: 'blob' // 解决文件下载乱码问题
  2062. }).then(({ data }) => {
  2063. var blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' })
  2064. const fileName = this.$i18n.t('order.orderInfCollationXls')
  2065. const elink = document.createElement('a')
  2066. if ('download' in elink) { // 非IE下载
  2067. elink.download = fileName
  2068. elink.style.display = 'none'
  2069. elink.href = URL.createObjectURL(blob)
  2070. document.body.appendChild(elink)
  2071. elink.click()
  2072. URL.revokeObjectURL(elink.href) // 释放URL 对象
  2073. document.body.removeChild(elink)
  2074. } else { // IE10+下载
  2075. navigator.msSaveBlob(blob, fileName)
  2076. }
  2077. })
  2078. })
  2079. },
  2080. openDeliveryPage (deliveryNo, dvyNo) {
  2081. // window.open("https://t.17track.net/zh-cn#nums=" + deliveryNo, '_blank');
  2082. let copy = (e) => {
  2083. e.preventDefault()
  2084. e.clipboardData.setData('text/plain', deliveryNo)
  2085. document.removeEventListener('copy', copy)
  2086. }
  2087. document.addEventListener('copy', copy)
  2088. document.execCommand('Copy')
  2089. if (dvyNo === 'STO') {
  2090. window.open('https://www.sto.cn/pc/service-page/iframe_2_21_' + deliveryNo + ',')
  2091. } else if (dvyNo === 'YTO') {
  2092. window.open('https://www.yto.net.cn/tracesimple.html/?orders=' + deliveryNo)
  2093. } else if (dvyNo === 'ZTO') {
  2094. window.open('https://www.zto.com/express/expressCheck.html?txtBill=' + deliveryNo)
  2095. } else {
  2096. window.open('https://www.baidu.com/s?wd=%E7%89%A9%E6%B5%81%E6%9F%A5%E8%AF%A2&rsv_spt=1&rsv_iqid=0xe1fe334b0008559a&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug3=16&rsv_sug1=12&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=2849&rsv_sug4=3141', '_blank')
  2097. }
  2098. },
  2099. openOrderPromotionDialog(orderNumber, prodName){
  2100. this.$refs.orderPromotion.init({
  2101. orderNumber: orderNumber,
  2102. prodName: prodName
  2103. })
  2104. },
  2105. openPromotionDialog(){
  2106. this.$refs.orderPromotion.init({
  2107. })
  2108. },
  2109. },
  2110. destroyed () {
  2111. // 页面销毁时移除监听
  2112. window.removeEventListener('scroll', this.handleScroll)
  2113. }
  2114. }
  2115. </script>
  2116. <style lang="scss" scoped>
  2117. .mod-order-order {
  2118. .search-bar {
  2119. .input-row {
  2120. .select-time-btn {
  2121. margin-right: 20px;
  2122. display: inline-block;
  2123. color: #AAAAAA;
  2124. font-size: 14px;
  2125. cursor:pointer;
  2126. &:last-child {
  2127. margin-right: 0;
  2128. }
  2129. }
  2130. .select-time-btn.is-active {
  2131. color: #155BD4;
  2132. }
  2133. }
  2134. }
  2135. .main {
  2136. .content {
  2137. .all-check-btn {
  2138. margin-right: 10px;
  2139. }
  2140. .had-selected {
  2141. font-size: 12px;
  2142. margin-right: 10px;
  2143. }
  2144. }
  2145. .order-status-nav {
  2146. position: relative;
  2147. display: block;
  2148. width: 100%;
  2149. margin-bottom: 15px;
  2150. height: 40px;
  2151. line-height: 40px;
  2152. border-bottom: 1px solid #ddd;
  2153. ul,
  2154. li {
  2155. list-style: none;
  2156. padding: 0;
  2157. margin: 0;
  2158. }
  2159. .nav-item {
  2160. float: left;
  2161. height: 40px;
  2162. line-height: 40px;
  2163. background: #f7f8fa;
  2164. border: 1px solid #ddd;
  2165. padding: 0 20px;
  2166. margin: 0 -1px -1px 0;
  2167. cursor: pointer;
  2168. }
  2169. .selected {
  2170. background: #fff;
  2171. border-bottom: 1px solid #fff;
  2172. }
  2173. }
  2174. .status-nav {
  2175. ::v-deep .el-tabs__item {
  2176. padding: 0 20px ;
  2177. min-width: 68px;
  2178. width: auto;
  2179. text-align: center;
  2180. }
  2181. ::v-deep .el-tabs__nav-wrap::after{
  2182. height: 1px;
  2183. }
  2184. }
  2185. .tit {
  2186. display: flex;
  2187. align-items: center;
  2188. margin-bottom: 15px;
  2189. background: #F7F8FA;
  2190. z-index: 11;
  2191. height: 57px;
  2192. font-weight: bold;
  2193. .column-title {
  2194. text-align: center;
  2195. }
  2196. .item {
  2197. padding: 0 10px;
  2198. width: 10%;
  2199. text-align: center;
  2200. }
  2201. .product {
  2202. width: 25%;
  2203. margin-bottom: 15px;
  2204. text-align: left !important;
  2205. }
  2206. }
  2207. .fixed-top {
  2208. position: fixed;
  2209. width: calc(83.5% + var(--tit-width-incremental));
  2210. top: 90px;
  2211. }
  2212. .prod {
  2213. margin-bottom: 15px;
  2214. .prod-tit {
  2215. padding: 10px;
  2216. background: #F7F8FA;
  2217. height: 49px;
  2218. display: flex;
  2219. align-items: center;
  2220. border-left: 1px solid #EBEDF0;
  2221. border-top: 1px solid #EBEDF0;
  2222. border-right: 1px solid #EBEDF0;
  2223. .order-number{
  2224. color: #333333;
  2225. font-size: 14px
  2226. }
  2227. .order-index{
  2228. color: red;
  2229. font-size: 14px;
  2230. font-weight: bold;
  2231. }
  2232. .order-time{
  2233. color: #999999;
  2234. font-size: 14px
  2235. }
  2236. span {
  2237. margin-right: 15px;
  2238. }
  2239. }
  2240. .prod-cont {
  2241. display: flex;
  2242. border: 1px solid #EBEDF0;
  2243. color: #495060;
  2244. .item {
  2245. display: flex;
  2246. display: -webkit-flex;
  2247. align-items: center;
  2248. padding: 10px;
  2249. text-align: center;
  2250. justify-content: center !important;
  2251. height: 100%;
  2252. border-right: 1px solid #eee;
  2253. .totalprice {
  2254. color: #ff4141;
  2255. margin-bottom: 10px;
  2256. }
  2257. .operate {
  2258. color: #2d8cf0;
  2259. .operate-btn {
  2260. margin: 0 !important;
  2261. height: auto;
  2262. }
  2263. .default-btn + .default-btn {
  2264. display: block;
  2265. margin-top: 10px;
  2266. margin-left: 0;
  2267. }
  2268. }
  2269. .buyer-info {
  2270. .buyer-name {
  2271. margin-bottom: 4px;
  2272. }
  2273. }
  2274. span {
  2275. display: block;
  2276. }
  2277. }
  2278. .prod-item {
  2279. padding: 0;
  2280. display: flex;
  2281. flex-direction: column !important;
  2282. height: 100%;
  2283. border-right: 1px solid #eee;
  2284. .items.name {
  2285. width: 100%;
  2286. display: flex;
  2287. align-items: center;
  2288. border-bottom: 1px solid #EBEDF0;
  2289. padding: 10px !important;
  2290. text-align: left;
  2291. &:last-child {
  2292. border-bottom: none;
  2293. }
  2294. .order-prod-item-info {
  2295. width: 72%;
  2296. display: flex;
  2297. flex-direction: column;
  2298. .info {
  2299. display: flex;
  2300. align-items: center;
  2301. .prod-image {
  2302. min-height: 80px;
  2303. width: 80px;
  2304. height: auto;
  2305. margin-right: 20px;
  2306. padding: 0;
  2307. line-height: 80px;
  2308. img {
  2309. width: 100%;
  2310. height: 100%;
  2311. object-fit: contain;
  2312. }
  2313. }
  2314. .prod-name {
  2315. width: 100% !important;
  2316. .prod-con {
  2317. width: 85% !important;
  2318. display: block;
  2319. padding: 0 !important;
  2320. .prod-name-txt {
  2321. padding-right: 10px;
  2322. box-sizing: border-box;
  2323. display: -webkit-box;
  2324. -webkit-box-orient: vertical;
  2325. -webkit-line-clamp: 2;
  2326. overflow: hidden;
  2327. }
  2328. .order-status {
  2329. display: inline-block;
  2330. margin-top: 15px;
  2331. margin-right: 10px;
  2332. padding: 2px 4px;
  2333. border: 1px solid #e43130;
  2334. border-radius: 2px;
  2335. color: #e43130;
  2336. font-size: 14px;
  2337. }
  2338. }
  2339. }
  2340. }
  2341. // 赠品盒子
  2342. .order-prod-item-give-con {
  2343. width: 100%;
  2344. padding: 10px 50px 0 10px;
  2345. box-sizing: border-box;
  2346. .giveaway-item {
  2347. display: flex;
  2348. margin-bottom: 10px;
  2349. &:last-child {
  2350. margin-bottom: 0;
  2351. }
  2352. }
  2353. .giveaway-item-name {
  2354. box-sizing: border-box;
  2355. display: -webkit-box;
  2356. -webkit-box-orient: vertical;
  2357. -webkit-line-clamp: 1;
  2358. overflow: hidden;
  2359. }
  2360. .giveaway-item-sku-count {
  2361. margin-left: 10px;
  2362. color: #999;
  2363. width: 20px;
  2364. }
  2365. }
  2366. }
  2367. .prod-price {
  2368. width: 28%;
  2369. display: flex;
  2370. justify-content: flex-start;
  2371. flex-direction: column;
  2372. overflow: hidden;
  2373. position: relative;
  2374. right: 0 !important;
  2375. span {
  2376. display: block;
  2377. text-align: left;
  2378. word-break: keep-all;
  2379. &:first-child {
  2380. margin-bottom: 10px;
  2381. }
  2382. }
  2383. }
  2384. }
  2385. }
  2386. }
  2387. }
  2388. .empty {
  2389. display: block;
  2390. height: 200px;
  2391. line-height: 200px;
  2392. text-align: center;
  2393. color: #aaa;
  2394. }
  2395. .transaction-price {
  2396. text-align: left;
  2397. }
  2398. }
  2399. // 修改物流弹窗
  2400. .change-logistics {
  2401. color: #333;
  2402. padding: 0 20px;
  2403. .warning {
  2404. padding: 10px;
  2405. border: 1px solid #f1924e;
  2406. background: #fff5ed;
  2407. }
  2408. .log-list {
  2409. max-height: 600px;
  2410. margin-top: 30px;
  2411. overflow-y: auto;
  2412. .item {
  2413. padding-bottom: 20px;
  2414. .i-tit {
  2415. display: flex;
  2416. align-items: center;
  2417. .big {
  2418. font-weight: 600;
  2419. margin-right: 15px;
  2420. }
  2421. }
  2422. .item-goods {
  2423. position: relative;
  2424. width: 100%;
  2425. height: 110px;
  2426. overflow-x: auto;
  2427. .goods-box {
  2428. position: absolute;
  2429. left: 0;
  2430. display: flex;
  2431. margin-top: 0;
  2432. -webkit-transition: all 0.3s;
  2433. -moz-transition: all 0.3s;
  2434. transition: all 0.3s;
  2435. .item {
  2436. margin-right: 10px;
  2437. font-size: 12px;
  2438. cursor: pointer;
  2439. .img {
  2440. width: 60px;
  2441. height: 60px;
  2442. font-size: 0;
  2443. margin-bottom: 4px;
  2444. margin-top: 4px;
  2445. position: relative;
  2446. img {
  2447. width: 100%;
  2448. height: 100%;
  2449. }
  2450. .number {
  2451. position: absolute;
  2452. bottom: 0;
  2453. right: 0;
  2454. background: rgba(0, 0, 0, 0.3);
  2455. color: #fff;
  2456. border-radius: 6px 0 6px 0;
  2457. font-size: 12px;
  2458. height: 16px;
  2459. line-height: 16px;
  2460. padding: 0 5px;
  2461. }
  2462. }
  2463. .name {
  2464. width: 60px;
  2465. height: 16px;
  2466. line-height: 16px;
  2467. white-space: nowrap;
  2468. overflow: hidden;
  2469. text-overflow: ellipsis;
  2470. color: #999;
  2471. }
  2472. }
  2473. .item:last-child {
  2474. margin: 0;
  2475. }
  2476. }
  2477. }
  2478. .info-int {
  2479. &.el-form-item__content,
  2480. &.el-form-item__label,
  2481. .el-input__suffix-inner,
  2482. .el-input__icon {
  2483. height: 32px;
  2484. line-height: 32px;
  2485. }
  2486. display: flex;
  2487. .form-item {
  2488. margin-right: 15px;
  2489. }
  2490. }
  2491. }
  2492. }
  2493. .log-info-table {
  2494. margin-top: 20px;
  2495. max-height: 600px;
  2496. overflow-y: auto;
  2497. }
  2498. }
  2499. @media (max-width:1660px) {
  2500. .fixed-top {
  2501. width: calc(79.5% + var(--tit-width-incremental)) !important;
  2502. }
  2503. }
  2504. @media (max-width:1360px) {
  2505. .fixed-top {
  2506. width: calc(75.5% + var(--tit-width-incremental)) !important;
  2507. }
  2508. }
  2509. }
  2510. </style>