index1.vue 60 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
  4. <el-form-item prop="orderNo">
  5. <el-input v-model="queryParams.orderNo" placeholder="请输入订单编号" clearable @keyup.enter.native="handleQuery" />
  6. </el-form-item>
  7. <el-form-item prop="appointmentTime">
  8. <el-date-picker clearable v-model="queryParams.appointmentTime" type="date" value-format="yyyy-MM-dd" placeholder="请选择创建时间"> </el-date-picker>
  9. </el-form-item>
  10. <el-form-item prop="contactName">
  11. <el-input v-model="queryParams.contactName" placeholder="请输入客户名称" clearable @keyup.enter.native="handleQuery" />
  12. </el-form-item>
  13. <el-form-item prop="contactPhone" label-width="90px">
  14. <el-input v-model="queryParams.contactPhone" placeholder="请输入客户手机号" clearable @keyup.enter.native="handleQuery" />
  15. </el-form-item>
  16. <el-form-item>
  17. <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
  18. <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
  19. </el-form-item>
  20. </el-form>
  21. <el-row :gutter="10" class="mb8">
  22. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  23. </el-row>
  24. <el-tabs type="border-card" v-model="orderStatus" @tab-click="changeOrderStatus">
  25. <el-tab-pane label="预约待取" name="0">
  26. <el-table v-loading="loading" fit highlight-current-row border stripe :data="clothList">
  27. <el-table-column label="预约单号" align="center" prop="orderNo" width="200px" />
  28. <el-table-column label="预约时间" align="center" prop="appointmentTime" width="160px" />
  29. <el-table-column label="是否大件" align="center" width="100px">
  30. <template slot-scope="scope">
  31. <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isLargeItem" />
  32. </template>
  33. </el-table-column>
  34. <el-table-column label="是否拆装" align="center" width="100px">
  35. <template slot-scope="scope">
  36. <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isDisassemblyAndAssembly" />
  37. </template>
  38. </el-table-column>
  39. <el-table-column label="件数" align="center" prop="appointmentCount" width="80px" />
  40. <el-table-column label="客户姓名" align="center" prop="contactName" width="100px" />
  41. <el-table-column label="客户手机号" align="center" prop="contactPhone" width="120px" />
  42. <el-table-column label="地址明细" align="center" width="220px" show-overflow-tooltip>
  43. <template slot-scope="scope">
  44. <span>{{ scope.row.province }}{{ scope.row.city }}{{ scope.row.area }}{{ scope.row.address }}{{ scope.row.addressDetail }}</span>
  45. </template>
  46. </el-table-column>
  47. <el-table-column label="取衣方式" align="center" width="100px">
  48. <template slot-scope="scope">
  49. <dict-tag :options="dict.type.cloth_take_type" :value="scope.row.takeClothWay" />
  50. </template>
  51. </el-table-column>
  52. <el-table-column label="配送方式" align="center" width="100px" v-if="queryParams.orderStatus != 0">
  53. <template slot-scope="scope">
  54. <dict-tag :options="dict.type.order_cloth_delivery_way" :value="scope.row.deliveryWay" />
  55. </template>
  56. </el-table-column>
  57. <el-table-column label="派送员" align="center" width="100px">
  58. <template slot-scope="scope">
  59. <span v-if="scope.row.takeClothAppUserId == null || scope.row.takeClothAppUserId == ''">- -</span>
  60. <span v-if="scope.row.takeClothAppUserId != null || scope.row.takeClothAppUserId != ''">{{ scope.row.takeClothAppUserName }}</span>
  61. </template>
  62. </el-table-column>
  63. <el-table-column label="派送员手机号" align="center" width="120px">
  64. <template slot-scope="scope">
  65. <span v-if="scope.row.takeClothAppUserId == null || scope.row.takeClothAppUserId == ''">- -</span>
  66. <span v-if="scope.row.takeClothAppUserId != null || scope.row.takeClothAppUserId != ''">{{ scope.row.takeClothAppUserPhone }}</span>
  67. </template>
  68. </el-table-column>
  69. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="150">
  70. <template slot-scope="scope">
  71. <el-button type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-if="queryParams.orderStatus == '0' || queryParams.orderStatus == '8'">派单</el-button>
  72. <el-button type="text" icon="el-icon-delete" @click="handleCancel(scope.row)" v-if="queryParams.orderStatus == '0' || queryParams.orderStatus == '1'">取消订单</el-button>
  73. </template>
  74. </el-table-column>
  75. </el-table>
  76. </el-tab-pane>
  77. <el-tab-pane label="取件中" name="1">
  78. <el-table v-loading="loading" fit highlight-current-row border stripe :data="clothList">
  79. <el-table-column label="预约单号" align="center" prop="orderNo" width="200px" />
  80. <el-table-column label="预约时间" align="center" prop="appointmentTime" width="160px" />
  81. <el-table-column label="是否大件" align="center" width="100px">
  82. <template slot-scope="scope">
  83. <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isLargeItem" />
  84. </template>
  85. </el-table-column>
  86. <el-table-column label="是否拆装" align="center" width="100px">
  87. <template slot-scope="scope">
  88. <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isDisassemblyAndAssembly" />
  89. </template>
  90. </el-table-column>
  91. <el-table-column label="件数" align="center" prop="appointmentCount" width="80px" />
  92. <el-table-column label="客户姓名" align="center" prop="contactName" width="100px" />
  93. <el-table-column label="客户手机号" align="center" prop="contactPhone" width="120px" />
  94. <el-table-column label="地址明细" align="center" width="220px" show-overflow-tooltip>
  95. <template slot-scope="scope">
  96. <span>{{ scope.row.province }}{{ scope.row.city }}{{ scope.row.area }}{{ scope.row.address }}{{ scope.row.addressDetail }}</span>
  97. </template>
  98. </el-table-column>
  99. <el-table-column label="取衣方式" align="center" width="100px">
  100. <template slot-scope="scope">
  101. <dict-tag :options="dict.type.cloth_take_type" :value="scope.row.takeClothWay" />
  102. </template>
  103. </el-table-column>
  104. <el-table-column label="配送方式" align="center" width="100px" v-if="queryParams.orderStatus != 0">
  105. <template slot-scope="scope">
  106. <dict-tag :options="dict.type.order_cloth_delivery_way" :value="scope.row.deliveryWay" />
  107. </template>
  108. </el-table-column>
  109. <el-table-column label="派送员" align="center" width="100px">
  110. <template slot-scope="scope">
  111. <span v-if="scope.row.takeClothAppUserId == null || scope.row.takeClothAppUserId == ''">- -</span>
  112. <span v-if="scope.row.takeClothAppUserId != null || scope.row.takeClothAppUserId != ''">{{ scope.row.takeClothAppUserName }}</span>
  113. </template>
  114. </el-table-column>
  115. <el-table-column label="派送员手机号" align="center" width="120px">
  116. <template slot-scope="scope">
  117. <span v-if="scope.row.takeClothAppUserId == null || scope.row.takeClothAppUserId == ''">- -</span>
  118. <span v-if="scope.row.takeClothAppUserId != null || scope.row.takeClothAppUserId != ''">{{ scope.row.takeClothAppUserPhone }}</span>
  119. </template>
  120. </el-table-column>
  121. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="150">
  122. <template slot-scope="scope">
  123. <el-button type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-if="scope.row.deliveryWay == '1'">修改派送员</el-button>
  124. <el-button type="text" icon="el-icon-edit" @click="handleGetExpressInfo(scope.row, 0)" v-if="scope.row.deliveryWay == '0'">查看配送信息</el-button>
  125. <el-button type="text" @click="handleLogistics(scope.row, '0')" v-if="scope.row.deliveryWay == '2'">物流信息</el-button>
  126. </template>
  127. </el-table-column>
  128. </el-table>
  129. </el-tab-pane>
  130. <el-tab-pane label="已上门" name="2">
  131. <el-table v-loading="loading" fit highlight-current-row border stripe :data="clothList">
  132. <el-table-column label="预约单号" align="center" prop="orderNo" width="200px" />
  133. <el-table-column label="预约时间" align="center" prop="appointmentTime" width="160px" />
  134. <el-table-column label="是否大件" align="center" width="100px">
  135. <template slot-scope="scope">
  136. <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isLargeItem" />
  137. </template>
  138. </el-table-column>
  139. <el-table-column label="是否拆装" align="center" width="100px">
  140. <template slot-scope="scope">
  141. <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isDisassemblyAndAssembly" />
  142. </template>
  143. </el-table-column>
  144. <el-table-column label="件数" align="center" prop="appointmentCount" width="80px" />
  145. <el-table-column label="客户姓名" align="center" prop="contactName" width="100px" />
  146. <el-table-column label="客户手机号" align="center" prop="contactPhone" width="120px" />
  147. <el-table-column label="地址明细" align="center" width="220px" show-overflow-tooltip>
  148. <template slot-scope="scope">
  149. <span>{{ scope.row.province }}{{ scope.row.city }}{{ scope.row.area }}{{ scope.row.address }}{{ scope.row.addressDetail }}</span>
  150. </template>
  151. </el-table-column>
  152. <el-table-column label="取衣方式" align="center" width="100px">
  153. <template slot-scope="scope">
  154. <dict-tag :options="dict.type.cloth_take_type" :value="scope.row.takeClothWay" />
  155. </template>
  156. </el-table-column>
  157. <el-table-column label="配送方式" align="center" width="100px" v-if="queryParams.orderStatus != 0">
  158. <template slot-scope="scope">
  159. <dict-tag :options="dict.type.order_cloth_delivery_way" :value="scope.row.deliveryWay" />
  160. </template>
  161. </el-table-column>
  162. <el-table-column label="派送员" align="center" width="100px">
  163. <template slot-scope="scope">
  164. <span v-if="scope.row.takeClothAppUserId == null || scope.row.takeClothAppUserId == ''">- -</span>
  165. <span v-if="scope.row.takeClothAppUserId != null || scope.row.takeClothAppUserId != ''">{{ scope.row.takeClothAppUserName }}</span>
  166. </template>
  167. </el-table-column>
  168. <el-table-column label="派送员手机号" align="center" width="120px">
  169. <template slot-scope="scope">
  170. <span v-if="scope.row.takeClothAppUserId == null || scope.row.takeClothAppUserId == ''">- -</span>
  171. <span v-if="scope.row.takeClothAppUserId != null || scope.row.takeClothAppUserId != ''">{{ scope.row.takeClothAppUserPhone }}</span>
  172. </template>
  173. </el-table-column>
  174. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="150">
  175. <template slot-scope="scope">
  176. <el-button type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-if="scope.row.deliveryWay == '1'">修改派送员</el-button>
  177. <el-button type="text" icon="el-icon-edit" @click="handleGetExpressInfo(scope.row, 0)" v-if="scope.row.deliveryWay == '0'">查看配送信息</el-button>
  178. <el-button type="text" @click="handleLogistics(scope.row, '0')" v-if="scope.row.deliveryWay == '2'">物流信息</el-button>
  179. </template>
  180. </el-table-column>
  181. </el-table>
  182. </el-tab-pane>
  183. <el-tab-pane label="已取货" name="3">
  184. <el-table v-loading="loading" fit highlight-current-row border stripe :data="clothList">
  185. <el-table-column label="预约单号" align="center" prop="orderNo" width="200px" />
  186. <el-table-column label="预约时间" align="center" prop="appointmentTime" width="160px" />
  187. <el-table-column label="是否大件" align="center" width="100px">
  188. <template slot-scope="scope">
  189. <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isLargeItem" />
  190. </template>
  191. </el-table-column>
  192. <el-table-column label="是否拆装" align="center" width="100px">
  193. <template slot-scope="scope">
  194. <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isDisassemblyAndAssembly" />
  195. </template>
  196. </el-table-column>
  197. <el-table-column label="件数" align="center" prop="appointmentCount" width="80px" />
  198. <el-table-column label="客户姓名" align="center" prop="contactName" width="100px" />
  199. <el-table-column label="客户手机号" align="center" prop="contactPhone" width="120px" />
  200. <el-table-column label="地址明细" align="center" width="220px" show-overflow-tooltip>
  201. <template slot-scope="scope">
  202. <span>{{ scope.row.province }}{{ scope.row.city }}{{ scope.row.area }}{{ scope.row.address }}{{ scope.row.addressDetail }}</span>
  203. </template>
  204. </el-table-column>
  205. <el-table-column label="取衣方式" align="center" width="100px">
  206. <template slot-scope="scope">
  207. <dict-tag :options="dict.type.cloth_take_type" :value="scope.row.takeClothWay" />
  208. </template>
  209. </el-table-column>
  210. <el-table-column label="配送方式" align="center" width="100px" v-if="queryParams.orderStatus != 0">
  211. <template slot-scope="scope">
  212. <dict-tag :options="dict.type.order_cloth_delivery_way" :value="scope.row.deliveryWay" />
  213. </template>
  214. </el-table-column>
  215. <el-table-column label="派送员" align="center" width="100px">
  216. <template slot-scope="scope">
  217. <span v-if="scope.row.takeClothAppUserId == null || scope.row.takeClothAppUserId == ''">- -</span>
  218. <span v-if="scope.row.takeClothAppUserId != null || scope.row.takeClothAppUserId != ''">{{ scope.row.takeClothAppUserName }}</span>
  219. </template>
  220. </el-table-column>
  221. <el-table-column label="派送员手机号" align="center" width="120px">
  222. <template slot-scope="scope">
  223. <span v-if="scope.row.takeClothAppUserId == null || scope.row.takeClothAppUserId == ''">- -</span>
  224. <span v-if="scope.row.takeClothAppUserId != null || scope.row.takeClothAppUserId != ''">{{ scope.row.takeClothAppUserPhone }}</span>
  225. </template>
  226. </el-table-column>
  227. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="150">
  228. <template slot-scope="scope">
  229. <el-button type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-if="scope.row.deliveryWay == '1'">修改派送员</el-button>
  230. <el-button type="text" icon="el-icon-edit" @click="handleGetExpressInfo(scope.row, 0)" v-if="scope.row.deliveryWay == '0'">查看配送信息</el-button>
  231. <el-button type="text" icon="el-icon-delete" @click="handleLogistics(scope.row)" v-if="scope.row.deliveryWay == '2'">物流信息</el-button>
  232. </template>
  233. </el-table-column>
  234. </el-table>
  235. </el-tab-pane>
  236. <el-tab-pane label="待派送" name="8">
  237. <el-table v-loading="loading" fit highlight-current-row border stripe :data="clothList">
  238. <el-table-column label="订单号" align="center" prop="orderNo" width="200px" />
  239. <el-table-column label="客户姓名" align="center" prop="contactName" width="100px" />
  240. <el-table-column label="客户手机号" align="center" prop="contactPhone" width="120px" />
  241. <el-table-column label="地址明细" align="center" show-overflow-tooltip>
  242. <template slot-scope="scope">
  243. <span>{{ scope.row.province }}{{ scope.row.city }}{{ scope.row.area }}{{ scope.row.address }}{{ scope.row.addressDetail }}</span>
  244. </template>
  245. </el-table-column>
  246. <el-table-column label="取衣方式" align="center" width="100px">
  247. <template slot-scope="scope">
  248. <dict-tag :options="dict.type.cloth_send_type" :value="scope.row.sendClothWay" />
  249. </template>
  250. </el-table-column>
  251. <el-table-column label="派送员" align="center" width="100px">
  252. <template slot-scope="scope">
  253. <span v-if="scope.row.takeClothAppUserId == null || scope.row.takeClothAppUserId == ''">- -</span>
  254. <span v-if="scope.row.takeClothAppUserId != null || scope.row.takeClothAppUserId != ''">{{ scope.row.takeClothAppUserName }}</span>
  255. </template>
  256. </el-table-column>
  257. <el-table-column label="派送员手机号" align="center" width="120px">
  258. <template slot-scope="scope">
  259. <span v-if="scope.row.takeClothAppUserId == null || scope.row.takeClothAppUserId == ''">- -</span>
  260. <span v-if="scope.row.takeClothAppUserId != null || scope.row.takeClothAppUserId != ''">{{ scope.row.takeClothAppUserPhone }}</span>
  261. </template>
  262. </el-table-column>
  263. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="150">
  264. <template slot-scope="scope">
  265. <el-button type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-if="queryParams.orderStatus == '0' || queryParams.orderStatus == '8'">派单</el-button>
  266. </template>
  267. </el-table-column>
  268. </el-table>
  269. </el-tab-pane>
  270. <el-tab-pane label="派送中" name="9">
  271. <el-table v-loading="loading" fit highlight-current-row border stripe :data="clothList">
  272. <el-table-column label="订单号" align="center" prop="orderNo" width="200px" />
  273. <el-table-column label="客户姓名" align="center" prop="contactName" width="100px" />
  274. <el-table-column label="客户手机号" align="center" prop="contactPhone" width="120px" />
  275. <el-table-column label="地址明细" align="center" show-overflow-tooltip>
  276. <template slot-scope="scope">
  277. <span>{{ scope.row.province }}{{ scope.row.city }}{{ scope.row.area }}{{ scope.row.address }}{{ scope.row.addressDetail }}</span>
  278. </template>
  279. </el-table-column>
  280. <el-table-column label="取衣方式" align="center" width="100px">
  281. <template slot-scope="scope">
  282. <dict-tag :options="dict.type.cloth_send_type" :value="scope.row.sendClothWay" />
  283. </template>
  284. </el-table-column>
  285. <el-table-column label="配送方式" align="center" width="100px">
  286. <template slot-scope="scope">
  287. <dict-tag :options="dict.type.order_cloth_delivery_way" :value="scope.row.deliveryWay" />
  288. </template>
  289. </el-table-column>
  290. <el-table-column label="派送员" align="center" width="100px">
  291. <template slot-scope="scope">
  292. <span v-if="scope.row.takeClothAppUserId == null || scope.row.takeClothAppUserId == ''">- -</span>
  293. <span v-if="scope.row.takeClothAppUserId != null || scope.row.takeClothAppUserId != ''">{{ scope.row.takeClothAppUserName }}</span>
  294. </template>
  295. </el-table-column>
  296. <el-table-column label="派送员手机号" align="center" width="120px">
  297. <template slot-scope="scope">
  298. <span v-if="scope.row.takeClothAppUserId == null || scope.row.takeClothAppUserId == ''">- -</span>
  299. <span v-if="scope.row.takeClothAppUserId != null || scope.row.takeClothAppUserId != ''">{{ scope.row.takeClothAppUserPhone }}</span>
  300. </template>
  301. </el-table-column>
  302. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="150">
  303. <template slot-scope="scope">
  304. <el-button type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-if="queryParams.orderStatus == '1' && scope.row.deliveryWay == '1'">修改派送员</el-button>
  305. <el-button type="text" icon="el-icon-edit" @click="handleGetExpressInfo(scope.row, 1)" v-if="scope.row.deliveryWay == '0'">查看配送信息</el-button>
  306. <el-button type="text" @click="handleLogistics(scope.row, '1')" v-if="scope.row.deliveryWay == '2'">物流信息</el-button>
  307. </template>
  308. </el-table-column>
  309. </el-table>
  310. </el-tab-pane>
  311. <el-tab-pane label="已完成" name="11">
  312. <el-table v-loading="loading" fit highlight-current-row border stripe :data="clothList">
  313. <el-table-column label="订单号" align="center" prop="orderNo" width="200px" />
  314. <el-table-column label="客户姓名" align="center" prop="contactName" width="100px" />
  315. <el-table-column label="客户手机号" align="center" prop="contactPhone" width="120px" />
  316. <el-table-column label="地址明细" align="center" show-overflow-tooltip>
  317. <template slot-scope="scope">
  318. <span>{{ scope.row.province }}{{ scope.row.city }}{{ scope.row.area }}{{ scope.row.address }}{{ scope.row.addressDetail }}</span>
  319. </template>
  320. </el-table-column>
  321. <el-table-column label="取衣方式" align="center" width="100px">
  322. <template slot-scope="scope">
  323. <dict-tag :options="dict.type.cloth_send_type" :value="scope.row.sendClothWay" />
  324. </template>
  325. </el-table-column>
  326. <el-table-column label="配送方式" align="center" width="100px">
  327. <template slot-scope="scope">
  328. <dict-tag :options="dict.type.order_cloth_delivery_way" :value="scope.row.deliveryWay" />
  329. </template>
  330. </el-table-column>
  331. <el-table-column label="派送员" align="center" width="100px">
  332. <template slot-scope="scope">
  333. <span v-if="scope.row.takeClothAppUserId == null || scope.row.takeClothAppUserId == ''">- -</span>
  334. <span v-if="scope.row.takeClothAppUserId != null || scope.row.takeClothAppUserId != ''">{{ scope.row.takeClothAppUserName }}</span>
  335. </template>
  336. </el-table-column>
  337. <el-table-column label="派送员手机号" align="center" width="120px">
  338. <template slot-scope="scope">
  339. <span v-if="scope.row.takeClothAppUserId == null || scope.row.takeClothAppUserId == ''">- -</span>
  340. <span v-if="scope.row.takeClothAppUserId != null || scope.row.takeClothAppUserId != ''">{{ scope.row.takeClothAppUserPhone }}</span>
  341. </template>
  342. </el-table-column>
  343. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="150">
  344. <template slot-scope="scope">
  345. <el-button type="text" icon="el-icon-edit" @click="handleGetExpressInfo(scope.row, 1)" v-if="scope.row.deliveryWay == '0'">查看配送信息</el-button>
  346. <el-button type="text" @click="handleLogistics(scope.row, '1')" v-if="scope.row.deliveryWay == '2'">物流信息</el-button>
  347. </template>
  348. </el-table-column>
  349. </el-table>
  350. </el-tab-pane>
  351. <el-tab-pane label="已取消" name="100">
  352. <el-table v-loading="loading" fit highlight-current-row border stripe :data="clothList">
  353. <el-table-column label="预约单号" align="center" prop="orderNo" width="200px" />
  354. <el-table-column label="预约时间" align="center" prop="appointmentTime" width="160px" />
  355. <el-table-column label="是否大件" align="center" width="100px">
  356. <template slot-scope="scope">
  357. <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isLargeItem" />
  358. </template>
  359. </el-table-column>
  360. <el-table-column label="是否拆装" align="center" width="100px">
  361. <template slot-scope="scope">
  362. <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isDisassemblyAndAssembly" />
  363. </template>
  364. </el-table-column>
  365. <el-table-column label="件数" align="center" prop="appointmentCount" width="80px" />
  366. <el-table-column label="客户姓名" align="center" prop="contactName" width="100px" />
  367. <el-table-column label="客户手机号" align="center" prop="contactPhone" width="120px" />
  368. <el-table-column label="地址明细" align="center" width="220px" show-overflow-tooltip>
  369. <template slot-scope="scope">
  370. <span>{{ scope.row.province }}{{ scope.row.city }}{{ scope.row.area }}{{ scope.row.address }}{{ scope.row.addressDetail }}</span>
  371. </template>
  372. </el-table-column>
  373. <el-table-column label="取衣方式" align="center" width="100px">
  374. <template slot-scope="scope">
  375. <dict-tag :options="dict.type.cloth_take_type" :value="scope.row.takeClothWay" />
  376. </template>
  377. </el-table-column>
  378. <el-table-column label="配送方式" align="center" width="100px" v-if="queryParams.orderStatus != 0">
  379. <template slot-scope="scope">
  380. <dict-tag :options="dict.type.order_cloth_delivery_way" :value="scope.row.deliveryWay" />
  381. </template>
  382. </el-table-column>
  383. <el-table-column label="派送员" align="center" width="100px">
  384. <template slot-scope="scope">
  385. <span v-if="scope.row.takeClothAppUserId == null || scope.row.takeClothAppUserId == ''">- -</span>
  386. <span v-if="scope.row.takeClothAppUserId != null || scope.row.takeClothAppUserId != ''">{{ scope.row.takeClothAppUserName }}</span>
  387. </template>
  388. </el-table-column>
  389. <el-table-column label="派送员手机号" align="center" width="120px">
  390. <template slot-scope="scope">
  391. <span v-if="scope.row.takeClothAppUserId == null || scope.row.takeClothAppUserId == ''">- -</span>
  392. <span v-if="scope.row.takeClothAppUserId != null || scope.row.takeClothAppUserId != ''">{{ scope.row.takeClothAppUserPhone }}</span>
  393. </template>
  394. </el-table-column>
  395. </el-table>
  396. </el-tab-pane>
  397. <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
  398. <!-- 添加或修改洗衣订单对话框 -->
  399. <el-dialog :title="title" :visible.sync="open" width="20%" append-to-body>
  400. <el-row :gutter="15">
  401. <el-form ref="form" :model="form" :rules="rules" label-width="100px">
  402. <el-col :span="24">
  403. <el-form-item label="配送方式" prop="service_trans_id">
  404. <el-radio-group v-model="form.service_trans_id">
  405. <el-radio-button key="0" label="0">第三方配送</el-radio-button>
  406. <el-radio-button key="1" label="1">门店自送</el-radio-button>
  407. </el-radio-group>
  408. </el-form-item>
  409. </el-col>
  410. <el-col :span="24" v-if="form.service_trans_id == 1">
  411. <el-form-item label="派送员" prop="takeClothAppUserId">
  412. <el-select v-model="form.takeClothAppUserId" placeholder="请选择派送员" clearable>
  413. <el-option v-for="man in deliveryManList" :key="man.appUserId" :label="man.realName" :value="man.appUserId" />
  414. </el-select>
  415. </el-form-item>
  416. </el-col>
  417. </el-form>
  418. </el-row>
  419. <div>
  420. <el-button type="primary" @click="submitForm" style="margin-left: 40%">提交</el-button>
  421. </div>
  422. </el-dialog>
  423. </el-tabs>
  424. <!-- 添加或修改商品品牌管理对话框 -->
  425. <el-dialog title="同城配送信息" :visible.sync="intracityExpressOpen" size="50%" append-to-body>
  426. <el-row :gutter="15" style="margin-bottom: 80px; margin-left: 20px; width: calc(100% - 20px)">
  427. <el-col :span="24">
  428. <el-descriptions class="margin-top" :column="2" border>
  429. <el-descriptions-item>
  430. <template slot="label"> 配送公司 </template>
  431. <dict-tag :options="dict.type.express_service_type" :value="intracityExpressOrderInfo.service_trans_id" />
  432. </el-descriptions-item>
  433. <el-descriptions-item>
  434. <template slot="label"> 配送订单状态 </template>
  435. <dict-tag :options="dict.type.intracity_express_order_status" :value="intracityExpressOrderInfo.order_status" />
  436. </el-descriptions-item>
  437. <el-descriptions-item>
  438. <template slot="label"> 配送距离 </template>
  439. <span v-if="intracityExpressOrderInfo.distance < 1000">{{ intracityExpressOrderInfo.distance }}米</span>
  440. <span v-else>{{ intracityExpressOrderInfo.distance / 1000 }}千米</span>
  441. </el-descriptions-item>
  442. <el-descriptions-item>
  443. <template slot="label"> 支付费用 </template>
  444. {{ intracityExpressOrderInfo.actualfee / 100 }}元
  445. </el-descriptions-item>
  446. <el-descriptions-item>
  447. <template slot="label"> 违约金 </template>
  448. {{ intracityExpressOrderInfo.deductfee / 100 }}元
  449. </el-descriptions-item>
  450. <el-descriptions-item>
  451. <template slot="label"> </template>
  452. </el-descriptions-item>
  453. <el-descriptions-item>
  454. <template slot="label"> 发单时间 </template>
  455. {{ transDate(intracityExpressOrderInfo.create_time) }}
  456. </el-descriptions-item>
  457. <el-descriptions-item>
  458. <template slot="label"> 配送员接单时间 </template>
  459. {{ transDate(intracityExpressOrderInfo.accept_time) }}
  460. </el-descriptions-item>
  461. <el-descriptions-item>
  462. <template slot="label"> 配送员取货时间 </template>
  463. {{ transDate(intracityExpressOrderInfo.fetch_time) }}
  464. </el-descriptions-item>
  465. <el-descriptions-item>
  466. <template slot="label"> 配送员送达时间 </template>
  467. {{ transDate(intracityExpressOrderInfo.finish_time) }}
  468. </el-descriptions-item>
  469. <el-descriptions-item>
  470. <template slot="label"> 取消时间 </template>
  471. {{ transDate(intracityExpressOrderInfo.cancel_time) }}
  472. </el-descriptions-item>
  473. <el-descriptions-item>
  474. <template slot="label"> 预期送达时间 </template>
  475. {{ transDate(intracityExpressOrderInfo.expected_finish_time) }}
  476. </el-descriptions-item>
  477. <el-descriptions-item>
  478. <template slot="label"> 配送员姓名 </template>
  479. {{ intracityExpressOrderInfo.transporter_info ? intracityExpressOrderInfo.transporter_info.transporter_name : '' }}
  480. </el-descriptions-item>
  481. <el-descriptions-item>
  482. <template slot="label"> 配送员手机 </template>
  483. {{ intracityExpressOrderInfo.transporter_info ? intracityExpressOrderInfo.transporter_info.transporter_phone : '' }}
  484. </el-descriptions-item>
  485. <el-descriptions-item>
  486. <template slot="label"> 取件人姓名 </template>
  487. {{ intracityExpressOrderInfo.store_info ? intracityExpressOrderInfo.store_info.store_name : '' }}
  488. </el-descriptions-item>
  489. <el-descriptions-item>
  490. <template slot="label"> 取件人电话 </template>
  491. {{ intracityExpressOrderInfo.store_info ? intracityExpressOrderInfo.store_info.phone_num : '' }}
  492. </el-descriptions-item>
  493. <el-descriptions-item :span="2">
  494. <template slot="label"> 取件地址 </template>
  495. {{ intracityExpressOrderInfo.store_info ? intracityExpressOrderInfo.store_info.address : '' }}
  496. </el-descriptions-item>
  497. <el-descriptions-item>
  498. <template slot="label"> 收件人姓名 </template>
  499. {{ intracityExpressOrderInfo.receiver_info ? intracityExpressOrderInfo.receiver_info.receiver_name : '' }}
  500. </el-descriptions-item>
  501. <el-descriptions-item>
  502. <template slot="label"> 收件人电话 </template>
  503. {{ intracityExpressOrderInfo.receiver_info ? intracityExpressOrderInfo.receiver_info.phone_num : '' }}
  504. </el-descriptions-item>
  505. <el-descriptions-item :span="2">
  506. <template slot="label"> 收件地址 </template>
  507. {{ intracityExpressOrderInfo.receiver_info ? intracityExpressOrderInfo.receiver_info.address : '' }}
  508. </el-descriptions-item>
  509. </el-descriptions>
  510. </el-col>
  511. </el-row>
  512. <div slot="footer" class="dialog-footer">
  513. <el-button @click="cancel" style="margin-left: 5%">取 消</el-button>
  514. </div>
  515. </el-dialog>
  516. <!-- 订单出货对话框 -->
  517. <el-dialog title="订单出货信息" :visible.sync="openDeliveryPage" size="40%" append-to-body :before-close="deliveryClose">
  518. <el-row :gutter="15">
  519. <el-form ref="deliveryVo" :model="deliveryVo" :rules="deliveryRules" label-width="120px">
  520. <el-col :span="24">
  521. <el-form-item label="快递公司" prop="deliveryCompany">
  522. <el-radio-group v-model="deliveryVo.deliveryCompany" @input="changeDeliveryId">
  523. <el-radio-button v-for="dict in deliveryData" :label="dict.deliveryName" :key="dict.deliveryName"></el-radio-button>
  524. </el-radio-group>
  525. </el-form-item>
  526. <el-form-item label="服务类型" prop="serviceType">
  527. <div class="servicecard" v-for="del in serviceData" :key="del.serviceType" @click="checkserviceId(del)" :class="{ active: deliveryVo.serviceType == del.serviceType }">
  528. <div class="check"><i class="el-icon-check"></i></div>
  529. {{ del.serviceName }}
  530. </div>
  531. </el-form-item>
  532. <el-form-item label="预期揽件时间" prop="expectTime">
  533. <el-date-picker
  534. type="datetime"
  535. placeholder="选择预期揽件时间"
  536. v-model="deliveryVo.expectTime"
  537. style="width: 100%"
  538. value-format="yyyy-MM-dd HH:mm"
  539. format="yyyy-MM-dd HH:mm"
  540. :picker-options="{
  541. disabledDate: (time) => {
  542. return time.getTime() < Date.now() - 3600 * 1000 * 24
  543. },
  544. selectableRange: startTimeRange
  545. }"
  546. :default-time="deliTime"
  547. class="date_picker"
  548. :editable="false"
  549. ></el-date-picker>
  550. </el-form-item>
  551. <!-- <el-form-item label="包裹数量" prop="count">
  552. <el-input v-model="deliveryVo.count" type="number" placeholder="请输入包裹数量" clearable></el-input>
  553. </el-form-item> -->
  554. <el-form-item label="货物高度" prop="spaceHeight">
  555. <el-input v-model="deliveryVo.spaceHeight" placeholder="请输入货物高度" clearable>
  556. <template slot="append">厘米(cm)</template>
  557. </el-input>
  558. </el-form-item>
  559. <el-form-item label="货物长度" prop="spaceLength">
  560. <el-input v-model="deliveryVo.spaceLength" placeholder="请输入货物长度" clearable>
  561. <template slot="append">厘米(cm)</template>
  562. </el-input>
  563. </el-form-item>
  564. <el-form-item label="货物宽度" prop="spaceWidth">
  565. <el-input v-model="deliveryVo.spaceWidth" placeholder="请输入货物宽度" clearable>
  566. <template slot="append">厘米(cm)</template>
  567. </el-input>
  568. </el-form-item>
  569. <el-form-item label="货物总重量" prop="weight">
  570. <el-input v-model="deliveryVo.weight" placeholder="请输入货物总重量" clearable>
  571. <template slot="append">千克 (kg)</template>
  572. </el-input>
  573. </el-form-item>
  574. <el-form-item label="备注信息" prop="customRemark">
  575. <el-input v-model="deliveryVo.customRemark" rows="5" type="textarea" placeholder="请输入备注信息,比如易碎物品……" maxlength="500" show-word-limit clearable></el-input>
  576. </el-form-item>
  577. </el-col>
  578. </el-form>
  579. </el-row>
  580. <div slot="footer" class="dialog-footer">
  581. <el-button type="primary" @click="submitDelivery('deliveryVo')" style="margin-left: 5%">提交</el-button>
  582. <el-button @click="cancelDelivery">取 消</el-button>
  583. </div>
  584. </el-dialog>
  585. <!-- 快递信息对话框 -->
  586. <el-dialog title="快递信息" :visible.sync="openDeliveryinfo" size="40%" append-to-body :before-close="deliveryinfoClose">
  587. <div class="deliveryView">
  588. <div class="info">
  589. <span>快递公司:</span>
  590. <span>{{ deliveryView.name }}</span>
  591. </div>
  592. <div class="info">
  593. <span>收货地址:</span>
  594. <span>{{ deliveryView.address }}</span>
  595. </div>
  596. </div>
  597. <el-timeline v-if="deliveryView.pathItemList.length">
  598. <el-timeline-item v-for="(item, index) in deliveryView.pathItemList" :key="index" :timestamp="item.actionTime">
  599. {{ item.actionMsg }}
  600. </el-timeline-item>
  601. </el-timeline>
  602. <el-empty description="暂无快递信息" v-else></el-empty>
  603. <div slot="footer" class="dialog-footer">
  604. <el-button type="primary" style="margin-left: 5%" @click="openDeliveryinfo = false">关闭</el-button>
  605. </div>
  606. </el-dialog>
  607. </div>
  608. </template>
  609. <script>
  610. import { getAppointmentClothOrderList, setDeliveryManByAppointment, cancelAppointmentOrderByAppointment, setIntracityExpress, orderClothSetThirdDelivery, setSendDelivery } from '@/api/order/cloth'
  611. import { getDeliveryManListByOrg } from '../../../api/app/delivery'
  612. import { intracityExpressGetOrderInfo } from '../../../api/express/intracity'
  613. import { formatDate } from '../../../utils'
  614. import { getdeliveryAll, getDeliveryPath } from '../../../api/order/goods'
  615. import { getDeliveryPathByClothOrderNo } from '../../../api/express/delivery'
  616. export default {
  617. name: 'WorkAppointmentOrder',
  618. dicts: ['cloth_order_status', 'sys_normal_disable', 'sys_yes_no', 'cloth_take_type', 'cloth_send_type', 'order_cloth_delivery_way', 'express_service_type', 'intracity_express_order_status'],
  619. data() {
  620. var validateNumberInput = (rule, value, callback) => {
  621. if (!value || isNaN(value)) {
  622. callback(new Error('只能输入数字,不能为空'))
  623. } else {
  624. callback()
  625. }
  626. }
  627. return {
  628. orderStatus: '0',
  629. // 遮罩层
  630. loading: true,
  631. // 选中数组
  632. ids: [],
  633. // 非单个禁用
  634. single: true,
  635. // 非多个禁用
  636. multiple: true,
  637. // 显示搜索条件
  638. showSearch: true,
  639. // 总条数
  640. total: 0,
  641. // 预约订单表格数据
  642. clothList: [],
  643. // 弹出层标题
  644. title: '',
  645. // 是否显示弹出层
  646. open: false,
  647. intracityExpressOpen: false,
  648. intracityExpressOrderInfo: {},
  649. openDeliveryPage: false,
  650. deliveryVo: {
  651. bizId: '',
  652. // count: 1,
  653. customRemark: '',
  654. deliveryCompany: '',
  655. deliveryId: '',
  656. expectTime: '',
  657. orderId: null,
  658. serviceName: '',
  659. serviceType: null,
  660. spaceHeight: null,
  661. spaceLength: null,
  662. spaceWidth: null,
  663. weight: null
  664. },
  665. deliveryData: [], //快递公司数据
  666. serviceData: [], //快递公司服务类型数据
  667. openDeliveryinfo: false,
  668. deliveryView: {
  669. name: '',
  670. pathItemList: []
  671. },
  672. startTimeRange: null,
  673. deliTime: null,
  674. // 查询参数
  675. queryParams: {
  676. pageNum: 1,
  677. pageSize: 10,
  678. orderNo: null,
  679. contactName: null,
  680. contactPhone: null,
  681. orderStatus: null
  682. },
  683. // 表单参数
  684. form: {},
  685. // 表单校验
  686. rules: {
  687. service_trans_id: [
  688. {
  689. required: true,
  690. message: '配送方式不能为空',
  691. trigger: 'blur'
  692. }
  693. ],
  694. takeClothAppUserId: [
  695. {
  696. required: true,
  697. message: '派送员不能为空',
  698. trigger: 'blur'
  699. }
  700. ]
  701. },
  702. deliveryRules: {
  703. deliveryName: [{ required: true, message: '请选择物流公司', trigger: 'change' }],
  704. serviceType: [{ required: true, message: '请选择服务类型', trigger: 'change' }],
  705. expectTime: [{ required: true, message: '选择预期揽件时间', trigger: 'blur' }],
  706. // count: [
  707. // { required: true, message: '请输入包裹数量', trigger: 'blur' },
  708. // ],
  709. spaceHeight: [
  710. { required: true, message: '请输入货物高度', trigger: 'blur' },
  711. { validator: validateNumberInput, trigger: 'blur' }
  712. ],
  713. spaceLength: [
  714. { required: true, message: '请输入货物长度', trigger: 'blur' },
  715. { validator: validateNumberInput, trigger: 'blur' }
  716. ],
  717. spaceWidth: [
  718. { required: true, message: '请输入货物宽度', trigger: 'blur' },
  719. { validator: validateNumberInput, trigger: 'blur' }
  720. ],
  721. weight: [
  722. { required: true, message: '请输入货物总重量', trigger: 'blur' },
  723. { validator: validateNumberInput, trigger: 'blur' }
  724. ],
  725. customRemark: [{ required: true, message: '请输入备注信息,比如易碎物品……', trigger: 'blur' }]
  726. },
  727. deliveryManList: []
  728. }
  729. },
  730. created() {
  731. var userInfoVO = this.getUserInfo()
  732. if (userInfoVO.userType == '02') {
  733. this.getDeliveryList()
  734. } else {
  735. this.getdeliveryAll()
  736. }
  737. this.getList()
  738. },
  739. methods: {
  740. getDeliveryList() {
  741. getDeliveryManListByOrg().then((response) => {
  742. this.deliveryManList = response.data
  743. })
  744. },
  745. changeOrderStatus() {
  746. this.queryParams.orderStatus = this.orderStatus
  747. this.handleQuery()
  748. },
  749. /** 查询洗衣订单列表 */
  750. getList() {
  751. this.loading = true
  752. this.queryParams.orderStatus = this.orderStatus
  753. getAppointmentClothOrderList(this.queryParams).then((response) => {
  754. this.clothList = response.rows
  755. this.total = response.total
  756. this.loading = false
  757. this.$forceUpdate()
  758. })
  759. },
  760. // 取消按钮
  761. cancel() {
  762. this.intracityExpressOpen = false
  763. this.open = false
  764. this.reset()
  765. },
  766. // 表单重置
  767. reset() {
  768. this.form = {
  769. id: null,
  770. orderNo: null,
  771. orgId: null,
  772. sourceType: null,
  773. factoryId: null,
  774. appUserId: null,
  775. province: null,
  776. city: null,
  777. area: null,
  778. address: null,
  779. addressDetail: null,
  780. longitude: null,
  781. latitude: null,
  782. contactName: null,
  783. contactPhone: null,
  784. orderAmount: null,
  785. payAmount: null,
  786. payType: null,
  787. payTime: null,
  788. outTradeOrderNo: null,
  789. orderSource: null,
  790. refundAmount: null,
  791. refundContent: null,
  792. appointmentTime: null,
  793. appointmentCount: null,
  794. orderStatus: '0',
  795. takeClothTime: null,
  796. takeClothAppUserId: null,
  797. setPriceTime: null,
  798. pickUpTime: null,
  799. washClothStartTime: null,
  800. washClothEndTime: null,
  801. sendToStoreTime: null,
  802. sendToUserTime: null,
  803. refundApplyTime: null,
  804. refundTime: null,
  805. refundStatus: '0',
  806. refundReason: null,
  807. sendClothAppUserId: null,
  808. takeClothWay: null,
  809. sendClothWay: null,
  810. couponAmount: null,
  811. finishTime: null,
  812. employeeId: null,
  813. delFlag: null,
  814. createById: null,
  815. createBy: null,
  816. createTime: null,
  817. updateById: null,
  818. updateBy: null,
  819. updateTime: null,
  820. remark: null,
  821. isDisassemblyAndAssembly: null,
  822. isLargeItem: null,
  823. clothSpeedId: null,
  824. clothSpeedName: null,
  825. isSpecial: null,
  826. deductAmount: null
  827. }
  828. this.resetForm('form')
  829. },
  830. /** 搜索按钮操作 */
  831. handleQuery() {
  832. this.getList()
  833. },
  834. /** 重置按钮操作 */
  835. resetQuery() {
  836. this.resetForm('queryForm')
  837. this.handleQuery()
  838. },
  839. /** 派单按钮操作 */
  840. handleUpdate(row) {
  841. this.reset()
  842. var userInfoVO = this.getUserInfo()
  843. if (userInfoVO.userType == '01') {
  844. this.openDeliveryPage = true
  845. this.deliveryVo.deliveryCompany = this.deliveryData[0].deliveryName
  846. this.serviceData = this.deliveryData[0].serviceType
  847. // 获取当前时间
  848. const now = new Date()
  849. // 增加一个小时
  850. now.setHours(now.getHours() + 1)
  851. // 提取时分秒并格式化
  852. const hours = ('0' + now.getHours()).slice(-2)
  853. const minutes = ('0' + now.getMinutes()).slice(-2)
  854. const seconds = ('0' + now.getSeconds()).slice(-2)
  855. // 结果字符串
  856. this.deliTime = `${hours}:${minutes}:${seconds}`
  857. this.deliveryVo.orderNo = row.orderNo
  858. } else {
  859. this.open = true
  860. this.form.orderNo = row.orderNo
  861. this.form.orderStatus = row.orderStatus
  862. }
  863. },
  864. /** 提交按钮 */
  865. submitForm() {
  866. this.$refs['form'].validate((valid) => {
  867. if (valid) {
  868. if (this.form.service_trans_id == 0) {
  869. setIntracityExpress({ orderNo: this.form.orderNo }).then((res) => {
  870. this.$modal.msgSuccess('派单成功')
  871. this.open = false
  872. this.getList()
  873. })
  874. } else {
  875. if (this.form.orderStatus == '0' || this.form.orderStatus == '1') {
  876. setDeliveryManByAppointment({ deliveryId: this.form.takeClothAppUserId, orderNo: this.form.orderNo }).then((response) => {
  877. this.$modal.msgSuccess('派单成功')
  878. this.open = false
  879. this.getList()
  880. })
  881. } else {
  882. setSendDelivery({ deliveryManId: this.form.takeClothAppUserId, orderNo: this.form.orderNo }).then((response) => {
  883. this.$modal.msgSuccess('派单成功')
  884. this.open = false
  885. this.getList()
  886. })
  887. }
  888. }
  889. }
  890. })
  891. },
  892. handleCancel(row) {
  893. this.$confirm('是否确认取消该预约订单?')
  894. .then(() => {
  895. cancelAppointmentOrderByAppointment({ orderNo: row.orderNo }).then((response) => {
  896. this.$modal.msgSuccess('取消完成')
  897. this.getList()
  898. })
  899. })
  900. .catch(() => {})
  901. },
  902. checkClose(done) {
  903. this.$confirm('是否关闭表单,关闭后数据将丢失?')
  904. .then(function () {
  905. done()
  906. })
  907. .then(() => {})
  908. .catch(() => {})
  909. },
  910. handleLogistics(row, deliveryType) {
  911. getDeliveryPathByClothOrderNo({ orderNo: row.orderNo, deliveryType: deliveryType }).then((res) => {
  912. this.deliveryView.name = row.deliveryName
  913. this.deliveryView.pathItemList = res.data.pathItemList
  914. this.deliveryView.address = row.province + row.city + row.area + row.address + row.addressDetail
  915. this.openDeliveryinfo = true
  916. })
  917. },
  918. handleGetExpressInfo(row, deliveryType) {
  919. intracityExpressGetOrderInfo({ orderNo: row.orderNo, deliveryType: deliveryType }).then((res) => {
  920. this.intracityExpressOpen = true
  921. this.intracityExpressOrderInfo = res.data
  922. })
  923. },
  924. transDate(pay_time) {
  925. return formatDate(pay_time * 1000, 1)
  926. },
  927. //获取快递公司
  928. getdeliveryAll() {
  929. getdeliveryAll().then((res) => {
  930. this.deliveryData = res.data
  931. })
  932. },
  933. //切换快递获取其他数据
  934. changeDeliveryId(value) {
  935. this.deliveryData.forEach((item, index) => {
  936. if (value == item.deliveryName) {
  937. this.deliveryVo.deliveryId = item.deliveryId
  938. this.deliveryVo.bizId = item.bizId
  939. this.serviceData = item.serviceType
  940. }
  941. })
  942. },
  943. checkserviceId(del) {
  944. this.deliveryVo.serviceType = del.serviceType
  945. this.deliveryVo.serviceName = del.serviceName
  946. },
  947. cancelDelivery() {
  948. this.openDeliveryPage = false
  949. this.deliveryreset()
  950. },
  951. // 表单重置
  952. deliveryreset() {
  953. this.deliveryVo = {
  954. bizId: '',
  955. // count: 1,
  956. customRemark: '',
  957. deliveryCompany: '',
  958. deliveryId: '',
  959. expectTime: '',
  960. orderId: 0,
  961. serviceName: '',
  962. serviceType: null,
  963. spaceHeight: null,
  964. spaceLength: null,
  965. spaceWidth: null,
  966. weight: null
  967. }
  968. },
  969. deliveryClose(done) {
  970. this.$confirm('是否关闭出货信息窗口,确认关闭?')
  971. .then(function () {
  972. done()
  973. })
  974. .then(() => {})
  975. .catch(() => {})
  976. },
  977. deliveryinfoClose(done) {
  978. this.$confirm('是否关闭快递信息窗口,确认关闭?')
  979. .then(function () {
  980. done()
  981. })
  982. .then(() => {})
  983. .catch(() => {})
  984. },
  985. submitDelivery(formName) {
  986. this.$confirm('是否确认出货配送?')
  987. .then(() => {
  988. this.$refs[formName].validate((valid) => {
  989. if (valid) {
  990. orderClothSetThirdDelivery(this.deliveryVo).then((res) => {
  991. this.$message.success('操作成功')
  992. this.getList()
  993. this.openDeliveryPage = false
  994. this.deliveryreset()
  995. })
  996. }
  997. })
  998. })
  999. .catch(() => {})
  1000. }
  1001. }
  1002. }
  1003. </script>
  1004. <style lang="scss" scoped>
  1005. .servicecard {
  1006. box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
  1007. background-color: #fff;
  1008. border-radius: 5px;
  1009. margin: 0 10px 10px 0;
  1010. padding: 10px 20px;
  1011. display: inline-block;
  1012. cursor: pointer;
  1013. position: relative;
  1014. &::after {
  1015. content: '';
  1016. position: absolute;
  1017. top: 0;
  1018. right: 0px; /* 调整三角形的大小和位置 */
  1019. width: 0;
  1020. height: 0;
  1021. border-left: 35px solid transparent;
  1022. border-top: 35px solid #007bff;
  1023. z-index: 50;
  1024. opacity: 0;
  1025. }
  1026. .check {
  1027. position: absolute;
  1028. top: -5px;
  1029. right: 3px;
  1030. color: #fff;
  1031. z-index: 100;
  1032. opacity: 0;
  1033. }
  1034. &.active {
  1035. &::after {
  1036. opacity: 1;
  1037. }
  1038. .check {
  1039. opacity: 1;
  1040. }
  1041. }
  1042. }
  1043. .deliveryView {
  1044. margin: 0 20px 20px 20px;
  1045. padding: 15px;
  1046. border-radius: 5px;
  1047. background-color: #f4f4f4;
  1048. color: #555;
  1049. .info:first-child {
  1050. margin-bottom: 10px;
  1051. }
  1052. }
  1053. </style>
  1054. s