useData.js 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. import { ref, computed } from "vue";
  2. import {
  3. applyOrderSettlement,
  4. serviceSettlement,regionalsettlement
  5. } from "@/api/finance/settlement.js";
  6. const PING_TAI = '0'; //平台
  7. const QU_YU = '3'; //区域
  8. const FU_WU_ZHONG_XIN = '4'; //服务中心
  9. //功能
  10. export default ({ proxy, jlzj_area_type }) => {
  11. const router = useRouter();
  12. const dialogFormRef = ref(null);
  13. const userTableRef = ref(null);
  14. const dialogType = ref('applyfor');
  15. //打开弹窗 applyfor:申请 settlement:结算
  16. const openDialog = (data, type,row) => {
  17. console.log("TCL: openDialog -> data", data,row)
  18. try {
  19. dialogType.value = type;
  20. let params = { mainOrderIds: data };
  21. let disabledData = {};
  22. // if (type === 'applyfor') {
  23. // params = { mainOrderIds: data }
  24. // }
  25. // if (type === 'settlement') {
  26. // params = { mainOrderIds: data }
  27. // }
  28. dialogFormRef.value.initForm(params, disabledData)
  29. } catch (error) {
  30. console.log('error', error);
  31. } finally {
  32. console.log('dialogFormRef.value', dialogFormRef.value);
  33. dialogFormRef.value.handleDialog(true);
  34. }
  35. }
  36. //导出
  37. const exportFile = async (parmas) => {
  38. console.log("TCL: exportFile -> parmas", parmas)
  39. // try {
  40. // proxy.download("core/orderSettlementApplication/export",{
  41. // ...queryParams.value,
  42. // }, `订单费用结算_${new Date().getTime()}.xlsx`);
  43. // } catch (error) {
  44. // }
  45. }
  46. const applyforSubmit = (data) => {
  47. console.log("TCL: applyforSubmit -> data", data)
  48. return new Promise(async (resolve, reject) => {
  49. const parmas = {
  50. secondOrderIds: data.mainOrderIds,
  51. payeeMethod: data.payeeMethod,
  52. payeeAccount: data.payeeAccount,
  53. payeeBankName: data.payeeBankName,
  54. payeeName: data.payeeName,
  55. payeeRemark: data.payeeRemark,
  56. }
  57. const res = await applyOrderSettlement(parmas);
  58. if (res.code === 200) {
  59. proxy.$modal.msgSuccess("审核成功");
  60. resolve()
  61. }
  62. proxy.$modal.msgSuccess(res.msg);
  63. reject()
  64. })
  65. }
  66. const settlementSubmit = async (data) => {
  67. console.log("TCL: settlementSubmit -> data", data)
  68. const parmas = {
  69. secondOrderIds: data.mainOrderIds,
  70. payerMethod: data.payerMethod,
  71. payerAccount: data.payerAccount,
  72. payerBankName: data.payerBankName,
  73. payerName: data.payerName,
  74. payerRemark: data.payerRemark,
  75. payerTime:data.payerTime
  76. }
  77. let res = null;
  78. //平台结算区域的申请
  79. if (jlzj_area_type.value === PING_TAI ) {
  80. res = await regionalsettlement(parmas)
  81. }
  82. //区域结算服务中心
  83. if (jlzj_area_type.value === QU_YU) {
  84. res = await serviceSettlement(parmas)
  85. }
  86. if (res.code === 200) {
  87. proxy.$modal.msgSuccess("审核成功");
  88. return;
  89. }
  90. }
  91. //申请提交
  92. const submitForm = async (data) => {
  93. try {
  94. console.log('submit', data,dialogType.value);
  95. //申请
  96. if (dialogType.value === 'applyfor') {
  97. await applyforSubmit(data);
  98. }
  99. if (dialogType.value === 'settlement') {
  100. await settlementSubmit(data);
  101. }
  102. } catch (error) {
  103. console.log('error', error);
  104. } finally {
  105. userTableRef.value.resetForm();
  106. dialogFormRef.value.handleDialog(false);
  107. }
  108. }
  109. return {
  110. dialogFormRef,
  111. userTableRef,
  112. dialogType,
  113. openDialog,
  114. exportFile,
  115. submitForm,
  116. searchBtns: [
  117. {
  118. label: '批量申请',
  119. func: () => {
  120. const ids = userTableRef.value.ids;
  121. console.log('批量删除', ids)
  122. ids.length > 0 && openDialog(ids, 'applyfor')
  123. },
  124. key: 'applicant',
  125. type: 'primary',
  126. hasPermi:["finance:apply"]
  127. },
  128. {
  129. label: '批量费用结算',
  130. func: () => {
  131. const ids = userTableRef.value.ids;
  132. console.log('批量删除', ids)
  133. ids.length > 0 && openDialog(ids, 'settlement')
  134. },
  135. key: 'settlement',
  136. type: 'primary',
  137. hasPermi:["finance:settlement"]
  138. },
  139. {
  140. label: '导出',
  141. func: (parmas) => {
  142. exportFile(parmas);
  143. },
  144. key: 'export',
  145. type: 'primary'
  146. },
  147. ],
  148. scopeBtns: [
  149. {
  150. label: '结算申请',
  151. type: 'primary',
  152. key: 'examine',
  153. func: (row) => {
  154. console.log(row)
  155. openDialog([row.orderId], 'applyfor')
  156. },
  157. hasPermi:["finance:apply"],
  158. show:(row)=>{
  159. console.log("TCL: exportFile -> row", row.orderStatus === '4')
  160. return row.areaSettlementStatus === '10'
  161. }
  162. },
  163. {
  164. label: '费用结算',
  165. type: 'primary',
  166. key: 'examine',
  167. func: (row) => {
  168. console.log(row)
  169. openDialog([row.orderId], 'settlement')
  170. },
  171. hasPermi:["finance:settlement"],
  172. show:(row)=>{
  173. console.log("TCL: exportFile -> row", row.orderStatus === '4')
  174. return row.areaSettlementStatus === '40'
  175. }
  176. },
  177. {
  178. label: '查看详情',
  179. type: 'primary',
  180. key: 'details',
  181. func: (row) => {
  182. console.log(row)
  183. router.push({
  184. path: "/order-details",
  185. query: { id: row.orderId }
  186. });
  187. },
  188. hasPermi:["finance:details"]
  189. },
  190. ],
  191. dialogData: {
  192. title: '结算申请',
  193. column: [
  194. {
  195. label: '收款方式',
  196. prop: 'payeeMethod',
  197. type: 'select',
  198. dictionary: 'settlement_application_payee_method',
  199. rules: [
  200. { required: true, message: '请选择收款方式', trigger: 'change' }
  201. ],
  202. },
  203. {
  204. label: '收款账号',
  205. prop: 'payeeAccount',
  206. type: 'input',
  207. rules: [
  208. { required: true, message: '请输入收款账号', trigger: 'change' }
  209. ],
  210. },
  211. {
  212. label: '收款银行名称',
  213. prop: 'payeeBankName',
  214. type: 'input',
  215. rules: [
  216. { required: true, message: '请输入收款银行名称', trigger: 'change' }
  217. ],
  218. },
  219. {
  220. label: '收款人',
  221. prop: 'payeeName',
  222. type: 'input',
  223. rules: [
  224. { required: true, message: '请输入收款人', trigger: 'change' }
  225. ],
  226. },
  227. {
  228. label: '收款人备注',
  229. prop: 'payeeRemark',
  230. type: 'textarea',
  231. },
  232. ]
  233. },
  234. costdialogData: {
  235. title: '费用结算',
  236. column: [
  237. {
  238. label: '付款方式',
  239. prop: 'payerMethod',
  240. type: 'select',
  241. dictionary: 'settlement_application_payee_method',
  242. rules: [
  243. { required: true, message: '请选择付款方式', trigger: 'change' }
  244. ],
  245. },
  246. {
  247. label: '付款账号',
  248. prop: 'payerAccount',
  249. type: 'input',
  250. rules: [
  251. { required: true, message: '请输入付款账号', trigger: 'change' }
  252. ],
  253. },
  254. {
  255. label: '付款银行名称',
  256. prop: 'payerBankName',
  257. type: 'input',
  258. rules: [
  259. { required: true, message: '请输入付款银行名称', trigger: 'change' }
  260. ],
  261. },
  262. {
  263. label: '付款人',
  264. prop: 'payerName',
  265. type: 'input',
  266. rules: [
  267. { required: true, message: '请输入付款人', trigger: 'change' }
  268. ],
  269. },
  270. {
  271. label: '付款时间',
  272. prop: 'payerTime',
  273. type: 'picker',
  274. rules: [
  275. { required: true, message: '请选择付款时间', trigger: 'change' }
  276. ],
  277. },
  278. {
  279. label: '付款人备注',
  280. prop: 'payerRemark',
  281. type: 'textarea',
  282. },
  283. ]
  284. },
  285. }
  286. }