price_list.vue 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516
  1. <template>
  2. <div class="app-container">
  3. <!-- 筛选条件 -->
  4. <div>
  5. <el-form
  6. ref="screenForm"
  7. :model="screenForm"
  8. label-width="70px"
  9. size="mini"
  10. label-position="left"
  11. >
  12. <el-row :gutter="20">
  13. <el-col :xs="24" :sm="12" :lg="6">
  14. <el-form-item label="物料编码" prop="materialNumber">
  15. <el-input
  16. v-model="screenForm.materialNumber"
  17. placeholder="请输入物料编码"
  18. />
  19. </el-form-item>
  20. </el-col>
  21. <el-col :xs="24" :sm="12" :lg="6">
  22. <el-form-item label="产品名称" prop="materialName">
  23. <el-input
  24. v-model="screenForm.materialName"
  25. placeholder="请输入产品名称"
  26. />
  27. </el-form-item>
  28. </el-col>
  29. <el-col :xs="24" :sm="12" :lg="6">
  30. <el-form-item label="产品编码" prop="materialOldNumber">
  31. <el-input
  32. v-model="screenForm.materialOldNumber"
  33. placeholder="请输入产品编码"
  34. />
  35. </el-form-item>
  36. </el-col>
  37. <!-- <el-col :xs="24" :sm="12" :lg="6">-->
  38. <!-- <el-form-item label="生效日期" prop="startDate">-->
  39. <!-- <el-date-picker-->
  40. <!-- v-model="screenForm.startDate"-->
  41. <!-- type="datetime"-->
  42. <!-- placeholder="请输入生效日期"-->
  43. <!-- value-format="yyyy-MM-dd HH:mm:ss"-->
  44. <!-- >-->
  45. <!-- </el-date-picker>-->
  46. <!-- </el-form-item>-->
  47. <!-- </el-col>-->
  48. <!-- <el-col :xs="24" :sm="12" :lg="6">-->
  49. <!-- <el-form-item label="失效日期" prop="endDate">-->
  50. <!-- <el-date-picker-->
  51. <!-- v-model="screenForm.endDate"-->
  52. <!-- type="datetime"-->
  53. <!-- placeholder="请输入生效日期"-->
  54. <!-- value-format="yyyy-MM-dd HH:mm:ss "-->
  55. <!-- >-->
  56. <!-- </el-date-picker>-->
  57. <!-- </el-form-item>-->
  58. <!-- </el-col>-->
  59. <el-col :xs="24" :sm="12" :lg="6">
  60. <el-form-item label="销售类型" prop="saleTypeId">
  61. <el-select
  62. v-model="screenForm.saleTypeId"
  63. filterable
  64. placeholder="选择销售类型"
  65. style="width: 100%"
  66. >
  67. <el-option label="全部" value="" />
  68. <el-option
  69. v-for="item in ztypeList"
  70. :key="item.id"
  71. :label="item.saleName"
  72. :value="item.id"
  73. />
  74. </el-select>
  75. </el-form-item>
  76. </el-col>
  77. <el-col :xs="24" :sm="12" :lg="6">
  78. <el-form-item label="产品类别" prop="k3CategoryNumber">
  79. <el-select
  80. v-model="screenForm.k3CategoryNumber"
  81. placeholder="请选择产品类别"
  82. >
  83. <el-option label="全部" value="" />
  84. <el-option
  85. v-for="item in dictList"
  86. :label="item.name"
  87. :value="item.number"
  88. />
  89. </el-select>
  90. </el-form-item>
  91. </el-col>
  92. <el-col :xs="24" :sm="12" :lg="6">
  93. <el-form-item label="规格型号" prop="specification">
  94. <el-input
  95. v-model="screenForm.specification"
  96. placeholder="请输入规格型号"
  97. />
  98. </el-form-item>
  99. </el-col>
  100. <el-col :xs="24" :sm="12" :lg="6">
  101. <el-form-item label="备注" prop="specification">
  102. <el-input
  103. v-model="screenForm.remark"
  104. placeholder="请输入备注"
  105. />
  106. </el-form-item>
  107. </el-col>
  108. <el-col :xs="24" :sm="24" :lg="24" class="tr">
  109. <el-form-item label="">
  110. <el-button size="mini" @click="resetScreenForm">清空</el-button>
  111. <el-button
  112. size="mini"
  113. type="primary"
  114. @click="submitScreenForm"
  115. >搜索</el-button>
  116. </el-form-item>
  117. </el-col>
  118. </el-row>
  119. </el-form>
  120. </div>
  121. <!-- 按钮 -->
  122. <div class="btn-group clearfix">
  123. <div >
  124. <el-popconfirm
  125. v-if="$checkBtnRole('del', $route.meta.roles)"
  126. confirm-button-text="好的"
  127. cancel-button-text="不用了"
  128. icon="el-icon-info"
  129. icon-color="red"
  130. title="内容确定删除吗?"
  131. @onConfirm="handleDelete"
  132. >
  133. <el-button
  134. type="primary"
  135. size="mini"
  136. icon="el-icon-delete"
  137. slot="reference"
  138. class="el-popover-left"
  139. >删除</el-button
  140. >
  141. </el-popconfirm>
  142. <el-button
  143. type="primary"
  144. style="margin-left:10px"
  145. size="mini"
  146. @click="handleRevokeAll"
  147. >批量作废</el-button>
  148. <!-- <el-button type="primary" size="mini">导出</el-button>-->
  149. <!-- <el-button type="primary" size="mini">打印</el-button> -->
  150. </div>
  151. <div class="fl">
  152. </div>
  153. </div>
  154. <div class="mymain-container">
  155. <!-- 列表 -->
  156. <div class="table">
  157. <el-table
  158. v-loading="listLoading"
  159. :data="dataList"
  160. element-loading-text="Loading"
  161. border
  162. fit
  163. :row-class-name="tableRowClassName"
  164. @select-all="hanleSelectAll"
  165. @select="hanleSelectAll"
  166. >
  167. <el-table-column
  168. type="selection"
  169. align="left"
  170. width="50"
  171. ></el-table-column>
  172. <!-- <el-table-column type="selection" align="left" />-->
  173. <!-- <el-table-column
  174. align="left"
  175. label="产品类别"
  176. prop="mainName"
  177. min-width="160"
  178. show-overflow-tooltip
  179. ></el-table-column> -->
  180. <el-table-column
  181. align="left"
  182. label="物料编码"
  183. prop="materialNumber"
  184. min-width="200"
  185. show-overflow-tooltip
  186. >
  187. <template slot-scope="scope">
  188. <CopyButton :copyText="scope.row.materialNumber" />
  189. <span>{{scope.row.materialNumber}}</span>
  190. </template>
  191. </el-table-column>
  192. <el-table-column
  193. align="left"
  194. label="产品编码"
  195. prop="materialOldNumber"
  196. min-width="200"
  197. show-overflow-tooltip
  198. >
  199. <template slot-scope="scope">
  200. <CopyButton :copyText="scope.row.materialOldNumber" />
  201. <span>{{scope.row.materialOldNumber}}</span>
  202. </template>
  203. </el-table-column>
  204. <el-table-column
  205. align="left"
  206. label="产品名称"
  207. prop="materialName"
  208. min-width="200"
  209. show-overflow-tooltip
  210. >
  211. <template slot-scope="scope">
  212. <CopyButton :copyText="scope.row.materialName" />
  213. <span>{{scope.row.materialName}}</span>
  214. </template>
  215. </el-table-column>
  216. <el-table-column
  217. align="left"
  218. label="规格型号"
  219. prop="specification"
  220. min-width="200"
  221. show-overflow-tooltip
  222. >
  223. <template slot-scope="scope">
  224. <CopyButton :copyText="scope.row.specification" />
  225. <span>{{scope.row.specification}}</span>
  226. </template>
  227. </el-table-column>
  228. <el-table-column
  229. align="left"
  230. label="销售类型"
  231. prop="saleTypeName"
  232. min-width="160"
  233. show-overflow-tooltip
  234. />
  235. <el-table-column
  236. align="left"
  237. label="单位"
  238. prop="unit"
  239. min-width="160"
  240. show-overflow-tooltip
  241. />
  242. <el-table-column
  243. align="left"
  244. label="数量下限"
  245. prop="qty"
  246. min-width="160"
  247. show-overflow-tooltip
  248. />
  249. <el-table-column
  250. align="left"
  251. label="返利类型(钱包)"
  252. prop="wallets"
  253. min-width="200"
  254. show-overflow-tooltip
  255. >
  256. <template slot-scope="scope">
  257. <template v-for="(item, index) in scope.row.wallets">
  258. <template v-if="item.type === 'REBATE'">
  259. <el-tag
  260. :key="index"
  261. type="success"
  262. style="margin: 0 10px"
  263. size="mini"
  264. >
  265. {{ item.walletName }}
  266. </el-tag>
  267. </template>
  268. </template>
  269. </template>
  270. </el-table-column>
  271. <el-table-column
  272. align="left"
  273. label="现金钱包"
  274. prop="modifyPriceDepartment"
  275. min-width="200"
  276. show-overflow-tooltip
  277. >
  278. <template slot-scope="scope">
  279. <template v-for="(item, index) in scope.row.wallets">
  280. <template v-if="item.type === 'COMMONLY'">
  281. <el-tag
  282. :key="index"
  283. type="success"
  284. style="margin: 0 10px"
  285. size="mini"
  286. >
  287. {{ item.walletName }}
  288. </el-tag>
  289. </template>
  290. </template>
  291. </template>
  292. </el-table-column>
  293. <el-table-column
  294. align="left"
  295. label="生效日期"
  296. prop="startDate"
  297. min-width="160"
  298. show-overflow-tooltip
  299. />
  300. <el-table-column
  301. align="left"
  302. label="失效日期"
  303. prop="endDate"
  304. min-width="160"
  305. show-overflow-tooltip
  306. />
  307. <el-table-column
  308. align="left"
  309. label="是否销价"
  310. prop="isPromote"
  311. min-width="160"
  312. show-overflow-tooltip
  313. >
  314. <template slot-scope="scope">
  315. <el-tag size="mini" v-if="scope.row.isPromote" type="success">是</el-tag>
  316. <el-tag size="mini" v-else type="danger">否</el-tag>
  317. </template>
  318. </el-table-column>
  319. <el-table-column
  320. align="left"
  321. label="是否作废"
  322. prop="isRevoke"
  323. min-width="160"
  324. show-overflow-tooltip
  325. >
  326. <template slot-scope="scope">
  327. <el-tag size="mini" v-if="scope.row.isRevoke" type="success">是</el-tag>
  328. <el-tag size="mini" v-else type="danger">否</el-tag>
  329. </template>
  330. </el-table-column>
  331. <el-table-column
  332. align="right"
  333. label="批发价1"
  334. prop="batchPrice"
  335. min-width="160"
  336. show-overflow-tooltip
  337. />
  338. <el-table-column
  339. align="right"
  340. label="格力折扣"
  341. prop="discAmount"
  342. min-width="160"
  343. show-overflow-tooltip
  344. />
  345. <el-table-column
  346. align="left"
  347. label="备注"
  348. prop="remark"
  349. min-width="160"
  350. show-overflow-tooltip
  351. />
  352. <el-table-column
  353. fixed="left"
  354. width="150"
  355. label="操作"
  356. align="center"
  357. >
  358. <template slot-scope="scope">
  359. <el-popconfirm
  360. v-if="!scope.row.isRevoke"
  361. style="margin-right: 10px"
  362. title="作废吗?"
  363. @onConfirm="handleRevoke(scope.row.id)"
  364. >
  365. <el-button
  366. slot="reference"
  367. type="text"
  368. size="mini"
  369. >作废</el-button>
  370. </el-popconfirm>
  371. <el-button
  372. v-if="$checkBtnRole('del', $route.meta.roles)"
  373. type="text"
  374. size="mini"
  375. @click="handleDelete(scope.row.id)"
  376. >删除</el-button>
  377. </template>
  378. </el-table-column>
  379. </el-table>
  380. </div>
  381. <!-- 分页 -->
  382. <div class="fr">
  383. <el-pagination
  384. :current-page="currentPage"
  385. :page-sizes="[10, 20, 30, 50]"
  386. :page-size="10"
  387. layout="total, sizes, prev, pager, next, jumper"
  388. :total="listTotal"
  389. @size-change="handleSizeChange"
  390. @current-change="handleCurrentChange"
  391. />
  392. </div>
  393. </div>
  394. </div>
  395. </template>
  396. <script>
  397. import Mixin from '@/mixin/index'
  398. import { getProductDelete, getProductPriceList, getTypeList, handlePriceRevoke } from '@/api/basic_data/material'
  399. import { getCategoryList } from '@/api/common'
  400. export default {
  401. mixins: [Mixin],
  402. data() {
  403. return {
  404. currentPage: 1, // 当前页码
  405. pageSize: 10, // 每页数量
  406. listTotal: 0, // 列表总数
  407. dataList: [],
  408. screenForm: {
  409. k3CategoryNumber: '',
  410. endDate: '',
  411. materialName: '',
  412. materialNumber: '',
  413. materialOldNumber: '',
  414. saleTypeId: '',
  415. specification: '',
  416. startDate: '',
  417. remark:''
  418. },
  419. ztypeList: [],
  420. dictList: {}
  421. }
  422. },
  423. mounted() {
  424. getCategoryList({ pageNum:1,pageSize:-1}).then((res) => {
  425. this.dictList = res.data.records
  426. console.log(this.dictList,777777)
  427. })
  428. },
  429. methods: {
  430. addFn() {
  431. this.showDialogForm = true
  432. },
  433. handleDelete(id) {
  434. this.hanleDeleteAllPromise(id).then((ids) => {
  435. getProductDelete(ids).then((res) => {
  436. this.$successMsg('删除成功')
  437. this.getList()
  438. })
  439. })
  440. },
  441. getList() {
  442. this.listLoading = true
  443. const params = {
  444. pageNum: this.currentPage,
  445. pageSize: this.pageSize,
  446. k3CategoryNumber: this.screenForm.k3CategoryNumber,
  447. endDate: this.screenForm.endDate,
  448. materialName: this.screenForm.materialName,
  449. materialNumber: this.screenForm.materialNumber,
  450. materialOldNumber: this.screenForm.materialOldNumber,
  451. saleTypeId: this.screenForm.saleTypeId,
  452. specification: this.screenForm.specification,
  453. startDate: this.screenForm.startDate,
  454. remark: this.screenForm.remark
  455. }
  456. getProductPriceList(params).then((res) => {
  457. this.dataList = res.data.records
  458. console.log(res.data.records)
  459. this.listTotal = res.data.total
  460. this.listLoading = false
  461. })
  462. getTypeList({...params,pageNum:1,pageSize:-1}).then((res) => {
  463. this.ztypeList = res.data.records
  464. // console.log(this.ztypeList, "type1111");
  465. })
  466. },
  467. handleRevoke(id) {
  468. handlePriceRevoke({ ids:id }).then((res) => {
  469. this.$successMsg('操作成功')
  470. this.getList()
  471. })
  472. },
  473. handleRevokeAll() {
  474. if (this.ids.length) {
  475. handlePriceRevoke({ ids:this.ids.join('') }).then((res) => {
  476. this.$successMsg('操作成功')
  477. this.getList()
  478. })
  479. }else{
  480. this.$errorMsg('请选择')
  481. }
  482. },
  483. tableRowClassName({row, rowIndex}) {
  484. // || row.examineStatus=='FAIL'
  485. if (this.ids.includes(row.id)) {
  486. return 'warning-row';
  487. }
  488. return '';
  489. },
  490. }
  491. }
  492. </script>
  493. <style lang="scss" scoped>
  494. ::v-deep .el-table .warning-row {
  495. background: oldlace;
  496. }
  497. ::v-deep .el-select--small {
  498. width: 100%;
  499. }
  500. ::v-deep .el-date-editor {
  501. width: 100%;
  502. }
  503. </style>