price_list.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484
  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="categoryId">
  79. <el-select
  80. v-model="screenForm.mainId"
  81. placeholder="请选择产品品类"
  82. >
  83. <el-option label="全部" value="" />
  84. <el-option
  85. v-for="item in dictList"
  86. :label="item.dictValue"
  87. :value="item.dictCode"
  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 type="primary" size="mini">导出</el-button>-->
  143. <!-- <el-button type="primary" size="mini">打印</el-button> -->
  144. </div>
  145. </div>
  146. <div class="mymain-container">
  147. <!-- 列表 -->
  148. <div class="table">
  149. <el-table
  150. v-loading="listLoading"
  151. :data="dataList"
  152. element-loading-text="Loading"
  153. border
  154. fit
  155. stripe
  156. @select-all="hanleSelectAll"
  157. @select="hanleSelectAll"
  158. >
  159. <el-table-column
  160. type="selection"
  161. align="left"
  162. width="50"
  163. ></el-table-column>
  164. <!-- <el-table-column type="selection" align="left" />-->
  165. <!-- <el-table-column
  166. align="left"
  167. label="产品品类"
  168. prop="mainName"
  169. min-width="160"
  170. show-overflow-tooltip
  171. ></el-table-column> -->
  172. <el-table-column
  173. align="left"
  174. label="物料编码"
  175. prop="materialNumber"
  176. min-width="200"
  177. show-overflow-tooltip
  178. >
  179. <template slot-scope="scope">
  180. <CopyButton :copyText="scope.row.materialNumber" />
  181. <span>{{scope.row.materialNumber}}</span>
  182. </template>
  183. </el-table-column>
  184. <el-table-column
  185. align="left"
  186. label="产品编码"
  187. prop="materialOldNumber"
  188. min-width="200"
  189. show-overflow-tooltip
  190. >
  191. <template slot-scope="scope">
  192. <CopyButton :copyText="scope.row.materialOldNumber" />
  193. <span>{{scope.row.materialOldNumber}}</span>
  194. </template>
  195. </el-table-column>
  196. <el-table-column
  197. align="left"
  198. label="产品名称"
  199. prop="materialName"
  200. min-width="200"
  201. show-overflow-tooltip
  202. >
  203. <template slot-scope="scope">
  204. <CopyButton :copyText="scope.row.materialName" />
  205. <span>{{scope.row.materialName}}</span>
  206. </template>
  207. </el-table-column>
  208. <el-table-column
  209. align="left"
  210. label="规格型号"
  211. prop="specification"
  212. min-width="200"
  213. show-overflow-tooltip
  214. >
  215. <template slot-scope="scope">
  216. <CopyButton :copyText="scope.row.specification" />
  217. <span>{{scope.row.specification}}</span>
  218. </template>
  219. </el-table-column>
  220. <el-table-column
  221. align="left"
  222. label="销售类型"
  223. prop="saleTypeName"
  224. min-width="160"
  225. show-overflow-tooltip
  226. />
  227. <el-table-column
  228. align="left"
  229. label="单位"
  230. prop="unit"
  231. min-width="160"
  232. show-overflow-tooltip
  233. />
  234. <el-table-column
  235. align="left"
  236. label="数量下限"
  237. prop="qty"
  238. min-width="160"
  239. show-overflow-tooltip
  240. />
  241. <el-table-column
  242. align="left"
  243. label="返利类型(钱包)"
  244. prop="wallets"
  245. min-width="200"
  246. show-overflow-tooltip
  247. >
  248. <template slot-scope="scope">
  249. <template v-for="(item, index) in scope.row.wallets">
  250. <template v-if="item.type === 'REBATE'">
  251. <el-tag
  252. :key="index"
  253. type="success"
  254. style="margin: 0 10px"
  255. size="mini"
  256. >
  257. {{ item.walletName }}
  258. </el-tag>
  259. </template>
  260. </template>
  261. </template>
  262. </el-table-column>
  263. <el-table-column
  264. align="left"
  265. label="现金钱包"
  266. prop="modifyPriceDepartment"
  267. min-width="200"
  268. show-overflow-tooltip
  269. >
  270. <template slot-scope="scope">
  271. <template v-for="(item, index) in scope.row.wallets">
  272. <template v-if="item.type === 'COMMONLY'">
  273. <el-tag
  274. :key="index"
  275. type="success"
  276. style="margin: 0 10px"
  277. size="mini"
  278. >
  279. {{ item.walletName }}
  280. </el-tag>
  281. </template>
  282. </template>
  283. </template>
  284. </el-table-column>
  285. <el-table-column
  286. align="left"
  287. label="生效日期"
  288. prop="startDate"
  289. min-width="160"
  290. show-overflow-tooltip
  291. />
  292. <el-table-column
  293. align="left"
  294. label="失效日期"
  295. prop="endDate"
  296. min-width="160"
  297. show-overflow-tooltip
  298. />
  299. <el-table-column
  300. align="left"
  301. label="是否促销价"
  302. prop="isPromote"
  303. min-width="160"
  304. show-overflow-tooltip
  305. >
  306. <template slot-scope="scope">
  307. <el-tag size="mini" v-if="scope.row.isPromote" type="success">是</el-tag>
  308. <el-tag size="mini" v-else type="danger">否</el-tag>
  309. </template>
  310. </el-table-column>
  311. <el-table-column
  312. align="left"
  313. label="是否促作废"
  314. prop="isRevoke"
  315. min-width="160"
  316. show-overflow-tooltip
  317. >
  318. <template slot-scope="scope">
  319. <el-tag size="mini" v-if="scope.row.isRevoke" type="success">是</el-tag>
  320. <el-tag size="mini" v-else type="danger">否</el-tag>
  321. </template>
  322. </el-table-column>
  323. <el-table-column
  324. align="right"
  325. label="批发价1"
  326. prop="batchPrice"
  327. min-width="160"
  328. show-overflow-tooltip
  329. />
  330. <el-table-column
  331. align="right"
  332. label="格力折扣"
  333. prop="discAmount"
  334. min-width="160"
  335. show-overflow-tooltip
  336. />
  337. <el-table-column
  338. align="left"
  339. label="备注"
  340. prop="remark"
  341. min-width="160"
  342. show-overflow-tooltip
  343. />
  344. <el-table-column
  345. fixed="left"
  346. width="150"
  347. label="操作"
  348. align="center"
  349. >
  350. <template slot-scope="scope">
  351. <el-popconfirm
  352. v-if="!scope.row.isRevoke"
  353. style="margin-right: 10px"
  354. title="作废吗?"
  355. @click="handleRevoke(scope.row.id)"
  356. >
  357. <el-button
  358. slot="reference"
  359. type="text"
  360. size="mini"
  361. >作废</el-button>
  362. </el-popconfirm>
  363. <el-button
  364. v-if="$checkBtnRole('del', $route.meta.roles)"
  365. type="text"
  366. size="mini"
  367. @click="handleDelete(scope.row.id)"
  368. >删除</el-button>
  369. </template>
  370. </el-table-column>
  371. </el-table>
  372. </div>
  373. <!-- 分页 -->
  374. <div class="fr">
  375. <el-pagination
  376. :current-page="currentPage"
  377. :page-sizes="[10, 20, 30, 50]"
  378. :page-size="10"
  379. layout="total, sizes, prev, pager, next, jumper"
  380. :total="listTotal"
  381. @size-change="handleSizeChange"
  382. @current-change="handleCurrentChange"
  383. />
  384. </div>
  385. </div>
  386. </div>
  387. </template>
  388. <script>
  389. import Mixin from '@/mixin/index'
  390. import { getProductDelete, getProductPriceList, getTypeList, handlePriceRevoke } from '@/api/basic_data/material'
  391. import { getDictList } from '@/api/common'
  392. export default {
  393. mixins: [Mixin],
  394. data() {
  395. return {
  396. currentPage: 1, // 当前页码
  397. pageSize: 10, // 每页数量
  398. listTotal: 0, // 列表总数
  399. dataList: [],
  400. screenForm: {
  401. mainId: '',
  402. endDate: '',
  403. materialName: '',
  404. materialNumber: '',
  405. materialOldNumber: '',
  406. saleTypeId: '',
  407. specification: '',
  408. startDate: '',
  409. remark:''
  410. },
  411. ztypeList: [],
  412. dictList: {}
  413. }
  414. },
  415. mounted() {
  416. getDictList({ sysDictEnum: 'PRODUCT_TYPE' }).then((res) => {
  417. this.dictList = res.data
  418. console.log(this.dictList)
  419. })
  420. },
  421. methods: {
  422. addFn() {
  423. this.showDialogForm = true
  424. },
  425. handleDelete(id) {
  426. this.hanleDeleteAllPromise(id).then((ids) => {
  427. getProductDelete(ids).then((res) => {
  428. this.$successMsg('删除成功')
  429. this.getList()
  430. })
  431. })
  432. },
  433. getList() {
  434. this.listLoading = true
  435. const params = {
  436. pageNum: this.currentPage,
  437. pageSize: this.pageSize,
  438. mainId: this.screenForm.mainId,
  439. endDate: this.screenForm.endDate,
  440. materialName: this.screenForm.materialName,
  441. materialNumber: this.screenForm.materialNumber,
  442. materialOldNumber: this.screenForm.materialOldNumber,
  443. saleTypeId: this.screenForm.saleTypeId,
  444. specification: this.screenForm.specification,
  445. startDate: this.screenForm.startDate,
  446. remark: this.screenForm.remark
  447. }
  448. getProductPriceList(params).then((res) => {
  449. this.dataList = res.data.records
  450. console.log(res.data.records)
  451. this.listTotal = res.data.total
  452. this.listLoading = false
  453. })
  454. getTypeList(params).then((res) => {
  455. this.ztypeList = res.data.records
  456. // console.log(this.ztypeList, "type1111");
  457. })
  458. },
  459. handleRevoke(id) {
  460. handlePriceRevoke({ id }).then((res) => {
  461. this.$successMsg('操作成功')
  462. this.getList()
  463. })
  464. }
  465. }
  466. }
  467. </script>
  468. <style lang="scss" scoped>
  469. ::v-deep .el-select--small {
  470. width: 100%;
  471. }
  472. ::v-deep .el-date-editor {
  473. width: 100%;
  474. }
  475. </style>