useData.js 16 KB

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