retail_detail.vue 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959
  1. <template>
  2. <div class="detail-container">
  3. <div v-show="!isShowCheckOrder">
  4. <el-page-header @back="goBack" content="详情"></el-page-header>
  5. <div class="main-title">
  6. <div class="title">提货进度</div>
  7. </div>
  8. <div class="progress-container">
  9. <el-progress
  10. :text-inside="true"
  11. :stroke-width="26"
  12. :percentage="detailData.thjd ? (detailData.thjd * 1000) / 10 : 0"
  13. ></el-progress>
  14. </div>
  15. <div class="main-title">
  16. <div class="title">订单信息 <span style="margin-left: 20px">经销商名称:{{detailData.customerName}}</span></div>
  17. </div>
  18. <div class="diy-table-1">
  19. <el-row>
  20. <el-col :span="8" class="item">
  21. <div class="label">订单号</div>
  22. <div class="value">{{ detailData.id }}</div>
  23. </el-col>
  24. <el-col :span="8" class="item">
  25. <div class="label">订单日期</div>
  26. <div class="value">{{ detailData.theTime | dateToDayFilter }}</div>
  27. </el-col>
  28. <el-col :span="8" class="item">
  29. <div class="label">单据状态</div>
  30. <div class="value">
  31. {{ detailData.examineStatus | statusFilter }}
  32. </div>
  33. </el-col>
  34. <el-col :span="8" class="item">
  35. <div class="label">业务员</div>
  36. <div class="value">{{ detailData.k3ServiceName }}</div>
  37. </el-col>
  38. <el-col :span="16" class="item">
  39. <div class="label">文件编号</div>
  40. <div class="value">{{ detailData.fileNo }}</div>
  41. </el-col>
  42. <el-col :span="24" class="item">
  43. <div class="label">备注</div>
  44. <div class="value">{{ detailData.remark }}</div>
  45. </el-col>
  46. <el-col :span="8" class="item">
  47. <div class="label">制单人</div>
  48. <div class="value">{{ detailData.createName }}</div>
  49. </el-col>
  50. <el-col :span="8" class="item">
  51. <div class="label">制单日期</div>
  52. <div class="value">{{ detailData.createTime }}</div>
  53. </el-col>
  54. <el-col :span="8" class="item">
  55. <div class="label">审核人</div>
  56. <div class="value">{{ detailData.examineName }}</div>
  57. </el-col>
  58. <el-col :span="8" class="item">
  59. <div class="label">审核日期</div>
  60. <div class="value">{{ detailData.examineTime }}</div>
  61. </el-col>
  62. <el-col :span="8" class="item">
  63. <div class="label">关闭人</div>
  64. <div class="value">{{ detailData.closeName }}</div>
  65. </el-col>
  66. <el-col :span="8" class="item">
  67. <div class="label">关闭日期</div>
  68. <div class="value">{{ detailData.closeTime }}</div>
  69. </el-col>
  70. </el-row>
  71. </div>
  72. <div class="main-title">
  73. <div class="title">货品信息</div>
  74. </div>
  75. <div class="table" style="margin-top: 20px">
  76. <el-table
  77. :data="detailData.retailOrderItemList"
  78. element-loading-text="Loading"
  79. border
  80. fit
  81. highlight-current-row
  82. stripe
  83. max-height="400"
  84. show-summary
  85. :summary-method="$getSummaries"
  86. >
  87. <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
  88. <el-table-column
  89. align="left"
  90. label="销售类型"
  91. prop="saleTypeName"
  92. min-width="100"
  93. show-overflow-tooltip
  94. ></el-table-column>
  95. <el-table-column
  96. align="left"
  97. label="物料编码"
  98. prop="materialCode"
  99. min-width="120"
  100. show-overflow-tooltip
  101. ></el-table-column>
  102. <el-table-column
  103. align="left"
  104. label="产品编码"
  105. prop="materialOldNumber"
  106. min-width="120"
  107. show-overflow-tooltip
  108. ></el-table-column>
  109. <el-table-column
  110. align="left"
  111. label="产品名称"
  112. prop="materialName"
  113. min-width="160"
  114. show-overflow-tooltip
  115. ></el-table-column>
  116. <el-table-column
  117. align="left"
  118. label="规格型号"
  119. prop="specification"
  120. min-width="160"
  121. show-overflow-tooltip
  122. ></el-table-column>
  123. <el-table-column
  124. align="left"
  125. label="单位"
  126. prop="unit"
  127. min-width="100"
  128. show-overflow-tooltip
  129. ></el-table-column>
  130. <el-table-column
  131. align="left"
  132. label="文件编号"
  133. prop="fileNo"
  134. min-width="100"
  135. show-overflow-tooltip
  136. ></el-table-column>
  137. <el-table-column align="right" label="单价" prop="price" min-width="100" show-overflow-tooltip>
  138. <template slot-scope="scope">
  139. {{ scope.row.price | numToFixed }}
  140. </template>
  141. </el-table-column>
  142. <el-table-column
  143. align="right"
  144. label="数量"
  145. prop="qty"
  146. min-width="100"
  147. show-overflow-tooltip
  148. ></el-table-column>
  149. <el-table-column align="right" label="订单金额" prop="totalAmount" min-width="100" show-overflow-tooltip>
  150. <template slot-scope="scope">
  151. {{ scope.row.totalAmount | numToFixed }}
  152. </template>
  153. </el-table-column>
  154. <el-table-column
  155. align="left"
  156. label="返利类型"
  157. prop="customerWalletName2"
  158. min-width="100"
  159. show-overflow-tooltip
  160. ></el-table-column>
  161. <el-table-column align="right" label="返利金额" prop="payRebateAmount" min-width="100" show-overflow-tooltip>
  162. <template slot-scope="scope">
  163. {{ scope.row.payRebateAmount | numToFixed }}
  164. </template>
  165. </el-table-column>
  166. <el-table-column align="right" label="格力折扣" prop="totalDiscAmount" min-width="100" show-overflow-tooltip>
  167. <template slot-scope="scope">
  168. {{ scope.row.totalDiscAmount | numToFixed }}
  169. </template>
  170. </el-table-column>
  171. <el-table-column
  172. align="left"
  173. label="现金钱包"
  174. prop="customerWalletName"
  175. min-width="100"
  176. show-overflow-tooltip
  177. ></el-table-column>
  178. <el-table-column align="right" label="实付金额" prop="payAmount" min-width="100" show-overflow-tooltip>
  179. <template slot-scope="scope">
  180. {{ scope.row.payAmount | numToFixed }}
  181. </template>
  182. </el-table-column>
  183. <el-table-column align="left" label="是否直调" prop="isDirectTransfer" min-width="100" show-overflow-tooltip>
  184. <template slot-scope="scope">
  185. {{ scope.row.isDirectTransfer ? '是' : '否' }}
  186. </template>
  187. </el-table-column>
  188. <el-table-column
  189. align="right"
  190. label="直调数量"
  191. prop="directTransferQty"
  192. min-width="100"
  193. show-overflow-tooltip
  194. ></el-table-column>
  195. <el-table-column
  196. align="right"
  197. label="原订单数量"
  198. prop="oldQty"
  199. min-width="100"
  200. show-overflow-tooltip
  201. ></el-table-column>
  202. <el-table-column
  203. align="left"
  204. label="备注"
  205. prop="remark"
  206. min-width="160"
  207. show-overflow-tooltip
  208. ></el-table-column>
  209. <el-table-column
  210. align="right"
  211. label="税率"
  212. prop="tax"
  213. min-width="100"
  214. show-overflow-tooltip
  215. ></el-table-column>
  216. </el-table>
  217. </div>
  218. <div>
  219. <div class="main-title">
  220. <div class="title">审批记录</div>
  221. </div>
  222. <div class="diy-table-1">
  223. <el-row :gutter="0">
  224. <el-col :span="12" class="item">
  225. <div class="label">审批人</div>
  226. <div class="value">{{ detailData.examineName }}</div>
  227. </el-col>
  228. <el-col :span="12" class="item">
  229. <div class="label">审批结果</div>
  230. <div class="value">
  231. {{ detailData.examineStatus | statusFilter }}
  232. </div>
  233. </el-col>
  234. <el-col :span="24" class="item">
  235. <div class="label">审批说明</div>
  236. <div class="value">{{ detailData.examineRemark }}</div>
  237. </el-col>
  238. </el-row>
  239. </div>
  240. </div>
  241. <div class="page-footer">
  242. <div class="footer">
  243. <el-button type="success" @click="toCheckOrder">联查单据</el-button>
  244. <!-- <el-button type="primary" @click="openDirectDialog" :disabled="detailData.examineStatus !== 'OK'" v-if="!isDealer">提前开票</el-button> -->
  245. <el-button
  246. type="primary"
  247. @click="openDeliverDialog"
  248. :disabled="detailData.examineStatus !== 'OK' || detailData.directTransferStatus === true"
  249. v-if="!isDealer"
  250. >直调发货</el-button
  251. >
  252. <el-button
  253. type="primary"
  254. @click="handleFinish"
  255. :disabled="detailData.examineStatus !== 'OK' || detailData.directTransferStatus"
  256. v-if="!isDealer"
  257. >直调完成</el-button
  258. >
  259. <el-button @click="goBack">返回列表</el-button>
  260. </div>
  261. </div>
  262. </div>
  263. <el-dialog title="直调发货" :visible.sync="isShowDeliverDialog" width="80%">
  264. <el-form
  265. ref="deliverForm"
  266. :model="deliverForm"
  267. :rules="deliverFormRules"
  268. label-width="120px"
  269. size="small"
  270. label-position="left"
  271. >
  272. <el-row :gutter="20">
  273. <!-- <el-col :xs="8" :sm="8" :lg="8" style="height: 51px">-->
  274. <!-- <el-form-item label="发货日期" prop="date">-->
  275. <!-- <el-date-picker-->
  276. <!-- v-model="deliverForm.date"-->
  277. <!-- type="date"-->
  278. <!-- disabled-->
  279. <!-- value-format="yyyy-MM-dd"-->
  280. <!-- style="width: 100%"-->
  281. <!-- placeholder="选择日期"-->
  282. <!-- >-->
  283. <!-- </el-date-picker>-->
  284. <!-- </el-form-item>-->
  285. <!-- </el-col>-->
  286. <el-col :xs="8" :sm="8" :lg="8">
  287. <el-form-item label="选择仓位" prop="position">
  288. <el-select v-model="deliverForm.position" placeholder="请选择仓位" style="width: 100%" filterable>
  289. <el-option v-for="item in positionList" :key="item.id" :label="item.name" :value="item.id"></el-option>
  290. </el-select>
  291. </el-form-item>
  292. </el-col>
  293. <el-col :xs="8" :sm="8" :lg="8">
  294. <el-form-item label="发货申请备注" prop="remark">
  295. <el-input v-model="deliverForm.remark" placeholder="请输入发货申请备注" clearable></el-input>
  296. </el-form-item>
  297. </el-col>
  298. </el-row>
  299. </el-form>
  300. <div class="table" style="margin-top: 20px">
  301. <el-table
  302. :data="goodsList"
  303. element-loading-text="Loading"
  304. border
  305. fit
  306. highlight-current-row
  307. stripe
  308. max-height="400"
  309. >
  310. <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
  311. <el-table-column
  312. align="center"
  313. label="销售类型"
  314. prop="saleTypeName"
  315. min-width="100"
  316. show-overflow-tooltip
  317. ></el-table-column>
  318. <el-table-column
  319. align="center"
  320. label="物料编码"
  321. prop="materialCode"
  322. min-width="120"
  323. show-overflow-tooltip
  324. ></el-table-column>
  325. <el-table-column
  326. align="center"
  327. label="产品编码"
  328. prop="materialOldNumber"
  329. min-width="120"
  330. show-overflow-tooltip
  331. ></el-table-column>
  332. <el-table-column
  333. align="center"
  334. label="产品名称"
  335. prop="materialName"
  336. min-width="160"
  337. show-overflow-tooltip
  338. ></el-table-column>
  339. <el-table-column
  340. align="center"
  341. label="规格型号"
  342. prop="specification"
  343. min-width="160"
  344. show-overflow-tooltip
  345. ></el-table-column>
  346. <!-- <el-table-column align="left" label="文件编号" prop="fileNo" min-width="200" show-overflow-tooltip>
  347. </el-table-column> -->
  348. <el-table-column
  349. align="center"
  350. label="单位"
  351. prop="unit"
  352. min-width="100"
  353. show-overflow-tooltip
  354. ></el-table-column>
  355. <el-table-column
  356. align="right"
  357. label="订单数量"
  358. prop="qty"
  359. min-width="100"
  360. show-overflow-tooltip
  361. ></el-table-column>
  362. <el-table-column
  363. align="right"
  364. label="发货数量"
  365. prop="hasSendQty"
  366. min-width="100"
  367. show-overflow-tooltip
  368. ></el-table-column>
  369. <el-table-column align="right" label="直调数量" prop="adjustNum" min-width="100" show-overflow-tooltip>
  370. <template slot-scope="scope">
  371. <el-input
  372. v-model="scope.row.adjustNum"
  373. size="small"
  374. type="number"
  375. @mousewheel.native.prevent
  376. :disabled="!scope.row.isDirectTransfer || scope.row.adjustNum === 0"
  377. ></el-input>
  378. </template>
  379. </el-table-column>
  380. <el-table-column align="right" label="单价" prop="price" min-width="100" show-overflow-tooltip>
  381. <template slot-scope="scope">
  382. {{ scope.row.price | numToFixed }}
  383. </template>
  384. </el-table-column>
  385. <el-table-column align="right" label="金额" prop="totalAmount" min-width="100" show-overflow-tooltip>
  386. <template slot-scope="scope">
  387. {{ scope.row.totalAmount | numToFixed }}
  388. </template>
  389. </el-table-column>
  390. <el-table-column align="right" label="返利" prop="payRebateAmount" min-width="100" show-overflow-tooltip>
  391. <template slot-scope="scope">
  392. {{ scope.row.payRebateAmount | numToFixed }}
  393. </template>
  394. </el-table-column>
  395. <el-table-column align="right" label="实付金额" prop="payAmount" min-width="100" show-overflow-tooltip>
  396. <template slot-scope="scope">
  397. {{ scope.row.payAmount | numToFixed }}
  398. </template>
  399. </el-table-column>
  400. <el-table-column
  401. align="center"
  402. label="备注"
  403. prop="remark"
  404. min-width="160"
  405. show-overflow-tooltip
  406. ></el-table-column>
  407. </el-table>
  408. </div>
  409. <span slot="footer" class="dialog-footer">
  410. <el-button @click="closeDeliverDialog">取 消</el-button>
  411. <el-button type="primary" @click="submitDeliverForm">确 定</el-button>
  412. </span>
  413. </el-dialog>
  414. <el-dialog title="直接调拨单(提前开票)" :visible.sync="isShowDirectDialog" width="80%">
  415. <el-form
  416. ref="directForm"
  417. :model="directForm"
  418. :rules="directFormRules"
  419. label-width="80px"
  420. size="small"
  421. label-position="left"
  422. >
  423. <el-row :gutter="20">
  424. <el-col :xs="12" :sm="6" :lg="6">
  425. <el-form-item label="调出仓库" prop="warehouse1">
  426. <el-select
  427. v-model="directForm.warehouse1"
  428. placeholder="请选择调出仓库"
  429. style="width: 100%"
  430. filterable
  431. @change="changeWarehouse1"
  432. >
  433. <el-option
  434. v-for="item in warehouseList1"
  435. :key="item.id"
  436. :label="item.name"
  437. :value="item.id"
  438. ></el-option>
  439. </el-select>
  440. </el-form-item>
  441. </el-col>
  442. <el-col :xs="12" :sm="6" :lg="6">
  443. <el-form-item label="调出仓位" prop="position1">
  444. <el-select
  445. v-model="directForm.position1"
  446. placeholder="请调出仓位"
  447. style="width: 100%"
  448. filterable
  449. @change="changePosition1"
  450. >
  451. <el-option v-for="item in positionList1" :key="item.id" :label="item.name" :value="item.id"></el-option>
  452. </el-select>
  453. </el-form-item>
  454. </el-col>
  455. <el-col :xs="12" :sm="6" :lg="6">
  456. <el-form-item label="调入仓库" prop="warehouse2">
  457. <el-select
  458. v-model="directForm.warehouse2"
  459. placeholder="请选择调入仓库"
  460. style="width: 100%"
  461. filterable
  462. @change="changeWarehouse2"
  463. >
  464. <el-option
  465. v-for="item in warehouseList2"
  466. :key="item.id"
  467. :label="item.name"
  468. :value="item.id"
  469. ></el-option>
  470. </el-select>
  471. </el-form-item>
  472. </el-col>
  473. <el-col :xs="12" :sm="6" :lg="6">
  474. <el-form-item label="调入仓位" prop="position2">
  475. <el-select
  476. v-model="directForm.position2"
  477. placeholder="请调入仓位"
  478. style="width: 100%"
  479. filterable
  480. @change="changePosition2"
  481. >
  482. <el-option v-for="item in positionList2" :key="item.id" :label="item.name" :value="item.id"></el-option>
  483. </el-select>
  484. </el-form-item>
  485. </el-col>
  486. </el-row>
  487. </el-form>
  488. <div class="table" style="margin-top: 20px">
  489. <el-table
  490. :data="directGoodsList"
  491. element-loading-text="Loading"
  492. border
  493. fit
  494. highlight-current-row
  495. stripe
  496. max-height="400"
  497. >
  498. <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
  499. <el-table-column
  500. align="center"
  501. label="销售类型"
  502. prop="saleTypeName"
  503. min-width="100"
  504. show-overflow-tooltip
  505. ></el-table-column>
  506. <el-table-column
  507. align="center"
  508. label="产品编码"
  509. prop="materialCode"
  510. min-width="160"
  511. show-overflow-tooltip
  512. ></el-table-column>
  513. <el-table-column
  514. align="center"
  515. label="物料代码"
  516. prop="materialOldNumber"
  517. min-width="160"
  518. show-overflow-tooltip
  519. ></el-table-column>
  520. <el-table-column
  521. align="center"
  522. label="产品名称"
  523. prop="materialName"
  524. min-width="160"
  525. show-overflow-tooltip
  526. ></el-table-column>
  527. <el-table-column
  528. align="center"
  529. label="规格型号"
  530. prop="specification"
  531. min-width="160"
  532. show-overflow-tooltip
  533. ></el-table-column>
  534. <el-table-column
  535. align="center"
  536. label="单位"
  537. prop="unit"
  538. min-width="100"
  539. show-overflow-tooltip
  540. ></el-table-column>
  541. <el-table-column
  542. align="center"
  543. label="数量"
  544. prop="qty"
  545. min-width="100"
  546. show-overflow-tooltip
  547. ></el-table-column>
  548. <el-table-column
  549. align="center"
  550. label="调出仓库"
  551. prop="warehouse1"
  552. min-width="100"
  553. show-overflow-tooltip
  554. ></el-table-column>
  555. <el-table-column
  556. align="center"
  557. label="调出仓位"
  558. prop="position1"
  559. min-width="100"
  560. show-overflow-tooltip
  561. ></el-table-column>
  562. <el-table-column
  563. align="center"
  564. label="调入仓库"
  565. prop="warehouse2"
  566. min-width="100"
  567. show-overflow-tooltip
  568. ></el-table-column>
  569. <el-table-column
  570. align="center"
  571. label="调入仓位"
  572. prop="position2"
  573. min-width="100"
  574. show-overflow-tooltip
  575. ></el-table-column>
  576. <el-table-column
  577. align="center"
  578. label="调出库存状态"
  579. prop="status1"
  580. min-width="110"
  581. show-overflow-tooltip
  582. ></el-table-column>
  583. <el-table-column
  584. align="center"
  585. label="调入库存状态"
  586. prop="status2"
  587. min-width="110"
  588. show-overflow-tooltip
  589. ></el-table-column>
  590. <el-table-column align="center" label="调出货主" min-width="100" show-overflow-tooltip>
  591. <template slot-scope="">弘格</template>
  592. </el-table-column>
  593. <el-table-column align="center" label="调入货主" min-width="100" show-overflow-tooltip>
  594. <template slot-="scope">弘格</template>
  595. </el-table-column>
  596. <el-table-column
  597. align="center"
  598. label="备注"
  599. prop="remark"
  600. min-width="160"
  601. show-overflow-tooltip
  602. ></el-table-column>
  603. </el-table>
  604. </div>
  605. <span slot="footer" class="dialog-footer">
  606. <el-button @click="closeDirectDialog">取 消</el-button>
  607. <el-button type="primary" @click="submitDirectForm">确 定</el-button>
  608. </span>
  609. </el-dialog>
  610. <CheckOrder :checkOrderId="checkOrderId" v-if="isShowCheckOrder" @backDetail="backDetail" />
  611. </div>
  612. </template>
  613. <script>
  614. import {
  615. getDetail,
  616. getWarehouseList,
  617. adjustDeliver,
  618. finishData,
  619. directOrder,
  620. getPositionList
  621. } from '@/api/supply/retail'
  622. import CheckOrder from '@/components/Common/check-order'
  623. export default {
  624. name: 'RetailDetail',
  625. componentName: 'RetailDetail',
  626. components: {
  627. CheckOrder
  628. },
  629. props: ['listItem'],
  630. filters: {
  631. statusFilter(val) {
  632. const statusList = [
  633. { label: '已保存', value: 'SAVE' },
  634. { label: '待审核', value: 'WAIT' },
  635. { label: '审核通过', value: 'OK' }
  636. // { label: '审核驳回', value: 'FAIL' },,
  637. ]
  638. let obj = statusList.find(o => o.value == val)
  639. return obj ? obj.label : ''
  640. }
  641. },
  642. data() {
  643. return {
  644. detailData: {},
  645. isShowDeliverDialog: false,
  646. deliverForm: {
  647. date: '',
  648. position: '',
  649. remark: ''
  650. },
  651. deliverFormRules: {
  652. // date: [
  653. // { required: true, message: "请选择发货日期", trigger: "change" },
  654. // ],
  655. position: [{ required: true, message: '请选择虚拟仓位', trigger: 'change' }]
  656. },
  657. positionList: [],
  658. goodsList: [],
  659. isShowDirectDialog: false,
  660. directForm: {
  661. warehouse1: '',
  662. position1: '',
  663. warehouse2: '',
  664. position2: ''
  665. },
  666. directFormRules: {
  667. warehouse1: [{ required: true, message: '请选择调出仓库', trigger: 'change' }],
  668. position1: [{ required: true, message: '请选择调出仓位', trigger: 'change' }],
  669. warehouse2: [{ required: true, message: '请选择调入仓库', trigger: 'change' }],
  670. position2: [{ required: true, message: '请选择调入仓位', trigger: 'change' }]
  671. },
  672. warehouseList1: [],
  673. warehouseList2: [],
  674. positionList1: [],
  675. positionList2: [],
  676. directGoodsList: [],
  677. checkOrderId: {},
  678. isShowCheckOrder: false
  679. }
  680. },
  681. computed: {
  682. isExamine() {
  683. return this.detailData.examineStatus === 'OK' || this.detailData.examineStatus === 'FAIL'
  684. },
  685. isDealer() {
  686. return JSON.parse(localStorage.getItem('supply_user')).isCustomer
  687. }
  688. },
  689. created() {
  690. this.getDetail()
  691. this.deliverForm.date = this.getDate()
  692. },
  693. methods: {
  694. getDate() {
  695. var date = new Date()
  696. var seperator1 = '-'
  697. var year = date.getFullYear()
  698. var month = date.getMonth() + 1
  699. var strDate = date.getDate()
  700. if (month >= 1 && month <= 9) {
  701. month = '0' + month
  702. }
  703. if (strDate >= 0 && strDate <= 9) {
  704. strDate = '0' + strDate
  705. }
  706. var currentdate = year + seperator1 + month + seperator1 + strDate
  707. return currentdate
  708. },
  709. // 返回列表
  710. goBack() {
  711. this.$emit('backListFormDetail')
  712. },
  713. // 获取详情
  714. getDetail() {
  715. getDetail({ id: this.listItem.id }).then(res => {
  716. if (res.data.retailOrderItemList) {
  717. res.data.retailOrderItemList.forEach(item => {
  718. item.sums1 = ['directTransferQty', 'qty', 'refundableQty', 'oldQty']
  719. item.sums2 = ['totalAmount', 'payAmount', 'price', 'payRebateAmount', 'discAmount', 'totalDiscAmount']
  720. })
  721. }
  722. this.detailData = res.data
  723. })
  724. },
  725. // 获取仓库列表
  726. getWarehouseList() {
  727. getWarehouseList({
  728. pageNum: 1,
  729. pageSize: -1
  730. }).then(res => {
  731. this.warehouseList1 = res.data.records
  732. this.warehouseList2 = res.data.records
  733. })
  734. },
  735. // 获取虚拟仓位列表
  736. getPositionList() {
  737. getPositionList({
  738. pageNum: 1,
  739. pageSize: -1,
  740. type: 2
  741. }).then(res => {
  742. this.positionList = res.data.records
  743. })
  744. },
  745. // 打开 直调发货
  746. openDeliverDialog() {
  747. this.isShowDeliverDialog = true
  748. this.detailData.retailOrderItemList.forEach(item => {
  749. if (item.isDirectTransfer) {
  750. // this.$set(item,'adjustNum',item.refundableQty || item.qty)
  751. this.$set(item, 'adjustNum', item.qty - item.directTransferQty)
  752. } else {
  753. this.$set(item, 'adjustNum', 0)
  754. }
  755. })
  756. this.goodsList = this.detailData.retailOrderItemList
  757. this.getPositionList()
  758. },
  759. // 关闭 直调发货
  760. closeDeliverDialog() {
  761. this.isShowDeliverDialog = false
  762. },
  763. // 提交 直调发货
  764. submitDeliverForm() {
  765. this.$refs.deliverForm.validate(valid => {
  766. if (valid) {
  767. for (let i = 0; i < this.goodsList.length; i++) {
  768. if (this.goodsList[i].adjustNum === '' && this.goodsList[i].isDirectTransfer) {
  769. this.$errorMsg('请输入直调数量')
  770. return
  771. }
  772. }
  773. let goodsList = this.goodsList.map(item => {
  774. return {
  775. itemId: item.id,
  776. qty: item.adjustNum || 0
  777. }
  778. })
  779. let params = {
  780. orderNo: this.listItem.id,
  781. orderDate: '',
  782. remark: this.deliverForm.remark,
  783. correspondId: this.deliverForm.position,
  784. directItems: goodsList
  785. }
  786. adjustDeliver(params).then(res => {
  787. this.$successMsg()
  788. this.isShowDeliverDialog = false
  789. this.getDetail()
  790. })
  791. }
  792. })
  793. },
  794. // 直调完成
  795. handleFinish() {
  796. this.$confirm('此操作将直调完成, 是否继续?', '提示', {
  797. confirmButtonText: '确定',
  798. cancelButtonText: '取消',
  799. type: 'warning'
  800. })
  801. .then(() => {
  802. finishData({
  803. id: this.listItem.id
  804. }).then(res => {
  805. this.$successMsg()
  806. this.getDetail()
  807. })
  808. })
  809. .catch(() => {})
  810. },
  811. // 更改调出仓库
  812. changeWarehouse1() {
  813. this.directForm.position1 = ''
  814. let obj = this.warehouseList1.find(o => o.id == this.directForm.warehouse1)
  815. this.positionList1 = obj.kingDeeStocks
  816. this.directGoodsList.forEach(item => {
  817. item.warehouse1 = obj.name
  818. })
  819. },
  820. // 更改调入仓库
  821. changeWarehouse2() {
  822. this.directForm.position2 = ''
  823. let obj = this.warehouseList2.find(o => o.id == this.directForm.warehouse2)
  824. this.positionList2 = obj.kingDeeStocks
  825. this.directGoodsList.forEach(item => {
  826. item.warehouse2 = obj.name
  827. })
  828. },
  829. // 更改调出仓位
  830. changePosition1() {
  831. let obj = this.positionList1.find(o => o.id == this.directForm.position1)
  832. this.directGoodsList.forEach(item => {
  833. item.position1 = obj.name
  834. item.status1 = obj.defStockStatusName
  835. })
  836. },
  837. // 更改调入仓位
  838. changePosition2() {
  839. let obj = this.positionList2.find(o => o.id == this.directForm.position2)
  840. this.directGoodsList.forEach(item => {
  841. item.position2 = obj.name
  842. item.status2 = obj.defStockStatusName
  843. })
  844. },
  845. // 打开 提前开票
  846. openDirectDialog() {
  847. this.isShowDirectDialog = true
  848. this.directGoodsList = this.detailData.retailOrderItemList
  849. this.getWarehouseList()
  850. },
  851. // 关闭 提前开票
  852. closeDirectDialog() {
  853. this.isShowDirectDialog = false
  854. },
  855. // 提交 提前开票
  856. submitDirectForm() {
  857. this.$refs.directForm.validate(valid => {
  858. if (valid) {
  859. let warehouseItem1 = this.warehouseList1.find(o => o.id == this.directForm.warehouse1)
  860. let positionItem1 = this.positionList1.find(o => o.id == this.directForm.position1)
  861. let warehouseItem2 = this.warehouseList2.find(o => o.id == this.directForm.warehouse2)
  862. let positionItem2 = this.positionList2.find(o => o.id == this.directForm.position2)
  863. let params = {
  864. orderNo: this.detailData.id,
  865. orderType: 'RETAIL', // TRADE=商用 HOME=家用 RETAIL=零售单 RETAIL_POLICY 销售政策单
  866. correspondId: this.directForm.warehouse1,
  867. correspondName: warehouseItem1.name,
  868. stockId: this.directForm.position1,
  869. stockName: positionItem1.name,
  870. inCorrespondId: this.directForm.warehouse2,
  871. inCorrespondName: warehouseItem2.name,
  872. inStockId: this.directForm.position2,
  873. inStockName: positionItem2.name
  874. }
  875. directOrder(params).then(res => {
  876. this.$successMsg()
  877. this.isShowDirectDialog = false
  878. this.getDetail()
  879. })
  880. }
  881. })
  882. },
  883. // 联查单据
  884. toCheckOrder() {
  885. this.checkOrderId = this.detailData.id
  886. this.isShowCheckOrder = true
  887. },
  888. backDetail() {
  889. this.isShowCheckOrder = false
  890. }
  891. }
  892. }
  893. </script>
  894. <style scoped lang="scss">
  895. .detail-container {
  896. width: 100%;
  897. height: 100%;
  898. }
  899. .main-title {
  900. display: flex;
  901. justify-content: space-between;
  902. align-items: center;
  903. margin-top: 20px;
  904. height: 60px;
  905. border-bottom: 1px solid #dcdfe6;
  906. margin-bottom: 20px;
  907. .title {
  908. font-size: 16px;
  909. font-weight: 600;
  910. padding-left: 10px;
  911. }
  912. }
  913. .progress-container {
  914. display: flex;
  915. .el-progress {
  916. width: 500px;
  917. }
  918. }
  919. </style>