modify_list-apply.vue 45 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424
  1. <template>
  2. <div>
  3. <div>
  4. <el-page-header @back="goBack" :content="!cid ? '存货调价单' : '编辑'">
  5. </el-page-header>
  6. </div>
  7. <br /><br />
  8. <div>
  9. <el-form
  10. ref="screenForm"
  11. label-width="100px"
  12. size="small"
  13. label-position="left"
  14. >
  15. <el-row :gutter="20">
  16. <el-col :xs="24" :sm="12" :lg="6">
  17. <el-form-item label="单据编号">
  18. <el-input
  19. placeholder="系统自动生成"
  20. disabled
  21. v-model="base.billId"
  22. ></el-input>
  23. </el-form-item>
  24. </el-col>
  25. <!-- <el-col :xs="24" :sm="12" :lg="6">
  26. <el-form-item label="调价业务员">
  27. <el-select
  28. placeholder="请选择调价业务员"
  29. filterable
  30. @change="handleUser"
  31. v-model="serviceId"
  32. >
  33. <el-option
  34. v-for="(item, index) in userList"
  35. :label="item.nickName"
  36. :value="item.roleId"
  37. :key="index"
  38. ></el-option>
  39. </el-select>
  40. </el-form-item>
  41. </el-col>
  42. <el-col :xs="24" :sm="12" :lg="6">
  43. <el-form-item label="调价部门">
  44. <el-input
  45. placeholder="调价部门"
  46. disabled
  47. v-model="adminCompanyName"
  48. ></el-input>
  49. </el-form-item>
  50. </el-col> -->
  51. <!-- <el-col :xs="24" :sm="12" :lg="6">
  52. <el-form-item label="销售类型">
  53. <el-select
  54. placeholder="请选择销售类型"
  55. filterable
  56. v-model="saleTypeId"
  57. >
  58. <el-option
  59. v-for="item in typeList"
  60. :label="item.saleName"
  61. :value="item.id"
  62. ></el-option>
  63. </el-select>
  64. </el-form-item>
  65. </el-col> -->
  66. <el-col :xs="24" :sm="12" :lg="6">
  67. <el-form-item label="文件编码">
  68. <el-input placeholder="请输入" v-model="base.remark"></el-input>
  69. </el-form-item>
  70. </el-col>
  71. <el-col :xs="24" :sm="12" :lg="6">
  72. <el-form-item label="" class="fr"> </el-form-item>
  73. </el-col>
  74. </el-row>
  75. </el-form>
  76. </div>
  77. <!-- <div class="btn-group clearfix"> <el-upload
  78. class="import-btn"
  79. :action="baseURL + 'student/import'"
  80. :http-request="handleImport"
  81. :file-list="importFileList"
  82. :show-file-list="false"
  83. >
  84. <el-button size="small">导入价格表</el-button>
  85. </el-upload></div> -->
  86. <div class="mymain-container">
  87. <!-- 列表 -->
  88. <div class="table">
  89. <el-form v-if="!detail.length" size="small" label-position="left">
  90. <el-table
  91. v-loading="listLoading"
  92. :data="items"
  93. element-loading-text="Loading"
  94. border
  95. fit
  96. highlight-current-row
  97. stripe
  98. >
  99. <el-table-column
  100. align="center"
  101. label="操作类型"
  102. prop="nname"
  103. min-width="160"
  104. show-overflow-tooltip
  105. >
  106. <!-- <el-button type="text" class="textColor">修改</el-button> -->
  107. <template slot-scope="scope">
  108. <el-button
  109. type="text"
  110. class="textColor"
  111. @click="hanleDeleInd(scope.$index, scope.row.cid)"
  112. >删除</el-button
  113. >
  114. </template>
  115. </el-table-column>
  116. <el-table-column
  117. align="center"
  118. label="销售类型"
  119. prop="mainId"
  120. min-width="160"
  121. show-overflow-tooltip
  122. >
  123. <template slot-scope="scope">
  124. <el-form-item>
  125. <template v-if="!cid">
  126. <el-select
  127. placeholder="请选择销售类型"
  128. @change="
  129. handleSale($event, scope.$index, scope.row.saleTypes)
  130. "
  131. v-model="scope.row.mainId"
  132. >
  133. <el-option
  134. v-for="item in scope.row.saleTypes"
  135. :label="item.saleName"
  136. :value="item.id"
  137. ></el-option>
  138. </el-select>
  139. </template>
  140. <template v-else>
  141. <el-select
  142. @change="handleSale($event, scope.$index, scope.row.id)"
  143. placeholder="请选择销售类型"
  144. v-model="scope.row.saleTypeId"
  145. >
  146. <el-option
  147. v-for="item in typeList"
  148. :label="item.saleName"
  149. :value="item.id"
  150. ></el-option>
  151. </el-select>
  152. </template>
  153. </el-form-item>
  154. </template>
  155. </el-table-column>
  156. <el-table-column
  157. align="center"
  158. label="存货编码"
  159. prop="materialNumber"
  160. min-width="160"
  161. show-overflow-tooltip
  162. >
  163. <template slot-scope="scope">
  164. <el-form-item>
  165. <el-input
  166. disabled
  167. v-model="scope.row.materialNumber"
  168. ></el-input>
  169. </el-form-item>
  170. </template>
  171. </el-table-column>
  172. <el-table-column
  173. align="center"
  174. label="存货名称"
  175. prop="materialName"
  176. min-width="160"
  177. show-overflow-tooltip
  178. >
  179. <template slot-scope="scope">
  180. <el-form-item>
  181. <el-input
  182. disabled
  183. v-model="scope.row.materialName"
  184. ></el-input>
  185. </el-form-item>
  186. </template>
  187. </el-table-column>
  188. <el-table-column
  189. align="center"
  190. label="规格型号"
  191. prop="specification"
  192. min-width="160"
  193. show-overflow-tooltip
  194. >
  195. <template slot-scope="scope">
  196. <el-form-item>
  197. <el-input
  198. disabled
  199. v-model="scope.row.specification"
  200. ></el-input>
  201. </el-form-item>
  202. </template>
  203. </el-table-column>
  204. <el-table-column
  205. align="center"
  206. label="计量单位"
  207. prop="unit"
  208. min-width="160"
  209. show-overflow-tooltip
  210. >
  211. <template slot-scope="scope">
  212. <el-form-item>
  213. <el-input disabled v-model="scope.row.unit"></el-input>
  214. </el-form-item>
  215. </template>
  216. </el-table-column>
  217. <el-table-column
  218. align="center"
  219. label="批发价"
  220. prop="batchPrice"
  221. min-width="160"
  222. show-overflow-tooltip
  223. >
  224. <template slot-scope="scope">
  225. <el-form-item>
  226. <el-input v-model="scope.row.batchPrice"></el-input>
  227. </el-form-item>
  228. </template>
  229. </el-table-column>
  230. <el-table-column
  231. align="center"
  232. label="格力折扣"
  233. prop="discAmount"
  234. min-width="160"
  235. show-overflow-tooltip
  236. ><template slot-scope="scope">
  237. <el-form-item>
  238. <el-input v-model="scope.row.discAmount"></el-input>
  239. </el-form-item>
  240. </template>
  241. </el-table-column>
  242. <el-table-column
  243. align="center"
  244. label="返利类型"
  245. prop="rebateUseRate"
  246. min-width="160"
  247. show-overflow-tooltip
  248. ><template slot-scope="scope">
  249. <el-form-item>
  250. <el-select
  251. multiple
  252. :disabled="scope.row.fang"
  253. v-model="scope.row.walletRebateId"
  254. placeholder="请选择返利类型"
  255. @change="handelRebateList($event, scope.$index, scope.row)"
  256. @remove-tag="handleRemove2($event, scope.$index, scope.row)"
  257. >
  258. <el-option
  259. v-for="(item, index) in scope.row.rebateList"
  260. :key="item.index"
  261. :value="item.walletRebateId"
  262. :label="item.name"
  263. >
  264. </el-option>
  265. </el-select>
  266. </el-form-item>
  267. </template>
  268. </el-table-column>
  269. <el-table-column
  270. align="center"
  271. label="生效日期"
  272. prop="startDate"
  273. min-width="160"
  274. show-overflow-tooltip
  275. ><template slot-scope="scope">
  276. <el-form-item>
  277. <el-date-picker
  278. v-model="scope.row.startDate"
  279. type="date"
  280. placeholder="请输入调价日期"
  281. value-format="yyyy-MM-dd"
  282. >
  283. </el-date-picker>
  284. </el-form-item>
  285. </template>
  286. </el-table-column>
  287. <el-table-column
  288. align="center"
  289. label="失效日期"
  290. prop="endDate"
  291. min-width="160"
  292. show-overflow-tooltip
  293. ><template slot-scope="scope">
  294. <el-form-item>
  295. <el-date-picker
  296. v-model="scope.row.endDate"
  297. type="date"
  298. placeholder="请输入调价日期"
  299. value-format="yyyy-MM-dd"
  300. >
  301. </el-date-picker>
  302. </el-form-item>
  303. </template>
  304. </el-table-column>
  305. <el-table-column
  306. align="center"
  307. label="是否促销价"
  308. prop="isPromote"
  309. min-width="160"
  310. show-overflow-tooltip
  311. ><template slot-scope="scope">
  312. <el-form-item>
  313. <el-select
  314. v-model="scope.row.isPromote"
  315. placeholder="请选择是否促销价"
  316. >
  317. <el-option
  318. v-for="item in scope.row.isPromoteArr"
  319. :key="item.bool"
  320. :value="item.bool"
  321. :label="item.value"
  322. >
  323. </el-option>
  324. </el-select>
  325. </el-form-item>
  326. </template>
  327. </el-table-column>
  328. <el-table-column
  329. align="center"
  330. label="数量"
  331. prop="qty"
  332. min-width="160"
  333. show-overflow-tooltip
  334. ><template slot-scope="scope">
  335. <el-form-item>
  336. <el-input v-model="scope.row.qty"></el-input>
  337. </el-form-item>
  338. </template>
  339. </el-table-column>
  340. <el-table-column
  341. align="center"
  342. label="现金钱包"
  343. prop="wallets"
  344. min-width="160"
  345. show-overflow-tooltip
  346. ><template slot-scope="scope">
  347. <el-form-item>
  348. <template v-if="!cid">
  349. <el-select
  350. multiple
  351. clearable
  352. v-model="scope.row.walletsId"
  353. @change="handelWallets($event, scope.$index, scope.row)"
  354. @remove-tag="
  355. handleRemove($event, scope.$index, scope.row)
  356. "
  357. placeholder="请选择现金钱包"
  358. >
  359. <el-option
  360. v-for="item in scope.row.walleList"
  361. :key="item.id"
  362. :value="item.id"
  363. :label="item.name"
  364. >
  365. </el-option> </el-select
  366. ></template>
  367. <template v-else>
  368. <el-select
  369. multiple
  370. clearable
  371. v-model="scope.row.walletsId"
  372. @change="handelWallets($event, scope.$index, scope.row)"
  373. @remove-tag="
  374. handleRemove($event, scope.$index, scope.row)
  375. "
  376. placeholder="请选择现金钱包"
  377. >
  378. <el-option
  379. v-for="item in scope.row.walleList"
  380. :key="item.walletId"
  381. :value="item.walletId"
  382. :label="item.walletName"
  383. >
  384. </el-option> </el-select
  385. ></template>
  386. </el-form-item>
  387. </template>
  388. </el-table-column>
  389. <el-table-column
  390. align="center"
  391. label="发布"
  392. prop="isPublish"
  393. min-width="160"
  394. show-overflow-tooltip
  395. ><template slot-scope="scope">
  396. <el-form-item>
  397. <el-select
  398. v-model="scope.row.isPublish"
  399. placeholder="请选择是否发布"
  400. >
  401. <el-option
  402. v-for="item in scope.row.isPublishArr"
  403. :key="item.bool"
  404. :value="item.bool"
  405. :label="item.value"
  406. >
  407. </el-option>
  408. </el-select>
  409. </el-form-item>
  410. </template>
  411. </el-table-column>
  412. </el-table>
  413. </el-form>
  414. <el-form :model="detail" v-else size="small" label-position="left">
  415. <el-table
  416. v-loading="listLoading"
  417. :data="detail"
  418. element-loading-text="Loading"
  419. border
  420. fit
  421. highlight-current-row
  422. stripe
  423. >
  424. <el-table-column
  425. align="center"
  426. label="操作类型"
  427. prop="nname"
  428. min-width="160"
  429. show-overflow-tooltip
  430. >
  431. <!-- <el-button type="text" class="textColor">修改</el-button> -->
  432. <template slot-scope="scope">
  433. <el-button
  434. type="text"
  435. class="textColor"
  436. @click="hanleDeleInd(scope.$index)"
  437. >删除</el-button
  438. >
  439. </template>
  440. </el-table-column>
  441. <el-table-column
  442. align="center"
  443. label="销售类型"
  444. prop="saleTypeId"
  445. min-width="160"
  446. show-overflow-tooltip
  447. >
  448. <template slot-scope="scope">
  449. <el-form-item>
  450. <el-select
  451. placeholder="请选择销售类型"
  452. v-model="scope.row.saleTypeId"
  453. >
  454. <el-option
  455. v-for="item in typeList"
  456. :label="item.name"
  457. :value="item.saleTypeId"
  458. ></el-option>
  459. </el-select>
  460. </el-form-item>
  461. </template>
  462. </el-table-column>
  463. <el-table-column
  464. align="center"
  465. label="存货编码"
  466. prop="materialNumber"
  467. min-width="160"
  468. show-overflow-tooltip
  469. >
  470. <template slot-scope="scope">
  471. <el-form-item>
  472. <el-input v-model="scope.row.materialNumber"></el-input>
  473. </el-form-item>
  474. </template>
  475. </el-table-column>
  476. <el-table-column
  477. align="center"
  478. label="存货名称"
  479. prop="materialName"
  480. min-width="160"
  481. show-overflow-tooltip
  482. >
  483. <template slot-scope="scope">
  484. <el-form-item>
  485. <el-input v-model="scope.row.materialName"></el-input>
  486. </el-form-item>
  487. </template>
  488. </el-table-column>
  489. <el-table-column
  490. align="center"
  491. label="规格型号"
  492. prop="specification"
  493. min-width="160"
  494. show-overflow-tooltip
  495. >
  496. <template slot-scope="scope">
  497. <el-form-item>
  498. <el-input v-model="scope.row.specification"></el-input>
  499. </el-form-item>
  500. </template>
  501. </el-table-column>
  502. <el-table-column
  503. align="center"
  504. label="计量单位"
  505. prop="unit"
  506. min-width="160"
  507. show-overflow-tooltip
  508. >
  509. <template slot-scope="scope">
  510. <el-form-item>
  511. <el-input v-model="scope.row.SalesType"></el-input>
  512. </el-form-item>
  513. </template>
  514. </el-table-column>
  515. <el-table-column
  516. align="center"
  517. label="批发价"
  518. prop="batchPrice"
  519. min-width="160"
  520. show-overflow-tooltip
  521. >
  522. <template slot-scope="scope">
  523. <el-form-item>
  524. <el-input v-model="scope.row.batchPrice"></el-input>
  525. </el-form-item>
  526. </template>
  527. </el-table-column>
  528. <el-table-column
  529. align="center"
  530. label="零售价"
  531. prop="retailPrice"
  532. min-width="160"
  533. show-overflow-tooltip
  534. ><template slot-scope="scope">
  535. <el-form-item>
  536. <el-input v-model="scope.row.retailPrice"></el-input>
  537. </el-form-item>
  538. </template>
  539. </el-table-column>
  540. <el-table-column
  541. align="center"
  542. label="返利使用比例"
  543. prop="rebateUseRate"
  544. min-width="160"
  545. show-overflow-tooltip
  546. ><template slot-scope="scope">
  547. <el-form-item>
  548. <el-input v-model="scope.row.rebateUseRate"></el-input>
  549. </el-form-item>
  550. </template>
  551. </el-table-column>
  552. <el-table-column
  553. align="center"
  554. label="生效日期"
  555. prop="startDate"
  556. min-width="160"
  557. show-overflow-tooltip
  558. ><template slot-scope="scope">
  559. <el-form-item>
  560. <el-date-picker
  561. v-model="scope.row.startDate"
  562. type="date"
  563. placeholder="请输入调价日期"
  564. value-format="yyyy-MM-dd"
  565. >
  566. </el-date-picker>
  567. </el-form-item>
  568. </template>
  569. </el-table-column>
  570. <el-table-column
  571. align="center"
  572. label="失效日期"
  573. prop="endDate"
  574. min-width="160"
  575. show-overflow-tooltip
  576. ><template slot-scope="scope">
  577. <el-form-item>
  578. <el-date-picker
  579. v-model="scope.row.endDate"
  580. type="date"
  581. placeholder="请输入调价日期"
  582. value-format="yyyy-MM-dd"
  583. >
  584. </el-date-picker>
  585. </el-form-item>
  586. </template>
  587. </el-table-column>
  588. <el-table-column
  589. align="center"
  590. label="是否促销价"
  591. prop="isPromote"
  592. min-width="160"
  593. show-overflow-tooltip
  594. ><template slot-scope="scope">
  595. <el-form-item>
  596. <el-select
  597. v-model="scope.row.isPromote"
  598. placeholder="请选择是否促销价"
  599. >
  600. <el-option
  601. v-for="item in scope.row.isPromoteArr"
  602. :key="item.bool"
  603. :value="item.bool"
  604. :label="item.value"
  605. >
  606. </el-option>
  607. </el-select>
  608. </el-form-item>
  609. </template>
  610. </el-table-column>
  611. <el-table-column
  612. align="center"
  613. label="数量"
  614. prop="qty"
  615. min-width="160"
  616. show-overflow-tooltip
  617. ><template slot-scope="scope">
  618. <el-form-item>
  619. <el-input v-model="scope.row.qty"></el-input>
  620. </el-form-item>
  621. </template>
  622. </el-table-column>
  623. <el-table-column
  624. align="center"
  625. label="支付钱包类型"
  626. prop="wallets"
  627. min-width="160"
  628. show-overflow-tooltip
  629. ><template slot-scope="scope">
  630. <el-form-item>
  631. <el-select
  632. v-model="scope.row.isPublish"
  633. placeholder="请选择支付钱包类型"
  634. >
  635. <el-option
  636. v-for="item in scope.row.rebateList"
  637. :key="item.walletRebateId"
  638. :value="item.walletRebateId"
  639. :label="item.name"
  640. >
  641. </el-option>
  642. </el-select>
  643. </el-form-item>
  644. </template>
  645. </el-table-column>
  646. <el-table-column
  647. align="center"
  648. label="发布"
  649. prop="isPublish"
  650. min-width="160"
  651. show-overflow-tooltip
  652. ><template slot-scope="scope">
  653. <el-form-item>
  654. <el-select
  655. v-model="scope.row.isPublish"
  656. placeholder="请选择是否发布"
  657. >
  658. <el-option
  659. v-for="item in scope.row.isPublishArr"
  660. :key="item.bool"
  661. :value="item.bool"
  662. :label="item.value"
  663. >
  664. </el-option>
  665. </el-select>
  666. </el-form-item>
  667. </template>
  668. </el-table-column>
  669. </el-table>
  670. </el-form>
  671. <el-dialog
  672. title="提示"
  673. :visible.sync="centerDialogVisible"
  674. width="50%"
  675. center
  676. class="dia"
  677. >
  678. <el-form
  679. :model="form"
  680. ref="form"
  681. label-width="80px"
  682. :inline="false"
  683. size="normal"
  684. >
  685. <el-form-item label="产品类型">
  686. <el-select v-model="materialId" placeholder="请选择" width="100%">
  687. <el-option
  688. v-for="item in materialLis"
  689. :key="item.id"
  690. :label="item.name"
  691. :value="item.id"
  692. >
  693. </el-option>
  694. </el-select>
  695. </el-form-item>
  696. </el-form>
  697. <span slot="footer" class="dialog-footer">
  698. <el-button @click="centerDialogVisible = false">取 消</el-button>
  699. <el-button type="primary" @click="hanleAdd">确 定</el-button>
  700. </span>
  701. </el-dialog>
  702. </div>
  703. </div>
  704. <div class="btn-group clearfix">
  705. <template v-if="!cid">
  706. <el-button size="small" @click="handleReseat">重置</el-button>
  707. <el-button size="small" type="primary" @click="hanleSbumit"
  708. >提交</el-button
  709. >
  710. </template>
  711. <template v-else>
  712. <el-button size="small" type="primary" @click="hanleSave"
  713. >保存</el-button
  714. >
  715. </template>
  716. <el-button
  717. style="float: right"
  718. type="primary"
  719. size="small"
  720. @click="centerDialogVisible = true"
  721. >添加</el-button
  722. >
  723. </div>
  724. <el-dialog title="" :visible.sync="centerDialogVisible" width="80%" center>
  725. <div>
  726. <el-form
  727. ref="screenForm"
  728. :model="screenForm"
  729. label-width="70px"
  730. size="small"
  731. label-position="left"
  732. >
  733. <el-row :gutter="20">
  734. <el-col :xs="24" :sm="12" :lg="6">
  735. <el-form-item label="名称" prop="keyword">
  736. <el-input
  737. placeholder="请输入名称"
  738. v-model="screenForm.keyword"
  739. ></el-input>
  740. </el-form-item>
  741. </el-col>
  742. <el-col :xs="24" :sm="12" :lg="6">
  743. <el-form-item label="规格" prop="specification">
  744. <el-input
  745. placeholder="请输入规格"
  746. v-model="screenForm.specification"
  747. ></el-input>
  748. </el-form-item>
  749. </el-col>
  750. <el-col :xs="24" :sm="12" :lg="12" class="tr">
  751. <el-form-item label="">
  752. <el-button size="small" @click="resetScreenForm"
  753. >清空</el-button
  754. >
  755. <el-button size="small" type="primary" @click="submitScreenForm"
  756. >搜索</el-button
  757. >
  758. </el-form-item>
  759. </el-col>
  760. </el-row>
  761. </el-form>
  762. </div>
  763. <div class="mymain-container">
  764. <div class="table">
  765. <el-table
  766. ref="multipleTable"
  767. v-loading="listLoading"
  768. :data="dataList"
  769. element-loading-text="Loading"
  770. border
  771. fit
  772. highlight-current-row
  773. stripe
  774. @select-all="handleSelectionAllChange"
  775. @selection-change="handleSelectionChange"
  776. >
  777. <el-table-column
  778. align="center"
  779. :selectable="selectable"
  780. type="selection"
  781. width="55"
  782. >
  783. </el-table-column>
  784. <el-table-column
  785. align="center"
  786. label="使用组织"
  787. prop="useOrgName"
  788. min-width="100"
  789. ></el-table-column>
  790. <el-table-column
  791. align="center"
  792. label="编码"
  793. prop="number"
  794. min-width="100"
  795. label-class-name="bianma"
  796. class-name="fontstyle"
  797. ></el-table-column>
  798. <el-table-column
  799. align="center"
  800. label="名称"
  801. prop="name"
  802. min-width="100"
  803. ></el-table-column>
  804. <el-table-column
  805. align="center"
  806. label="规格型号"
  807. prop="specification"
  808. min-width="100"
  809. ></el-table-column>
  810. <el-table-column
  811. align="center"
  812. label="数据状态"
  813. prop="forbidStatus"
  814. min-width="100"
  815. >
  816. <template slot-scope="scope">
  817. <el-tag type="success" v-if="scope.row.forbidStatus == 'A'"
  818. >正常</el-tag
  819. >
  820. <el-tag type="danger" v-else>禁用</el-tag>
  821. </template>
  822. </el-table-column>
  823. <el-table-column
  824. align="center"
  825. label="是否维护商城资料"
  826. prop="maintainData"
  827. min-width="100"
  828. ></el-table-column>
  829. <el-table-column
  830. align="center"
  831. label="是否维护内外机档案"
  832. prop="maintainFiles"
  833. min-width="100"
  834. ></el-table-column>
  835. <el-table-column
  836. align="center"
  837. label="基本单位"
  838. prop="baseUnitId"
  839. min-width="100"
  840. ></el-table-column>
  841. <el-table-column
  842. align="center"
  843. label="已使用"
  844. prop="used"
  845. min-width="100"
  846. ></el-table-column>
  847. </el-table>
  848. </div>
  849. <!-- 分页 -->
  850. <div class="fr">
  851. <el-pagination
  852. @size-change="handleSizeChange"
  853. @current-change="handleCurrentChange"
  854. :current-page="currentPage"
  855. :page-sizes="[10]"
  856. :page-size="10"
  857. layout="total, sizes, prev, pager, next, jumper"
  858. :total="listTotal"
  859. >
  860. </el-pagination>
  861. </div>
  862. </div>
  863. <span slot="footer" class="dialog-footer">
  864. <el-button @click="centerDialogVisible = false">取 消</el-button>
  865. <el-button type="primary" @click="handleDetermine">确 定</el-button>
  866. </span>
  867. </el-dialog>
  868. </div>
  869. </template>
  870. <script>
  871. import {
  872. getProductRriceAdd,
  873. getProductRriceDetail,
  874. getTypeList,
  875. getMaterialList,
  876. getRebate,
  877. getUserList,
  878. getMaterialDetail,
  879. getWalletList,
  880. handleEdit,
  881. } from "@/api/basic_data/material";
  882. import { handleImport } from "@/utils/util";
  883. import MaterialListDetail from "./material_list-detail.vue";
  884. import Mixin from "@/mixin/index";
  885. export default {
  886. mixins: [Mixin],
  887. props: ["cid"],
  888. data() {
  889. return {
  890. baseURL:'',
  891. importFileList:[],
  892. listLoading: false,
  893. screenForm: {
  894. keyword:'',
  895. specification:''
  896. },
  897. base: {
  898. adminCompanyId: "",
  899. adminWebsitId: "",
  900. billId: "",
  901. examineNote: "",
  902. examineResult: true,
  903. examineStatus: "",
  904. id: null,
  905. serviceId: "",
  906. serviceName: "",
  907. remark: "",
  908. saleTypeId: "",
  909. },
  910. items: [],
  911. centerDialogVisible: false,
  912. materialLis: [],
  913. materialId: "",
  914. rebateList: [],
  915. typeList: [],
  916. saleTypeId: "",
  917. serviceId: "",
  918. adminCompanyId: "",
  919. serviceName: "",
  920. adminCompanyName: "",
  921. adminWebsitId: "",
  922. remark: "",
  923. detail: [],
  924. form: {},
  925. startDate: "",
  926. userList: [],
  927. centerDialogVisible: false,
  928. selectData: [],
  929. walleList: [],
  930. fang: true,
  931. wall1: [],
  932. wall2: [],
  933. };
  934. },
  935. mounted() {
  936. },
  937. methods: {
  938. handleSale(e, index, saleTypes) {
  939. // console.log(this.rebateList);
  940. let linshi = [];
  941. let saleArr = [];
  942. let rebateList = [];
  943. this.rebateList.forEach((k) => {
  944. k.saleTypes.forEach((j) => {
  945. if (!linshi.includes(j.saleTypeId) && j.saleTypeId == e) {
  946. rebateList.push(k);
  947. }
  948. });
  949. });
  950. saleArr = this.typeList.filter((i) => {
  951. return e == i.id;
  952. });
  953. console.log(rebateList, "4444", this.rebateList, e);
  954. // this.items[index].mainName = saleArr[0].mainName;
  955. this.items[index].saleTypeId = e;
  956. this.items[index].fang = false;
  957. this.items[index].saleTypeName = saleArr[0].saleName;
  958. this.$set(this.items[index], "rebateList", rebateList);
  959. // this.fang = false;
  960. },
  961. resArr(arr1, arr2) {
  962. return arr1.filter((v) => arr2.every((val) => val.id != v.id));
  963. },
  964. // xua
  965. handelWallets(e, index, row) {
  966. console.log(row, "kjkj4545");
  967. let id = row.cid || row.updPriceBillId;
  968. if (e && e.length) {
  969. for (let i = 0; i < e.length; i++) {
  970. if (!this.wall1.includes(e[e.length - 1])) {
  971. this.$set(row, "wallets", [
  972. ...row.wallets,
  973. {
  974. type: "COMMONLY",
  975. id: "",
  976. updPriceBillId: id,
  977. updPriceBillItemId: id,
  978. walletId: e[e.length - 1],
  979. },
  980. ]);
  981. this.wall1.push(e[e.length - 1]);
  982. }
  983. }
  984. }
  985. },
  986. handleRemove(e, index, row) {
  987. console.log(e);
  988. const copxyWall = JSON.parse(JSON.stringify(row.wallets));
  989. for (let i = 0; i < row.wallets.length; i++) {
  990. if (this.wall1.includes(e) && row.wallets[i].walletId == e) {
  991. console.log(454);
  992. this.wall1.splice(i, 1);
  993. copxyWall.splice(i, 1);
  994. }
  995. }
  996. this.$set(row, "wallets", copxyWall);
  997. },
  998. handleRemove2(e, index, row) {
  999. const copxyWall = JSON.parse(JSON.stringify(row.wallets));
  1000. for (let i = 0; i < row.wallets.length; i++) {
  1001. if (this.wall2.includes(e) && row.wallets[i].walletId == e) {
  1002. copxyWall.splice(i, 1);
  1003. this.wall2.splice(i, 1);
  1004. }
  1005. }
  1006. this.$set(row, "wallets", copxyWall);
  1007. },
  1008. handelRebateList(e, index, row) {
  1009. console.log(row, "kjkj");
  1010. let id = row.cid || row.updPriceBillId;
  1011. if (e && e.length) {
  1012. for (let i = 0; i < e.length; i++) {
  1013. if (!this.wall2.includes(e[e.length - 1])) {
  1014. this.$set(row, "wallets", [
  1015. ...row.wallets,
  1016. {
  1017. type: "REBATE",
  1018. id: "",
  1019. updPriceBillId: id,
  1020. updPriceBillItemId: id,
  1021. walletId: e[e.length - 1],
  1022. },
  1023. ]);
  1024. this.wall2.push(e[e.length - 1]);
  1025. }
  1026. }
  1027. }
  1028. },
  1029. handleUser(e) {
  1030. const adminCompany = this.userList.filter((k) => {
  1031. return e == k.roleId;
  1032. })[0];
  1033. this.adminWebsitId = adminCompany.adminUserId;
  1034. this.adminCompanyName = adminCompany.adminCompanyName;
  1035. this.serviceName = adminCompany.nickName || "d";
  1036. this.serviceId = adminCompany.roleId;
  1037. },
  1038. goBack() {
  1039. this.$parent.cid = "";
  1040. this.$parent.show = 1;
  1041. // 更新父组件数据
  1042. this.$parent.getList();
  1043. },
  1044. indexMethod(index) {
  1045. console.log(index);
  1046. },
  1047. hanleDeleInd(index, id) {
  1048. if (id) {
  1049. const dataArr = JSON.parse(JSON.stringify(this.dataList));
  1050. for (let j = 0; j < dataArr.length; j++) {
  1051. if (id == dataArr[j].id) {
  1052. dataArr[j].disabled = false;
  1053. this.$set(dataArr[j], "disabled", false);
  1054. }
  1055. }
  1056. this.dataList = dataArr;
  1057. }
  1058. this.items.splice(index, 1);
  1059. },
  1060. handleDetermine() {
  1061. if (this.selectData.length) {
  1062. for (let i = 0; i < this.selectData.length; i++) {
  1063. for (let j = 0; j < this.dataList.length; j++) {
  1064. if (this.selectData[i].id == this.dataList[j].id) {
  1065. this.dataList[j].disabled = true;
  1066. }
  1067. }
  1068. this.items.push({
  1069. baseUnitId: "",
  1070. batchPrice: "",
  1071. unit: this.selectData[i].baseUnitId,
  1072. billId: "",
  1073. endDate: "",
  1074. isPromote: "",
  1075. isPublish: "",
  1076. materialId: this.selectData[i].id,
  1077. materialName: this.selectData[i].name,
  1078. materialNumber: this.selectData[i].number,
  1079. discAmount: "",
  1080. saleTypes: this.selectData[i].saleTypes,
  1081. materialOldNumber: this.selectData[i].oldNumber,
  1082. parentId: "",
  1083. walletRebateName: "",
  1084. walletRebateId: [],
  1085. rebateRate: "",
  1086. qty: "",
  1087. rebateUseRate: "",
  1088. retailPrice: "" || 0,
  1089. saleTypeId: "",
  1090. specification: this.selectData[i].specification,
  1091. startDate: this.selectData[i].startDate,
  1092. wallets: [],
  1093. rebateWallets: [],
  1094. rebateList: [],
  1095. walleList: this.selectData[i].wallets,
  1096. isPublishArr: [
  1097. {
  1098. value: "是",
  1099. bool: true,
  1100. },
  1101. {
  1102. value: "否",
  1103. bool: false,
  1104. },
  1105. ],
  1106. isPromoteArr: [
  1107. {
  1108. value: "是",
  1109. bool: true,
  1110. },
  1111. {
  1112. value: "否",
  1113. bool: false,
  1114. },
  1115. ],
  1116. cid: this.selectData[i].id,
  1117. fang: true,
  1118. });
  1119. }
  1120. this.selectData = [];
  1121. this.$refs.multipleTable.clearSelection();
  1122. this.centerDialogVisible = false;
  1123. } else {
  1124. this.$errorMsg("请选择内容");
  1125. }
  1126. },
  1127. getMaterialList() {
  1128. let params = {
  1129. pageNum: 1,
  1130. pageSize: 10,
  1131. keyword: "",
  1132. bindMain: true,
  1133. };
  1134. getMaterialList(params).then((res) => {
  1135. this.materialLis = res.data.records;
  1136. });
  1137. },
  1138. handleSelectionAllChange(e) {
  1139. this.selectData = e;
  1140. },
  1141. handleSelectionChange(e) {
  1142. this.selectData = e;
  1143. },
  1144. hanleAdd() {
  1145. if (this.materialId) {
  1146. this.centerDialogVisible = false;
  1147. } else {
  1148. this.$errorMsg("请选择产品");
  1149. }
  1150. },
  1151. async getList() {
  1152. let rebateParams = {
  1153. pageNum: 1,
  1154. pageSize: -1,
  1155. mainName: "",
  1156. saleTypeCode: "",
  1157. saleTypeName: "",
  1158. status: "",
  1159. };
  1160. const ress = await getRebate(rebateParams);
  1161. this.rebateList = ress.data.records;
  1162. const wall = await getWalletList({ mainId: "", walletName: "" });
  1163. for (let u = 0; u < wall.data.length; u++) {
  1164. wall.data[u].walletId = wall.data[u].id;
  1165. wall.data[u].walletName = wall.data[u].name;
  1166. }
  1167. this.walleList = wall.data;
  1168. if (this.$parent.show == 5) {
  1169. getProductRriceDetail({ id: this.cid }).then((res) => {
  1170. for (let i = 0; i < res.data.items.length; i++) {
  1171. let linshi = [];
  1172. let rebateList = [];
  1173. let walletIds = [];
  1174. let walletRebateIds = [];
  1175. res.data.items[i].isPublishArr = [
  1176. {
  1177. value: "是",
  1178. bool: true,
  1179. },
  1180. {
  1181. value: "否",
  1182. bool: false,
  1183. },
  1184. ];
  1185. res.data.items[i].isPromoteArr = [
  1186. {
  1187. value: "是",
  1188. bool: true,
  1189. },
  1190. {
  1191. value: "否",
  1192. bool: false,
  1193. },
  1194. ];
  1195. res.data.items[i].walletsId = [];
  1196. res.data.items[i].walletRebateId = [];
  1197. res.data.items[i].rebateWallets = [];
  1198. res.data.items[i].wallets = [];
  1199. for (let p = 0; p < res.data.items[i].wallets2.length; p++) {
  1200. if (res.data.items[i].wallets2[p].type == "COMMONLY") {
  1201. walletIds.push(res.data.items[i].wallets2[p].walletId);
  1202. this.$set(res.data.items[i], "wallets", [
  1203. ...res.data.items[i].wallets,
  1204. res.data.items[i].wallets2[p],
  1205. ]);
  1206. } else if (res.data.items[i].wallets2[p].type == "REBATE") {
  1207. walletRebateIds.push(res.data.items[i].wallets2[p].walletId);
  1208. this.$set(res.data.items[i], "rebateWallets", [
  1209. ...res.data.items[i].rebateWallets,
  1210. res.data.items[i].wallets2[p],
  1211. ]);
  1212. }
  1213. }
  1214. this.rebateList.forEach((k) => {
  1215. k.saleTypes.forEach((j) => {
  1216. if (
  1217. !linshi.includes(j.saleTypeId) &&
  1218. j.saleTypeId == res.data.items[i].saleTypeId
  1219. ) {
  1220. console.log(k, 998);
  1221. for (let w = 0; w < walletRebateIds.length; w++) {
  1222. if (walletRebateIds[w]!= k.walletRebateId) {
  1223. walletRebateIds.splice(w,1)
  1224. }
  1225. }
  1226. rebateList.push(k);
  1227. }
  1228. });
  1229. });
  1230. this.$set(res.data.items[i], "walletsId", walletIds);
  1231. this.$set(res.data.items[i], "walletRebateId", walletRebateIds);
  1232. res.data.items[i].walleList = this.walleList;
  1233. res.data.items[i].rebateList = rebateList;
  1234. res.data.items[i].fang = false;
  1235. }
  1236. this.items = res.data.items;
  1237. this.base = res.data;
  1238. this.listLoading = false;
  1239. });
  1240. } else {
  1241. this.listLoading = true;
  1242. let params = {
  1243. pageNum: this.currentPage,
  1244. pageSize: 10 || this.pageSize,
  1245. keyword: this.screenForm.keyword,
  1246. specification: this.screenForm.specification,
  1247. bindMain: true,
  1248. };
  1249. getMaterialList(params).then((res) => {
  1250. this.dataList = res.data.records;
  1251. this.listTotal = res.data.total;
  1252. this.listLoading = false;
  1253. });
  1254. let params1 = {
  1255. pageNum: 1,
  1256. pageSize: -1,
  1257. saleCode: "",
  1258. saleName: "",
  1259. status: "",
  1260. };
  1261. getTypeList(params1).then((res) => {
  1262. this.typeList = res.data.records;
  1263. });
  1264. getUserList({
  1265. pageNum: 1,
  1266. pageSize: -1,
  1267. adminWebsitId: "",
  1268. isCustomer: 0,
  1269. roleId: "",
  1270. status: "",
  1271. userName: "",
  1272. }).then((res) => {
  1273. this.userList = res.data.records;
  1274. });
  1275. }
  1276. },
  1277. /**
  1278. * 根据条件禁用行复选框
  1279. * 函数返回值为false则禁用选择(反之亦然)
  1280. * @param {Object} row - 行数据
  1281. * @param {String} index - 索引值
  1282. * @return Boolean
  1283. */
  1284. selectable: function (row, index) {
  1285. // row.disabled == undefined 才能被选中
  1286. if (row.disabled == undefined || row.disabled == false) {
  1287. return true;
  1288. } else {
  1289. return false;
  1290. }
  1291. // 函数必须有返回值且是布尔值
  1292. // 页面刷新后该函数会执行 N 次进行判断(N 为表格行数)
  1293. // 如果没有返回值则默认返回false(全部无法选中)
  1294. },
  1295. hanleSbumit() {
  1296. console.log(this.items, 45454);
  1297. // for (let i = 0; i < this.items.length; i++) {
  1298. // this.items[i].wallets = [
  1299. // ...this.items[i].rebateWallets,
  1300. // ...this.items[i].wallets,
  1301. // ];
  1302. // if (!this.items[i].mainId) {
  1303. // this.$errorMsg("请选择销售类型");
  1304. // return;
  1305. // }
  1306. // }
  1307. const params = {
  1308. ...this.base,
  1309. items: this.items,
  1310. saleTypeId: this.saleTypeId,
  1311. adminWebsitId: this.adminWebsitId,
  1312. serviceId: this.serviceId,
  1313. adminCompanyName: this.adminCompanyName,
  1314. serviceName: this.nickName,
  1315. };
  1316. getProductRriceAdd(params).then((res) => {
  1317. this.$successMsg("成功");
  1318. this.$parent.show = 1;
  1319. this.$parent.getList();
  1320. });
  1321. },
  1322. hanleSave() {
  1323. // for (let i = 0; i < this.items.length; i++) {
  1324. // // const wallets = []
  1325. // // if (this.items[i].wallets.length) {
  1326. // // wallets = [...wallets,...this.items[i].wallets]
  1327. // // }else if(this.items[i].rebateWallets.length){
  1328. // // console.log(444);
  1329. // // wallets = [...wallets,...this.items[i].rebateWallets]
  1330. // // }
  1331. // // this.items[i].wallets = wallets
  1332. // console.log(this.items[i]);
  1333. // }
  1334. handleEdit({
  1335. ...this.base,
  1336. items: this.items,
  1337. saleTypeId: this.saleTypeId,
  1338. adminWebsitId: this.adminWebsitId,
  1339. serviceId: this.serviceId,
  1340. adminCompanyName: this.adminCompanyName,
  1341. serviceName: this.nickName,
  1342. }).then((res) => {
  1343. this.$successMsg("成功");
  1344. this.$parent.cid = "";
  1345. this.$parent.show = 1;
  1346. this.$parent.getList();
  1347. });
  1348. },
  1349. handleReseat() {
  1350. this.base = {
  1351. adminCompanyId: "",
  1352. adminWebsitId: "",
  1353. billId: "",
  1354. examineNote: "",
  1355. examineResult: true,
  1356. examineStatus: "",
  1357. id: null,
  1358. serviceId: "",
  1359. serviceName: "",
  1360. remark: "",
  1361. saleTypeId: "",
  1362. };
  1363. this.saleTypeId = "";
  1364. this.items = [];
  1365. },
  1366. // 导入
  1367. async handleImport(param) {
  1368. this.importLoading = true;
  1369. const file = param.file;
  1370. console.log(file, 123);
  1371. const formData = new FormData();
  1372. formData.append("file", file);
  1373. // formData.append("policyId", this.searchForm.code);
  1374. // formData.append("mainId", this.searchForm.mainId);
  1375. let result = await handleImport("/policy/material/import", formData);
  1376. this.importLoading = false;
  1377. this.importFileList = [];
  1378. if (result.code == 200) {
  1379. this.$alert(result.message, "导入成功", {
  1380. confirmButtonText: "确定",
  1381. });
  1382. this.handletwoList();
  1383. } else {
  1384. this.$alert(result.message, "导入失败", {
  1385. confirmButtonText: "确定",
  1386. });
  1387. }
  1388. },
  1389. },
  1390. };
  1391. </script>
  1392. <style lang="scss" scoped>
  1393. ::v-deep .el-date-editor--date {
  1394. width: 100%;
  1395. }
  1396. .dia .el-select--normal {
  1397. width: 100%;
  1398. }
  1399. </style>