useData.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542
  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, appStatus: data.tabkeys || parmasData.appStatus });
  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: ''
  209. },
  210. {
  211. title: '支付宝提现审核',
  212. name: '1'
  213. },
  214. // {
  215. // title: '审核驳回',
  216. // name: '3'
  217. // },
  218. {
  219. title: '支付宝提现申请单',
  220. name: '2'
  221. },
  222. {
  223. title: '打款单记录',
  224. name: '4'
  225. },
  226. ],
  227. talkeColumn:ref([
  228. {
  229. label: '支付宝账号',
  230. prop: 'alipayAccountNo',
  231. type: 'input',
  232. isSearch: true
  233. },
  234. {
  235. label: '支付宝户名',
  236. prop: 'alipayName',
  237. type: 'input',
  238. isSearch: true
  239. },
  240. {
  241. label: '提现申请金额',
  242. prop: 'takeAmount',
  243. },
  244. {
  245. label: '账户类型',
  246. prop: 'payType',
  247. type: 'dict',
  248. dict: pay_type,
  249. isSearch: true,
  250. },
  251. {
  252. label: '申请时间',
  253. prop: 'createTime',
  254. type: 'date',
  255. isSearch: true,
  256. keys: ['start', 'end'],
  257. },
  258. {
  259. label: '数据情况',
  260. prop: 'isPay',
  261. type: 'dict',
  262. dict: is_pay,
  263. isSearch: true,
  264. },
  265. {
  266. label: '审核状态',
  267. prop: 'appStatus',
  268. type: 'dict',
  269. dict: volunteer_app_status,
  270. isSearch: true,
  271. }
  272. ]),
  273. paymentColumn: ref([
  274. {
  275. label: '打款单单号',
  276. prop: 'paymentOrderNumber',
  277. type: 'input',
  278. isSearch: true
  279. },
  280. {
  281. label: '打款单总金额',
  282. prop: 'totalPaymentAmount',
  283. type: 'input',
  284. isSearch: true
  285. },
  286. {
  287. label: '实际打款金额',
  288. prop: 'actualPaymentAmount',
  289. type: 'input',
  290. isSearch: true
  291. },
  292. {
  293. label: '验证状态',
  294. prop: 'isVerified',
  295. type: 'dict',
  296. dict: is_verified,
  297. isSearch: true
  298. },
  299. {
  300. label: '打款状态',
  301. prop: 'paymentStatus',
  302. type: 'dict',
  303. dict: payment_status,
  304. isSearch: true
  305. },
  306. {
  307. label: '打款结果',
  308. prop: 'appStatus',
  309. type: 'render',
  310. render:(row) => {
  311. console.log("TCL: exportFile -> row", row)
  312. return `成功:${row.successfulPaymentAmount}; 失败:${row.failedPaymentAmount}`
  313. }
  314. },
  315. {
  316. label: '生成时间',
  317. prop: 'createTime',
  318. type: 'date',
  319. isSearch: true,
  320. keys: ['createTimeStart', 'createTimeEnd'],
  321. },
  322. {
  323. label: '打款时间',
  324. prop: 'paymentTime',
  325. type: 'date',
  326. isSearch: true,
  327. keys: ['paymentTimeStart', 'paymentTimeEnd'],
  328. },
  329. ]),
  330. dialogColumn:ref([
  331. {
  332. label: '业务编码',
  333. prop: 'takeSn',
  334. type: 'input',
  335. },
  336. {
  337. label: '用户信息',
  338. prop: 'alipayName',
  339. type: 'input',
  340. },
  341. {
  342. label: '提现金额',
  343. prop: 'receiveAmount',
  344. },
  345. {
  346. label: '扣除的税额',
  347. prop: 'taxAmount',
  348. },
  349. {
  350. label: '应打款金额',
  351. prop: 'shoudAmount',
  352. },
  353. {
  354. label: '实际打款金额',
  355. prop: 'shoudAmount',
  356. },
  357. ]),
  358. dialogData: {
  359. title: '结算申请',
  360. column: [
  361. {
  362. label: '支付宝账号:',
  363. prop: 'alipayAccountNo',
  364. type: 'text',
  365. },
  366. {
  367. label: '支付宝户名:',
  368. prop: 'alipayName',
  369. type: 'text',
  370. },
  371. {
  372. label: '提现申请金额:',
  373. prop: 'takeAmount',
  374. type: 'text',
  375. },
  376. {
  377. label: '申请时间:',
  378. prop: 'createTime',
  379. type: 'text',
  380. },
  381. {
  382. label: '审核状态:',
  383. prop: 'appStatus',
  384. type: 'radio',
  385. rules: [
  386. { required: true, message: '请选择审核状态', trigger: 'blur' }
  387. ],
  388. options: [
  389. {
  390. label: '通过',
  391. value: '2'
  392. },
  393. {
  394. label: '不通过',
  395. value: '3'
  396. }
  397. ]
  398. },
  399. {
  400. label: '驳回原因:',
  401. prop: 'rejectReason',
  402. type: 'textarea',
  403. show: (form) => {
  404. console.log('驳回原因', form);
  405. return form.appStatus === '3'
  406. }
  407. },
  408. ]
  409. },
  410. searchBtns: [
  411. {
  412. label: '创建打款单',
  413. func: () => {
  414. const ids = userTableRef.value.ids;
  415. console.log('批量删除', ids)
  416. ids.length > 0 && paymentSubmit(ids)
  417. },
  418. key: 'applicant',
  419. type: 'primary',
  420. show: (row) => {
  421. return tabkey.value === '2'
  422. }
  423. },
  424. ],
  425. scopeBtns: [
  426. {
  427. label: '审核',
  428. type: 'primary',
  429. key: 'examine',
  430. func: (row) => {
  431. console.log(row)
  432. openDialog(row, 'examine')
  433. },
  434. show: (row) => {
  435. return tabkey.value === '1' && row.appStatus === '1'
  436. }
  437. },
  438. {
  439. label: '查看详情',
  440. type: 'primary',
  441. key: 'details',
  442. func: (row) => {
  443. console.log(row)
  444. openDialog(row, 'details')
  445. },
  446. show: (row) => {
  447. return tabkey.value !== '4'
  448. }
  449. },
  450. {
  451. label: '打款验证',
  452. type: 'primary',
  453. key: 'details',
  454. func: async(row) => {
  455. console.log(row)
  456. dialogRow.value = row;
  457. dialogVerify.value = true;
  458. },
  459. show: (row) => {
  460. return tabkey.value === '4' && row.paymentStatus === '1'
  461. }
  462. },
  463. {
  464. label: '创建打款单',
  465. type: 'primary',
  466. key: 'details',
  467. func: (row) => {
  468. console.log(row)
  469. paymentSubmit([row.volunteerTakeRecordId])
  470. },
  471. show: (row) => {
  472. return tabkey.value === '2' && row.appStatus === '2'
  473. }
  474. },
  475. {
  476. label: '查看打款结果',
  477. type: 'primary',
  478. key: 'see',
  479. func: (row) => {
  480. console.log("TCL: exportFile -> row", row)
  481. dialogPlay.value = true;
  482. dialogRow.value = row;
  483. },
  484. show: (row) => {
  485. return tabkey.value === '4'
  486. }
  487. },
  488. ],
  489. dialogVerifyData: ref({
  490. title: '结算申请',
  491. column: [
  492. {
  493. label: '打款id',
  494. prop: 'volunteerPaymentRecordsId',
  495. type: 'text',
  496. },
  497. {
  498. label: '打款单单号',
  499. prop: 'paymentOrderNumber',
  500. type: 'text',
  501. },
  502. {
  503. label: '打款方式',
  504. prop: 'payType',
  505. type: 'dict',
  506. dict: pay_type
  507. },
  508. {
  509. label: '打款验证密码',
  510. prop: 'payPassword',
  511. type: 'input',
  512. dese:'发送验证码',
  513. deseClick:(data)=>{
  514. console.log("TCL: exportFile -> data", data)
  515. }
  516. },
  517. ]
  518. }),
  519. }
  520. }