useData.js 16 KB

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