useData.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546
  1. import { ref, computed, watch } from "vue";
  2. import { auditorOrderSettlement,sendCode } from "@/api/finance/settlement.js";
  3. import useUserStore from '@/store/modules/user'
  4. import { takeList, paymentList, takeApproval, careatPayment,payoutCheck } from "@/api/finance/withdrawal.js";
  5. //功能
  6. export default ({ proxy, jlzj_area_type }) => {
  7. const router = useRouter();
  8. const dialogFormRef = ref(null);
  9. const userTableRef = ref(null);
  10. const dialogVerifyRef =ref(null);
  11. const verifyCode =ref('');
  12. const tabkey = ref('0');
  13. const {
  14. pay_type,
  15. is_pay,
  16. volunteer_app_status,
  17. is_verified,
  18. payment_status
  19. } = proxy.useDict("pay_type", "is_pay", "volunteer_app_status","payment_status","is_verified");
  20. const dialogPlay = ref(false); //打款单详情
  21. const dialogRow = ref({});
  22. const dialogVerify =ref(false);
  23. //打开弹窗
  24. const openDialog = (data, type) => {
  25. console.log('data', data);
  26. try {
  27. const disabledData = {
  28. alipayAccountNo: true,
  29. alipayName: true,
  30. takeAmount: true,
  31. createTime: true,
  32. }
  33. //审核
  34. if (type === 'examine') {
  35. dialogFormRef.value.initForm(data, disabledData)
  36. }
  37. if (type === 'details') {
  38. disabledData['appStatus'] = true;
  39. disabledData['rejectReason'] = true;
  40. dialogFormRef.value.initForm(data, disabledData)
  41. }
  42. } catch (error) {
  43. console.log('error', error);
  44. } finally {
  45. console.log('dialogFormRef.value', dialogFormRef.value);
  46. dialogFormRef.value.handleDialog(true);
  47. }
  48. }
  49. //导出
  50. const exportFile = async (parmas) => {
  51. console.log("TCL: exportFile -> parmas", parmas)
  52. // try {
  53. // proxy.download("core/orderSettlementApplication/export",{
  54. // ...queryParams.value,
  55. // }, `订单费用结算_${new Date().getTime()}.xlsx`);
  56. // } catch (error) {
  57. // }
  58. }
  59. //审核提交
  60. const submitForm = async (data) => {
  61. try {
  62. console.log('submit', data);
  63. const parmas = {
  64. volunteerTakeRecordId: data.volunteerTakeRecordId,
  65. appStatus: data.appStatus,
  66. rejectReason: data.rejectReason
  67. }
  68. const res = await takeApproval(parmas);
  69. if (res.code === 200) {
  70. proxy.$modal.msgSuccess("审核成功");
  71. return;
  72. }
  73. proxy.$modal.msgSuccess(res.msg);
  74. } catch (error) {
  75. console.log('error', error);
  76. } finally {
  77. userTableRef.value.resetForm();
  78. dialogFormRef.value.handleDialog(false);
  79. }
  80. }
  81. const getList = (data) => {
  82. const parmasData = JSON.parse(JSON.stringify(data));
  83. if (parmasData.tabkeys) {
  84. delete parmasData.tabkeys;
  85. }
  86. console.log("TCL: getList -> data", data, parmasData)
  87. tabkey.value = data.tabkeys;
  88. return data.tabkeys !== '4' ? takeList({ ...parmasData, appStatus: data.tabkeys }) : paymentList(parmasData)
  89. }
  90. const paymentSubmit = async (ids) => {
  91. try {
  92. const res = await careatPayment({
  93. ids,
  94. payType: '2'
  95. })
  96. if (res.code === 200) {
  97. proxy.$modal.msgSuccess("创建成功!");
  98. return;
  99. }
  100. proxy.$modal.msgSuccess(res.msg);
  101. } catch (error) {
  102. console.log('error', error);
  103. } finally {
  104. userTableRef.value.resetForm();
  105. }
  106. }
  107. const openVerify = (data,type) => {
  108. try {
  109. const disabledData = {
  110. volunteerPaymentRecordsId: true,
  111. paymentOrderNumber:true,
  112. payType:true
  113. }
  114. if(type === 'details'){
  115. disabledData['payPassword'] = true;
  116. }
  117. dialogVerifyRef.value.initForm(data, disabledData)
  118. } catch (error) {
  119. console.log('error', error);
  120. } finally {
  121. userTableRef.value.resetForm();
  122. dialogVerifyRef.value.handleDialog(true);
  123. }
  124. }
  125. const submitVerify = async() => {
  126. try {
  127. const data =dialogRow.value;
  128. console.log('submit', data);
  129. const parmas = {
  130. volunteerPaymentRecordsId: data.volunteerPaymentRecordsId,
  131. paymentOrderNumber: data.paymentOrderNumber,
  132. payPassword:verifyCode.value
  133. }
  134. const res = await payoutCheck(parmas);
  135. if (res.code === 200) {
  136. proxy.$modal.msgSuccess("操作成功");
  137. verifyCancel();
  138. userTableRef.value.resetForm();
  139. return;
  140. }
  141. proxy.$modal.msgSuccess(res.msg);
  142. } catch (error) {
  143. console.log('error', error);
  144. }
  145. }
  146. const verifyCancel =()=>{
  147. dialogVerify.value = false;
  148. dialogRow.value = {};
  149. verifyCode.value ='';
  150. clearInterval(timer);
  151. timer = null;
  152. code.value = 60;
  153. }
  154. const getVerList = async (data) => {
  155. console.log('dialogRow.value',dialogRow.value);
  156. return takeList({ ...data,paymentRecordId: dialogRow.value.volunteerPaymentRecordsId})
  157. }
  158. const verifyClose = ()=>{
  159. dialogPlay.value = false;
  160. dialogRow.value = {};
  161. }
  162. const code = ref(60);
  163. let timer=null;
  164. watch(()=>code.value,()=>{
  165. if(code.value === 0){
  166. clearInterval(timer);
  167. timer = null;
  168. code.value = 60;
  169. }
  170. })
  171. const getCode = async() => {
  172. const userStore = useUserStore();
  173. console.log("TCL: exportFile -> userStore", userStore)
  174. if(code.value < 60){
  175. proxy.$modal.msgError('请勿重复获取!');
  176. return;
  177. }
  178. if(userStore.phonenumber && code.value === 60){
  179. try {
  180. const res =await sendCode(userStore.phonenumber);
  181. if(res.code === 200){
  182. proxy.$modal.msgSuccess(res.msg);
  183. timer = setInterval(()=>{
  184. code.value--;
  185. console.log('定时器');
  186. },1000)
  187. }else{
  188. proxy.$modal.msgError(res.msg);
  189. }
  190. } catch (error) {
  191. console.log("TCL: exportFile -> error", error)
  192. }
  193. }
  194. }
  195. return {
  196. dialogFormRef,
  197. userTableRef,
  198. dialogVerifyRef,
  199. dialogPlay,
  200. tabkey,
  201. dialogRow,
  202. dialogVerify,
  203. verifyCode,
  204. code,
  205. openDialog,
  206. exportFile,
  207. submitForm,
  208. getList,
  209. submitVerify,
  210. verifyClose,
  211. getVerList,
  212. verifyCancel,
  213. getCode,
  214. tabList: [
  215. {
  216. title: '每日流失审核',
  217. name: '1'
  218. },
  219. {
  220. title: '审核驳回',
  221. name: '3'
  222. },
  223. {
  224. title: '支付宝提现申请单',
  225. name: '2'
  226. },
  227. {
  228. title: '打款单记录',
  229. name: '4'
  230. },
  231. ],
  232. talkeColumn:ref([
  233. {
  234. label: '支付宝账户',
  235. prop: 'alipayAccountNo',
  236. type: 'input',
  237. isSearch: true
  238. },
  239. {
  240. label: '支付宝姓名',
  241. prop: 'alipayName',
  242. type: 'input',
  243. isSearch: true
  244. },
  245. {
  246. label: '提现申请金额',
  247. prop: 'takeAmount',
  248. },
  249. {
  250. label: '账户类型',
  251. prop: 'payType',
  252. type: 'dict',
  253. dict: pay_type,
  254. isSearch: true,
  255. },
  256. {
  257. label: '申请时间',
  258. prop: 'createTime',
  259. type: 'date',
  260. isSearch: true,
  261. keys: ['start', 'end'],
  262. },
  263. {
  264. label: '数据情况',
  265. prop: 'isPay',
  266. type: 'dict',
  267. dict: is_pay,
  268. isSearch: true,
  269. },
  270. {
  271. label: '审核状态',
  272. prop: 'appStatus',
  273. type: 'dict',
  274. dict: volunteer_app_status
  275. }
  276. ]),
  277. paymentColumn: ref([
  278. {
  279. label: '打款单单号',
  280. prop: 'paymentOrderNumber',
  281. type: 'input',
  282. isSearch: true
  283. },
  284. {
  285. label: '打款单总金额',
  286. prop: 'totalPaymentAmount',
  287. type: 'input',
  288. isSearch: true
  289. },
  290. {
  291. label: '实际打款金额',
  292. prop: 'actualPaymentAmount',
  293. type: 'input',
  294. isSearch: true
  295. },
  296. {
  297. label: '验证状态',
  298. prop: 'isVerified',
  299. type: 'dict',
  300. dict: is_verified,
  301. isSearch: true
  302. },
  303. {
  304. label: '打款状态',
  305. prop: 'paymentStatus',
  306. type: 'dict',
  307. dict: payment_status,
  308. isSearch: true
  309. },
  310. {
  311. label: '打款结果',
  312. prop: 'appStatus',
  313. type: 'render',
  314. render:(row) => {
  315. console.log("TCL: exportFile -> row", row)
  316. return `成功:${row.successfulPaymentAmount}; 失败:${row.failedPaymentAmount}`
  317. }
  318. },
  319. {
  320. label: '生成时间',
  321. prop: 'createTime',
  322. type: 'date',
  323. isSearch: true,
  324. keys: ['createTimeStart', 'createTimeEnd'],
  325. },
  326. {
  327. label: '打款时间',
  328. prop: 'paymentTime',
  329. type: 'date',
  330. isSearch: true,
  331. keys: ['paymentTimeStart', 'paymentTimeEnd'],
  332. },
  333. ]),
  334. dialogColumn:ref([
  335. {
  336. label: '业务编码',
  337. prop: 'takeSn',
  338. type: 'input',
  339. },
  340. {
  341. label: '用户信息',
  342. prop: 'alipayName',
  343. type: 'input',
  344. },
  345. {
  346. label: '提现金额',
  347. prop: 'receiveAmount',
  348. },
  349. {
  350. label: '扣除的税额',
  351. prop: 'taxAmount',
  352. },
  353. {
  354. label: '应打款金额',
  355. prop: 'shoudAmount',
  356. },
  357. {
  358. label: '实际打款金额',
  359. prop: 'shoudAmount',
  360. },
  361. ]),
  362. dialogData: {
  363. title: '结算申请',
  364. column: [
  365. {
  366. label: '支付宝账户:',
  367. prop: 'alipayAccountNo',
  368. type: 'text',
  369. },
  370. {
  371. label: '支付宝姓名:',
  372. prop: 'alipayName',
  373. type: 'text',
  374. },
  375. {
  376. label: '提现申请金额:',
  377. prop: 'takeAmount',
  378. type: 'text',
  379. },
  380. {
  381. label: '申请时间:',
  382. prop: 'createTime',
  383. type: 'text',
  384. },
  385. {
  386. label: '审核状态:',
  387. prop: 'appStatus',
  388. type: 'radio',
  389. rules: [
  390. { required: true, message: '请选择审核状态', trigger: 'blur' }
  391. ],
  392. options: [
  393. {
  394. label: '通过',
  395. value: '2'
  396. },
  397. {
  398. label: '不通过',
  399. value: '3'
  400. }
  401. ]
  402. },
  403. {
  404. label: '驳回原因:',
  405. prop: 'rejectReason',
  406. type: 'textarea',
  407. show: (form) => {
  408. console.log('驳回原因', form);
  409. return form.appStatus === '3'
  410. }
  411. },
  412. ]
  413. },
  414. searchBtns: [
  415. {
  416. label: '创建打款单',
  417. func: () => {
  418. const ids = userTableRef.value.ids;
  419. console.log('批量删除', ids)
  420. ids.length > 0 && paymentSubmit(ids)
  421. },
  422. key: 'applicant',
  423. type: 'primary',
  424. show: (row) => {
  425. return tabkey.value === '2'
  426. }
  427. },
  428. ],
  429. scopeBtns: [
  430. {
  431. label: '审核',
  432. type: 'primary',
  433. key: 'examine',
  434. func: (row) => {
  435. console.log(row)
  436. openDialog(row, 'examine')
  437. },
  438. show: (row) => {
  439. return tabkey.value === '1' && row.appStatus === '1'
  440. }
  441. },
  442. {
  443. label: '查看详情',
  444. type: 'primary',
  445. key: 'details',
  446. func: (row) => {
  447. console.log(row)
  448. openDialog(row, 'details')
  449. },
  450. show: (row) => {
  451. return tabkey.value !== '4'
  452. }
  453. },
  454. {
  455. label: '打款验证',
  456. type: 'primary',
  457. key: 'details',
  458. func: async(row) => {
  459. console.log(row)
  460. dialogRow.value = row;
  461. dialogVerify.value = true;
  462. },
  463. show: (row) => {
  464. return tabkey.value === '4' && row.paymentStatus === '1'
  465. }
  466. },
  467. {
  468. label: '创建打款单',
  469. type: 'primary',
  470. key: 'details',
  471. func: (row) => {
  472. console.log(row)
  473. paymentSubmit([row.volunteerTakeRecordId])
  474. },
  475. show: (row) => {
  476. return tabkey.value === '2' && row.appStatus === '2'
  477. }
  478. },
  479. {
  480. label: '查看打款结果',
  481. type: 'primary',
  482. key: 'see',
  483. func: (row) => {
  484. console.log("TCL: exportFile -> row", row)
  485. dialogPlay.value = true;
  486. dialogRow.value = row;
  487. },
  488. show: (row) => {
  489. return tabkey.value === '4'
  490. }
  491. },
  492. ],
  493. dialogVerifyData: ref({
  494. title: '结算申请',
  495. column: [
  496. {
  497. label: '打款id',
  498. prop: 'volunteerPaymentRecordsId',
  499. type: 'text',
  500. },
  501. {
  502. label: '打款单单号',
  503. prop: 'paymentOrderNumber',
  504. type: 'text',
  505. },
  506. {
  507. label: '打款方式',
  508. prop: 'payType',
  509. type: 'dict',
  510. dict: pay_type
  511. },
  512. {
  513. label: '打款验证密码',
  514. prop: 'payPassword',
  515. type: 'input',
  516. dese:'发送验证码',
  517. deseClick:(data)=>{
  518. console.log("TCL: exportFile -> data", data)
  519. }
  520. },
  521. ]
  522. }),
  523. }
  524. }