deposit_list.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. <template>
  2. <div class="app-container">
  3. <div v-if="showPage == 1">
  4. <el-radio-group v-model="deduction" size="mini" @change="handleRadio">
  5. <el-radio-button label="全部" />
  6. <el-radio-button label="已退押" />
  7. </el-radio-group>
  8. <br /><br />
  9. <!-- 筛选条件 -->
  10. <div>
  11. <el-form ref="screenForm" :model="screenForm" label-width="120px" 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="refEnginRecordNo">
  15. <el-input v-model="screenForm.refEnginRecordNo" placeholder="请输入" />
  16. </el-form-item>
  17. </el-col>
  18. <el-col :xs="24" :sm="12" :lg="6">
  19. <el-form-item label="经销商编码/名称" prop="customerKeyword">
  20. <el-input v-model="screenForm.customerKeyword" placeholder="请输入" />
  21. </el-form-item>
  22. </el-col>
  23. <!-- <el-col :xs="24" :sm="12" :lg="6">
  24. <el-form-item label="经销商名称" prop="customerKeyword">
  25. <el-input
  26. v-model="screenForm.customerKeyword"
  27. placeholder="请输入"
  28. ></el-input>
  29. </el-form-item>
  30. </el-col> -->
  31. <el-col :xs="24" :sm="12" :lg="6">
  32. <el-form-item label="工程名称" prop="refProjectName">
  33. <el-input v-model="screenForm.refProjectName" placeholder="请输入" />
  34. </el-form-item>
  35. </el-col>
  36. <el-col :xs="24" :sm="12" :lg="6">
  37. <el-form-item label="发货申请日期" prop="startDeliverTime">
  38. <el-date-picker
  39. v-model="screenForm.startDeliverTime"
  40. class="dateStyle"
  41. type="datetime"
  42. placeholder="选择日期"
  43. />
  44. </el-form-item>
  45. </el-col>
  46. <!-- <el-col :xs="24" :sm="12" :lg="6">
  47. <el-form-item label="产品名称" prop="">
  48. <el-input placeholder="请输入"></el-input>
  49. </el-form-item>
  50. </el-col>
  51. <el-col :xs="24" :sm="12" :lg="6">
  52. <el-form-item label="规格型号" prop="">
  53. <el-input placeholder="请输入"></el-input>
  54. </el-form-item>
  55. </el-col> -->
  56. <el-col :xs="24" :sm="24" :lg="24">
  57. <el-form-item label="" class="fr">
  58. <el-button size="mini" @click="resetScreenForm">清空</el-button>
  59. <el-button size="mini" type="primary" @click="submitScreenForm">搜索</el-button>
  60. </el-form-item>
  61. </el-col>
  62. </el-row>
  63. </el-form>
  64. </div>
  65. <!-- 按钮 -->
  66. <div class="btn-group clearfix" style="display: flex">
  67. <el-button type="primary" size="mini" @click="hanleDownloadFiles">导出</el-button>
  68. <el-upload
  69. v-if="$checkBtnRole('import', $route.meta.roles)"
  70. class="import-btn"
  71. :action="baseURL + 'student/import'"
  72. :http-request="handleImport"
  73. :file-list="importFileList"
  74. :show-file-list="false"
  75. >
  76. <el-button size="mini">导入</el-button>
  77. </el-upload>
  78. </div>
  79. <!-- 列表 -->
  80. <div class="mymain-container">
  81. <div class="table">
  82. <el-table
  83. v-loading="listLoading"
  84. :data="dataList"
  85. element-loading-text="Loading"
  86. border
  87. fit
  88. highlight-current-row
  89. stripe
  90. show-summary
  91. :summary-method="$getSummaries"
  92. @select-all="handleSelectionAllChange"
  93. @selection-change="handleSelectionAllChange"
  94. >
  95. <el-table-column align="left" type="selection" width="55" />
  96. <el-table-column
  97. align="left"
  98. label="工程登录编号"
  99. prop="refEnginRecordNo"
  100. min-width="160"
  101. show-overflow-tooltip
  102. />
  103. <el-table-column align="left" label="使用单位" prop="refUseUnit" min-width="160" show-overflow-tooltip />
  104. <el-table-column
  105. align="left"
  106. label="经销商编码"
  107. prop="customerNumber"
  108. min-width="160"
  109. show-overflow-tooltip
  110. >
  111. <template slot-scope="scope">
  112. <CopyButton :copy-text="scope.row.customerNumber" />
  113. <span>{{ scope.row.customerNumber }}</span>
  114. </template>
  115. </el-table-column>
  116. <el-table-column align="left" label="经销商名称" prop="customerName" min-width="160" show-overflow-tooltip>
  117. <template slot-scope="scope">
  118. <CopyButton :copy-text="scope.row.customerName" />
  119. <span>{{ scope.row.customerName }}</span>
  120. </template>
  121. </el-table-column>
  122. <!-- <el-table-column
  123. align="left"
  124. label="是否免扣"
  125. prop=""
  126. min-width="160"
  127. show-overflow-tooltip
  128. ></el-table-column> -->
  129. <el-table-column align="left" label="是否退押" prop="isRefundDeposit" min-width="160" show-overflow-tooltip>
  130. <template slot-scope="scope">
  131. <el-tag v-if="scope.row.isRefundDeposit" type="success" size="small">是</el-tag>
  132. <el-tag v-else type="warning" size="small">否</el-tag>
  133. </template>
  134. </el-table-column>
  135. <!-- <el-table-column
  136. align="left"
  137. label="押金比例"
  138. prop=""
  139. min-width="160"
  140. show-overflow-tooltip
  141. ></el-table-column> -->
  142. <el-table-column align="right" label="押金金额" prop="depositAmount" min-width="160" show-overflow-tooltip>
  143. <template slot-scope="scope">
  144. {{ scope.row.depositAmount | numToFixed }}
  145. </template>
  146. </el-table-column>
  147. <el-table-column align="left" label="状态" prop="examineStatus" min-width="160" show-overflow-tooltip>
  148. <template slot-scope="scope">
  149. <el-tag v-if="scope.row.examineStatus == 'SAVE'" type="success" size="small">保存 </el-tag>
  150. <el-tag v-if="scope.row.examineStatus == 'WAIT'" type="warning" size="small">待审核 </el-tag>
  151. <el-tag v-if="scope.row.examineStatus == 'OK'" type="warning" size="mini">通过</el-tag>
  152. <el-tag v-if="scope.row.examineStatus == 'FAIL'" type="warning" size="small">不通过</el-tag>
  153. <el-tag v-if="scope.row.examineStatus == 'CLOSE'" type="warning" size="small">关闭</el-tag>
  154. </template>
  155. </el-table-column>
  156. <el-table-column align="right" label="订单数量" prop="qty" min-width="160" show-overflow-tooltip />
  157. <!-- <el-table-column
  158. align="left"
  159. label="是否已发货"
  160. prop=""
  161. min-width="160"
  162. show-overflow-tooltip
  163. ></el-table-column> -->
  164. <el-table-column align="center" label="操作" min-width="160" fixed="right" show-overflow-tooltip>
  165. <template slot-scope="scope">
  166. <el-button type="text" class="textColor" size="mini" @click="detailFn(scope.row)">详情</el-button>
  167. <el-button
  168. v-if="scope.row.examineStatus == 'SAVE' && $checkBtnRole('apply', $route.meta.roles)"
  169. type="text"
  170. class="textColor"
  171. @click="surrenderFn(scope.row)"
  172. >申请退押</el-button
  173. >
  174. <!-- <el-button type="text" class="textColor" slot="reference"
  175. >免扣退押</el-button
  176. > -->
  177. </template>
  178. </el-table-column>
  179. </el-table>
  180. </div>
  181. <!-- 分页 -->
  182. <div class="fr">
  183. <el-pagination
  184. :current-page="currentPage"
  185. :page-sizes="[10, 20, 30, 50]"
  186. :page-size="10"
  187. layout="total, sizes, prev, pager, next, jumper"
  188. :total="listTotal"
  189. @size-change="handleSizeChange"
  190. @current-change="handleCurrentChange"
  191. />
  192. </div>
  193. </div>
  194. </div>
  195. <DepositListDetail v-else-if="showPage == 2" />
  196. <DepositApplyDeduction v-else-if="showPage == 3" />
  197. <DepositApplySurrender v-else-if="showPage == 4" />
  198. </div>
  199. </template>
  200. <script>
  201. import DepositListDetail from './components/deposit_list-detail'
  202. import DepositApplyDeduction from './components/deposit-apply-deduction.vue'
  203. import DepositApplySurrender from './components/deposit-apply-surrender.vue'
  204. import { downloadFiles, handleImport } from '@/utils/util'
  205. import { getList } from '@/api/engin_deposit.js'
  206. import Mixin from '@/mixin'
  207. export default {
  208. components: {
  209. DepositListDetail,
  210. DepositApplyDeduction,
  211. DepositApplySurrender
  212. },
  213. mixins: [Mixin],
  214. data() {
  215. return {
  216. currentPage: 1, // 当前页码
  217. pageSize: 10, // 每页数量
  218. listTotal: 0, // 列表总数
  219. dataList: [], // 列表数据
  220. screenForm: {
  221. confirmName: '', // 审核人
  222. createName: '', // 创建人
  223. customerKeyword: '', // 客户编码/客户名称
  224. endDeliverTime: '', // 发货申请日期-结束
  225. enginOrderNo: '', // 工程订单编号
  226. enginOrderType: '', // 工程订单类型
  227. examineStatus: '', // 状态
  228. refEnginRecordNo: '', // 登录单号
  229. refProjectName: '', // 项目名称
  230. refUseUnit: '', // 使用单位
  231. startDeliverTime: '' // 发货申请日期-开始
  232. }, // 搜索表单
  233. listLoading: false, // 列表加载loading
  234. deduction: '全部',
  235. showPage: 1,
  236. importFileList: [],
  237. selectData: [],
  238. baseURL: ''
  239. }
  240. },
  241. methods: {
  242. // 免扣申请
  243. deductionFn() {
  244. this.showPage = 3
  245. },
  246. // 申请退押
  247. surrenderFn(row) {
  248. this.depositManageId = row.depositManageId
  249. this.showPage = 4
  250. },
  251. detailFn(row) {
  252. this.depositManageId = row.depositManageId
  253. this.refEnginRecordNo = row.refEnginRecordNo
  254. this.showPage = 2
  255. },
  256. getList() {
  257. this.listLoading = true
  258. const params = {
  259. pageSize: this.pageSize,
  260. pageNum: this.currentPage,
  261. isRefundDeposit: this.deduction === '已退押' ? true : null,
  262. ...this.screenForm
  263. }
  264. getList(params).then(res => {
  265. this.dataList = res.data.records
  266. res.data.records.forEach(item => {
  267. // item.number = (item.qty*100 - item.directTransferQty*100 - item.retiredQty*100) / 100;
  268. item.sums1 = ['qty']
  269. item.sums2 = ['depositAmount', 'diffAmount', 'price']
  270. })
  271. this.listLoading = false
  272. this.listTotal = res.data.total
  273. })
  274. },
  275. handleRadio() {
  276. this.getList()
  277. },
  278. hanleDownloadFiles() {
  279. if (this.selectData.length) {
  280. const arr = []
  281. for (let i = 0; i < this.selectData.length; i++) {
  282. arr.push(this.selectData[i].depositManageId)
  283. }
  284. downloadFiles('deposit-manage/export', { id: arr })
  285. } else {
  286. this.$errorMsg('请选择押金项')
  287. }
  288. },
  289. // 导入
  290. async handleImport(param) {
  291. this.importLoading = true
  292. const file = param.file
  293. console.log(file, 123)
  294. const formData = new FormData()
  295. formData.append('file', file)
  296. // formData.append("policyId", this.screenForm.code);
  297. const result = await handleImport('deposit-manage/import', formData)
  298. this.importLoading = false
  299. this.importFileList = []
  300. if (result.code == 200) {
  301. this.$alert(result.message, '导入成功', {
  302. confirmButtonText: '确定'
  303. })
  304. this.handletwoList()
  305. } else {
  306. this.$alert(result.message, '导入失败', {
  307. confirmButtonText: '确定'
  308. })
  309. }
  310. },
  311. handleSelectionAllChange(e) {
  312. this.selectData = e
  313. }
  314. }
  315. }
  316. </script>
  317. <style lang="scss" scoped>
  318. .dateStyle {
  319. width: 100%;
  320. }
  321. .import-btn {
  322. margin-left: 10px;
  323. }
  324. </style>