difference_price_list.vue 16 KB

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