receipt_list.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370
  1. <template>
  2. <div class="app-container">
  3. <div v-if="showDetail == 1">
  4. <!-- 筛选条件 -->
  5. <div>
  6. <el-form ref="searchForm" :model="searchForm" label-width="100px" size="mini" label-position="left">
  7. <el-row :gutter="20">
  8. <el-col :xs="24" :sm="12" :lg="6">
  9. <el-form-item label="单据类型" prop="billType">
  10. <!-- <el-input v-model="searchForm.billType" placeholder="请输入"></el-input> -->
  11. <el-select v-model="searchForm.billType" class="selectStyle" placeholder="请选择" filterable>
  12. <el-option label="收款单" value="1"> </el-option>
  13. <el-option label="付款单" value="3"> </el-option>
  14. <el-option label="退款单" value="2"> </el-option>
  15. </el-select>
  16. </el-form-item>
  17. </el-col>
  18. <el-col :xs="24" :sm="12" :lg="6">
  19. <el-form-item label="单据编号" prop="billNo">
  20. <el-input v-model="searchForm.billNo" placeholder="请输入"></el-input>
  21. </el-form-item>
  22. </el-col>
  23. <el-col :xs="24" :sm="12" :lg="6">
  24. <el-form-item label="往来单位" prop="wlCompanyType">
  25. <!-- <el-input v-model="searchForm.wlCompanyType" placeholder="请输入"></el-input> -->
  26. <el-select class="selectStyle" v-model="searchForm.wlCompanyType" placeholder="请选择" filterable>
  27. <el-option v-for="(v, i) in customerList" :key="i" :label="v.name" :value="v.name">
  28. </el-option>
  29. </el-select>
  30. </el-form-item>
  31. </el-col>
  32. <el-col :xs="24" :sm="12" :lg="6">
  33. <el-form-item label="付款单位" prop="customerName">
  34. <!-- <el-input v-model="searchForm.customerName" placeholder="请输入"></el-input> -->
  35. <el-select class="selectStyle" v-model="searchForm.customerName" placeholder="请选择" filterable>
  36. <el-option v-for="(v, i) in customerList" :key="i" :label="v.name" :value="v.name">
  37. </el-option>
  38. </el-select>
  39. </el-form-item>
  40. </el-col>
  41. <el-col :xs="24" :sm="12" :lg="6">
  42. <el-form-item label="结算方式" prop="settleType">
  43. <el-input v-model="searchForm.settleType" placeholder="请输入"></el-input>
  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 v-model="searchForm." 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="startTime">
  53. <el-date-picker class="selectStyle" v-model="searchForm.startTime" type="datetime" placeholder="选择日期时间"
  54. default-time="00:00:00" value-format="yyyy-MM-dd HH:mm:ss">
  55. </el-date-picker>
  56. </el-form-item>
  57. </el-col>
  58. <el-col :xs="24" :sm="12" :lg="6">
  59. <el-form-item label="结束时间" prop="endTime">
  60. <el-date-picker class="selectStyle" v-model="searchForm.endTime" type="datetime" placeholder="选择日期时间"
  61. default-time="00:00:00" value-format="yyyy-MM-dd HH:mm:ss">
  62. </el-date-picker>
  63. </el-form-item>
  64. </el-col>
  65. <el-col :xs="24" :sm="12" :lg="6">
  66. <el-form-item label="" class="fr">
  67. <el-button size="mini" @click="cancelFn">清空</el-button>
  68. <el-button size="mini" type="primary" @click="searchFn">搜索</el-button>
  69. </el-form-item>
  70. </el-col>
  71. </el-row>
  72. </el-form>
  73. </div>
  74. <!-- 按钮 -->
  75. <div class="btn-group clearfix">
  76. <div class="fl">
  77. <el-button type="primary" size="mini" @click="toPrint" :disabled="tableSelection.length < 1">打印发货单
  78. </el-button>
  79. </div>
  80. <div class="fr">
  81. <ExportButton :exUrl="'/k3/receipt/export'" :exParams="exParams" class="exportClass" />
  82. </div>
  83. </div>
  84. <!-- 列表 -->
  85. <div class="mymain-container">
  86. <div class="table">
  87. <el-table ref="table" v-loading="listLoading" :data="dataList" element-loading-text="Loading" border fit
  88. highlight-current-row stripe show-summary :summary-method="getSummaries" @select="handleSelect" @select-all="handleSelectAll">
  89. <el-table-column align="center" type="selection" width="55"></el-table-column>
  90. <el-table-column align="left" label="单据类型" prop="billType" min-width="160" show-overflow-tooltip>
  91. <template slot-scope="scope">
  92. {{
  93. scope.row.billType == 1
  94. ? "收款单"
  95. : scope.row.billType == 2
  96. ? "退款单"
  97. : scope.row.billType == 3 ? '付款单' : ''
  98. }}
  99. </template>
  100. </el-table-column>
  101. <el-table-column align="left" label="单据编码" prop="billNo" min-width="160" show-overflow-tooltip>
  102. <template slot-scope="scope">
  103. <CopyButton :copyText="scope.row.billNo" />
  104. <span>{{ scope.row.billNo }}</span>
  105. </template>
  106. </el-table-column>
  107. <el-table-column align="left" label="业务日期" prop="theTime" min-width="160" show-overflow-tooltip>
  108. </el-table-column>
  109. <!-- <el-table-column
  110. align="left"
  111. label="币别"
  112. prop="bibie"
  113. min-width="160"
  114. show-overflow-tooltip
  115. ></el-table-column> -->
  116. <el-table-column align="left" label="单据状态" prop="status" min-width="160" show-overflow-tooltip>
  117. <template slot-scope="scope">
  118. <el-tag size="mini" v-show="scope.row.status == 'A'">保存</el-tag>
  119. <el-tag size="mini" v-show="scope.row.status == 'B'" type="info">审核中</el-tag>
  120. <el-tag size="mini" v-show="scope.row.status == 'C'" type="success">已审核</el-tag>
  121. <el-tag size="mini" v-show="scope.row.status == 'D'" type="warning">重新审核</el-tag>
  122. </template>
  123. </el-table-column>
  124. <el-table-column align="left" label="钱包" prop="walletName" min-width="160" show-overflow-tooltip>
  125. </el-table-column>
  126. <el-table-column align="right" label="表头·应收金额" prop="" min-width="160" show-overflow-tooltip>
  127. </el-table-column>
  128. <el-table-column align="left" label="往来单位" prop="wlCompanyName" min-width="260" show-overflow-tooltip>
  129. <template slot-scope="scope">
  130. <CopyButton :copyText="scope.row.wlCompanyName" />
  131. <span>{{ scope.row.wlCompanyName }}</span>
  132. </template>
  133. </el-table-column>
  134. <el-table-column align="right" label="表头·实收金额" prop="amount" min-width="160" show-overflow-tooltip>
  135. <template slot-scope="scope">
  136. {{ (scope.row.billType == 3 || scope.row.billType == 2) ? -scope.row.amount : scope.row.amount |
  137. numToFixed
  138. }}
  139. </template>
  140. </el-table-column>
  141. <el-table-column align="right" label="收款金额" prop="" min-width="160" show-overflow-tooltip></el-table-column>
  142. <!-- <el-table-column
  143. align="center"
  144. label="结算方式"
  145. prop="settleType"
  146. min-width="160"
  147. show-overflow-tooltip
  148. ></el-table-column> -->
  149. <!-- <el-table-column
  150. align="center"
  151. label="收款用途"
  152. prop=""
  153. min-width="160"
  154. show-overflow-tooltip
  155. ></el-table-column> -->
  156. <el-table-column align="left" label="付款单位" prop="customerName" min-width="260" show-overflow-tooltip>
  157. <template slot-scope="scope">
  158. <CopyButton :copyText="scope.row.customerName" />
  159. <span>{{ scope.row.customerName }}</span>
  160. </template>
  161. </el-table-column>
  162. <el-table-column align="right" label="表体·实收金额" prop="amount" min-width="160" show-overflow-tooltip>
  163. <template slot-scope="scope">
  164. {{ (scope.row.billType == 3 || scope.row.billType == 2) ? -scope.row.amount : scope.row.amount |
  165. numToFixed
  166. }}
  167. </template>
  168. </el-table-column>
  169. <el-table-column align="left" label="勾对" prop="" min-width="160" show-overflow-tooltip></el-table-column>
  170. <el-table-column align="left" label="备注" prop="remark" min-width="160" show-overflow-tooltip>
  171. </el-table-column>
  172. <el-table-column align="center" label="操作" min-width="160" show-overflow-tooltip fixed="right">
  173. <template slot-scope="scope">
  174. <el-button type="text" class="textColor" v-if="
  175. $checkBtnRole('examine', $route.meta.roles) &&
  176. scope.row.status == 'C'
  177. " @click="NoExamineFn(scope.row.id)">弃审</el-button>
  178. <el-button type="text" class="textColor" @click="seeFn(scope.row.id)">查看</el-button>
  179. <el-button type="text" class="textColor" @click="toPrint(scope.row)">打印</el-button>
  180. </template>
  181. </el-table-column>
  182. </el-table>
  183. </div>
  184. <!-- 分页 -->
  185. <div class="fr">
  186. <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
  187. :current-page="currentPage" :page-sizes="[10, 20, 30, 50]" :page-size="10"
  188. layout="total, sizes, prev, pager, next, jumper" :total="listTotal">
  189. </el-pagination>
  190. </div>
  191. </div>
  192. </div>
  193. <ReceiptPrint :listItem="queryItem" v-else-if="showDetail == 2" @backListFormDetail="backList" />
  194. <ReceiptListDetail :detailId="detailId" v-else />
  195. </div>
  196. </template>
  197. <script>
  198. import { getCustomerList } from "@/api/finance/wallet";
  199. import {
  200. getK3ReceiptList,
  201. getK3ReceiptAbandon,
  202. } from "@/api/finance/receipt_list";
  203. import ReceiptListDetail from "./components/receipt_list-detail";
  204. import ReceiptPrint from '@/views/finance/components/receipt_print.vue'
  205. import { numToFixed } from "@/filters";
  206. export default {
  207. components: {
  208. ReceiptPrint,
  209. ReceiptListDetail,
  210. },
  211. data() {
  212. return {
  213. customerList: [],
  214. currentPage: 1, // 当前页码
  215. pageSize: 10, // 每页数量
  216. listTotal: 0, // 列表总数
  217. dataList: [], // 列表数据
  218. searchForm: {
  219. billType: "",
  220. billNo: "",
  221. wlCompanyType: "",
  222. customerName: "",
  223. settleType: "",
  224. startTime: "",
  225. endTime: "",
  226. }, //搜索表单
  227. listLoading: false, // 列表加载loading
  228. showDetail: 1,
  229. detailId: null,
  230. queryItem:{},
  231. tableSelection:[]
  232. };
  233. },
  234. computed: {
  235. exParams() {
  236. return {
  237. ...this.searchForm,
  238. };
  239. },
  240. },
  241. created() {
  242. this.getDataList({ pageSize: this.pageSize, pageNum: this.currentPage });
  243. this.getCustomerDataList();
  244. },
  245. methods: {
  246. //获取经销商列表
  247. async getCustomerDataList() {
  248. let res = await getCustomerList({
  249. pageNum: 1,
  250. pageSize: -1,
  251. });
  252. this.customerList = res.data.records;
  253. },
  254. //合计
  255. getSummaries(param) {
  256. const { columns, data } = param;
  257. const sums = [];
  258. columns.forEach((column, index) => {
  259. if (index === 0) {
  260. sums[index] = "合计";
  261. }
  262. if (index === 7) {
  263. let arr = [];
  264. data.forEach((v) => {
  265. if (v.billType == 2 || v.billType == 3) {
  266. arr.push(-v.amount);
  267. } else {
  268. arr.push(v.amount);
  269. }
  270. });
  271. let a = arr.reduce((prev, curr) => {
  272. const value = Number(curr);
  273. if (!isNaN(value)) {
  274. return prev + curr;
  275. } else {
  276. return prev;
  277. }
  278. }, 0);
  279. sums[index] = numToFixed(a);
  280. sums[10] = numToFixed(a);
  281. }
  282. });
  283. return sums;
  284. },
  285. //弃审
  286. async NoExamineFn(id) {
  287. await getK3ReceiptAbandon({ id });
  288. this.$message.success("弃审成功");
  289. this.getDataList({ pageSize: this.pageSize, pageNum: this.currentPage });
  290. },
  291. // 更改每页数量
  292. handleSizeChange(val) {
  293. this.pageSize = val;
  294. this.currentPage = 1;
  295. this.getDataList({ pageNum: this.currentPage, pageSize: this.pageSize });
  296. },
  297. // 更改当前页
  298. handleCurrentChange(val) {
  299. this.currentPage = val;
  300. this.getDataList({ pageNum: this.currentPage, pageSize: this.pageSize });
  301. },
  302. //清空
  303. cancelFn() {
  304. this.$refs.searchForm.resetFields();
  305. },
  306. //搜索
  307. searchFn() {
  308. this.getDataList({
  309. ...this.searchForm,
  310. pageSize: this.pageSize,
  311. pageNum: this.currentPage,
  312. });
  313. },
  314. async getDataList(data) {
  315. const res = await getK3ReceiptList(data);
  316. // console.log(res);
  317. // res.data.records.forEach((item) => {
  318. // item.sums1 = [];
  319. // item.sums2 = ["amount"];
  320. // });
  321. this.dataList = res.data.records;
  322. this.listTotal = res.data.total;
  323. },
  324. seeFn(id) {
  325. this.detailId = id;
  326. this.showDetail = 3;
  327. },
  328. handleSelect(selection, row) {
  329. this.$refs.table.toggleRowSelection(row);
  330. this.dataList.forEach((item) => {
  331. if (item.id === row.id) {
  332. this.$refs.table.toggleRowSelection(item);
  333. }
  334. });
  335. this.tableSelection = this.$refs.table.selection;
  336. },
  337. handleSelectAll(selection) {
  338. this.tableSelection = this.$refs.table.selection;
  339. },
  340. backList() {
  341. this.queryItem = {};
  342. this.isShowPrint = false;
  343. },
  344. // 点击打印
  345. toPrint(row) {
  346. this.queryItem = row;
  347. this.showDetail = 2;
  348. },
  349. },
  350. };
  351. </script>
  352. <style lang="scss" scoped>
  353. .selectStyle {
  354. width: 100%;
  355. }
  356. </style>