index.vue 66 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953
  1. <template>
  2. <div class="app-container">
  3. <el-form
  4. :model="queryParams"
  5. ref="queryForm"
  6. :inline="true"
  7. v-show="showSearch"
  8. class="clearFix"
  9. >
  10. <el-form-item label="订单编号" prop="orderSn">
  11. <el-input
  12. v-model="queryParams.orderSn"
  13. placeholder="请输入订单编号"
  14. clearable
  15. @keyup.enter.native="handleQuery"
  16. />
  17. </el-form-item>
  18. <!-- <el-form-item label="物品名称" prop="productName">
  19. <el-input
  20. v-model="queryParams.productName"
  21. placeholder="请输入物品名称"
  22. clearable
  23. @keyup.enter.native="handleQuery"
  24. />
  25. </el-form-item> -->
  26. <!-- <el-form-item label="优惠券ID" prop="couponId">
  27. <el-input
  28. v-model="queryParams.couponId"
  29. placeholder="请输入优惠券ID"
  30. clearable
  31. @keyup.enter.native="handleQuery"
  32. />
  33. </el-form-item> -->
  34. <!-- <el-form-item label="登录人" prop="memberName">
  35. <el-input
  36. v-model="queryParams.memberName"
  37. placeholder="请输入登录人"
  38. clearable
  39. @keyup.enter.native="handleQuery"
  40. />
  41. </el-form-item>
  42. <el-form-item label="登录人联系电话" prop="memberMobile">
  43. <el-input
  44. v-model="queryParams.memberMobile"
  45. placeholder="请输入登录人联系电话"
  46. clearable
  47. @keyup.enter.native="handleQuery"
  48. />
  49. </el-form-item> -->
  50. <!-- <el-form-item label="发件联系人" prop="sendContactName">
  51. <el-input
  52. v-model="queryParams.sendContactName"
  53. placeholder="请输入发件联系人"
  54. clearable
  55. @keyup.enter.native="handleQuery"
  56. />
  57. </el-form-item>
  58. <el-form-item label="发件人联系电话" prop="sendPhone">
  59. <el-input
  60. v-model="queryParams.sendPhone"
  61. placeholder="请输入发件人联系电话"
  62. clearable
  63. @keyup.enter.native="handleQuery"
  64. />
  65. </el-form-item>
  66. <el-form-item label="收件联系人" prop="receiptContactName">
  67. <el-input
  68. v-model="queryParams.receiptContactName"
  69. placeholder="请输入收件联系人"
  70. clearable
  71. @keyup.enter.native="handleQuery"
  72. />
  73. </el-form-item>
  74. <el-form-item label="收件人联系电话" prop="receiptPhone">
  75. <el-input
  76. v-model="queryParams.receiptPhone"
  77. placeholder="请输入收件人联系电话"
  78. clearable
  79. @keyup.enter.native="handleQuery"
  80. />
  81. </el-form-item> -->
  82. <!-- <el-form-item label="订单状态" prop="deliveryStatus">
  83. <el-select v-model="queryParams.deliveryStatus" placeholder="订单状态" clearable >
  84. <el-option v-for="item in deliveryStatusOption" :key="item.value" :label="item.label" :value="item.value"/>
  85. </el-select>
  86. </el-form-item> -->
  87. <!-- <el-form-item label="接单时间" prop="deliveryTime">
  88. <el-date-picker v-model="deliveryDate" type="datetimerange" range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间"
  89. :default-time="['00:00:00', '23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss">
  90. </el-date-picker>
  91. </el-form-item> -->
  92. <el-form-item label="下单时间" prop="createTime">
  93. <el-date-picker
  94. v-model="createDate"
  95. type="datetimerange"
  96. range-separator="至"
  97. start-placeholder="开始时间"
  98. end-placeholder="结束时间"
  99. :default-time="['00:00:00', '23:59:59']"
  100. value-format="yyyy-MM-dd HH:mm:ss"
  101. format="yyyy-MM-dd HH:mm:ss"
  102. >
  103. </el-date-picker>
  104. </el-form-item>
  105. <el-form-item label="完成时间" prop="completeTime">
  106. <el-date-picker
  107. v-model="completeDate"
  108. type="datetimerange"
  109. range-separator="至"
  110. start-placeholder="开始时间"
  111. end-placeholder="结束时间"
  112. :default-time="['00:00:00', '23:59:59']"
  113. value-format="yyyy-MM-dd HH:mm:ss"
  114. format="yyyy-MM-dd HH:mm:ss"
  115. >
  116. </el-date-picker>
  117. </el-form-item>
  118. <el-form-item>
  119. <el-button type="primary" icon="el-icon-search" @click="handleQuery"
  120. >搜索</el-button
  121. >
  122. <!-- <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button> -->
  123. <el-button @click="show2 = !show2">
  124. <span v-if="show2 == true">隐藏</span>
  125. <span v-else>显示</span>
  126. </el-button>
  127. <el-button
  128. type="warning"
  129. plain
  130. icon="el-icon-download"
  131. @click="handleExport" v-hasPermi="['module:order:export']"
  132. >导出</el-button>
  133. </el-form-item>
  134. <!-- <el-form-item label="商家名称" prop="merchantId" v-if="user.type == 2">
  135. <el-select v-model="queryParams.merchantId" placeholder="商家名称" clearable>
  136. <el-option v-for="item in merchantOption" :key="item.id" :label="item.merchantName" :value="item.id"></el-option>
  137. </el-select>
  138. </el-form-item> -->
  139. <!-- <el-form-item label="商家名称" prop="merchantName">
  140. <el-input
  141. v-model="queryParams.merchantName"
  142. placeholder="请输入商家名称"
  143. clearable
  144. @keyup.enter.native="handleQuery"
  145. />
  146. </el-form-item> -->
  147. <!-- <el-form-item label="代理商名称" prop="aId">
  148. <el-select v-model="queryParams.aId" filterable clearable placeholder="请选择 / 输入代理商">
  149. <el-option
  150. v-for="item in agentList"
  151. :key="item.id"
  152. :label="item.name"
  153. :value="item.id">
  154. </el-option>
  155. </el-select>
  156. </el-form-item>
  157. <el-form-item label="配送平台名称" prop="deliveryId">
  158. <el-select v-model="queryParams.deliveryId" placeholder="配送平台名称" clearable>
  159. <el-option v-for="item in dspDeliveryOption" :key="item.id" :label="item.name" :value="item.id"></el-option>
  160. </el-select>
  161. </el-form-item> -->
  162. <!-- <el-form-item label="收件地区">
  163. <OldReceipt :areaProp="areaProp" @changeArea="changeArea" ref="area"/>
  164. </el-form-item> -->
  165. <transition name="el-zoom-in-top">
  166. <div v-show="show2" class="clearFix">
  167. <el-form-item label="发件地区">
  168. <OldSend
  169. :sendAreaProp="sendAreaProp"
  170. @changeArea="changeSendArea"
  171. ref="sendArea"
  172. />
  173. </el-form-item>
  174. <el-form-item label="代理商名称" prop="aId">
  175. <el-select
  176. v-model="queryParams.aId"
  177. filterable
  178. clearable
  179. placeholder="请选择 / 输入代理商"
  180. >
  181. <el-option
  182. v-for="item in agentList"
  183. :key="item.id"
  184. :label="item.name"
  185. :value="item.id"
  186. >
  187. </el-option>
  188. </el-select>
  189. </el-form-item>
  190. <el-form-item label="配送平台名称" prop="deliveryId">
  191. <el-select
  192. v-model="queryParams.deliveryId"
  193. placeholder="配送平台名称"
  194. clearable
  195. >
  196. <el-option
  197. v-for="item in dspDeliveryOption"
  198. :key="item.id"
  199. :label="item.name"
  200. :value="item.id"
  201. ></el-option>
  202. </el-select>
  203. </el-form-item>
  204. <el-form-item label="发件联系人" prop="sendContactName">
  205. <el-input
  206. v-model="queryParams.sendContactName"
  207. placeholder="请输入发件联系人"
  208. clearable
  209. @keyup.enter.native="handleQuery"
  210. />
  211. </el-form-item>
  212. <el-form-item label="发件人联系电话" prop="sendPhone">
  213. <el-input
  214. v-model="queryParams.sendPhone"
  215. placeholder="请输入发件人联系电话"
  216. clearable
  217. @keyup.enter.native="handleQuery"
  218. />
  219. </el-form-item>
  220. <el-form-item label="收件联系人" prop="receiptContactName">
  221. <el-input
  222. v-model="queryParams.receiptContactName"
  223. placeholder="请输入收件联系人"
  224. clearable
  225. @keyup.enter.native="handleQuery"
  226. />
  227. </el-form-item>
  228. <el-form-item label="收件人联系电话" prop="receiptPhone">
  229. <el-input
  230. v-model="queryParams.receiptPhone"
  231. placeholder="请输入收件人联系电话"
  232. clearable
  233. @keyup.enter.native="handleQuery"
  234. />
  235. </el-form-item>
  236. <el-form-item label="商家名称" prop="merchantName">
  237. <el-input
  238. v-model="queryParams.merchantName"
  239. placeholder="请输入商家名称"
  240. clearable
  241. @keyup.enter.native="handleQuery"
  242. />
  243. </el-form-item>
  244. <el-form-item label="门店名称" prop="shopName">
  245. <el-input
  246. v-model="queryParams.shopName"
  247. placeholder="请输入门店名称"
  248. clearable
  249. @keyup.enter.native="handleQuery"
  250. />
  251. </el-form-item>
  252. <el-form-item label="下单人" prop="memberName">
  253. <el-input
  254. v-model="queryParams.memberName"
  255. placeholder="请输入下单人"
  256. clearable
  257. @keyup.enter.native="handleQuery"
  258. />
  259. </el-form-item>
  260. <el-form-item label="下单人联系电话" prop="memberMobile">
  261. <el-input
  262. v-model="queryParams.memberMobile"
  263. placeholder="请输入下单人联系电话"
  264. clearable
  265. @keyup.enter.native="handleQuery"
  266. />
  267. </el-form-item>
  268. <el-form-item label="外卖平台" prop="waimaiOrderType">
  269. <el-select v-model="queryParams.waimaiOrderType" placeholder="请选择外卖平台" clearable>
  270. <el-option v-for="item in waimaiOrderTypeOption" :key="item.value" :label="item.label" :value="item.value"
  271. ></el-option>
  272. </el-select>
  273. </el-form-item>
  274. <!-- <el-form-item label="员工名称" prop="personnelName">
  275. <el-input
  276. v-model="queryParams.personnelName"
  277. placeholder="请输入员工名称"
  278. clearable
  279. @keyup.enter.native="handleQuery"
  280. />
  281. </el-form-item> -->
  282. <el-form-item label="员工名称" prop="personnelId">
  283. <el-select v-model="queryParams.personnelId" filterable clearable placeholder="请选择 / 输入员工">
  284. <el-option
  285. v-for="item in personnelList"
  286. :key="item.id"
  287. :label="item.name"
  288. :value="item.id">
  289. </el-option>
  290. </el-select>
  291. </el-form-item>
  292. <el-form-item label="支付类型" prop="paymentType">
  293. <el-select v-model="queryParams.paymentType" placeholder="支付类型" clearable >
  294. <el-option v-for="item in paymentTypeOption" :key="item.value" :label="item.label" :value="item.value" />
  295. </el-select>
  296. </el-form-item>
  297. <el-form-item label="发件人联系电话" prop="sendPhone">
  298. <el-input
  299. v-model="queryParams.sendPhone"
  300. placeholder="请输入发件人联系电话"
  301. clearable
  302. @keyup.enter.native="handleQuery"
  303. />
  304. </el-form-item>
  305. </div>
  306. </transition>
  307. </el-form>
  308. <el-tabs v-model="activeName" @tab-click="handleClick" type="card">
  309. <el-tab-pane :label="lableZero" name="1"></el-tab-pane>
  310. <el-tab-pane :label="lableOne" name="2"></el-tab-pane>
  311. <el-tab-pane :label="lableTwo" name="3"></el-tab-pane>
  312. <el-tab-pane :label="lableThree" name="4"></el-tab-pane>
  313. <el-tab-pane label="已取消" name="-1"></el-tab-pane>
  314. <el-tab-pane :label="lableFive" name="-2"></el-tab-pane>
  315. <el-tab-pane :label="lableSix" name="0"></el-tab-pane>
  316. <el-tab-pane label="其它平台完成" name="100"></el-tab-pane>
  317. <el-tab-pane label="全部订单" name="all"></el-tab-pane>
  318. <el-tab-pane v-if="type != 2" label="撤回订单" name="6"></el-tab-pane>
  319. </el-tabs>
  320. <Pagination
  321. uri="/module/order/list"
  322. :request-params="queryParams"
  323. ref="pagination"
  324. :showIndex="false"
  325. class="update-css"
  326. >
  327. <el-table-column>
  328. <template slot-scope="scope">
  329. <div style="margin-bottom: 10px; padding: 3px">
  330. <el-row>
  331. <el-col :span="11">
  332. <el-tag type="success">
  333. <span
  334. v-if="
  335. (scope.row.waimaiOrderId != null &&
  336. scope.row.waimaiOrderId != '') ||
  337. (scope.row.platformType != null &&
  338. scope.row.platformType != 0)
  339. "
  340. >
  341. {{ scope.row.dspWaimaiName }}
  342. </span>
  343. <span v-else> 猎豹 </span>
  344. </el-tag>
  345. <el-tag type="warning" style="margin-left: 20px">
  346. <span
  347. v-if="
  348. scope.row.merchantId != null && scope.row.merchantId != ''
  349. "
  350. >
  351. 商戶
  352. </span>
  353. <span v-else> 个人 </span>
  354. </el-tag>
  355. <el-tag type="info" style="margin-left: 20px">
  356. <span v-if="scope.row.takeType == 0"> 普通 </span>
  357. <span v-if="scope.row.takeType == 1 || scope.row.takeType == 2"> 预约 </span>
  358. </el-tag>
  359. <span style="margin-left: 20px">订单号:
  360. <div class="serial">
  361. <span class="serial_text" v-if="scope.row.platformType != null && scope.row.platformType == 0">猎豹 </span>
  362. <span class="serial_text" v-if="scope.row.platformType != null && scope.row.platformType == 1">美团 </span>
  363. <span class="serial_text" v-if="scope.row.platformType != null && scope.row.platformType == 2">饿了么 </span>
  364. <span class="serial_text" v-if="scope.row.platformType != null && scope.row.platformType == 3">饿百零售 </span>
  365. <span class="serial_text" v-if="scope.row.platformType != null && scope.row.platformType == 5">美团闪购 </span>
  366. <span class="serial_text" v-if="scope.row.daySeq != null">{{scope.row.daySeq}} &nbsp; #</span>
  367. </div>
  368. <el-button style="user-select: unset" type="text" @click="deliveryInfo(scope.row.orderSn)" v-if="type != 2">
  369. {{ scope.row.orderSn }}
  370. </el-button>
  371. <span v-if="type == 2">{{ scope.row.orderSn }}</span>
  372. </span
  373. >
  374. <div style="margin-top:10px">
  375. <el-button style="user-select: unset;background-color:#F08080;height:27px"
  376. size="mini" type="danger" round icon="el-icon-close" @click="cancelOrder(scope.row.id)"
  377. v-if="type != 2 && scope.row.deliveryStatus == 3 && (scope.row.wmstatus != 4 || scope.row.wmstatus == null)">
  378. 取消
  379. </el-button>
  380. <el-button style="user-select: unset;background-color:#90EE90;height:27px"
  381. size="mini" type="success" round icon="el-icon-check" @click="finishOrder(scope.row.id)"
  382. v-if="type != 2 && scope.row.deliveryStatus == 3 && (scope.row.wmstatus != 4 || scope.row.wmstatus == null)">
  383. 手动完成
  384. </el-button>
  385. </div>
  386. </el-col>
  387. <el-col :span="4">
  388. <div style="margin-bottom: 10px; text-align: center">
  389. <span v-if="scope.row.deleted == 1">
  390. 现订单号:
  391. <span v-if="scope.row.originalOrderSn != null">{{ scope.row.originalOrderSn }}</span>
  392. <span v-else> -- </span>
  393. </span>
  394. <div v-if="(scope.row.takeType == 1 || scope.row.takeType == 2)&& (scope.row.waimaiOrderId == null || scope.row.waimaiOrderId == '')">
  395. 预计取件时间:{{ scope.row.takeTime }}
  396. </div>
  397. <div v-if="scope.row.waimaiOrderId != null && scope.row.waimaiOrderId != '' && scope.row.deleted == 0">
  398. <span v-if="scope.row.waimaiDeliveryTime == 0">预计送达时间:立即送达</span>
  399. <span v-if="scope.row.waimaiDeliveryTime != 0">预计送达时间:{{ scope.row.waimaiDeliveryDate }}</span>
  400. </div>
  401. </div>
  402. </el-col>
  403. <el-col :span="7">
  404. <div style="margin-bottom: 10px; text-align: left" v-if="
  405. scope.row.waimaiOrderId != null &&
  406. scope.row.waimaiOrderId != ''
  407. ">
  408. <span>外卖下单时间:{{ scope.row.orderTime }}</span>
  409. <span style="margin-left:39px"
  410. v-if="scope.row.deleted == 0 && !(scope.row.wmstatus == 4 && scope.row.deliveryStatus != 4) &&
  411. !(scope.row.deliveryStatus == 0 && scope.row.waimaiOrderId != null &&
  412. (scope.row.wmstatus == null || scope.row.wmstatus == 0))">
  413. 配送下单时间:{{ scope.row.createTime }}</span>
  414. </div>
  415. <div style="margin-bottom: 10px; text-align: left" v-else>
  416. <span
  417. v-if="scope.row.deleted == 0 && !(scope.row.wmstatus == 4 && scope.row.deliveryStatus != 4) &&
  418. !(scope.row.deliveryStatus == 0 && scope.row.waimaiOrderId != null &&
  419. (scope.row.wmstatus == null || scope.row.wmstatus == 0))">
  420. 配送下单时间:{{ scope.row.createTime }}</span>
  421. </div>
  422. </el-col>
  423. <el-col :span="2">
  424. <div style="margin-bottom: 10px; text-align: right" v-if="scope.row.deleted == 0">
  425. <div
  426. v-if="
  427. scope.row.deliveryStatus == -1 &&
  428. (scope.row.wmstatus != 4 || scope.row.wmstatus == null)
  429. "
  430. >
  431. 已取消
  432. </div>
  433. <div
  434. v-if="
  435. scope.row.deliveryStatus == -2 &&
  436. (scope.row.wmstatus != 4 || scope.row.wmstatus == null)
  437. "
  438. >
  439. 异常
  440. </div>
  441. <div
  442. v-if="
  443. scope.row.deliveryStatus == 0 &&
  444. (scope.row.wmstatus == null || scope.row.wmstatus != 4)
  445. "
  446. >
  447. 待发单
  448. </div>
  449. <div
  450. v-if="
  451. scope.row.deliveryStatus == 1 &&
  452. scope.row.status == 1 &&
  453. (scope.row.wmstatus != 4 || scope.row.wmstatus == null)
  454. "
  455. >
  456. 待接单
  457. </div>
  458. <div
  459. v-if="
  460. scope.row.deliveryStatus == 1 &&
  461. scope.row.status == 0 &&
  462. (scope.row.wmstatus != 4 || scope.row.wmstatus == null)
  463. "
  464. >
  465. 待支付
  466. </div>
  467. <div
  468. v-if="
  469. scope.row.deliveryStatus == 2 &&
  470. (scope.row.wmstatus != 4 || scope.row.wmstatus == null)
  471. "
  472. >
  473. 待配送
  474. </div>
  475. <div
  476. v-if="
  477. scope.row.deliveryStatus == 3 &&
  478. (scope.row.wmstatus != 4 || scope.row.wmstatus == null)
  479. "
  480. >
  481. 配送中
  482. </div>
  483. <div
  484. v-if="
  485. scope.row.wmstatus == 4 && scope.row.deliveryStatus != 4
  486. "
  487. >
  488. 其它平台完成
  489. </div>
  490. <div v-if="scope.row.deliveryStatus == 4">本平台完成</div>
  491. <div v-if="type != 2 && scope.row.deliveryStatus == 4 && scope.row.paymentType != 5 && scope.row.refundMoney == 0">
  492. <el-button style="user-select: unset;background-color:#F08080;height:27px"
  493. size="mini" type="info" round @click="refundDia(scope.row.id)">
  494. 退款
  495. </el-button>
  496. </div>
  497. </div>
  498. <div style="margin-bottom: 10px; text-align: right" v-if="scope.row.deleted == 1">
  499. <div>撤回</div>
  500. </div>
  501. </el-col>
  502. </el-row>
  503. </div>
  504. <el-row class="border-line">
  505. <el-col :span="9">
  506. <div style="margin-top: 10px">
  507. <!-- 发 -->
  508. <div style="display: flex">
  509. <!-- <img :src="item.thumb" style="width: 20px; height: 20px" /> -->
  510. <div><i class="sendLogo"></i></div>
  511. <div style="margin-left: 10px">
  512. <span
  513. >{{ scope.row.sendContactName }} &nbsp;&nbsp;
  514. {{ scope.row.sendPhone }}</span
  515. ><span
  516. v-if="
  517. scope.row.sendExtension != null &&
  518. scope.row.sendExtension != ''
  519. "
  520. >#{{ scope.row.sendExtension }}</span
  521. ><br />
  522. <span
  523. >{{ scope.row.sendProvinceName
  524. }}{{ scope.row.sendCityName
  525. }}{{ scope.row.sendDistrictName }}</span
  526. ><br />
  527. <span>{{ scope.row.sendAddress }}</span>
  528. </div>
  529. </div>
  530. <!-- 收 -->
  531. <div style="margin-top: 10px; display: flex">
  532. <!-- <img :src="item.thumb" style="width: 20px; height: 20px" /> -->
  533. <div><i class="receiptLogo"></i></div>
  534. <div style="margin-left: 10px">
  535. <span
  536. >{{ scope.row.receiptContactName }} &nbsp;&nbsp;
  537. {{ scope.row.receiptPhone }}</span
  538. >
  539. <span
  540. v-if="
  541. scope.row.receiptExtension != null &&
  542. scope.row.receiptExtension != ''
  543. "
  544. >#{{ scope.row.receiptExtension }}</span
  545. ><br />
  546. <span
  547. >{{ scope.row.receiptProvinceName
  548. }}{{ scope.row.receiptCityName
  549. }}{{ scope.row.receiptDistrictName }}</span
  550. ><br />
  551. <span>{{ scope.row.receiptAddress }}</span>
  552. </div>
  553. </div>
  554. </div>
  555. </el-col>
  556. <el-col :span="5">
  557. <div style="margin-top: 10px">
  558. <span>
  559. 支付金额:¥{{ scope.row.payAmount }}
  560. <i
  561. class="el-icon-info"
  562. @click="amountInfoOpen(scope.row)"
  563. ></i> </span
  564. ><br />
  565. <span v-if="type != 2 && scope.row.bindFee > 0">
  566. 三方服务费: ¥{{ scope.row.bindFee }}<br />
  567. </span
  568. >
  569. <span>
  570. 支付类型:
  571. <el-tag v-if="scope.row.paymentType == 1 && scope.row.status != 0">支付宝</el-tag>
  572. <el-tag type="success" v-if="scope.row.paymentType == 2 && scope.row.status != 0">微信</el-tag>
  573. <el-tag type="warning" v-if="scope.row.paymentType == 3 && scope.row.status != 0">银联</el-tag>
  574. <el-tag type="danger" v-if="scope.row.paymentType == 4 && scope.row.status != 0">余额支付</el-tag>
  575. <el-tag type="info" v-if="scope.row.paymentType == 5 && scope.row.status != 0">三方平台支付</el-tag>
  576. </span
  577. ><br />
  578. <span>配送类型:{{ scope.row.productName }}</span
  579. ><br />
  580. <span
  581. >物品信息:{{ scope.row.productName }}/{{
  582. scope.row.weight
  583. }}公斤</span
  584. ><br />
  585. <div>
  586. <span v-if="
  587. scope.row.waimaiOrderId != null &&
  588. scope.row.waimaiOrderId != ''
  589. ">商品金额:¥{{ scope.row.puductMoney }}</span
  590. ><span v-else>商品金额:¥{{ scope.row.productAmount }}</span
  591. ><br />
  592. </div>
  593. <div
  594. >
  595. <span
  596. >商品详情:
  597. <el-button
  598. type="text"
  599. @click="productInfoOpen(scope.row.waimaiOrderId)"
  600. >点击查看</el-button
  601. > </span
  602. ><br />
  603. </div>
  604. <div>
  605. 备注:
  606. <span
  607. v-if="
  608. scope.row.waimaiOrderId != null &&
  609. scope.row.waimaiOrderId != ''
  610. "
  611. ><span v-if="scope.row.takeRemark != null">【{{ scope.row.takeRemark }}】</span>{{ scope.row.wmCaution }}</span
  612. >
  613. <span v-else>{{ scope.row.takeRemark }}</span>
  614. </div>
  615. </div>
  616. </el-col>
  617. <el-col :span="6">
  618. <div style="margin-top: 10px;margin-left: 5px;">
  619. <div
  620. v-if="
  621. scope.row.outTradeNo != null && scope.row.outTradeNo != ''
  622. "
  623. >
  624. <div>
  625. 接单平台:
  626. <span v-if="scope.row.deliveryId != null">
  627. <span v-text="getName(scope.row.deliveryId)"></span>
  628. <!-- <span>{{ scope.row.deliveryName}}</span> -->
  629. </span>
  630. <span
  631. v-if="
  632. scope.row.deliveryId == null &&
  633. scope.row.wmstatus == 4 &&
  634. scope.row.deliveryStatus != 4
  635. "
  636. >
  637. 其它平台</span
  638. >
  639. </div>
  640. <div>
  641. 骑手姓名:
  642. <span v-if="scope.row.shipperName != null">{{
  643. scope.row.shipperName
  644. }}</span>
  645. <span v-else> -- </span>
  646. </div>
  647. <div>
  648. 骑手电话:
  649. <span v-if="scope.row.shipperPhone != null">{{
  650. scope.row.shipperPhone
  651. }}</span>
  652. <span v-else> -- </span>
  653. </div>
  654. <div>
  655. 三方订单号:
  656. <span v-if="scope.row.outTradeNo != null">{{
  657. scope.row.outTradeNo
  658. }}</span>
  659. <span v-else> -- </span>
  660. </div>
  661. <div>
  662. 接单时间:
  663. <span
  664. v-if="
  665. scope.row.deliveryTime != null
  666. "
  667. >{{ scope.row.deliveryTime }}</span
  668. >
  669. <span v-else>--</span>
  670. </div>
  671. <div>
  672. 取货时间:
  673. <span v-if="scope.row.pickUpTime != null">{{
  674. scope.row.pickUpTime
  675. }}</span>
  676. <span v-else> -- </span>
  677. </div>
  678. <div>
  679. 送到时间:
  680. <span v-if="scope.row.finishTime != null">{{
  681. scope.row.finishTime
  682. }}</span>
  683. <span v-else>--</span>
  684. </div>
  685. </div>
  686. <!-- <div
  687. style="margin-top: 10px; margin-left: 5px"
  688. v-if="
  689. scope.row.outTradeNo == null || scope.row.outTradeNo == ''
  690. "
  691. >
  692. <span style="color: #778899">暂无信息</span>
  693. </div> -->
  694. <div>
  695. <div v-if="((scope.row.deliveryStatus == -1 || scope.row.deliveryStatus == -2) &&
  696. (scope.row.wmstatus != 4 || scope.row.wmstatus == null)) || scope.row.deleted == 1">
  697. 取消时间:
  698. <span>{{
  699. scope.row.cancelTime
  700. }}</span>
  701. </div>
  702. <div v-if="((scope.row.deliveryStatus == -1 || scope.row.deliveryStatus == -2) &&
  703. (scope.row.wmstatus != 4 || scope.row.wmstatus == null)) || scope.row.deleted == 1">
  704. 取消原因:
  705. <span v-if="scope.row.cancelReason != null">{{
  706. scope.row.cancelReason
  707. }}</span>
  708. <span v-else> -- </span>
  709. </div>
  710. </div>
  711. </div>
  712. </el-col>
  713. <el-col :span="4">
  714. <div style="margin-top: 10px; text-align: right">
  715. <span> 商户名称:{{ scope.row.merchantName == null ? ' -- ' : scope.row.merchantName }} </span><br />
  716. <span> 门店名称:{{ scope.row.shopName == null ? ' -- ' : scope.row.shopName }} </span><br />
  717. <span v-if="scope.row.dadaDspType == null">代理商:{{ scope.row.agentName == null ? ' -- ' : scope.row.agentName }}</span
  718. ><br />
  719. <span v-if="scope.row.dadaDspType != null">配送商:{{ scope.row.dadaDspName == null ? ' -- ' : scope.row.dadaDspName }}</span
  720. ><br />
  721. <!-- <span>所属员工:{{ scope.row.personnelName == null ? ' -- ' : scope.row.personnelName }}</span
  722. ><br /> -->
  723. <span
  724. v-if="
  725. scope.row.personnelName != null &&
  726. scope.row.personnelName != ''
  727. "
  728. >所属员工:{{ scope.row.personnelName }}<br /></span
  729. >
  730. <span v-if="scope.row.dadaDspType == null">
  731. 佣金:
  732. <span
  733. v-if="
  734. scope.row.getCommission != null &&
  735. scope.row.getCommission != ''
  736. "
  737. >¥{{ scope.row.getCommission }}</span
  738. >
  739. <span v-else> -- </span> </span
  740. ><br />
  741. <span v-if="scope.row.dadaDspType != null">服务费:{{ scope.row.getCommission == null ? ' -- ' : scope.row.getCommission}} </span><br />
  742. <span> 下单人:{{ scope.row.memberName }} </span><br />
  743. <span>手机号:{{ scope.row.memberMobile }}</span
  744. ><br />
  745. </div>
  746. </el-col>
  747. </el-row>
  748. </template>
  749. </el-table-column>
  750. </Pagination>
  751. <el-dialog
  752. title="金额详细信息"
  753. :visible.sync="amountInfoVisible"
  754. width="500"
  755. >
  756. <div style="font-size: 18px; font-weight: 400">
  757. <span>配送费:¥{{
  758. (amountInfo.totalAmount +
  759. amountInfo.couponAmount - amountInfo.tipAmount).toFixed(2)
  760. }}</span
  761. ><br /><br />
  762. <span v-if="amountInfo.deliveryId != 24 && amountInfo.deliveryId != 19" style="margin-top: 10px">小费:¥{{ amountInfo.tipAmount }}</span
  763. >
  764. <span v-if="amountInfo.deliveryId == 24 || amountInfo.deliveryId == 19" style="margin-top: 10px">小费:¥0</span
  765. ><br /><br />
  766. <span style="margin-top: 10px"
  767. >优惠券:-¥{{ amountInfo.couponAmount }}</span
  768. ><br /><br />
  769. <span style="margin-top: 10px"
  770. >其它优惠:-¥{{ amountInfo.firstCoupon != undefined ? amountInfo.firstCoupon: 0}}</span
  771. ><br /><br />
  772. <!-- <span v-if="amountInfo.deliveryId != 24 && amountInfo.deliveryId != 19" style="margin-top: 10px"
  773. >支付金额:¥{{ amountInfo.payAmount }}</span
  774. >
  775. <span v-if="amountInfo.deliveryId == 24 || amountInfo.deliveryId == 19" style="margin-top: 10px"
  776. >支付金额:¥{{ (amountInfo.payAmount - amountInfo.tipAmount).toFixed(2) }}</span
  777. > -->
  778. <span style="margin-top: 10px"
  779. >支付金额:¥{{ amountInfo.payAmount }}</span
  780. ><br /><br />
  781. <!-- <div>
  782. <span style="margin-top: 10px" v-if="this.type != 2 && amountInfo.commission != null"
  783. >参与分佣金额:¥{{ amountInfo.commission }}</span
  784. >
  785. <span style="margin-top: 10px" v-if="this.type != 2 && amountInfo.commission == null"
  786. >参与分佣金额:¥0</span
  787. >
  788. </div> -->
  789. </div>
  790. </el-dialog>
  791. <el-dialog title="选择取消订单原因" :visible.sync="cancelOrderVisible" wdith="700" append-to-body>
  792. <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="150px">
  793. <el-form-item label="原因" prop="memberName">
  794. <el-select v-model="dataForm.cancelOrderId" placeholder="请选择取消原因" clearable>
  795. <el-option v-for="item in orderReasonOption" :key="item.value" :label="item.label" :value="item.value"></el-option>
  796. </el-select>
  797. </el-form-item>
  798. </el-form>
  799. <span slot="footer" class="dialog-footer">
  800. <el-button @click="cancelOrderVisible = false">取 消</el-button>
  801. <el-button type="primary" @click="submite()">确定</el-button>
  802. </span>
  803. </el-dialog>
  804. <el-dialog :visible.sync="productInfoVisible" width="700">
  805. <el-table :data="this.productInfoList">
  806. <el-table-column
  807. align="center"
  808. header-align="center"
  809. label="商品名称"
  810. prop="foodName"
  811. >
  812. <template slot-scope="scope">
  813. <span
  814. >
  815. {{ scope.row.foodName }}
  816. </span>
  817. <!-- <span v-if="this.productInfoWaimaiId == undefined"> 到店查看 </span> -->
  818. </template>
  819. </el-table-column>
  820. <el-table-column align="center" header-align="center" label="数量">
  821. <template slot-scope="scope">
  822. <span
  823. >
  824. ×{{ scope.row.quantity }}
  825. </span>
  826. <!-- <span v-if="this.productInfoWaimaiId == undefined"> ×1 </span> -->
  827. </template>
  828. </el-table-column>
  829. </el-table>
  830. </el-dialog>
  831. <el-dialog :visible.sync="deliveryInfoVisible" width="700">
  832. <el-table :data="this.deliveryInfoList">
  833. <el-table-column align="center" header-align="center" label="子订单号" prop="childOrderSn" />
  834. <el-table-column align="center" header-align="center" label="三方订单号" prop="outTradeNo" />
  835. <el-table-column align="center" header-align="center" label="配送平台" prop="deliveryName" />
  836. <el-table-column align="center" header-align="center" label="金额" prop="payAmount" />
  837. <el-table-column align="center" header-align="center" label="状态" prop="deliveryStatus">
  838. <template slot-scope="scope">
  839. <span v-if="scope.row.deliveryStatus == 0">待发单</span>
  840. <span v-if="scope.row.deliveryStatus == 1">待接单</span>
  841. <span v-if="scope.row.deliveryStatus == 2">待配送</span>
  842. <span v-if="scope.row.deliveryStatus == -1">已取消</span>
  843. </template>
  844. </el-table-column>
  845. <el-table-column align="center" header-align="center" label="下单失败原因" prop="failMsg" />
  846. </el-table>
  847. </el-dialog>
  848. <el-dialog title="退款理由" :visible.sync="refundOpen" width="700px" append-to-body>
  849. <el-form ref="form" :model="form" :rules="rules" label-width="140px">
  850. <el-form-item label="理由:" prop="refundReason">
  851. <el-input maxlength="20" placeholder="请输入理由" v-model="form.refundReason" type="textarea" :rows="2" style="width:450px">
  852. </el-input>
  853. </el-form-item>
  854. </el-form>
  855. <div slot="footer" class="dialog-footer">
  856. <el-button type="primary" @click="refund" :loading="this.refundConfir">确 定</el-button>
  857. <el-button @click="refundOpen = false">取 消</el-button>
  858. </div>
  859. </el-dialog>
  860. </div>
  861. </template>
  862. <script>
  863. import {
  864. exportOrder
  865. } from "@/api/module/order";
  866. import Pagination from "@/components/Paginations";
  867. import moment from "moment";
  868. import user from "@/store/modules/user";
  869. import OldReceipt from "@/components/area/oldReceipt";
  870. import OldSend from "@/components/area/oldSend";
  871. import area from "@/api/oldCity";
  872. import { constants } from "os";
  873. export default {
  874. name: "Order",
  875. components: {
  876. OldReceipt,
  877. OldSend,
  878. Pagination
  879. },
  880. data() {
  881. return {
  882. flag: true,
  883. refundConfir: false,
  884. refundOpen: false,
  885. orderReasonOption: [],
  886. msg: undefined,
  887. type: '',
  888. show2: false,
  889. cancelOrderVisible: false,
  890. amountInfo: {
  891. deliveryId: undefined,
  892. totalAmount: 0.0,
  893. couponAmount: 0.0,
  894. firstCoupon: 0.0,
  895. tipAmount: 0.0,
  896. payAmount: 0.0,
  897. commission: 0.0,
  898. },
  899. amountInfoVisible: false,
  900. productInfoVisible: false,
  901. deliveryInfoVisible: false,
  902. productInfoList: [],
  903. deliveryInfoList: [],
  904. productInfoWaimaiId: '',
  905. user: {},
  906. agentList: [],
  907. personnelList: [],
  908. deliveryDate: [],
  909. createDate: [],
  910. completeDate: [],
  911. merchantOption: [],
  912. deliveryStatusList:[
  913. {
  914. "deliveryStatus": 1,
  915. "label": "待接单"
  916. },
  917. {
  918. "deliveryStatus": 2,
  919. "label": "取货中"
  920. },
  921. {
  922. "deliveryStatus": 3,
  923. "label": "配送中"
  924. },
  925. {
  926. "deliveryStatus":4,
  927. "label": "平台完成"
  928. },
  929. {
  930. "deliveryStatus": -2,
  931. "label": "异常"
  932. },
  933. {
  934. "deliveryStatus": 0,
  935. "label": "待发单"
  936. }
  937. ],
  938. dspDeliveryOption: [],
  939. activeName: "all",
  940. lableZero: "待接单",
  941. lableOne: "取货中",
  942. lableTwo: "配送中",
  943. lableThree: "平台完成",
  944. lableFour: "已取消",
  945. lableFive: "异常",
  946. lableSix: "待发单",
  947. lableSeven: "其它平台完成",
  948. waimaiOrderTypeOption: [
  949. {
  950. value: 1,
  951. label: "美团",
  952. },
  953. {
  954. value: 2,
  955. label: "饿了么",
  956. },
  957. {
  958. value: 3,
  959. label: "饿百零售",
  960. },
  961. {
  962. value: 4,
  963. label: "猎豹",
  964. },
  965. {
  966. value: 5,
  967. label: "美团闪购",
  968. },
  969. {
  970. value: 6,
  971. label: "京东到家",
  972. }
  973. ],
  974. paymentTypeOption: [
  975. {
  976. value: 1,
  977. label: "支付宝支付",
  978. },
  979. {
  980. value: 2,
  981. label: "微信支付",
  982. },
  983. {
  984. value: 3,
  985. label: "银联支付",
  986. },
  987. {
  988. value: 4,
  989. label: "余额支付",
  990. },
  991. {
  992. value: 5,
  993. label: "三方平台支付",
  994. },
  995. ],
  996. deliveryStatusOption: [
  997. {
  998. value: 0,
  999. label: "待发单",
  1000. },
  1001. {
  1002. value: 1,
  1003. label: "待接单",
  1004. },
  1005. {
  1006. value: 2,
  1007. label: "待配送",
  1008. },
  1009. {
  1010. value: 3,
  1011. label: "配送中",
  1012. },
  1013. {
  1014. value: 4,
  1015. label: "已完成",
  1016. },
  1017. {
  1018. value: -1,
  1019. label: "已取消",
  1020. },
  1021. {
  1022. value: -2,
  1023. label: "异常",
  1024. },
  1025. {
  1026. value: 100,
  1027. label: "其它平台完成",
  1028. },
  1029. ],
  1030. // 遮罩层
  1031. loading: true,
  1032. // 选中数组
  1033. ids: [],
  1034. // 非单个禁用
  1035. single: true,
  1036. // 非多个禁用
  1037. multiple: true,
  1038. // 显示搜索条件
  1039. showSearch: true,
  1040. // 总条数
  1041. total: 0,
  1042. // 配送订单表格数据
  1043. orderList: [],
  1044. // 弹出层标题
  1045. title: "",
  1046. // 是否显示弹出层
  1047. open: false,
  1048. areaProp: {},
  1049. startArea: {
  1050. province: "",
  1051. city: "",
  1052. district: "",
  1053. provinceName: "",
  1054. cityName: "",
  1055. districtName: "",
  1056. cityValues: [],
  1057. districtValues: [],
  1058. districtNames: [],
  1059. },
  1060. sendAreaProp: {},
  1061. sendStartArea: {
  1062. province: "",
  1063. city: "",
  1064. district: "",
  1065. provinceName: "",
  1066. cityName: "",
  1067. districtName: "",
  1068. cityValues: [],
  1069. districtValues: [],
  1070. districtNames: [],
  1071. },
  1072. // 查询参数
  1073. queryParams: {
  1074. pageNum: 1,
  1075. pageSize: 10,
  1076. outTradeNo: undefined,
  1077. productId: undefined,
  1078. productName: undefined,
  1079. weight: undefined,
  1080. takeDate: undefined,
  1081. takeTime: undefined,
  1082. takeRemark: undefined,
  1083. paymentType: undefined,
  1084. totalAmount: undefined,
  1085. couponAmount: undefined,
  1086. payAmount: undefined,
  1087. couponId: undefined,
  1088. sendAddressId: undefined,
  1089. sendProvinceName: undefined,
  1090. sendCityName: undefined,
  1091. sendDistrictName: undefined,
  1092. sendAddress: undefined,
  1093. sendContactName: undefined,
  1094. sendPhone: undefined,
  1095. receiptAddressId: undefined,
  1096. receiptProvinceName: undefined,
  1097. receiptCityName: undefined,
  1098. receiptDistrictName: undefined,
  1099. receiptAddress: undefined,
  1100. receiptContactName: undefined,
  1101. receiptPhone: undefined,
  1102. deliveryType: undefined,
  1103. preDeliveryIds: undefined,
  1104. actualDeliveryId: undefined,
  1105. useTip: undefined,
  1106. tipAmount: undefined,
  1107. status: undefined,
  1108. deliveryStatus: undefined,
  1109. merchantId: undefined,
  1110. merchantName: undefined,
  1111. shopName: undefined,
  1112. aId: undefined,
  1113. orderSn: undefined,
  1114. memberName: undefined,
  1115. memberMobile: undefined,
  1116. waimaiOrderType: undefined,
  1117. personnelName: undefined,
  1118. personnelId: undefined
  1119. },
  1120. // 表单参数
  1121. form: {},
  1122. // 表单校验
  1123. rules: {
  1124. outTradeNo: [
  1125. {
  1126. required: true,
  1127. message: "外部订单流水号不能为空",
  1128. trigger: "blur",
  1129. },
  1130. ],
  1131. productId: [
  1132. { required: true, message: "物品ID不能为空", trigger: "blur" },
  1133. ],
  1134. productName: [
  1135. { required: true, message: "物品名称不能为空", trigger: "blur" },
  1136. ],
  1137. weight: [
  1138. { required: true, message: "物品重量不能为空", trigger: "blur" },
  1139. ],
  1140. takeDate: [
  1141. { required: true, message: "取件日期不能为空", trigger: "blur" },
  1142. ],
  1143. takeTime: [
  1144. { required: true, message: "取件时间不能为空", trigger: "blur" },
  1145. ],
  1146. paymentType: [
  1147. {
  1148. required: true,
  1149. message:
  1150. "支付类型:1->支付宝支付 2->微信支付 3->银联支付 4->余额支付不能为空",
  1151. trigger: "change",
  1152. },
  1153. ],
  1154. totalAmount: [
  1155. { required: true, message: "订单总金额不能为空", trigger: "blur" },
  1156. ],
  1157. couponAmount: [
  1158. { required: true, message: "优惠金额不能为空", trigger: "blur" },
  1159. ],
  1160. payAmount: [
  1161. { required: true, message: "实际支付金额不能为空", trigger: "blur" },
  1162. ],
  1163. sendAddressId: [
  1164. { required: true, message: "发件地址ID不能为空", trigger: "blur" },
  1165. ],
  1166. sendProvinceName: [
  1167. { required: true, message: "发件所在省不能为空", trigger: "blur" },
  1168. ],
  1169. sendCityName: [
  1170. { required: true, message: "发件所在城市不能为空", trigger: "blur" },
  1171. ],
  1172. sendDistrictName: [
  1173. { required: true, message: "发件所在区不能为空", trigger: "blur" },
  1174. ],
  1175. sendAddress: [
  1176. { required: true, message: "发件详细地址不能为空", trigger: "blur" },
  1177. ],
  1178. sendContactName: [
  1179. { required: true, message: "发件联系人不能为空", trigger: "blur" },
  1180. ],
  1181. sendPhone: [
  1182. { required: true, message: "发件联系电话不能为空", trigger: "blur" },
  1183. ],
  1184. receiptAddressId: [
  1185. { required: true, message: "收件地址ID不能为空", trigger: "blur" },
  1186. ],
  1187. receiptProvinceName: [
  1188. { required: true, message: "收件所在省不能为空", trigger: "blur" },
  1189. ],
  1190. receiptCityName: [
  1191. { required: true, message: "收件所在城市不能为空", trigger: "blur" },
  1192. ],
  1193. receiptDistrictName: [
  1194. { required: true, message: "收件所在区不能为空", trigger: "blur" },
  1195. ],
  1196. receiptAddress: [
  1197. { required: true, message: "收件地址不能为空", trigger: "blur" },
  1198. ],
  1199. receiptContactName: [
  1200. { required: true, message: "收件联系人不能为空", trigger: "blur" },
  1201. ],
  1202. receiptPhone: [
  1203. { required: true, message: "收件联系电话不能为空", trigger: "blur" },
  1204. ],
  1205. status: [
  1206. {
  1207. required: true,
  1208. message:
  1209. "订单状态:0-> 待支付,1->已支付, 2->派单中, 3->取件中,4->配送中,5->已完成,-1->已取消不能为空",
  1210. trigger: "blur",
  1211. },
  1212. ],
  1213. refundReason: [
  1214. {
  1215. required: true,
  1216. message:
  1217. "退款理由不能为空",
  1218. trigger: "blur",
  1219. },
  1220. ],
  1221. },
  1222. dataForm: {
  1223. id: '',
  1224. cancelOrderId: ''
  1225. },
  1226. dataRule: {},
  1227. };
  1228. },
  1229. created() {
  1230. this.type = localStorage.getItem("SYS_USER_TYPE")
  1231. this.queryParams.merchantId = this.$route.query.merchantId;
  1232. this.queryParams.memberId = this.$route.query.memberId;
  1233. // this.getList();
  1234. this.user = user.actions.getSysUser();
  1235. this.$http.get(`/module/personnel/personnelList`).then(({data}) => {
  1236. console.log('data2', data)
  1237. if (data) {
  1238. console.log('data', data)
  1239. this.personnelList = data
  1240. }
  1241. });
  1242. // 获取商户列表
  1243. this.$http.get(`/module/agent/list/agent`).then(({ data }) => {
  1244. if (data) {
  1245. this.agentList = data.list.rows;
  1246. // console.log("agentList", this.agentList);
  1247. }
  1248. });
  1249. // this.getMerchantOption();
  1250. this.getDspDeliveryOption();
  1251. this.createDate[0] =
  1252. this.formatDate(new Date().getTime() - 2 * 24 * 60 * 60 * 1000) +
  1253. " 00:00:00";
  1254. this.createDate[1] = this.formatDate(new Date().getTime()) + " 23:59:59";
  1255. // console.log(this.createDate);
  1256. this.handleQuery();
  1257. // this.getStatusNum();
  1258. },
  1259. methods: {
  1260. deliveryInfo(orderSn) {
  1261. console.log('orderSn', orderSn)
  1262. if(orderSn != null && orderSn != '') {
  1263. this.$http.get('/module/order/deliveryInfo?orderSn=' + orderSn).then(({ data }) => {
  1264. this.deliveryInfoList = data
  1265. })
  1266. this.deliveryInfoVisible = true
  1267. }
  1268. },
  1269. formatDate(time) {
  1270. return moment(time).format("YYYY-MM-DD");
  1271. },
  1272. handleClick(tab, event) {
  1273. // loading开始
  1274. this.queryParams.deliveryStatus = this.activeName == 'all' ? null : Number(this.activeName)
  1275. this.$nextTick(() => {
  1276. this.getStatusNum();
  1277. this.$refs.pagination.handleSearch(true);
  1278. });
  1279. // loading结束
  1280. },
  1281. getStatusNum() {
  1282. this.deliveryStatusList = [
  1283. {
  1284. "deliveryStatus": 1,
  1285. "label": "待接单"
  1286. },
  1287. {
  1288. "deliveryStatus": 2,
  1289. "label": "取货中"
  1290. },
  1291. {
  1292. "deliveryStatus": 3,
  1293. "label": "配送中"
  1294. },
  1295. {
  1296. "deliveryStatus":4,
  1297. "label": "平台完成"
  1298. },
  1299. {
  1300. "deliveryStatus": -2,
  1301. "label": "异常"
  1302. },
  1303. {
  1304. "deliveryStatus": 0,
  1305. "label": "待发单"
  1306. }
  1307. ];
  1308. this.$http({
  1309. url: this.$http.adornUrl("/module/order/sumByStatus"),
  1310. method: "post",
  1311. data: JSON.stringify(this.deliveryStatusList),
  1312. params: this.$http.adornParams(this.queryParams)
  1313. }).then(({ data }) => {
  1314. if (data != null) {
  1315. console.log('data', data)
  1316. this.deliveryStatusList = data
  1317. // this.lablZero = "待接单 " + data;
  1318. this.deliveryStatusList.filter(item => {
  1319. if(item.deliveryStatus == 1) {
  1320. this.lableZero = item.label
  1321. }
  1322. if(item.deliveryStatus == 2) {
  1323. this.lableOne = item.label
  1324. }
  1325. if(item.deliveryStatus == 3) {
  1326. this.lableTwo = item.label
  1327. }
  1328. if(item.deliveryStatus == -1) {
  1329. this.lableFour = item.label
  1330. }
  1331. if(item.deliveryStatus == 4) {
  1332. this.lableThree = item.label
  1333. }
  1334. if(item.deliveryStatus == -2) {
  1335. this.lableFive = item.label
  1336. }
  1337. if(item.deliveryStatus == 0) {
  1338. this.lableSix = item.label
  1339. }
  1340. })
  1341. }
  1342. });
  1343. // this.$http({
  1344. // url: this.$http.adornUrl("/module/order/sumByStatus/1"),
  1345. // method: "get",
  1346. // params: this.$http.adornParams(this.queryParams)
  1347. // }).then(({ data }) => {
  1348. // if (data != null) {
  1349. // this.lablZero = "待接单 " + data;
  1350. // }
  1351. // });
  1352. // this.$http({
  1353. // url: this.$http.adornUrl("/module/order/sumByStatus/2"),
  1354. // method: "get",
  1355. // params: this.$http.adornParams(this.queryParams)
  1356. // }).then(({ data }) => {
  1357. // if (data != null) {
  1358. // this.lableOne = "取货中 " + data;
  1359. // }
  1360. // });
  1361. // this.$http({
  1362. // url: this.$http.adornUrl("/module/order/sumByStatus/3"),
  1363. // method: "get",
  1364. // params: this.$http.adornParams(this.queryParams)
  1365. // }).then(({ data }) => {
  1366. // if (data != null) {
  1367. // this.lableTwo = "配送中 " + data;
  1368. // }
  1369. // });
  1370. // this.$http({
  1371. // url: this.$http.adornUrl("/module/order/sumByStatus/-1"),
  1372. // method: "get",
  1373. // params: this.$http.adornParams(this.queryParams)
  1374. // }).then(({ data }) => {
  1375. // if (data != null) {
  1376. // this.lableFour = "已取消 " + data;
  1377. // }
  1378. // });
  1379. // this.$http({
  1380. // url: this.$http.adornUrl("/module/order/sumByStatus/-2"),
  1381. // method: "get",
  1382. // params: this.$http.adornParams(this.queryParams)
  1383. // }).then(({ data }) => {
  1384. // if (data != null) {
  1385. // this.lableFive = "异常 " + data;
  1386. // }
  1387. // });
  1388. // this.$http({
  1389. // url: this.$http.adornUrl("/module/order/sumByStatus/0"),
  1390. // method: "get",
  1391. // params: this.$http.adornParams(this.queryParams)
  1392. // }).then(({ data }) => {
  1393. // if (data != null) {
  1394. // this.lableSix = "待发单 " + data;
  1395. // }
  1396. // });
  1397. // this.$http({
  1398. // url: this.$http.adornUrl("/module/order/sumByStatus/100"),
  1399. // method: "get",
  1400. // params: this.$http.adornParams(this.queryParams)
  1401. // }).then(({ data }) => {
  1402. // if (data != null) {
  1403. // this.lableSeven = "其它平台完成 " + data;
  1404. // }
  1405. // });
  1406. // this.$http({
  1407. // url: this.$http.adornUrl("/module/order/sumByStatus/4"),
  1408. // method: "get",
  1409. // params: this.$http.adornParams(this.queryParams)
  1410. // }).then(({ data }) => {
  1411. // if (data != null) {
  1412. // this.lableThree = "平台完成 " + data;
  1413. // }
  1414. // });
  1415. // console.log('deliveryStatusSum', this.queryParams.deliveryStatus)
  1416. },
  1417. amountInfoOpen(row) {
  1418. // console.log('row', row)
  1419. this.amountInfo.deliveryId = row.deliveryId
  1420. this.amountInfo.totalAmount = row.totalAmount;
  1421. this.amountInfo.couponAmount = row.couponAmount;
  1422. this.amountInfo.firstCoupon = row.firstCoupon;
  1423. this.amountInfo.tipAmount = row.tipAmount;
  1424. this.amountInfo.payAmount = row.payAmount;
  1425. this.amountInfo.commission = row.commission;
  1426. this.amountInfoVisible = true;
  1427. },
  1428. productInfoOpen(waimaiOrderId) {
  1429. this.productInfoWaimaiId = waimaiOrderId;
  1430. if(waimaiOrderId != undefined) {
  1431. this.productInfoList = []
  1432. this.$http
  1433. .get("/module/order/productInfo?waimaiOrderId=" + waimaiOrderId)
  1434. .then(({ data }) => {
  1435. if (data) {
  1436. this.productInfoList = data;
  1437. }
  1438. });
  1439. }else {
  1440. this.productInfoList = [{'foodName':'到店查看','quantity':'1'}]
  1441. }
  1442. this.productInfoVisible = true;
  1443. },
  1444. // 选择区域
  1445. changeArea(e) {
  1446. this.startArea = e;
  1447. },
  1448. changeSendArea(e) {
  1449. this.sendStartArea = e;
  1450. },
  1451. getName(deliveryId) {
  1452. var t = this.dspDeliveryOption.filter(function (obj) {
  1453. return obj.id === deliveryId;
  1454. });
  1455. if (t[0]) {
  1456. return t[0].name;
  1457. } else {
  1458. return "--";
  1459. }
  1460. },
  1461. getMerchantOption() {
  1462. this.$http.get(`/module/merchant/getMerchantOption`).then(({ data }) => {
  1463. if (data) {
  1464. this.merchantOption = data.list.rows;
  1465. }
  1466. });
  1467. },
  1468. getDspDeliveryOption() {
  1469. this.$http
  1470. .get(`/module/dspDelivery/selectOrderDspDeliverys`)
  1471. .then(({ data }) => {
  1472. if (data) {
  1473. this.dspDeliveryOption = data;
  1474. }
  1475. });
  1476. },
  1477. /** 查询配送订单列表 */
  1478. // getList() {
  1479. // this.loading = true;
  1480. // listOrder(this.queryParams).then(response => {
  1481. // this.orderList = response.rows;
  1482. // this.total = response.total;
  1483. // this.loading = false;
  1484. // });
  1485. // },
  1486. // 取消按钮
  1487. // init(id) {
  1488. // this.queryParams.merchantId = id;
  1489. // this.getList()
  1490. // },
  1491. // 取消订单
  1492. cancelOrder(orderId) {
  1493. console.log('orderId', orderId)
  1494. this.dataForm.id = orderId
  1495. this.$http.get('/module/order/getOrderReason').then(({ data }) => {
  1496. console.log('data', data)
  1497. this.orderReasonOption = data.map(v => ({ value: Object.keys(v)[0], label: v[Object.keys(v)[0]] }))
  1498. // 此方法效率更高,少一次Object.keys()方法执行和数组寻址
  1499. // this.orderReasonOption = data.map(v => {
  1500. // // 获取数组每个对象的key
  1501. // const key = Object.keys(v)[0]
  1502. // // 返回新数组
  1503. // return ({value:key, label:v[key]});
  1504. // })
  1505. console.log('orderReason', this.orderReasonOption)
  1506. })
  1507. this.cancelOrderVisible = true
  1508. },
  1509. // 手动完成订单
  1510. finishOrder(orderId) {
  1511. console.log('orderId', orderId)
  1512. this.dataForm.id = orderId
  1513. this.$confirm('此操作将手动完成该订单,是否继续?', '提示', {
  1514. confirmButtonText: '确定',
  1515. cancelButtonText: '取消',
  1516. type: 'warning'
  1517. }).then(() => {
  1518. this.$http.post("/module/order/finishOrder", this.dataForm).then(({ data }) => {
  1519. if (data) {
  1520. setTimeout(() => {
  1521. this.$message({
  1522. type: 'success',
  1523. message: '操作成功!'
  1524. });
  1525. this.handleQuery();
  1526. }, 1000)
  1527. } else {
  1528. this.$message.error(data.msg);
  1529. }
  1530. });
  1531. }).catch(() => {
  1532. this.$message({
  1533. type: 'info',
  1534. message: '已取消操作'
  1535. })
  1536. })
  1537. },
  1538. refundDia(orderId) {
  1539. this.refundOpen = true
  1540. this.form.refundId = orderId
  1541. console.log("refundId1", this.form.refundId)
  1542. },
  1543. // 订单退款
  1544. refund() {
  1545. this.$confirm('此操作将退款该订单,是否继续?', '提示', {
  1546. confirmButtonText: '确定',
  1547. cancelButtonText: '取消',
  1548. type: 'warning'
  1549. }).then(() => {
  1550. console.log("refundId2", this.form.refundId)
  1551. this.refundConfir = true
  1552. this.$http.post("/module/order/orderRefund", this.form).then(({ data }) => {
  1553. if (data) {
  1554. setTimeout(() => {
  1555. this.$message({
  1556. type: 'success',
  1557. message: '操作成功!'
  1558. });
  1559. this.refundOpen = false;
  1560. this.handleQuery();
  1561. }, 1000)
  1562. } else {
  1563. this.$message.error(data.msg);
  1564. }
  1565. });
  1566. }).catch(() => {
  1567. this.$message({
  1568. type: 'info',
  1569. message: '已取消操作'
  1570. })
  1571. })
  1572. },
  1573. submite() {
  1574. this.$refs["dataForm"].validate((valid) => {
  1575. if (valid) {
  1576. this.$confirm('此操作将取消该订单,是否继续?', '提示', {
  1577. confirmButtonText: '确定',
  1578. cancelButtonText: '取消',
  1579. type: 'warning'
  1580. }).then(() => {
  1581. this.$http.post("/module/order/cancelOrder", this.dataForm).then(({ data }) => {
  1582. if (data) {
  1583. setTimeout(() => {
  1584. this.cancelOrderVisible = false;
  1585. this.$message({
  1586. type: 'success',
  1587. message: '操作成功!'
  1588. });
  1589. this.handleQuery();
  1590. }, 1000)
  1591. } else {
  1592. this.$message.error(data.msg);
  1593. }
  1594. });
  1595. }).catch(() => {
  1596. this.$message({
  1597. type: 'info',
  1598. message: '已取消操作'
  1599. })
  1600. })
  1601. }
  1602. });
  1603. },
  1604. cancel() {
  1605. this.open = false;
  1606. this.reset();
  1607. },
  1608. // 表单重置
  1609. reset() {
  1610. this.form = {
  1611. id: undefined,
  1612. outTradeNo: undefined,
  1613. productId: undefined,
  1614. productName: undefined,
  1615. weight: undefined,
  1616. takeDate: undefined,
  1617. takeTime: undefined,
  1618. takeRemark: undefined,
  1619. paymentType: undefined,
  1620. totalAmount: undefined,
  1621. couponAmount: undefined,
  1622. payAmount: undefined,
  1623. couponId: undefined,
  1624. sendAddressId: undefined,
  1625. sendProvinceName: undefined,
  1626. sendCityName: undefined,
  1627. sendDistrictName: undefined,
  1628. sendAddress: undefined,
  1629. sendContactName: undefined,
  1630. sendPhone: undefined,
  1631. receiptAddressId: undefined,
  1632. receiptProvinceName: undefined,
  1633. receiptCityName: undefined,
  1634. receiptDistrictName: undefined,
  1635. receiptAddress: undefined,
  1636. receiptContactName: undefined,
  1637. receiptPhone: undefined,
  1638. deliveryType: undefined,
  1639. preDeliveryIds: undefined,
  1640. actualDeliveryId: undefined,
  1641. useTip: undefined,
  1642. tipAmount: undefined,
  1643. status: 0,
  1644. deliveryStatus: 0,
  1645. refundReason: undefined,
  1646. refundId: undefined
  1647. };
  1648. this.resetForm("form");
  1649. },
  1650. /** 搜索按钮操作 */
  1651. handleQuery() {
  1652. // console.log("createDate", this.createDate);
  1653. if (this.createDate !== null && this.createDate !== "") {
  1654. if (this.createDate[0] !== undefined) {
  1655. this.queryParams.createStartTime = this.createDate[0];
  1656. this.queryParams.createEndTime = this.createDate[1];
  1657. }
  1658. } else {
  1659. this.queryParams.createStartTime = "";
  1660. this.queryParams.createEndTime = "";
  1661. }
  1662. // console.log("createStartTime", this.queryParams.createStartTime);
  1663. // console.log("createEndTime", this.queryParams.createEndTime);
  1664. if (this.completeDate !== null && this.completeDate !== "") {
  1665. if (this.completeDate[0] !== undefined) {
  1666. this.queryParams.completeStartTime = this.completeDate[0];
  1667. this.queryParams.completeEndTime = this.completeDate[1];
  1668. }
  1669. } else {
  1670. this.queryParams.completeStartTime = "";
  1671. this.queryParams.completeEndTime = "";
  1672. }
  1673. if (this.deliveryDate !== null && this.deliveryDate !== "") {
  1674. if (this.deliveryDate[0] !== undefined) {
  1675. this.queryParams.deliveryStartTime = this.deliveryDate[0];
  1676. this.queryParams.deliveryEndTime = this.deliveryDate[1];
  1677. }
  1678. } else {
  1679. this.queryParams.deliveryStartTime = "";
  1680. this.queryParams.deliveryEndTime = "";
  1681. }
  1682. this.queryParams.sendProvinceName = this.sendStartArea.provinceName;
  1683. this.queryParams.sendCityName = this.sendStartArea.cityName;
  1684. this.queryParams.sendDistrictName = this.sendStartArea.districtName;
  1685. this.queryParams.receiptProvinceName = this.startArea.provinceName;
  1686. this.queryParams.receiptCityName = this.startArea.cityName;
  1687. this.queryParams.receiptDistrictName = this.startArea.districtName;
  1688. // console.log("startArea", this.startArea);
  1689. // console.log("sendStartArea", this.sendStartArea);
  1690. if(this.queryParams.createStartTime == '' || this.queryParams.createEndTime == '') {
  1691. this.flag = false;
  1692. this.$message.error("下单时间查询条件不能为空!");
  1693. return;
  1694. }
  1695. var dateStart = new Date(this.queryParams.createStartTime);
  1696. var dateEnd = new Date(this.queryParams.createEndTime);
  1697. var dateDiff = dateEnd.getTime() - dateStart.getTime();
  1698. var subDay = Math.ceil(dateDiff / (24 * 3600 * 1000))
  1699. if(subDay > 31) {
  1700. this.flag = false;
  1701. this.$message.error("下单时间查询条件不能大于31天!");
  1702. return;
  1703. }
  1704. this.getStatusNum();
  1705. this.$refs.pagination.handleSearch(true);
  1706. },
  1707. /** 重置按钮操作 */
  1708. resetQuery() {
  1709. this.resetForm("queryForm");
  1710. this.startArea = {
  1711. province: "",
  1712. city: "",
  1713. district: "",
  1714. provinceName: "",
  1715. cityName: "",
  1716. districtName: "",
  1717. cityValues: [],
  1718. districtValues: [],
  1719. districtNames: [],
  1720. };
  1721. this.areaProp = {};
  1722. this.sendStartArea = {
  1723. province: "",
  1724. city: "",
  1725. district: "",
  1726. provinceName: "",
  1727. cityName: "",
  1728. districtName: "",
  1729. cityValues: [],
  1730. districtValues: [],
  1731. districtNames: [],
  1732. };
  1733. this.sendAreaProp = {};
  1734. this.handleQuery();
  1735. this.getStatusNum();
  1736. },
  1737. /** 导出按钮操作 */
  1738. handleExport() {
  1739. this.handleQuery();
  1740. if(this.flag == false) {
  1741. return;
  1742. }
  1743. const queryParams = this.queryParams;
  1744. this.$confirm("是否确认导出配送订单数据?", "警告", {
  1745. confirmButtonText: "确定",
  1746. cancelButtonText: "取消",
  1747. type: "warning",
  1748. })
  1749. .then( () => {
  1750. this.msg = this.$message({
  1751. message: '正在导出,请稍等。。。',
  1752. duration: 0,
  1753. type: 'warning',
  1754. showClose: true
  1755. });
  1756. return exportOrder(queryParams);
  1757. })
  1758. .then((response) => {
  1759. setTimeout(() => {
  1760. this.msg.close()
  1761. this.msg = this.$message({
  1762. duration: 2000,
  1763. message: '导出成功!',
  1764. type: 'success'
  1765. }, 2000)
  1766. });
  1767. this.download(response.data);
  1768. })
  1769. .catch((err) => {
  1770. console.log(err)
  1771. });
  1772. },
  1773. },
  1774. };
  1775. </script>
  1776. <style lang="scss">
  1777. .clearFix:after{
  1778. content: "";
  1779. font-size: 0;
  1780. height: 0;
  1781. display: block;
  1782. clear: both;
  1783. }
  1784. .description p {
  1785. margin: 0;
  1786. padding-left: 10px;
  1787. }
  1788. i.sendLogo {
  1789. background: black;
  1790. color: white;
  1791. border-radius: 50%;
  1792. width: 25px;
  1793. height: 25px;
  1794. font-size: 15px;
  1795. display: flex;
  1796. justify-content: center;
  1797. align-items: center;
  1798. font-style: normal;
  1799. }
  1800. i.sendLogo::before {
  1801. content: "发";
  1802. }
  1803. i.receiptLogo {
  1804. background: black;
  1805. color: white;
  1806. border-radius: 50%;
  1807. width: 25px;
  1808. height: 25px;
  1809. font-size: 15px;
  1810. display: flex;
  1811. justify-content: center;
  1812. align-items: center;
  1813. font-style: normal;
  1814. }
  1815. i.receiptLogo::before {
  1816. content: "收";
  1817. }
  1818. .el-icon-info:before {
  1819. content: "";
  1820. }
  1821. .transition-box {
  1822. margin-bottom: 10px;
  1823. width: 100%;
  1824. height: 120px;
  1825. border-radius: 4px;
  1826. /* text-align: center; */
  1827. color: #fff;
  1828. /* padding: 40px 20px; */
  1829. box-sizing: border-box;
  1830. margin-right: 20px;
  1831. }
  1832. .border-line {
  1833. position: relative;
  1834. }
  1835. .border-line::before {
  1836. content: "";
  1837. position: absolute;
  1838. left: -10px;
  1839. height: 1px;
  1840. width: calc(100% + 20px);
  1841. background: #DFE4ED;
  1842. }
  1843. .update-css {
  1844. .el-table {
  1845. .el-table__header-wrapper {
  1846. display: none;
  1847. }
  1848. .el-table__body-wrapper {
  1849. .el-table__body {
  1850. > tbody {
  1851. display: flex;
  1852. flex-direction: column;
  1853. width: 100%;
  1854. > tr {
  1855. display: flex;
  1856. width: 100%;
  1857. &:nth-of-type(n + 2) {
  1858. margin-top: 20px;
  1859. }
  1860. &:last-of-type {
  1861. margin-bottom: 1px;
  1862. }
  1863. > td {
  1864. border: 1px solid #DFE4ED;
  1865. display: flex;
  1866. width: 100%;
  1867. .cell {
  1868. width: 100%;
  1869. }
  1870. }
  1871. }
  1872. }
  1873. }
  1874. }
  1875. }
  1876. }
  1877. .serial {
  1878. background-color: RGB(50,122,244);
  1879. border-radius: 50px 50px;
  1880. height: 29px;
  1881. width: 115px;
  1882. line-height: 29px;
  1883. text-align: center;
  1884. display: inline-block;
  1885. margin-right: 5px;
  1886. }
  1887. .serial_text {
  1888. color: #fff;
  1889. font-size: 14px;
  1890. letter-spacing: 2px;
  1891. }
  1892. </style>