refund_list.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438
  1. <template>
  2. <div class="app-container">
  3. <div v-if="showSurrender">
  4. <el-radio-group @change="changeRadioFn" v-model="examine" size="">
  5. <el-radio-button label="">全部</el-radio-button>
  6. <el-radio-button label="SAVE">保存</el-radio-button>
  7. <el-radio-button label="WAIT">待审核</el-radio-button>
  8. <el-radio-button label="FAIL">审核驳回</el-radio-button>
  9. <el-radio-button label="OK">审核通过</el-radio-button>
  10. </el-radio-group>
  11. <br /><br />
  12. <!-- 筛选条件 -->
  13. <div>
  14. <el-form
  15. ref="searchForm"
  16. :model="searchForm"
  17. label-width="160px"
  18. size="small"
  19. label-position="left"
  20. >
  21. <el-row :gutter="20">
  22. <el-col :xs="24" :sm="12" :lg="6">
  23. <el-form-item label="工程登录(信息)编号" prop="refEnginRecordNo">
  24. <el-input
  25. v-model="searchForm.refEnginRecordNo"
  26. placeholder="请输入"
  27. ></el-input>
  28. </el-form-item>
  29. </el-col>
  30. <el-col :xs="24" :sm="12" :lg="6">
  31. <el-form-item label="经销商编码" prop="customerKeyword">
  32. <el-input
  33. v-model="searchForm.customerKeyword"
  34. placeholder="请输入"
  35. ></el-input>
  36. </el-form-item>
  37. </el-col>
  38. <!-- <el-col :xs="24" :sm="12" :lg="6">
  39. <el-form-item label="经销商名称" prop="customerKeyword">
  40. <el-input
  41. v-model="searchForm.customerKeyword"
  42. placeholder="请输入"
  43. ></el-input>
  44. </el-form-item>
  45. </el-col> -->
  46. <el-col :xs="24" :sm="12" :lg="6">
  47. <el-form-item label="工程名称" prop="refProjectName">
  48. <el-input
  49. v-model="searchForm.refProjectName"
  50. placeholder="请输入"
  51. ></el-input>
  52. </el-form-item>
  53. </el-col>
  54. <!-- <el-col :xs="24" :sm="12" :lg="6">
  55. <el-form-item label="发货申请开始日期" prop="startDeliverTime">
  56. <el-date-picker
  57. class="dateStyle"
  58. v-model="searchForm.startDeliverTime"
  59. type="datetime"
  60. placeholder=""
  61. default-time="00:00:00"
  62. value-format="yyyy-MM-dd HH:mm:ss"
  63. >
  64. </el-date-picker>
  65. </el-form-item>
  66. </el-col>
  67. <el-col :xs="24" :sm="12" :lg="6">
  68. <el-form-item label="发货申请结束日期" prop="endDeliverTime">
  69. <el-date-picker
  70. v-model="searchForm.endDeliverTime"
  71. class="dateStyle"
  72. type="datetime"
  73. placeholder=""
  74. default-time="23:59:59"
  75. value-format="yyyy-MM-dd HH:mm:ss"
  76. >
  77. </el-date-picker>
  78. </el-form-item>
  79. </el-col> -->
  80. <!-- <el-col :xs="24" :sm="12" :lg="6">
  81. <el-form-item label="产品名称" prop="">
  82. <el-input placeholder="请输入"></el-input>
  83. </el-form-item>
  84. </el-col>
  85. <el-col :xs="24" :sm="12" :lg="6">
  86. <el-form-item label="规格型号" prop="">
  87. <el-input placeholder="请输入"></el-input>
  88. </el-form-item>
  89. </el-col> -->
  90. <el-col :xs="24" :sm="12" :lg="6">
  91. <el-form-item label="" class="fr">
  92. <el-button size="small" @click="resetFn">清空</el-button>
  93. <el-button size="small" type="primary" @click="searchFn"
  94. >搜索</el-button
  95. >
  96. </el-form-item>
  97. </el-col>
  98. </el-row>
  99. </el-form>
  100. </div>
  101. <!-- 按钮 -->
  102. <div class="btn-group clearfix">
  103. <div class="fl">
  104. <el-radio-group
  105. @change="changeEnginOrderTypeFn"
  106. v-model="enginOrderType"
  107. size=""
  108. >
  109. <el-radio-button label="HOME">家用工程</el-radio-button>
  110. <el-radio-button label="TRADE">商用工程</el-radio-button>
  111. </el-radio-group>
  112. </div>
  113. <div class="fr">
  114. <el-button type="primary" size="small" @click="exportFn"
  115. >导出</el-button
  116. >
  117. </div>
  118. </div>
  119. <!-- 列表 -->
  120. <div class="mymain-container">
  121. <div class="table">
  122. <el-table
  123. v-loading="listLoading"
  124. :data="dataList"
  125. element-loading-text="Loading"
  126. border
  127. fit
  128. highlight-current-row
  129. stripe
  130. @selection-change="handleSelectionChange"
  131. >
  132. >
  133. <el-table-column type="selection" align="center" width="55">
  134. </el-table-column>
  135. <el-table-column
  136. align="center"
  137. label="工程登录编码"
  138. prop="refEnginRecordNo"
  139. min-width="160"
  140. show-overflow-tooltip
  141. ></el-table-column>
  142. <el-table-column
  143. align="center"
  144. label="工程名称"
  145. prop="refProjectName"
  146. min-width="160"
  147. show-overflow-tooltip
  148. ></el-table-column>
  149. <el-table-column
  150. align="center"
  151. label="经销商编码"
  152. prop="customerId"
  153. min-width="160"
  154. show-overflow-tooltip
  155. ></el-table-column>
  156. <el-table-column
  157. align="center"
  158. label="经销商名称"
  159. prop="customerName"
  160. min-width="160"
  161. show-overflow-tooltip
  162. ></el-table-column>
  163. <el-table-column
  164. align="center"
  165. label="押金金额"
  166. prop="depositAmount"
  167. min-width="160"
  168. show-overflow-tooltip
  169. ></el-table-column>
  170. <el-table-column
  171. align="center"
  172. label="状态"
  173. prop=""
  174. min-width="160"
  175. show-overflow-tooltip
  176. >
  177. <template v-slot="{ row }">
  178. <el-tag v-show="row.examineStatus == 'SAVE'">保存</el-tag>
  179. <el-tag v-show="row.examineStatus == 'WAIT'">待审核</el-tag>
  180. <el-tag v-show="row.examineStatus == 'OK'">通过</el-tag>
  181. <el-tag v-show="row.examineStatus == 'FAIL'">不通过</el-tag>
  182. </template>
  183. </el-table-column>
  184. <el-table-column
  185. align="center"
  186. label="操作"
  187. min-width="160"
  188. show-overflow-tooltip
  189. >
  190. <template slot-scope="scope">
  191. <el-button
  192. type="text"
  193. class="textColor"
  194. v-if="
  195. scope.row.examineStatus == 'WAIT' &&
  196. $checkBtnRole('examine', $route.meta.roles)
  197. "
  198. @click="examineFn(scope.row.depositManageId)"
  199. >审批</el-button
  200. >
  201. <el-button
  202. type="text"
  203. class="textColor"
  204. v-if="
  205. scope.row.examineStatus == 'SAVE' ||
  206. scope.row.examineStatus == 'OK' ||
  207. scope.row.examineStatus == 'FAIL'
  208. "
  209. @click="infoFn(scope.row.depositManageId)"
  210. >详情</el-button
  211. >
  212. </template>
  213. </el-table-column>
  214. </el-table>
  215. </div>
  216. <!-- 分页 -->
  217. <div class="fr">
  218. <el-pagination
  219. @size-change="handleSizeChange"
  220. @current-change="handleCurrentChange"
  221. :current-page="currentPage"
  222. :page-sizes="[10, 20, 30, 50]"
  223. :page-size="10"
  224. layout="total, sizes, prev, pager, next, jumper"
  225. :total="listTotal"
  226. >
  227. </el-pagination>
  228. </div>
  229. </div>
  230. </div>
  231. <RefundListDetail @updateList="updateList" :detailId="detailId" v-else />
  232. </div>
  233. </template>
  234. <script>
  235. import {
  236. getDepositManageList,
  237. getDepositManagExport,
  238. } from "@/api/engin_deposit/refund_list";
  239. import { downloadFiles } from "@/utils/util";
  240. import RefundListDetail from "./components/refund_list-detail.vue";
  241. export default {
  242. components: {
  243. RefundListDetail,
  244. },
  245. data() {
  246. return {
  247. enginOrderType: "HOME", //列表类型
  248. currentPage: 1, // 当前页码
  249. pageSize: 10, // 每页数量
  250. listTotal: 0, // 列表总数
  251. dataList: [], // 列表数据
  252. searchForm: {
  253. refEnginRecordNo: "",
  254. customerKeyword: "",
  255. refProjectName: "",
  256. // startDeliverTime: "",
  257. // endDeliverTime: "",
  258. }, //搜索表单
  259. listLoading: false, // 列表加载loading
  260. examine: "",
  261. showSurrender: true,
  262. detailId: "",
  263. selectData: [],
  264. };
  265. },
  266. created() {
  267. this.getDataList({
  268. pageSize: this.pageSize,
  269. pageNum: this.currentPage,
  270. confirmName: "",
  271. createName: "",
  272. customerKeyword: "",
  273. // endDeliverTime: "",
  274. enginOrderNo: "",
  275. enginOrderType: this.enginOrderType,
  276. examineStatus: "",
  277. refEnginRecordNo: "",
  278. refProjectName: "",
  279. refUseUnit: "",
  280. // startDeliverTime: "",
  281. });
  282. },
  283. methods: {
  284. //审批后更新列表数据
  285. updateList() {
  286. this.getDataList({
  287. pageSize: this.pageSize,
  288. pageNum: this.currentPage,
  289. confirmName: "",
  290. createName: "",
  291. customerKeyword: "",
  292. // endDeliverTime: "",
  293. enginOrderNo: "",
  294. enginOrderType: this.enginOrderType,
  295. examineStatus: "",
  296. refEnginRecordNo: "",
  297. refProjectName: "",
  298. refUseUnit: "",
  299. // startDeliverTime: "",
  300. });
  301. },
  302. //切换列表
  303. changeEnginOrderTypeFn(v) {
  304. // console.log(v);
  305. this.getDataList({
  306. pageSize: this.pageSize,
  307. pageNum: this.currentPage,
  308. confirmName: "",
  309. createName: "",
  310. customerKeyword: "",
  311. // endDeliverTime: "",
  312. enginOrderNo: "",
  313. enginOrderType: v,
  314. examineStatus: this.examine,
  315. refEnginRecordNo: "",
  316. refProjectName: "",
  317. refUseUnit: "",
  318. // startDeliverTime: "",
  319. });
  320. },
  321. // 更改每页数量
  322. handleSizeChange(val) {
  323. this.pageSize = val;
  324. this.currentPage = 1;
  325. this.getDataList({
  326. pageSize: this.pageSize,
  327. pageNum: this.currentPage,
  328. confirmName: "",
  329. createName: "",
  330. customerKeyword: "",
  331. // endDeliverTime: "",
  332. enginOrderNo: "",
  333. enginOrderType: this.enginOrderType,
  334. examineStatus: this.examine,
  335. refEnginRecordNo: "",
  336. refProjectName: "",
  337. refUseUnit: "",
  338. // startDeliverTime: "",
  339. });
  340. },
  341. // 更改当前页
  342. handleCurrentChange(val) {
  343. this.currentPage = val;
  344. this.getDataList({
  345. pageSize: this.pageSize,
  346. pageNum: this.currentPage,
  347. confirmName: "",
  348. createName: "",
  349. customerKeyword: "",
  350. // endDeliverTime: "",
  351. enginOrderNo: "",
  352. enginOrderType: this.enginOrderType,
  353. examineStatus: this.examine,
  354. refEnginRecordNo: "",
  355. refProjectName: "",
  356. refUseUnit: "",
  357. // startDeliverTime: "",
  358. });
  359. },
  360. //切换radio
  361. changeRadioFn(v) {
  362. this.examine = v;
  363. this.getDataList({
  364. pageSize: this.pageSize,
  365. pageNum: this.currentPage,
  366. confirmName: "",
  367. createName: "",
  368. customerKeyword: "",
  369. // endDeliverTime: "",
  370. enginOrderNo: "",
  371. enginOrderType: this.enginOrderType,
  372. examineStatus: this.examine,
  373. refEnginRecordNo: "",
  374. refProjectName: "",
  375. refUseUnit: "",
  376. // startDeliverTime: "",
  377. });
  378. },
  379. //导出
  380. exportFn() {
  381. if (this.selectData.length) {
  382. const arr = [];
  383. for (let i = 0; i < this.selectData.length; i++) {
  384. arr.push(this.selectData[i].depositManageId);
  385. }
  386. downloadFiles("/deposit-manage/export", { id: arr });
  387. } else {
  388. this.$errorMsg("请选择押金项");
  389. }
  390. },
  391. //多选列表数据
  392. handleSelectionChange(selectData) {
  393. this.selectData = selectData;
  394. },
  395. //重置
  396. resetFn() {
  397. this.$refs.searchForm.resetFields();
  398. },
  399. //搜索
  400. searchFn() {
  401. this.getDataList({
  402. pageSize: this.pageSize,
  403. pageNum: this.currentPage,
  404. confirmName: "",
  405. createName: "",
  406. enginOrderNo: "",
  407. enginOrderType: this.enginOrderType,
  408. examineStatus: this.examine,
  409. refUseUnit: "",
  410. ...this.searchForm,
  411. });
  412. },
  413. //详情
  414. infoFn(id) {
  415. this.detailId = id;
  416. this.showSurrender = false;
  417. },
  418. async getDataList(data) {
  419. const res = await getDepositManageList(data);
  420. this.dataList = res.data.records;
  421. this.listTotal = res.data.total;
  422. },
  423. examineFn(id) {
  424. this.detailId = id;
  425. this.showSurrender = false;
  426. },
  427. },
  428. };
  429. </script>
  430. <style lang="scss" scoped>
  431. .dateStyle {
  432. width: 100%;
  433. }
  434. </style>