paymentSettleDetailsPage.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752
  1. <template>
  2. <div class="borderless">
  3. <div class="customer-head">
  4. <div class="customer-back">
  5. <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"
  6. @click="backToList">返回列表
  7. </el-button>
  8. <div class="upper_right_button">
  9. <el-button
  10. type="primary"
  11. size="small"
  12. @click="editHandle"
  13. v-if="editDisable"
  14. >编 辑</el-button>
  15. <el-button type="warning"
  16. class="el-button--small-yh"
  17. size="small"
  18. :loading="buttonLoading"
  19. :disabled="!form.id || editDisable"
  20. @click.stop="confirmSettlement"
  21. >{{financeButton?"付费":"撤销付费"}}
  22. </el-button>
  23. <el-button class="el-button--small-yh"
  24. type="primary"
  25. size="small"
  26. :loading="buttonLoading"
  27. @click.stop="saveSettlement"
  28. :disabled="editDisable"
  29. >保存数据
  30. </el-button>
  31. </div>
  32. </div>
  33. </div>
  34. <div class="customer-main">
  35. <containerTitle title="基础信息"></containerTitle>
  36. <basic-container>
  37. <avue-form class="trading-form" ref="form" v-model="form" :option="option">
  38. <template slot="corpId">
  39. <crop-select
  40. v-model="form.corpId"
  41. corpType="KG"
  42. :disabled="(!financeDisabled && form.id) || editDisable"
  43. @getCorpData="returnBack"
  44. style="width: 100%"
  45. ></crop-select>
  46. </template>
  47. <template slot="accountNo">
  48. <el-select v-model="form.accountNo"
  49. placeholder="请选择"
  50. :disabled="(!financeDisabled && form.id) || editDisable"
  51. @change="accountNoChange"
  52. clearable
  53. filterable>
  54. <el-option v-for="(item,index) in form.bankList"
  55. :key="index"
  56. :label="item.accountNo"
  57. :value="item.accountNo"
  58. >
  59. </el-option>
  60. </el-select>
  61. </template>
  62. <template slot="remark">
  63. <el-input type="textarea"
  64. v-model="form.remark"
  65. size="small"
  66. rows="2"
  67. autocomplete="off"
  68. placeholder="">
  69. </el-input>
  70. </template>
  71. </avue-form>
  72. </basic-container>
  73. <containerTitle title="明细列表"></containerTitle>
  74. <basic-container>
  75. <avue-crud :option="itemsOption"
  76. :data="dataList"
  77. ref="crud"
  78. v-model="itemsForm"
  79. :page.sync="page"
  80. @search-reset="searchReset"
  81. @row-update="rowUpdate"
  82. @selection-change="selectionChange"
  83. >
  84. <template slot="menuLeft">
  85. <el-button type="primary"
  86. size="small"
  87. :loading="buttonLoading"
  88. icon="el-icon-shopping-cart-2"
  89. :disabled="!financeButton || editDisable"
  90. @click="selectPurchase">选择采购合同
  91. </el-button>
  92. </template>
  93. <template slot-scope="scope" slot="menu">
  94. <el-button
  95. type="text"
  96. size="small"
  97. icon="el-icon-edit"
  98. :disabled="!financeButton || editDisable"
  99. @click.stop="rowCell(scope.row,scope.index)"
  100. > {{ scope.row.$cellEdit ? '修改完成' : '修改' }}
  101. </el-button>
  102. <el-button
  103. type="text"
  104. size="small"
  105. icon="el-icon-delete"
  106. :disabled="!financeButton || editDisable"
  107. @click.stop="rowDel(scope.row,scope.index)"
  108. >删除
  109. </el-button>
  110. </template>
  111. <template slot-scope="{ row }" slot="currency">
  112. <el-select v-if="row.$cellEdit" v-model="row.currency" size="small" placeholder="请选择 币别" clearable filterable>
  113. <el-option v-for="(item,index) in currencyDic" :key="index" :label="item.dictValue" :value="item.dictValue"></el-option>
  114. </el-select>
  115. <span v-else>{{ row.currency }}</span>
  116. </template>
  117. <template slot="thisAmount" slot-scope="{ row }">
  118. <span v-if="row.$cellEdit" class="required_fields">*</span>
  119. <el-input
  120. v-if="row.$cellEdit"
  121. v-model="row.thisAmount"
  122. style="width: 90%"
  123. placeholder="请输入"
  124. size="small"
  125. oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
  126. ></el-input>
  127. <span v-else>{{ row.thisAmount }}</span>
  128. </template>
  129. <template slot="caseOverPayment">
  130. <el-input
  131. placeholder="请输入"
  132. clearable
  133. v-model="form.caseOverPayment"
  134. @change="caseOverPaymentChange"
  135. v-input-limit="2"
  136. :disabled="dataList.length == 0"
  137. ></el-input>
  138. </template>
  139. </avue-crud>
  140. </basic-container>
  141. <el-dialog
  142. title="导入采购"
  143. append-to-body
  144. class="el-dialogDeep"
  145. :visible.sync="billDetailDialog"
  146. width="60%"
  147. :close-on-click-modal="false"
  148. :destroy-on-close="true"
  149. :close-on-press-escape="false"
  150. top="10vh"
  151. v-dialog-drag>
  152. <bill-detail
  153. :params="params"
  154. :billType="billType"
  155. :flag="1"
  156. @closeFun="closeBillDetail"
  157. @importProMent="importProMent"
  158. >
  159. </bill-detail>
  160. </el-dialog>
  161. </div>
  162. </div>
  163. </template>
  164. <script>
  165. import option from "./configuration/detailsPage.json";
  166. import { getDetail,editFinance } from "@/api/financialManagement/financialManagement"
  167. import { getDetails,modify,cancelModify,saveOrEdit } from "@/api/financialManagement/paymentRequest";
  168. import { contrastObj,contrastList } from "@/util/contrastData";
  169. import billDetail from "@/components/bill/billDetailList";
  170. import { getlistBankBy } from "@/api/financialManagement/paymentRequest";
  171. import _ from "lodash";
  172. import {getUserInfo} from "@/api/system/user";
  173. import {getCorpDetail} from "@/api/maintenance/overpayment";
  174. export default {
  175. name: "paymentDetailsPage",
  176. props: {
  177. detailData: {
  178. type: Object
  179. }
  180. },
  181. data() {
  182. return {
  183. form: {},
  184. itemsForm:{},
  185. itemsOption: option,
  186. billDetailDialog:false,
  187. buttonLoading:false,
  188. financeDisabled:false,
  189. financeButton:true,
  190. billType:"申请",
  191. params:{},
  192. id:"",
  193. dataList: [],
  194. currencyDic:[],
  195. page: {
  196. pageSize: 10,
  197. pagerCount: 5,
  198. total: 0,
  199. },
  200. query:{},
  201. option: {
  202. menuBtn: false,
  203. labelWidth: 100,
  204. column: [
  205. {
  206. label: '系统号',
  207. prop: 'sysNo',
  208. span: 8,
  209. disabled: true
  210. },{
  211. label: '合同号',
  212. prop: 'srcOrderno',
  213. span: 8,
  214. rules: [
  215. {
  216. required: false,
  217. message: ' ',
  218. trigger: 'blur'
  219. }
  220. ]
  221. }, {
  222. label: '往来单位',
  223. prop: 'corpId',
  224. sort:true,
  225. span: 8,
  226. rules: [
  227. {
  228. required: true,
  229. message: ' ',
  230. trigger: 'blur'
  231. }
  232. ]
  233. },
  234. {
  235. label: '银行账号',
  236. prop: 'accountNo',
  237. span: 8,
  238. rules: [
  239. {
  240. required: false,
  241. message: ' ',
  242. trigger: 'blur'
  243. }
  244. ]
  245. },
  246. {
  247. label: '开户银行',
  248. prop: 'accountBank',
  249. span: 8,
  250. rules: [
  251. {
  252. required: false,
  253. message: ' ',
  254. trigger: 'blur'
  255. }
  256. ]
  257. }, {
  258. label: '银行户头',
  259. prop: 'accountName',
  260. span: 8,
  261. rules: [
  262. {
  263. required: false,
  264. message: ' ',
  265. trigger: 'blur'
  266. }
  267. ]
  268. },
  269. {
  270. label: '人民币金额',
  271. prop: 'amount',
  272. span: 8,
  273. rules: [
  274. {
  275. pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  276. message: ' ',
  277. trigger: 'blur'
  278. },
  279. {
  280. required: false,
  281. message: ' ',
  282. trigger: 'blur'
  283. }
  284. ]
  285. },
  286. {
  287. label: '外币金额',
  288. prop: 'foreignAmount',
  289. span: 8,
  290. rules: [
  291. {
  292. pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  293. message: ' ',
  294. trigger: 'blur'
  295. }
  296. ]
  297. },
  298. {
  299. label: '使用溢付款',
  300. prop: 'caseOverPayment',
  301. display: false,
  302. span: 8,
  303. rules: [
  304. {
  305. pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  306. message: ' ',
  307. trigger: 'blur'
  308. }
  309. ]
  310. },
  311. {
  312. label: '溢付款余额',
  313. prop: 'overPayment',
  314. display: false,
  315. disabled: true,
  316. span: 8,
  317. rules: [
  318. {
  319. pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  320. message: ' ',
  321. trigger: 'blur'
  322. }
  323. ]
  324. },
  325. {
  326. label: '付款日期',
  327. prop: 'settlementDate',
  328. format:"yyyy-MM-dd",
  329. valueFormat:"yyyy-MM-dd 00:00:00",
  330. span: 8,
  331. type:"date",
  332. rules: [
  333. {
  334. required: false,
  335. message: ' ',
  336. trigger: 'blur'
  337. }
  338. ]
  339. },
  340. {
  341. label: '制单人',
  342. prop: 'createUserName',
  343. span: 8,
  344. disabled:true,
  345. rules: [
  346. {
  347. required: false,
  348. message: ' ',
  349. trigger: 'blur'
  350. }
  351. ]
  352. },
  353. {
  354. label: '制单日期',
  355. prop: 'createTime',
  356. span: 8,
  357. type:"date",
  358. disabled:true,
  359. rules: [
  360. {
  361. required: false,
  362. message: ' ',
  363. trigger: 'blur'
  364. }
  365. ]
  366. },
  367. {
  368. label: '备注',
  369. prop: 'remark',
  370. span:24,
  371. minRows: 2,
  372. rules: [
  373. {
  374. required: false,
  375. message: ' ',
  376. trigger: 'blur'
  377. }
  378. ]
  379. },
  380. ],
  381. },
  382. financeStatusDic:[{
  383. label:'正常',
  384. value:0
  385. },{
  386. label:'停用',
  387. value:1
  388. }],
  389. //顶部from数据
  390. oldForm:{},
  391. oldDataList:[],
  392. category: '',
  393. allAmount: 0,
  394. editDisable: false,
  395. }
  396. },
  397. components:{
  398. billDetail
  399. },
  400. created() {
  401. // 人民币金额默认为0
  402. this.$set(this.form,"amount", 0)
  403. getUserInfo().then(res=>{
  404. this.category = res.data.data.billType
  405. if (this.category == 2) {
  406. this.$set(this.form,"overPayment", 0)
  407. this.$set(this.form,"caseOverPayment", 0)
  408. this.option.column.forEach(item => {
  409. if (item.prop == 'caseOverPayment' || item.prop == 'overPayment') {
  410. item.display = true
  411. }
  412. if (item.prop == 'foreignAmount') {
  413. item.display = false
  414. }
  415. })
  416. }
  417. })
  418. //币别
  419. this.getWorkDicts("currency").then(res =>{
  420. this.currencyDic = res.data.data
  421. })
  422. this.detailData.disabled && (this.editDisable = true)
  423. if (this.detailData.id) {
  424. this.buttonLoading = true
  425. this.id = this.detailData.id;//字符串转数字 超长用BigInt
  426. getDetail(this.id).then(res => {
  427. this.afterEcho(res.data.data)
  428. }).finally(()=>{
  429. this.buttonLoading = false
  430. })
  431. }else{
  432. this.form.financeStatus = "待结算"
  433. this.oldForm.financeStatus = "待结算"
  434. }
  435. if(this.detailData.params){
  436. this.buttonLoading = true
  437. getDetails(this.detailData.params).then(res =>{
  438. delete res.data.data.id;
  439. delete res.data.data.sysNo;
  440. delete res.data.data.billType;
  441. res.data.data.itemsList.map((items)=>{
  442. delete items.id ;
  443. items.thisAmount = items.amount
  444. })
  445. this.afterEcho(res.data.data)
  446. }).finally(()=>{
  447. this.buttonLoading = false
  448. })
  449. }
  450. },
  451. mounted() {
  452. },
  453. methods: {
  454. //选择客户
  455. returnBack(corpValue){
  456. this.corpId = corpValue.id
  457. getlistBankBy(corpValue.id).then(res =>{
  458. this.$set(this.form,"bankList",res.data)
  459. })
  460. // 溢付款余额获取
  461. if (this.category == 2) {
  462. getCorpDetail({corpId:corpValue.id}).then(res => {
  463. this.form.overPayment = res.data.data? res.data.data.balanceOverpaymen: 0
  464. })
  465. }
  466. },
  467. //选择卡号
  468. accountNoChange(value){
  469. this.form.bankList.forEach(item =>{
  470. if(item.accountNo == value){
  471. this.$set(this.form,"accountBank",item.accountBank)
  472. this.$set(this.form,"accountName",item.accountName)
  473. }
  474. })
  475. },
  476. selectPurchase(){
  477. if(!this.form.corpId){
  478. this.$message.warning("请先选择客户!")
  479. return
  480. }
  481. this.params = {
  482. corpId: this.form.corpId
  483. }
  484. this.billDetailDialog = true;
  485. },
  486. closeBillDetail(){
  487. this.billDetailDialog = false;
  488. },
  489. importProMent(list){
  490. list.forEach((item,index) =>{
  491. item.accId = item.id;
  492. item.srcOrderno = item.accSysNo
  493. item.billNo = item.srcBillNo
  494. delete item.id;
  495. this.$refs.crud.rowCellAdd(item);
  496. })
  497. this.$set(this.form,'srcOrderno',Array.from(new Set(this.dataList.map(item =>{ if(item.srcOrderno){return item.srcOrderno}}))).join(','))
  498. this.billDetailDialog = false;
  499. },
  500. rowUpdate(row, index, done) {
  501. done(row);
  502. },
  503. rowCell(row,index){
  504. this.$refs.crud.rowCell(row, index)
  505. // row.$cellEdit = !row.$cellEdit
  506. },
  507. rowDel(row,index){
  508. this.dataList.splice(index, 1);
  509. },
  510. searchReset() {
  511. console.log('1')
  512. },
  513. selectionChange() {
  514. console.log('1')
  515. },
  516. confirmSettlement(status){
  517. this.$refs["form"].validate((valid,done) => {
  518. done();
  519. if(valid && this.verificationData()){
  520. this.$confirm("是否确认付费?", "提示", {
  521. confirmButtonText: "确认",
  522. cancelButtonText: "取消",
  523. type: "warning",
  524. }).then(()=>{
  525. for (let i = 0; i < this.dataList.length; i++) {
  526. if (this.dataList[i].thisAmount == null || this.dataList[i].thisAmount == 0) {
  527. return this.$message.error(`第${i + 1}行的本次金额不能为空`);
  528. }
  529. }
  530. this.buttonLoading = true
  531. this.form.billNo = this.dataList.map(item =>{return item.billNo}).join(",")
  532. if (this.category == 2 && this.financeDisabled) {
  533. this.allAmount = 0;
  534. this.form.amount = this.form.amount? this.form.amount: 0
  535. this.dataList.forEach(e => {
  536. this.allAmount = Number(this.allAmount) + Number(e.thisAmount)
  537. })
  538. if (this.allAmount == 0 && this.form.amount == 0) {
  539. return this.$message.error('人民币金额不能为空')
  540. } else if (Number(this.allAmount) > 0 && (Number(this.form.amount) > Number(this.allAmount))) {
  541. this.form.caseOverPayment = 0;
  542. } else if (Number(this.allAmount) > 0 && (Number(this.form.amount) < Number(this.allAmount))) {
  543. this.form.caseOverPayment = Number(this.allAmount) - Number(this.form.amount)
  544. if (Number(this.form.caseOverPayment) > Number(this.form.overPayment)) {
  545. return this.$message.error('溢付款余额不足,无法付费')
  546. }
  547. }
  548. }
  549. const params = {
  550. ...this.form,
  551. billType:"付费",
  552. itemsList:this.dataList
  553. }
  554. if(this.financeButton){
  555. modify(params).then(res =>{
  556. this.$message.success("操作成功!")
  557. this.afterEcho(res.data.data)
  558. }).finally(()=>{
  559. this.buttonLoading = false
  560. })
  561. }else{
  562. cancelModify(params).then(res =>{
  563. this.$message.success("操作成功!")
  564. this.afterEcho(res.data.data)
  565. }).finally(()=>{
  566. this.buttonLoading = false
  567. })
  568. }
  569. })
  570. if(status === true){
  571. this.$emit("goBack");
  572. this.leaveDetailsKey(this.$route.name)
  573. }
  574. }
  575. })
  576. },
  577. saveSettlement(){
  578. this.$refs["form"].validate((valid,done) => {
  579. if(valid){
  580. for (let i = 0; i < this.dataList.length; i++) {
  581. if (this.dataList[i].thisAmount == (null || "")) {
  582. return this.$message.error(`第输入${i + 1}行的本次金额`);
  583. }
  584. }
  585. this.buttonLoading = true
  586. this.form.billNo = this.dataList.map(item =>{return item.billNo}).join(",")
  587. const params = {
  588. ...this.form,
  589. billType:"付费",
  590. itemsList:this.dataList,
  591. settlementType:1
  592. }
  593. // 如果有id解锁,没有跳过
  594. this.form.id && this.unLock({moduleName: 'ff',tableName: 'finance_settlement', billId: this.form.id})
  595. saveOrEdit(params).then(res=>{
  596. this.$message.success("操作成功!")
  597. this.detailData.disabled = true
  598. this.editDisable = true
  599. this.afterEcho(res.data.data)
  600. done();
  601. }).finally(()=>{
  602. this.buttonLoading = false
  603. })
  604. }})
  605. },
  606. async afterEcho(data){
  607. this.form = data;
  608. if (this.category == 2) {
  609. await getCorpDetail({corpId: this.form.corpId}).then(res => {
  610. if (Number(this.form.overPayment) != (res.data.data? res.data.data.balanceOverpaymen: '0.00')) {
  611. this.form.overPayment = res.data.data? res.data.data.balanceOverpaymen: '0.00'
  612. }
  613. })
  614. }
  615. this.oldForm = Object.assign({},this.form);
  616. this.financeDisabled = this.form.financeStatus == "待结算"?true:false;
  617. //审核状态为空时 说明为新单进来
  618. if(this.financeDisabled || !this.editDisable){
  619. this.financeButton = true
  620. this.option.column.forEach(item =>{
  621. if( item.prop === "remark" || item.prop === "settlementDate"){
  622. this.$set(item,"disabled",false)
  623. }else if( item.prop === "createUserName" || item.prop === "createTime" || item.prop === "sysNo" ){
  624. this.$set(item,"disabled",true)
  625. }else{
  626. this.$set(item,"disabled",false)
  627. }
  628. })
  629. }
  630. if (!this.financeDisabled || this.editDisable){
  631. this.financeButton = false
  632. this.option.column.forEach(item =>{
  633. if( item.prop === "remark"){
  634. this.$set(item,"disabled",false)
  635. }else if( item.prop === "createUserName" || item.prop === "createTime" || item.prop === "sysNo"){
  636. this.$set(item,"disabled",true)
  637. }else{
  638. this.$set(item,"disabled",true)
  639. }
  640. })
  641. }
  642. if(data.itemsList){
  643. this.dataList = data.itemsList
  644. this.oldDataList = this.deepClone(data.itemsList)
  645. }
  646. },
  647. verificationData(){
  648. if(contrastObj(this.form,this.oldForm) || contrastList(this.dataList,this.oldDataList)
  649. ){
  650. this.$confirm("数据发生变化,请先提交保存!", "提示", {
  651. confirmButtonText: "保存",
  652. cancelButtonText: "取消",
  653. type: "warning",
  654. }).then(() => {
  655. this.saveSettlement()
  656. }).catch(()=>{
  657. return false
  658. })
  659. }else{
  660. return true
  661. }
  662. },
  663. backToList() {
  664. if(contrastObj(this.form,this.oldForm) || contrastList(this.dataList,this.oldDataList)
  665. ){
  666. this.$confirm("是否保存当前页面?", "提示", {
  667. confirmButtonText: "保存",
  668. cancelButtonText: "取消",
  669. type: "warning",
  670. }).then(() => {
  671. this.saveSettlement()
  672. }).catch(()=>{
  673. this.form.id && this.unLock({moduleName: 'ff',tableName: 'finance_settlement', billId: this.form.id})
  674. this.$emit("goBack");
  675. this.leaveDetailsKey(this.$route.name)
  676. })
  677. }else{
  678. this.form.id && this.unLock({moduleName: 'ff',tableName: 'finance_settlement', billId: this.form.id})
  679. this.$emit("goBack");
  680. this.leaveDetailsKey(this.$route.name)
  681. }
  682. },
  683. // 溢付款更改时
  684. caseOverPaymentChange() {
  685. if (!this.form.caseOverPayment) this.form.caseOverPayment = 0;
  686. if (Number(this.form.caseOverPayment) > Number(this.form.overPayment)) {
  687. this.form.caseOverPayment = 0;
  688. return this.$message.error('本次使用的溢付款不能超过总溢付款')
  689. }
  690. },
  691. editHandle() {
  692. const data = {
  693. moduleName: 'ff',
  694. tableName: 'finance_settlement',
  695. billId: this.form.id,
  696. no: localStorage.getItem('browserID'),
  697. billNo: this.form.srcOrderno
  698. }
  699. this.checkLock(data).then(res => {
  700. if (res.data.code == 200) {
  701. this.onLock(data).then(response => {
  702. })
  703. this.detailData.disabled = false;
  704. this.editDisable = false;
  705. this.buttonLoading = true
  706. getDetail(this.form.id).then(data => {
  707. this.afterEcho(data.data.data)
  708. }).finally(()=>{
  709. this.buttonLoading = false
  710. })
  711. }
  712. }).catch(error => {
  713. }).finally(() => {
  714. this.buttonLoading = false
  715. })
  716. },
  717. }
  718. }
  719. </script>
  720. <style lang="scss" scoped>
  721. ::v-deep .el-form-item {
  722. margin-bottom: 0;
  723. }
  724. .trading-form ::v-deep .el-form-item {
  725. margin-bottom: 8px !important;
  726. }
  727. .required_fields{
  728. color: #F56C6C;
  729. display:inline-block;
  730. width: 7%
  731. }
  732. .upper_right_button{
  733. display: flex;
  734. position: fixed;
  735. right: 12px;
  736. top: 47px;
  737. }
  738. </style>