Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

index copy.vue 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419
  1. <template>
  2. <div>
  3. <crud-template :ref="(el) => (crudRef = el)" class="as-weight" :home-data="field" :table-data="tableData"
  4. @btnSearch="btnSearch" @importData="importData" @refreshLeft="refreshLeft" @CurrentChange="handleCurrentChange"
  5. @download="downloadHandle" @pageSizeChange="(val) => {
  6. field.paging.currentPage = 1
  7. field.paging.pageSize = val
  8. getList()
  9. }">
  10. <template #search>
  11. <el-input maxlength="60" v-trim clearable v-model="searchForm.agencyName" style="width: 200px;"
  12. placeholder="请输入渠道名称" />
  13. <el-input maxlength="60" v-trim clearable v-model="searchForm.filledBy" style="width: 200px;"
  14. placeholder="请输入填表人" />
  15. <div class="as-gravity-center-start">
  16. <div class="date-label">推送日期:</div>
  17. <el-date-picker unlink-panels v-model="value1" type="daterange" range-separator="到" start-placeholder="统计开始日期"
  18. end-placeholder="统计结束日期" style="margin: 0 10px 10px 10px" format="YYYY-MM-DD" :clearable="false"
  19. @change="dateChangeHandle" />
  20. </div>
  21. </template>
  22. </crud-template>
  23. </div>
  24. </template>
  25. <!-- 黔通智联通行费结算报表 -->
  26. <script lang="ts" setup>
  27. // @ts-ignore crudFrom模板
  28. import CrudTemplate from "@/crud/index.vue";
  29. import {
  30. ref,
  31. onMounted,
  32. computed
  33. } from "vue";
  34. import { ElMessage } from "element-plus";
  35. import BaseService from "@/utils/baseService";
  36. import moment from "moment";
  37. import $storeinitData from "@/store/initData"; //引入tab vuex
  38. import { exportFn, getDefaultTime, importFn } from '@/views/settlement/exportFn'
  39. const crudRef = ref();
  40. const searchForm = ref({
  41. agencyName: '',
  42. filledBy: "",
  43. startTime: "",
  44. endTime: "",
  45. });
  46. const tableData = ref([]);
  47. const PRODUCT_TYPE = computed(() => {
  48. return $storeinitData.state.dictData['SETTLEMENT_TYPE'] || []
  49. })
  50. const CARD_TYPE = [
  51. {
  52. label: '储值卡',
  53. value: 'STORED_VALUE_CARD'
  54. },
  55. {
  56. label: '记账卡',
  57. value: 'CHARGE_CARD'
  58. },
  59. ]
  60. //表单数据配置
  61. const formLabelWidth = "180px";
  62. const field = ref({
  63. tabSize: "small", //Table 的尺寸 large / default /small (默认default)
  64. searchShow: true, //是否显示搜索模块(默认false)
  65. border: true, //是否添加边框(默认false)
  66. dialogCustom: true, //自定义Dialog (默认false)
  67. dialogFooter: true, //隐藏弹窗页脚显示 (默认false)
  68. dialogWidth: "40%", //dialog宽度 (默认40%)
  69. crudShow: true, //是否显示CURD操作栏 (默认true)
  70. crudChildShow: true, //是否显示CURD子操作栏 (默认true)
  71. paginStart: true, //是否显示分页查询 (默认false)
  72. isPageSizes: true,
  73. pageLayout: 'total, sizes, prev, pager, next',
  74. titleDialog: "", //table 标题
  75. paging: {
  76. pageSize: 10,
  77. currentPage: 1,
  78. total: 0,
  79. pushMoneys: 0,
  80. pushMoneyMts: 0,
  81. pushAmounts: 0,
  82. pushCtAmounts: 0,
  83. pushCtRefundAmounts: 0,
  84. pushMtAmounts: 0,
  85. pushMtRefundAmounts: 0,
  86. counterofferAmounts: 0,
  87. counterofferCtAmounts: 0,
  88. counterofferMtAmounts: 0,
  89. collectionAmounts: 0,
  90. },
  91. crud: {
  92. add: false,
  93. cudText: [
  94. { isAmount: true, label: '推送通行交易总金额:', key: 'pushMoneys' },
  95. { isAmount: true, label: '推送多场景交易总金额:', key: 'pushMoneyMts' },
  96. { isAmount: true, label: '推送总金额:', key: 'pushAmounts' },
  97. { isAmount: true, label: '回盘通行交易总金额:', key: 'pushCtAmounts' },
  98. { isAmount: true, label: '回盘通行交易退费总金额:', key: 'pushCtRefundAmounts' },
  99. { isAmount: true, label: '回盘多场景交易总金额:', key: 'pushMtAmounts' },
  100. { isAmount: true, label: '回盘多场景交易退费总金额:', key: 'pushMtRefundAmounts' },
  101. { isAmount: true, label: '回盘总金额:', key: 'counterofferAmounts' },
  102. { isAmount: true, label: '回款通行交易总金额:', key: 'counterofferCtAmounts' },
  103. { isAmount: true, label: '回款多场景交易总金额:', key: 'counterofferMtAmounts' },
  104. { isAmount: true, label: '回款总金额:', key: 'collectionAmounts' },
  105. ],
  106. },
  107. searchOperation: {
  108. isDownload: true, // 导出
  109. isToLead: false, // 导入
  110. isAdd: false,
  111. isTransferMachine: false,
  112. isTemplate: true,
  113. templateUrl: import.meta.env.VITE_APP_UPLOAD_URL + 'sett-minio/template/报表管理/黔通智联通行费结算报表.xlsx',
  114. templateFileName: '黔通智联通行费结算报表导入模板'
  115. },
  116. tableSize: -1,
  117. operateShow: true, //是否为表格添加操作栏(默认true)
  118. operateTitle: "操作", //操作栏标题(默认为"")
  119. operateFixed: false, //操作栏是否固定(默认false)
  120. operateWidth: "100", //操作栏宽度
  121. operate: {
  122. info: true, //详情
  123. edit: false, //是否编辑(默认true)
  124. delete: false, //是否删除(默认true)
  125. remark: false, // 查看
  126. },
  127. extend: [
  128. {
  129. type: "index",
  130. label: "序号",
  131. },
  132. ],
  133. field: [
  134. {
  135. label: "卡类型",
  136. prop: "cardType",
  137. listData: CARD_TYPE,
  138. form: {
  139. formLabelWidth: formLabelWidth,
  140. width: "45%",
  141. type: "select",
  142. listData: CARD_TYPE,
  143. },
  144. },
  145. {
  146. label: "填表人",
  147. prop: "filledBy",
  148. form: {
  149. formLabelWidth: formLabelWidth,
  150. width: "45%",
  151. type: "input",
  152. },
  153. },
  154. {
  155. label: "渠道名称",
  156. prop: "agencyName",
  157. form: {
  158. formLabelWidth: formLabelWidth,
  159. width: "45%",
  160. type: "input",
  161. },
  162. },
  163. {
  164. label: "推送日期",
  165. prop: "pushDate",
  166. form: {
  167. formLabelWidth: formLabelWidth,
  168. width: "45%",
  169. type: "input",
  170. },
  171. },
  172. {
  173. label: "推送通行交易金额(元)",
  174. prop: "pushMoney",
  175. isAmount: true,
  176. form: {
  177. formLabelWidth: formLabelWidth,
  178. width: "45%",
  179. type: "input",
  180. },
  181. },
  182. {
  183. label: "推送多场景交易金额(元)",
  184. prop: "pushMoneyMt",
  185. isAmount: true,
  186. form: {
  187. formLabelWidth: formLabelWidth,
  188. width: "45%",
  189. type: "input",
  190. },
  191. },
  192. {
  193. label: "推送金额(元)",
  194. prop: "pushAmount",
  195. isAmount: true,
  196. form: {
  197. formLabelWidth: formLabelWidth,
  198. width: "45%",
  199. type: "input",
  200. },
  201. },
  202. {
  203. label: "回盘通行交易金额(元)",
  204. prop: "pushCtAmount",
  205. isAmount: true,
  206. form: {
  207. formLabelWidth: formLabelWidth,
  208. width: "45%",
  209. type: "input",
  210. },
  211. },
  212. {
  213. label: "回盘通行交易退费金额(元)",
  214. prop: "pushCtRefundAmount",
  215. isAmount: true,
  216. form: {
  217. formLabelWidth: formLabelWidth,
  218. width: "45%",
  219. type: "input",
  220. },
  221. },
  222. {
  223. label: "回盘多场景交易金额(元)",
  224. prop: "pushMtAmount",
  225. isAmount: true,
  226. form: {
  227. formLabelWidth: formLabelWidth,
  228. width: "45%",
  229. type: "input",
  230. },
  231. },
  232. {
  233. label: "回盘多场景交易退费金额(元)",
  234. prop: "pushMtRefundAmount",
  235. isAmount: true,
  236. form: {
  237. formLabelWidth: formLabelWidth,
  238. width: "45%",
  239. type: "input",
  240. },
  241. },
  242. {
  243. label: "回盘金额(元)",
  244. prop: "counterofferAmount",
  245. isAmount: true,
  246. form: {
  247. formLabelWidth: formLabelWidth,
  248. width: "45%",
  249. type: "input",
  250. },
  251. },
  252. {
  253. label: "回款通行交易金额(元)",
  254. prop: "counterofferCtAmount",
  255. isAmount: true,
  256. form: {
  257. formLabelWidth: formLabelWidth,
  258. width: "45%",
  259. type: "input",
  260. },
  261. },
  262. {
  263. label: "回款多场景交易金额(元)",
  264. prop: "counterofferMtAmount",
  265. isAmount: true,
  266. form: {
  267. formLabelWidth: formLabelWidth,
  268. width: "45%",
  269. type: "input",
  270. },
  271. },
  272. {
  273. label: "回款金额(元)",
  274. prop: "collectionAmount",
  275. isAmount: true,
  276. form: {
  277. formLabelWidth: formLabelWidth,
  278. width: "45%",
  279. type: "input",
  280. },
  281. },
  282. {
  283. label: "差异说明",
  284. prop: "differenceDescription",
  285. form: {
  286. formLabelWidth: formLabelWidth,
  287. width: "45%",
  288. type: "input",
  289. },
  290. },
  291. {
  292. label: "差异流水分析",
  293. prop: "differentialFlowAnalysis",
  294. form: {
  295. formLabelWidth: formLabelWidth,
  296. width: "45%",
  297. type: "input",
  298. },
  299. },
  300. {
  301. label: "能否补推流水",
  302. prop: "canPushFlowingWater",
  303. form: {
  304. formLabelWidth: formLabelWidth,
  305. width: "45%",
  306. type: "input",
  307. },
  308. }
  309. ],
  310. });
  311. // 搜索按钮
  312. function btnSearch() {
  313. field.value.paging.currentPage = 1;
  314. getList();
  315. }
  316. // 搜索重置
  317. function refreshLeft() {
  318. field.value.paging.currentPage = 1;
  319. searchForm.value = {
  320. agencyName: '',
  321. filledBy: "",
  322. startTime: "",
  323. endTime: "",
  324. };
  325. value1.value = defaultTime
  326. dateChangeHandle()
  327. tableData.value = [];
  328. getList();
  329. }
  330. const defaultTime: [Date, Date] = getDefaultTime('day', 1)
  331. const value1: any = ref(defaultTime) // 筛选时间
  332. // 时间
  333. function dateChangeHandle() {
  334. if (value1.value) {
  335. searchForm.value.startTime = value1.value[0]
  336. searchForm.value.endTime = value1.value[1]
  337. } else {
  338. searchForm.value.startTime = ''
  339. searchForm.value.endTime = ''
  340. }
  341. }
  342. function dateChange(time) {
  343. if (time) {
  344. time = moment(time).format("YYYY-MM-DD");
  345. }
  346. return time
  347. }
  348. // 获取列表
  349. function getList() {
  350. if (!searchForm.value.startTime || !searchForm.value.endTime) {
  351. ElMessage.error('请选择查询开始时间和结束时间')
  352. return
  353. }
  354. crudRef.value.tableLoding = true;
  355. // 参数
  356. const params: any = {
  357. pageNo: field.value.paging.currentPage,
  358. pageSize: field.value.paging.pageSize,
  359. };
  360. searchForm.value.startTime = dateChange(searchForm.value.startTime)
  361. searchForm.value.endTime = dateChange(searchForm.value.endTime)
  362. const searchFormList = { ...searchForm.value };
  363. for (const key in searchFormList) {
  364. if (searchFormList[key]) {
  365. params[key] = searchFormList[key];
  366. }
  367. }
  368. BaseService.postN('/settlew/cleardailyrecon/trafficflowsettlementpage', params).then((res: any) => {
  369. if (res && res.statusCode === 0) {
  370. const bizContent = res.data
  371. const data = bizContent.data || [];
  372. tableData.value = data;
  373. crudRef.value.tableLoding = false;
  374. field.value.paging.total = bizContent.totalCount;
  375. field.value.paging.pushMoneys = bizContent.pushMoneys
  376. field.value.paging.pushMoneyMts = bizContent.pushMoneyMts
  377. field.value.paging.pushAmounts = bizContent.pushAmounts
  378. field.value.paging.pushCtAmounts = bizContent.pushCtAmounts
  379. field.value.paging.pushCtRefundAmounts = bizContent.pushCtRefundAmounts
  380. field.value.paging.pushMtAmounts = bizContent.pushMtAmounts
  381. field.value.paging.pushMtRefundAmounts = bizContent.pushMtRefundAmounts
  382. field.value.paging.counterofferAmounts = bizContent.counterofferAmounts
  383. field.value.paging.counterofferCtAmounts = bizContent.counterofferCtAmounts
  384. field.value.paging.counterofferMtAmounts = bizContent.counterofferMtAmounts
  385. field.value.paging.collectionAmounts = bizContent.collectionAmounts
  386. } else {
  387. crudRef.value.tableLoding = false;
  388. ElMessage.error(res.message);
  389. }
  390. });
  391. }
  392. function handleCurrentChange(val: number) {
  393. field.value.paging.currentPage = val;
  394. getList();
  395. }
  396. // 导出
  397. function downloadHandle() {
  398. searchForm.value.startTime = dateChange(searchForm.value.startTime)
  399. searchForm.value.endTime = dateChange(searchForm.value.endTime)
  400. exportFn('/settlew/cleardailyrecon/collectdownload', searchForm.value, '黔通智联通行费结算报表')
  401. }
  402. // 导入
  403. function importData(url, reportFileName) {
  404. importFn('/settlew/daily/trafficflowsettlementimport', () => { }, { excelUrl: url, reportFileName })
  405. }
  406. onMounted(() => {
  407. dateChangeHandle()
  408. getList();
  409. })
  410. </script>