addEditForm.vue 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972
  1. <template>
  2. <el-row :gutter="10">
  3. <!-- <p>{{ sitem }}</p> -->
  4. <p>{{ id }}--id</p>
  5. <p>isDetail--{{ isDetail }}</p>
  6. <p>showModel--{{ showModel }}</p>
  7. <p>{{ showModelThis }}--showModelThis</p>
  8. <el-col :span="24">
  9. <el-form
  10. :model="ruleForm"
  11. status-icon
  12. :rules="rulesThis"
  13. ref="ruleForm"
  14. label-width="110px"
  15. class="demo-ruleForm"
  16. >
  17. <el-form-item
  18. label="退货原因"
  19. prop="returnReason"
  20. v-if="id === 'add' || isDetail"
  21. >
  22. <el-select
  23. :disabled="isDetail"
  24. style="width: 100%"
  25. v-model="ruleForm.returnReason"
  26. placeholder="退换货原因"
  27. >
  28. <el-option
  29. v-for="item in reason_options"
  30. :key="item.value"
  31. :label="item.label"
  32. :value="item.value"
  33. >
  34. </el-option>
  35. </el-select>
  36. </el-form-item>
  37. <el-form-item label="退货备注" prop="return_remark">
  38. <!-- <el-input v-model="ruleForm.tel" :disabled="isDetail"></el-input> -->
  39. <el-input
  40. :disabled="isDetail"
  41. type="textarea"
  42. maxlength="250"
  43. show-word-limit
  44. placeholder="请填写备注"
  45. v-model="ruleForm.return_remark"
  46. />
  47. </el-form-item>
  48. <el-form-item label="仓库信息">
  49. <el-table
  50. :data="tableForm.product_go"
  51. border
  52. :size="'mini'"
  53. row-key="key"
  54. v-if="!isDetail"
  55. >
  56. <el-table-column label="商品总数量" width="100">
  57. <template slot-scope="scope">
  58. <!-- :prop="'product_go.' + scope.$index + '.wsend_num'" -->
  59. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  60. <p>{{ scope.row.num }}</p>
  61. </el-form-item>
  62. </template>
  63. </el-table-column>
  64. <el-table-column label="已发货数量" width="100">
  65. <template slot-scope="scope">
  66. <!-- :prop="'product_go.' + scope.$index + '.send_num'" -->
  67. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  68. <p>
  69. {{ scope.row.send_num }}
  70. </p>
  71. </el-form-item>
  72. </template>
  73. </el-table-column>
  74. <el-table-column label="未发货数量" width="100">
  75. <template slot-scope="scope">
  76. <!-- :prop="'product_go.' + scope.$index + '.wsend_num'" -->
  77. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  78. <p>{{ scope.row.wsend_num }}</p>
  79. </el-form-item>
  80. </template>
  81. </el-table-column>
  82. <el-table-column label="退货数量">
  83. <template slot-scope="scope">
  84. <!-- :prop="'product_go.' + scope.$index + '.return_num'" -->
  85. <el-form-item
  86. :style="!scope.row.edit ? 'margin:0' : ''"
  87. :rules="{
  88. required: true,
  89. message: '退货数量不能为空',
  90. trigger: 'blur',
  91. }"
  92. >
  93. <el-input
  94. :disabled="!scope.row.edit"
  95. v-model="ruleForm.return_num"
  96. ></el-input>
  97. <!-- <p></p> -->
  98. </el-form-item>
  99. </template>
  100. </el-table-column>
  101. <el-table-column label="采购订单编号" width="180">
  102. <template slot-scope="scope">
  103. <!-- :prop="'product_go.' + scope.$index + '.wsend_num'" -->
  104. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  105. <p>{{ scope.row.orderCode }}</p>
  106. </el-form-item>
  107. </template>
  108. </el-table-column>
  109. <el-table-column label="仓库名称" width="150">
  110. <template slot-scope="scope">
  111. <!-- :prop="'product_go.' + scope.$index + '.wsm_name'" -->
  112. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  113. <p>{{ scope.row.wsm_name }}</p>
  114. </el-form-item>
  115. </template>
  116. </el-table-column>
  117. <el-table-column label="仓库供应商" width="220">
  118. <template slot-scope="scope">
  119. <!-- :prop="'product_go.' + scope.$index + '.wsend_num'" -->
  120. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  121. <p>{{ scope.row.wsm_supplier }}</p>
  122. </el-form-item>
  123. </template>
  124. </el-table-column>
  125. <el-table-column label="仓库编码" width="200">
  126. <template slot-scope="scope">
  127. <!-- :prop="'product_go.' + scope.$index + '.wsend_num'" -->
  128. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  129. <p>{{ scope.row.wsm_code }}</p>
  130. </el-form-item>
  131. </template>
  132. </el-table-column>
  133. <!-- <el-table-column label="仓库供应商">
  134. <template slot-scope="scope">
  135. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  136. <p>{{ scope.row.wsm_supplierNo }}</p>
  137. </el-form-item>
  138. </template>
  139. </el-table-column> -->
  140. <el-table-column fixed="right" label="操作" width="80">
  141. <template slot-scope="scope">
  142. <el-tooltip
  143. effect="dark"
  144. content="编辑"
  145. v-if="!scope.row.edit"
  146. placement="top"
  147. >
  148. <i
  149. class="el-icon-edit tb-icon"
  150. @click="editRow(scope.$index, 'return')"
  151. ></i>
  152. </el-tooltip>
  153. <el-tooltip
  154. effect="dark"
  155. content="保存"
  156. v-if="scope.row.edit"
  157. placement="top"
  158. >
  159. <i
  160. class="el-icon-circle-check tb-icon"
  161. @click="checkRow(scope.$index, 'return')"
  162. ></i>
  163. </el-tooltip>
  164. <el-tooltip effect="dark" content="重置" placement="top">
  165. <i
  166. v-if="scope.row.edit"
  167. class="el-icon-refresh-left tb-icon"
  168. @click="resetRow(scope.$index)"
  169. ></i>
  170. </el-tooltip>
  171. </template>
  172. </el-table-column>
  173. </el-table>
  174. <el-table
  175. disabled="true"
  176. :data="tableForm.product_go"
  177. border
  178. :size="'mini'"
  179. row-key="key"
  180. v-if="isDetail"
  181. >
  182. <el-table-column label="退货单编号" width="180" disabled="true">
  183. <template slot-scope="scope">
  184. <!-- :prop="'product_go.' + scope.$index + '.wsend_num'" -->
  185. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  186. <p :disabled="true">{{ scope.row.returnCode }}</p>
  187. </el-form-item>
  188. </template>
  189. </el-table-column>
  190. <el-table-column label="采购订单编号" width="180">
  191. <template slot-scope="scope">
  192. <!-- :prop="'product_go.' + scope.$index + '.wsend_num'" -->
  193. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  194. <p>{{ scope.row.orderCode }}</p>
  195. </el-form-item>
  196. </template>
  197. </el-table-column>
  198. <el-table-column label="退货数量" width="80">
  199. <template slot-scope="scope">
  200. <!-- :prop="'product_go.' + scope.$index + '.send_num'" -->
  201. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  202. <p>
  203. {{ scope.row.return_num }}
  204. </p>
  205. </el-form-item>
  206. </template>
  207. </el-table-column>
  208. <el-table-column label="发货数量" width="80">
  209. <template slot-scope="scope">
  210. <!-- :prop="'product_go.' + scope.$index + '.wsend_num'" -->
  211. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  212. <p>{{ scope.row.total_num }}</p>
  213. </el-form-item>
  214. </template>
  215. </el-table-column>
  216. <el-table-column label="采购编码" width="180">
  217. <template slot-scope="scope">
  218. <!-- :prop="'product_go.' + scope.$index + '.wsend_num'" -->
  219. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  220. <p>{{ scope.row.orderCode }}</p>
  221. </el-form-item>
  222. </template>
  223. </el-table-column>
  224. <el-table-column label="仓库名称" width="150">
  225. <template slot-scope="scope">
  226. <!-- :prop="'product_go.' + scope.$index + '.wsm_name'" -->
  227. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  228. <p>{{ scope.row.wsm_name }}</p>
  229. </el-form-item>
  230. </template>
  231. </el-table-column>
  232. <el-table-column label="仓库编码" width="200">
  233. <template slot-scope="scope">
  234. <!-- :prop="'product_go.' + scope.$index + '.wsend_num'" -->
  235. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  236. <p>{{ scope.row.wsm_code }}</p>
  237. </el-form-item>
  238. </template>
  239. </el-table-column>
  240. <el-table-column label="仓库名称" width="220">
  241. <template slot-scope="scope">
  242. <!-- :prop="'product_go.' + scope.$index + '.wsend_num'" -->
  243. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  244. <p>{{ scope.row.wsm_name }}</p>
  245. </el-form-item>
  246. </template>
  247. </el-table-column>
  248. <el-table-column label="仓库所属公司" width="200">
  249. <template slot-scope="scope">
  250. <!-- :prop="'product_go.' + scope.$index + '.wsend_num'" -->
  251. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  252. <p>{{ scope.row.wsm_supplier }}</p>
  253. </el-form-item>
  254. </template>
  255. </el-table-column>
  256. <el-table-column label="仓库所属公司编码" width="200">
  257. <template slot-scope="scope">
  258. <!-- :prop="'product_go.' + scope.$index + '.wsend_num'" -->
  259. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  260. <p>{{ scope.row.wsm_supplierNo }}</p>
  261. </el-form-item>
  262. </template>
  263. </el-table-column>
  264. <!-- <el-table-column fixed="right" label="操作" width="80">
  265. <template slot-scope="scope">
  266. <el-tooltip
  267. effect="dark"
  268. content="编辑"
  269. v-if="!scope.row.edit"
  270. placement="top"
  271. >
  272. <i
  273. class="el-icon-edit tb-icon"
  274. @click="editRow(scope.$index, 'return')"
  275. ></i>
  276. </el-tooltip>
  277. <el-tooltip
  278. effect="dark"
  279. content="保存"
  280. v-if="scope.row.edit"
  281. placement="top"
  282. >
  283. <i
  284. class="el-icon-circle-check tb-icon"
  285. @click="checkRow(scope.$index, 'return')"
  286. ></i>
  287. </el-tooltip>
  288. <el-tooltip effect="dark" content="重置" placement="top">
  289. <i
  290. v-if="scope.row.edit"
  291. class="el-icon-refresh-left tb-icon"
  292. @click="resetRow(scope.$index)"
  293. ></i>
  294. </el-tooltip>
  295. </template>
  296. </el-table-column> -->
  297. </el-table>
  298. </el-form-item>
  299. <el-form-item label="收货信息">
  300. <el-table
  301. :data="tableForm.get_product_go"
  302. border
  303. :size="'mini'"
  304. row-key="key"
  305. v-if="!isDetail"
  306. >
  307. <el-table-column label="收货总数量">
  308. <template slot-scope="scope">
  309. <!-- :prop="'product_go.' + scope.$index + '.send_num'" -->
  310. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  311. <p>
  312. {{ scope.row.receipt_quantity }}
  313. </p>
  314. </el-form-item>
  315. </template>
  316. </el-table-column>
  317. <el-table-column label="已发货数量">
  318. <template slot-scope="scope">
  319. <!-- :prop="'product_go.' + scope.$index + '.send_num'" -->
  320. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  321. <p>
  322. {{ scope.row.send_num }}
  323. </p>
  324. </el-form-item>
  325. </template>
  326. </el-table-column>
  327. <el-table-column label="未发货数量">
  328. <template slot-scope="scope">
  329. <!-- :prop="'product_go.' + scope.$index + '.wsend_num'" -->
  330. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  331. <p>{{ scope.row.wsend_num }}</p>
  332. </el-form-item>
  333. </template>
  334. </el-table-column>
  335. <el-table-column label="退货数量">
  336. <template slot-scope="scope">
  337. <!-- :prop="'product_go.' + scope.$index + '.return_num'" -->
  338. <el-form-item
  339. :style="!scope.row.edit ? 'margin:0' : ''"
  340. :rules="{
  341. required: true,
  342. message: '退货数量不能为空',
  343. trigger: 'blur',
  344. }"
  345. >
  346. <el-input
  347. :disabled="!scope.row.edit"
  348. v-model="ruleForm.get_return_num"
  349. ></el-input>
  350. </el-form-item>
  351. </template>
  352. </el-table-column>
  353. <el-table-column label="采购编码" width="200">
  354. <template slot-scope="scope">
  355. <!-- :prop="'product_go.' + scope.$index + '.send_num'" -->
  356. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  357. <p>
  358. {{ scope.row.orderCode }}
  359. </p>
  360. </el-form-item>
  361. </template>
  362. </el-table-column>
  363. <!-- <el-table-column label="仓库供应商">
  364. <template slot-scope="scope">
  365. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  366. <p>{{ scope.row.wsm_supplierNo }}</p>
  367. </el-form-item>
  368. </template>
  369. </el-table-column> -->
  370. <el-table-column label="收货联系人 ">
  371. <template slot-scope="scope">
  372. <!-- :prop="'product_go.' + scope.$index + '.wsm_name'" -->
  373. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  374. <p>{{ scope.row.contactor }}</p>
  375. </el-form-item>
  376. </template>
  377. </el-table-column>
  378. <el-table-column label="联系方式" width="120">
  379. <template slot-scope="scope">
  380. <!-- :prop="'product_go.' + scope.$index + '.wsm_name'" -->
  381. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  382. <p>{{ scope.row.mobile }}</p>
  383. </el-form-item>
  384. </template>
  385. </el-table-column>
  386. <el-table-column fixed="right" label="操作" width="80">
  387. <template slot-scope="scope">
  388. <el-tooltip
  389. effect="dark"
  390. content="编辑"
  391. v-if="!scope.row.edit"
  392. placement="top"
  393. >
  394. <i
  395. class="el-icon-edit tb-icon"
  396. @click="editRow(scope.$index, 'get')"
  397. ></i>
  398. </el-tooltip>
  399. <el-tooltip
  400. effect="dark"
  401. content="保存"
  402. v-if="scope.row.edit"
  403. placement="top"
  404. >
  405. <i
  406. class="el-icon-circle-check tb-icon"
  407. @click="checkRow(scope.$index, 'get')"
  408. ></i>
  409. </el-tooltip>
  410. <el-tooltip effect="dark" content="重置" placement="top">
  411. <i
  412. v-if="scope.row.edit"
  413. class="el-icon-refresh-left tb-icon"
  414. @click="resetRow(scope.$index)"
  415. ></i>
  416. </el-tooltip>
  417. </template>
  418. </el-table-column>
  419. </el-table>
  420. <el-table
  421. :data="tableForm.get_product_go"
  422. border
  423. :size="'mini'"
  424. row-key="key"
  425. v-if="isDetail"
  426. >
  427. <el-table-column label="退货单编号" width="180">
  428. <template slot-scope="scope">
  429. <!-- :prop="'product_go.' + scope.$index + '.send_num'" -->
  430. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  431. <p>
  432. {{ scope.row.returnCode }}
  433. </p>
  434. </el-form-item>
  435. </template>
  436. </el-table-column>
  437. <el-table-column label="采购订单编号" width="180">
  438. <template slot-scope="scope">
  439. <!-- :prop="'product_go.' + scope.$index + '.send_num'" -->
  440. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  441. <p>
  442. {{ scope.row.orderCode }}
  443. </p>
  444. </el-form-item>
  445. </template>
  446. </el-table-column>
  447. <el-table-column label="收货数量">
  448. <template slot-scope="scope">
  449. <!-- :prop="'product_go.' + scope.$index + '.wsend_num'" -->
  450. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  451. <p>{{ scope.row.send_num }}</p>
  452. </el-form-item>
  453. </template>
  454. </el-table-column>
  455. <el-table-column label="退货数量">
  456. <template slot-scope="scope">
  457. <!-- :prop="'product_go.' + scope.$index + '.wsend_num'" -->
  458. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  459. <p>{{ scope.row.return_num }}</p>
  460. </el-form-item>
  461. </template>
  462. </el-table-column>
  463. <el-table-column label="联系人 ">
  464. <template slot-scope="scope">
  465. <!-- :prop="'product_go.' + scope.$index + '.wsm_name'" -->
  466. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  467. <p>{{ scope.row.contactor }}</p>
  468. </el-form-item>
  469. </template>
  470. </el-table-column>
  471. <el-table-column label="联系方式" width="120">
  472. <template slot-scope="scope">
  473. <!-- :prop="'product_go.' + scope.$index + '.wsm_name'" -->
  474. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  475. <p>{{ scope.row.mobile }}</p>
  476. </el-form-item>
  477. </template>
  478. </el-table-column>
  479. <el-table-column label="物流费" width="200">
  480. <template slot-scope="scope">
  481. <!-- :prop="'product_go.' + scope.$index + '.send_num'" -->
  482. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  483. <p>
  484. {{ scope.row.post_fee }}
  485. </p>
  486. </el-form-item>
  487. </template>
  488. </el-table-column>
  489. <!-- <el-table-column label="收货时间" width="200">
  490. <template slot-scope="scope">
  491. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  492. <p>
  493. {{ scope.row.addive_time }}
  494. </p>
  495. </el-form-item>
  496. </template>
  497. </el-table-column> -->
  498. <el-table-column label="客户编码" width="200">
  499. <template slot-scope="scope">
  500. <!-- :prop="'product_go.' + scope.$index + '.send_num'" -->
  501. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  502. <p>
  503. {{ scope.row.customer_code }}
  504. </p>
  505. </el-form-item>
  506. </template>
  507. </el-table-column>
  508. <el-table-column label="客户名称" min-width="250">
  509. <template slot-scope="scope">
  510. <!-- :prop="'product_go.' + scope.$index + '.send_num'" -->
  511. <el-form-item :style="!scope.row.edit ? 'margin:0' : ''">
  512. <p>
  513. {{ scope.row.customer_name }}
  514. </p>
  515. </el-form-item>
  516. </template>
  517. </el-table-column>
  518. </el-table>
  519. </el-form-item>
  520. </el-form>
  521. </el-col>
  522. <el-col :span="24" style="text-align: right">
  523. <el-button type="primary" @click="submitForm" v-if="!isDetail"
  524. >保 存
  525. </el-button>
  526. <el-button @click="showModelThis = false" v-if="!isDetail">{{
  527. isDetail ? "关 闭" : "取 消"
  528. }}</el-button>
  529. </el-col>
  530. </el-row>
  531. </template>
  532. <script>
  533. import asyncRequest from "@/apis/service/sellOut/sellReturnList";
  534. import resToken from "@/mixins/resToken";
  535. import {
  536. isnumber,
  537. isMobile,
  538. validEmail,
  539. isAlphanumeric,
  540. isChinese,
  541. isEmoticon,
  542. validAlphabets,
  543. } from "@/utils/validate";
  544. export default {
  545. name: "sellReturnList",
  546. props: ["showModel", "id", "isDetail", "sitem", "showModelThis", "newTime"],
  547. mixins: [resToken],
  548. data() {
  549. const validateusername = (rule, value, callback) => {
  550. if (value === "") {
  551. callback(new Error("账号不能为空!"));
  552. } else {
  553. if (value.length < 6 || value.length > 18) {
  554. callback(new Error("账号规则为6~18位数字与字母组合!"));
  555. } else {
  556. if (isnumber(value)) {
  557. callback(new Error("账号规则为6~18位数字与字母组合!"));
  558. } else if (validAlphabets(value)) {
  559. callback(new Error("账号规则为6~18位数字与字母组合!"));
  560. } else if (!isAlphanumeric(value)) {
  561. callback(new Error("账号规则为6~18位数字与字母组合!"));
  562. } else {
  563. callback();
  564. }
  565. }
  566. }
  567. };
  568. const validatename = (rule, value, callback) => {
  569. if (value === "") {
  570. callback(new Error("真实姓名不能为空!"));
  571. } else {
  572. if (value.length < 2 || value.length > 12) {
  573. callback(new Error("真实姓名规则为2~12位汉字!"));
  574. } else {
  575. if (!isChinese(value)) {
  576. console.log(9999);
  577. callback(new Error("真实姓名规则为2~12位汉字!"));
  578. } else if (isEmoticon(value)) {
  579. console.log(2345);
  580. callback(new Error("真实姓名规则为2~12位汉字!"));
  581. } else {
  582. callback();
  583. }
  584. }
  585. }
  586. };
  587. const validatemobile = (rule, value, callback) => {
  588. if (value === "") {
  589. callback(new Error("手机号不能为空!"));
  590. } else {
  591. if (!isMobile(value)) {
  592. callback(new Error("手机号格式不正确!"));
  593. } else {
  594. callback();
  595. }
  596. }
  597. };
  598. const validateEmail = (rule, value, callback) => {
  599. if (value === "") {
  600. callback();
  601. } else {
  602. if (!validEmail(value)) {
  603. callback(new Error("邮箱格式不正确!"));
  604. } else {
  605. callback();
  606. }
  607. }
  608. };
  609. return {
  610. totalReturnNum: "", //仓库总退货数量
  611. totalReturnNumbers: "", //收货总退货数量
  612. noSendNumbers: "", //收货-未发货数量
  613. noSendNum: "", //销售-未发货数量
  614. reason_options: [], //退换货原因备选项
  615. loading: false,
  616. title: "添加销售退货单",
  617. showModelThis: this.showModel,
  618. ruleForm: {
  619. get_return_num: "",
  620. outCode: "", //出库单编号
  621. return_remark: "", //退货备注
  622. return_num: "", //退货数量
  623. returnReason: [], //退货原因
  624. // email: "",
  625. // role_id: "",
  626. // status: "1",
  627. // item: [],
  628. },
  629. rulesThis: this.rules,
  630. rules: {
  631. returnReason: [
  632. {
  633. required: true,
  634. message: "请选择退货原因",
  635. // type: "array",
  636. trigger: "change",
  637. },
  638. ],
  639. return_num: [
  640. {
  641. required: true,
  642. validator: validatemobile,
  643. trigger: "blur",
  644. },
  645. ],
  646. return_remark: [
  647. {
  648. required: true,
  649. message: "请输入退货备注",
  650. trigger: "blur",
  651. },
  652. ],
  653. },
  654. tableForm: {
  655. product_go: [],
  656. get_product_go: [],
  657. },
  658. };
  659. },
  660. mounted() {
  661. // console.log(this.sitem);
  662. this.initForm();
  663. // this.getReason();
  664. },
  665. watch: {
  666. showModel: function (val) {
  667. console.log(val);
  668. this.showModelThis = val;
  669. if (val) {
  670. this.initForm();
  671. }
  672. },
  673. showModelThis(val) {
  674. if (!val) {
  675. this.$emit("cancel");
  676. }
  677. },
  678. newTime: function (val) {
  679. if (val) {
  680. this.initForm();
  681. }
  682. },
  683. id: function (val) {
  684. if (val) {
  685. this.initForm();
  686. }
  687. },
  688. },
  689. methods: {
  690. closeModel() {
  691. console.log("closeModel!!");
  692. },
  693. // 获取退换货原因
  694. async getReason() {
  695. this.loading = true;
  696. let model = {
  697. page: 1,
  698. size: 15,
  699. type: "5",
  700. };
  701. this.reason_options = [];
  702. const res = await asyncRequest.getReason(model);
  703. if (res && res.code === 0 && res.data) {
  704. res.data.list.forEach((element) => {
  705. let obj = {
  706. value: element.result_code,
  707. label: element.result,
  708. id: element.id,
  709. };
  710. this.reason_options.push(obj);
  711. });
  712. // console.log(this.reason_options);
  713. } else if (res && res.code >= 100 && res.code <= 104) {
  714. await this.logout();
  715. } else {
  716. this.tableData = [];
  717. this.pageInfo.total = 0;
  718. }
  719. this.loading = false;
  720. },
  721. async initForm() {
  722. this.loading = true;
  723. // console.log("1212121");
  724. // await this.getRole();
  725. if (this.id === "add") {
  726. this.title = "添加销售退货单";
  727. this.rulesThis = this.rules;
  728. await this.resetForm();
  729. } else {
  730. if (this.isDetail) {
  731. this.title = "添加销售退货单详情";
  732. this.rulesThis = {};
  733. } else {
  734. this.title = "修改添加销售退货单";
  735. this.rulesThis = this.rules;
  736. }
  737. // await this.getReason();
  738. await this.initData();
  739. }
  740. // await this.resetForm();
  741. console.log(this.sitem);
  742. this.getReason(); //获取退还货原因
  743. this.loading = false;
  744. },
  745. async initData() {
  746. console.log(this.sitem);
  747. let model = JSON.parse(JSON.stringify(this.sitem));
  748. this.ruleForm = {
  749. get_return_num: model.addrinfo,
  750. outCode: "", //出库单编号
  751. return_remark: model.remark, //退货备注
  752. return_num: model.num, //退货数量
  753. returnReason: [model.error_msg], //退货原因
  754. };
  755. let { addrinfo, wsminfo } = model;
  756. // let arr = []
  757. // console.log(addrinfo);
  758. this.tableForm.product_go = wsminfo;
  759. this.tableForm.get_product_go = addrinfo;
  760. // const res = await asyncRequest.detail({ id: this.id });
  761. // if (res && res.code === 0 && res.data) {
  762. // this.ruleForm = res.data;
  763. // this.ruleForm.role_id = this.ruleForm.role;
  764. // } else if (res && res.code >= 100 && res.code <= 104) {
  765. // await this.logout();
  766. // } else {
  767. // this.$message.warning(res.message);
  768. // }
  769. },
  770. async resetForm() {
  771. // 重置
  772. await this.$nextTick(() => {
  773. if (this.$refs.ruleForm) {
  774. this.$refs.ruleForm.resetFields();
  775. this.$refs.ruleForm.clearValidate();
  776. console.log(this.sitem);
  777. this.outCode = this.sitem.orderCode;
  778. // console.log(this.outCode);
  779. const { info, addrs } = this.sitem;
  780. info.forEach((ele) => {
  781. this.noSendNum += ele.wsend_num;
  782. });
  783. let list = JSON.parse(JSON.stringify(info)); //
  784. list.map((v) => {
  785. v.edit = false;
  786. return v;
  787. });
  788. this.tableForm.product_go = [].concat(...list);
  789. // console.log(list);
  790. addrs.forEach((ele) => {
  791. this.noSendNumbers += ele.wsend_num;
  792. });
  793. let l_list = JSON.parse(JSON.stringify(addrs));
  794. l_list.map((ele) => {
  795. ele.edit = false;
  796. return ele;
  797. });
  798. this.tableForm.get_product_go = [].concat(...l_list);
  799. // console.log(l_list);
  800. this.ruleForm = {
  801. return_remark: "", //退货备注
  802. return_num: "", //退货数量
  803. returnReason: [], //退货原因
  804. };
  805. }
  806. });
  807. },
  808. async submitForm() {
  809. await this.$refs.ruleForm.validate(async (valid) => {
  810. if (valid) {
  811. this.loading = true;
  812. const model = JSON.parse(JSON.stringify(this.ruleForm));
  813. console.log(model);
  814. let arr = JSON.parse(JSON.stringify(this.tableForm.product_go));
  815. //收货信息列表入参
  816. let list = [];
  817. arr.map((e) => {
  818. let obj = {
  819. wsm_code: e.wsm_code,
  820. return_num: model.return_num,
  821. };
  822. list.push(obj);
  823. });
  824. // 地址列表入参
  825. let arr1 = JSON.parse(JSON.stringify(this.tableForm.get_product_go));
  826. let addr = [];
  827. arr1.map((e) => {
  828. let obj = {
  829. addrid: e.id,
  830. return_num: model.get_return_num,
  831. };
  832. addr.push(obj);
  833. });
  834. let _model = {
  835. orderCode: this.outCode,
  836. errorCode: model.returnReason,
  837. remark: model.return_remark,
  838. list,
  839. addr,
  840. };
  841. console.log(_model);
  842. console.log(this.noSendNum);
  843. if (Number(model.return_num) > Number(this.noSendNum)) {
  844. this.$message.warning("退货数量不能大于未发货数量");
  845. return;
  846. }
  847. let res = {};
  848. if (this.id === "add") {
  849. delete model["id"];
  850. res = await asyncRequest.add(_model);
  851. } else {
  852. res = await asyncRequest.update(_model);
  853. }
  854. this.loading = false;
  855. if (res && res.code === 0) {
  856. const title = this.id === "add" ? "添加成功" : "修改成功";
  857. this.$notify.success({
  858. title,
  859. message: "",
  860. });
  861. this.showModelThis = false;
  862. // 刷新
  863. this.$emit("refresh", false);
  864. } else if (res && res.code >= 100 && res.code <= 104) {
  865. await this.logout();
  866. } else {
  867. this.$message.warning(res.message);
  868. }
  869. } else {
  870. console.log("error submit!!");
  871. return false;
  872. }
  873. });
  874. },
  875. //异常原因筛选
  876. //保存某一行
  877. checkRow(rowIndex, name) {
  878. if (name == "return") {
  879. const model = JSON.parse(JSON.stringify(this.ruleForm));
  880. console.log(model.return_num);
  881. console.log(this.noSendNum);
  882. if (Number(model.return_num) > Number(this.noSendNum)) {
  883. this.$message.warning("退货数量不能大于未发货数量");
  884. return;
  885. }
  886. const { check_value, check_remark } =
  887. this.tableForm.product_go[rowIndex];
  888. if (check_value != "" && check_remark != "") {
  889. this.tableForm.product_go[rowIndex].edit = false;
  890. } else {
  891. this.$message.warning("审核情况或审核备注不能为空");
  892. }
  893. } else if (name == "get") {
  894. const model = JSON.parse(JSON.stringify(this.ruleForm));
  895. console.log(model);
  896. console.log(this.noSendNum);
  897. if (Number(model.get_return_num) > Number(this.noSendNum)) {
  898. this.$message.warning("退货数量不能大于未发货数量");
  899. return;
  900. }
  901. const { check_value, check_remark } =
  902. this.tableForm.get_product_go[rowIndex];
  903. if (check_value != "" && check_remark != "") {
  904. this.tableForm.get_product_go[rowIndex].edit = false;
  905. } else {
  906. this.$message.warning("审核情况或审核备注不能为空");
  907. }
  908. }
  909. },
  910. //编辑某一行
  911. editRow(rowIndex, name) {
  912. // console.log(this.tableForm.product_go[rowIndex].edit);
  913. // console.log(rowIndex);
  914. // console.log(this.tableForm.product_go);
  915. if (name == "return") {
  916. let index = this.tableForm.product_go.findIndex((v) => {
  917. v.edit;
  918. });
  919. console.log(index);
  920. if (index !== -1) {
  921. this.$message.warning("请完成其他行的编辑!");
  922. return;
  923. } else {
  924. this.tableForm.product_go[rowIndex].edit = true;
  925. }
  926. console.log(this.tableForm.product_go[rowIndex].edit);
  927. } else if (name == "get") {
  928. let index = this.tableForm.product_go.findIndex((v) => {
  929. v.edit;
  930. });
  931. console.log(index);
  932. if (index !== -1) {
  933. this.$message.warning("请完成其他行的编辑!");
  934. return;
  935. } else {
  936. this.tableForm.get_product_go[rowIndex].edit = true;
  937. }
  938. console.log(this.tableForm.get_product_go[rowIndex].edit);
  939. }
  940. },
  941. resetRow(rowIndex) {
  942. this.tableForm.product_go[rowIndex].check_remark = "";
  943. this.tableForm.product_go[rowIndex].check_value = "agree";
  944. },
  945. },
  946. };
  947. </script>
  948. <style>
  949. </style>