detailsPage.vue 43 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354
  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>
  9. <div v-if="!auditDisabled" class="upper_right_button">
  10. <el-button type="primary"
  11. size="small"
  12. v-if="viewDisabled"
  13. class="el-button--small-yh "
  14. :loading="buttonLoading"
  15. @click.stop="openEdit()">编辑
  16. </el-button>
  17. <el-dropdown style="padding: 0 6px;line-height: 0">
  18. <el-button
  19. type="primary"
  20. size="small"
  21. :loading="buttonLoading"
  22. :disabled="!form.id || viewDisabled"
  23. >
  24. 审核处理<i class="el-icon-arrow-down el-icon--right"></i>
  25. </el-button>
  26. <el-dropdown-menu slot="dropdown">
  27. <el-dropdown-item :loading="buttonLoading" @click.native="auditCheck">审核数据</el-dropdown-item>
  28. <el-dropdown-item v-if="false" @click.native="">审核进度</el-dropdown-item>
  29. <el-dropdown-item v-if="false">撤销审核</el-dropdown-item>
  30. </el-dropdown-menu>
  31. </el-dropdown>
  32. <el-dropdown style="padding: 0 6px;line-height: 0">
  33. <el-button
  34. type="warning"
  35. :loading="buttonLoading"
  36. :disabled="!form.id || viewDisabled"
  37. size="small"
  38. >
  39. 账单处理<i class="el-icon-arrow-down el-icon--right"></i>
  40. </el-button>
  41. <el-dropdown-menu slot="dropdown">
  42. <el-dropdown-item
  43. @click.native="applySettlement('收费')">生成账单
  44. </el-dropdown-item>
  45. <el-dropdown-item
  46. @click.native="applySettlement('申请')">申请退款
  47. </el-dropdown-item>
  48. <el-dropdown-item
  49. @click.native="openApplicationDialog">查看账单
  50. </el-dropdown-item>
  51. </el-dropdown-menu>
  52. </el-dropdown>
  53. <el-dropdown style="padding: 0 6px;line-height: 0">
  54. <el-button
  55. type="success"
  56. :loading="buttonLoading"
  57. :disabled="!form.id || viewDisabled"
  58. size="small"
  59. >
  60. 业务处理<i class="el-icon-arrow-down el-icon--right"></i>
  61. </el-button>
  62. <el-dropdown-menu slot="dropdown">
  63. <el-dropdown-item
  64. @click.native="createData()">创建单据
  65. </el-dropdown-item>
  66. <el-dropdown-item
  67. @click.native="copyData()">复制单据
  68. </el-dropdown-item>
  69. </el-dropdown-menu>
  70. </el-dropdown>
  71. <div>
  72. <el-button
  73. class="el-button--small-yh"
  74. type="primary"
  75. size="small"
  76. :disabled="disabled || viewDisabled"
  77. :loading="buttonLoading"
  78. @click="editCustomer"
  79. >保存数据
  80. </el-button>
  81. </div>
  82. </div>
  83. <div v-if="auditDisabled" class="upper_right_button">
  84. <el-button type="primary"
  85. size="small"
  86. class="el-button--small-yh"
  87. :loading="buttonLoading"
  88. @click.stop="checkScheduleDialog = true,checkId=detailData.check.srcBillId">
  89. 审批流程
  90. </el-button>
  91. <el-button type="primary"
  92. size="small"
  93. class="el-button--small-yh"
  94. :loading="buttonLoading"
  95. :disabled="buttonDisabled"
  96. @click.stop="checkDialog = true">
  97. 审批
  98. </el-button>
  99. </div>
  100. </div>
  101. <div class="customer-main">
  102. <el-form :model="form" ref="form" label-width="130px">
  103. <containerTitle title="基础信息"></containerTitle>
  104. <basic-container style="margin-bottom: 10px" :showBtn="true">
  105. <el-row>
  106. <el-col v-for="(item, index) in basicData.column" :span="item.span?item.span:8" :key="index">
  107. <el-form-item :label="item.label" :prop="item.prop" :rules="item.rules">
  108. <el-date-picker v-if="item.type === 'datetime'" style="width: 100%;" v-model="form[item.prop]" :disabled="viewDisabled || takeDisabled" size="small" type="date" placeholder="选择日期" value-format="yyyy-MM-dd HH:mm:ss"/>
  109. <el-select v-else-if="item.type === 'select'" style="width: 100%" v-model="form[item.prop]" :disabled="viewDisabled || takeDisabled" size="small" placeholder="请选择" clearable filterable>
  110. <el-option
  111. v-for="(data, index) in item.dicData"
  112. :key="index"
  113. :label="data.label"
  114. :value="data.value"
  115. ></el-option>
  116. </el-select>
  117. <el-select v-else-if="item.prop === 'currency'" style="width: 100%" v-model="form[item.prop]" :disabled="viewDisabled || takeDisabled" size="small" placeholder="请选择" @change="currencyChange" clearable filterable>
  118. <el-option v-for="(item,index) in currencyDic" :key="index" :label="item.dictValue" :disabled="viewDisabled || takeDisabled" :value="item.dictValue"></el-option>
  119. </el-select>
  120. <crop-select
  121. v-else-if="item.prop === 'corpId'"
  122. v-model="form[item.prop]"
  123. corpType="KH"
  124. :disabled="viewDisabled || takeDisabled"
  125. style="width: 100%"
  126. ></crop-select>
  127. <crop-select
  128. v-else-if="item.prop === 'belongToCorpId'"
  129. v-model="form[item.prop]"
  130. :disabled="viewDisabled || takeDisabled"
  131. corpType="GS"
  132. ></crop-select>
  133. <el-input type="age" v-else-if="item.type === 'unit'" v-model="form[item.prop]" @change="downPaymentChange" :disabled="viewDisabled|| takeDisabled " size="small" autocomplete="off" placeholder="请输入">
  134. <template slot="append">%</template>
  135. </el-input>
  136. <el-input type="textarea" v-else-if="(item.prop === 'orderRemark')" v-model="form[item.prop]" :disabled="viewDisabled" size="small" autocomplete="off" placeholder="请输入"></el-input>
  137. <el-input type="age" v-else v-model="form[item.prop]" size="small" :disabled="item.disabled?true:false || viewDisabled" autocomplete="off" placeholder="请输入"></el-input>
  138. </el-form-item>
  139. </el-col>
  140. </el-row>
  141. </basic-container>
  142. <!-- 销售明细-->
  143. <containerTitle title="销售明细"></containerTitle>
  144. <basic-container >
  145. <avue-crud
  146. :option="importInventory"
  147. v-model="importInventoryForm"
  148. :data="importInventoryData"
  149. ref="importInventory"
  150. @row-save="rowSaveList"
  151. @row-update="rowUpdateList"
  152. @row-del="rowDelList"
  153. @selection-change="productSelection"
  154. @saveColumn="saveColumn"
  155. @resetColumn="resetColumn"
  156. >
  157. <template slot-scope="{row}" slot="billNo">
  158. <span v-if="row.$cellEdit" class="required_fields">*</span>
  159. <el-input
  160. v-if="row.$cellEdit"
  161. v-model="row.billNo"
  162. style="width: 90%"
  163. placeholder=" "
  164. size="small"
  165. @change="bingOut(row)"
  166. ></el-input>
  167. <span v-else>{{ row.billNo }}</span>
  168. </template>
  169. <template slot-scope="{row}" slot="orgOrderNo">
  170. <span v-if="row.$cellEdit" class="required_fields">*</span>
  171. <el-select
  172. v-if="row.$cellEdit"
  173. style="width:90% !important;"
  174. v-model="row.orgOrderNo"
  175. placeholder=" "
  176. size="small"
  177. clearable
  178. filterable
  179. >
  180. <el-option
  181. v-for="(item,index) in contractDic"
  182. :key="index"
  183. :label="item.orderNo"
  184. :value="item.orderNo"
  185. ></el-option>
  186. </el-select>
  187. <span v-else>{{ row.orgOrderNo }}</span>
  188. </template>
  189. <template slot="price" slot-scope="{ row }">
  190. <el-input
  191. v-if="row.$cellEdit"
  192. v-model="row.price"
  193. placeholder="请输入"
  194. size="small"
  195. oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
  196. ></el-input>
  197. <!-- @input="priceChange(row)"-->
  198. <span v-else>{{ row.price }}</span>
  199. </template>
  200. <template slot="orderQuantity" slot-scope="{ row }">
  201. <span v-if="row.$cellEdit" class="required_fields">*</span>
  202. <el-input
  203. v-if="row.$cellEdit"
  204. v-model="row.orderQuantity"
  205. style="width: 90%"
  206. placeholder="请输入"
  207. size="small"
  208. oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
  209. ></el-input>
  210. <span v-else>{{ row.orderQuantity | roundNumbers}}</span>
  211. </template>
  212. <template slot="priceCategory" slot-scope="{row,index}">
  213. <span v-if="row.$cellEdit" class="required_fields">*</span>
  214. <goods-select
  215. style="width:90% !important;"
  216. v-if="row.$cellEdit"
  217. v-model="row.priceCategoryNames"
  218. @valueName="(value) => valueName(value,row)"
  219. :configuration="itemConfiguration"
  220. >
  221. </goods-select>
  222. <span v-else>{{ row.priceCategoryNames }}</span>
  223. </template>
  224. <template slot="invoiceWeight" slot-scope="{ row }">
  225. <span v-if="row.$cellEdit" class="required_fields">*</span>
  226. <el-input
  227. v-if="row.$cellEdit"
  228. v-model="row.invoiceWeight"
  229. style="width: 90%"
  230. placeholder="请输入"
  231. size="small"
  232. oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d\d\d\d\d).*$/, "$1.$2")'
  233. @change="totalChange(row.invoiceWeight)"
  234. ></el-input>
  235. <span v-else>{{ row.invoiceWeight }}</span>
  236. </template>
  237. <template slot="billWeight" slot-scope="{ row }">
  238. <el-input
  239. v-if="row.$cellEdit"
  240. v-model="row.billWeight"
  241. placeholder="请输入"
  242. style="width: 90%"
  243. size="small"
  244. oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d\d\d\d\d).*$/, "$1.$2")'
  245. @change="totalChange(row.billWeight)"
  246. ></el-input>
  247. <!-- @input="billWeightChange(row)"-->
  248. <span v-else>{{ row.billWeight }}</span>
  249. </template>
  250. <template slot="amount" slot-scope="{ row }">
  251. <el-input
  252. v-if="row.$cellEdit"
  253. v-model="row.amount"
  254. placeholder="请输入"
  255. size="small"
  256. oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
  257. ></el-input>
  258. <span v-else>{{ row.amount }}</span>
  259. </template>
  260. <template slot="taxRate" slot-scope="{ row }">
  261. <el-input
  262. v-if="row.$cellEdit"
  263. v-model="row.taxRate"
  264. size="small"
  265. oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d\d\d\d\d).*$/, "$1.$2")'
  266. autocomplete="off"
  267. >
  268. <i slot="suffix" style="margin-top:3px;margin-right: 10px;display:inline-block">%</i>
  269. </el-input>
  270. <span v-else>{{ row.taxRate | isPercentage}}</span>
  271. </template>
  272. <template slot="actualQuantity" slot-scope="{ row }">
  273. <span>{{ row.actualQuantity | roundNumbers}}</span>
  274. </template>
  275. <template slot="menuLeft" slot-scope="{ row }">
  276. <el-button type="primary"
  277. icon="el-icon-plus"
  278. size="small"
  279. :disabled=" viewDisabled"
  280. :loading="buttonLoading"
  281. @click="newDetails"
  282. >录入明细</el-button>
  283. <el-button type="warning"
  284. size="small"
  285. :loading="buttonLoading"
  286. :disabled="selection.length < 1 || viewDisabled"
  287. @click="generateShipmentD"
  288. >生成发货单
  289. </el-button>
  290. <!-- <el-button type="info"
  291. size="small"
  292. :disabled="importInventoryData.length < 1"
  293. @click="payeeDialog = true"
  294. >收款记录
  295. </el-button>-->
  296. </template>
  297. <template slot-scope="{row,index}" slot="menu">
  298. <el-button
  299. type="text"
  300. size="small"
  301. icon="el-icon-edit"
  302. :disabled=" viewDisabled"
  303. @click="rowCell(row,index)"
  304. >{{ row.$cellEdit ? '修改完成' : '修改' }}
  305. </el-button>
  306. <el-button
  307. type="text"
  308. size="small"
  309. icon="el-icon-delete"
  310. :disabled="viewDisabled"
  311. @click="rowDelList(row,index)"
  312. >删除
  313. </el-button>
  314. </template>
  315. </avue-crud>
  316. </basic-container>
  317. <fee-info
  318. ref="feeInfo"
  319. @beforeFinance="beforeFinance"
  320. @afterFinance="afterFinance"
  321. :disabled=" viewDisabled"
  322. :orderFeesList="orderFeesList"
  323. :itemType="'采购'"
  324. :optionType="'JK'"
  325. feeUrl=""
  326. :corpId="form.corpId"
  327. />
  328. <upload-file
  329. ref="uploadFile"
  330. title="合同附件"
  331. :disabled=" viewDisabled"
  332. :orderFilesList="orderFilesList || viewDisabled"
  333. delUrl=""
  334. />
  335. </el-form>
  336. </div>
  337. <el-dialog
  338. title="收款记录"
  339. append-to-body
  340. class="el-dialogDeep"
  341. :visible.sync="payeeDialog"
  342. width="60%"
  343. :close-on-click-modal="false"
  344. :destroy-on-close="true"
  345. :close-on-press-escape="false"
  346. v-dialog-drag>
  347. <basic-container>
  348. <avue-crud :option="importInventory"
  349. :table-loading="payeeLoading"
  350. :data="payeeData"
  351. ref="applicationCrud"
  352. @refresh-change="payeeRefreshChange"
  353. :page.sync="payeePage"
  354. @on-load="payeeOnLoad"></avue-crud>
  355. </basic-container>
  356. <span slot="footer" class="dialog-footer">
  357. <el-button @click="payeeDialog = false ">关 闭</el-button>
  358. </span>
  359. </el-dialog>
  360. <el-dialog
  361. append-to-body
  362. class="el-dialogDeep"
  363. :visible.sync="applySettlementDialog"
  364. width="60%"
  365. :close-on-click-modal="false"
  366. :destroy-on-close="true"
  367. :close-on-press-escape="false"
  368. v-dialog-drag
  369. >
  370. <apply-payment
  371. :billUrl="billUrl"
  372. :billType="billType"
  373. :billData="billData"
  374. @choceFun="choceFun"
  375. >
  376. </apply-payment>
  377. </el-dialog>
  378. <el-dialog
  379. append-to-body
  380. title="账单"
  381. class="el-dialogDeep"
  382. :visible.sync="financialAccountDialog"
  383. width="70%"
  384. :close-on-click-modal="false"
  385. :destroy-on-close="true"
  386. :close-on-press-escape="false"
  387. v-dialog-drag
  388. >
  389. <financial-account
  390. :billId="form.id"
  391. :billType="billType"
  392. :billData="billData"
  393. :belongCompany="form.belongToCorpId"
  394. @choceFun="choceFun"
  395. >
  396. </financial-account>
  397. </el-dialog>
  398. <el-dialog
  399. title="收款记录"
  400. append-to-body
  401. class="el-dialogDeep"
  402. :visible.sync="applicationDialog"
  403. width="60%"
  404. :close-on-click-modal="false"
  405. :destroy-on-close="true"
  406. :close-on-press-escape="false"
  407. v-dialog-drag
  408. >
  409. <bill-application
  410. :billId="form.id"
  411. @choceApplication="choceApplication"
  412. >
  413. </bill-application>
  414. </el-dialog>
  415. <el-dialog
  416. append-to-body
  417. title="审批进度"
  418. class="el-dialogDeep"
  419. :visible.sync="checkScheduleDialog"
  420. width="40%"
  421. :close-on-click-modal="false"
  422. :destroy-on-close="true"
  423. :close-on-press-escape="false"
  424. v-dialog-drag
  425. >
  426. <check-schedule
  427. :checkId="form.id"
  428. :batchNo="batchNo"
  429. @choceScheduleFun="choceScheduleFun"
  430. >
  431. </check-schedule>
  432. </el-dialog>
  433. <el-dialog
  434. append-to-body
  435. title="审批"
  436. class="el-dialogDeep"
  437. :visible.sync="checkDialog"
  438. width="50%"
  439. :close-on-click-modal="false"
  440. :destroy-on-close="true"
  441. :close-on-press-escape="false"
  442. v-dialog-drag
  443. >
  444. <check
  445. :checkData="detailData.check"
  446. :checkDetail="false"
  447. :idList="[]"
  448. @choceCheckFun="choceCheckFun"
  449. >
  450. </check>
  451. </el-dialog>
  452. </div>
  453. </template>
  454. <script>
  455. import importInventory from './config/importInventory.json';
  456. import {detailSaleList,
  457. submitData,
  458. goodsListRemove,
  459. getOrgOrderNo
  460. } from "@/api/importTrade/salesContract"
  461. import feeInfo from "@/components/fee-info/main";
  462. import uploadFile from "@/components/upload-file/main";
  463. import { contrastObj,contrastList } from "@/util/contrastData";
  464. import _ from "lodash";
  465. import { isPercentage,roundNumbers } from "@/util/validate";
  466. //账单组件
  467. import financialAccount from "../../../components/finance/financialAccount";
  468. import ApplyPayment from "../../../components/finance/applyPayment";
  469. import billApplication from "@/components/bill/billApplication";
  470. import checkSchedule from "../../../components/check/checkSchedule";
  471. import check from "@/components/check/check";
  472. import { pleaseCheck } from "@/api/basicData/configuration"
  473. export default {
  474. name: "detailsPage",
  475. props: {
  476. detailData: {
  477. type: Object
  478. }
  479. },
  480. filters: {
  481. isPercentage(val) {
  482. return isPercentage(val);
  483. },
  484. roundNumbers(val){
  485. return roundNumbers(val);
  486. }
  487. },
  488. components: {
  489. ApplyPayment,
  490. feeInfo,
  491. financialAccount,
  492. uploadFile,
  493. billApplication,
  494. checkSchedule,
  495. check
  496. },
  497. data() {
  498. return {
  499. disabled: false,
  500. buttonLoading:false,
  501. dialogCommodity: false,
  502. applySettlementDialog:false,
  503. financialAccountDialog:false,
  504. applicationDialog:false,
  505. viewDisabled:false,
  506. takeDisabled:false,
  507. buttonDisabled:false,
  508. checkScheduleDialog:false,//审批窗口
  509. auditDisabled:false,//显示审批按钮还是正常按钮
  510. checkDialog:false,//审批窗口
  511. approverDisabled:false,//是否审批过了
  512. batchNo:'',//审批流程
  513. lockData:{},
  514. form: {},
  515. orderFeesList:[],
  516. orderFilesList:[],
  517. currencyDic:[],
  518. contractDic:[],
  519. selectKind:-1,
  520. billUrl:"",
  521. billType:"",
  522. billData:{},
  523. itemConfiguration:{
  524. multipleChoices:false,
  525. multiple:false,
  526. disabled:false,
  527. searchShow:true,
  528. collapseTags:false,
  529. placeholder:'请点击右边按钮选择',
  530. dicData:[]
  531. },
  532. // 基础信息
  533. basicData: {
  534. column: [
  535. {
  536. label: '系统号',
  537. prop: 'sysNo',
  538. disabled:true,
  539. rules: [
  540. {
  541. required: false,
  542. message: ' ',
  543. trigger: 'blur'
  544. }
  545. ]
  546. },
  547. {
  548. label: '客户名称',
  549. span:16,
  550. prop: 'corpId',
  551. rules: [
  552. {
  553. required: true,
  554. message: ' ',
  555. trigger: 'blur'
  556. }
  557. ]
  558. },
  559. {
  560. label: '合同号',
  561. prop: 'orderNo',
  562. rules: [
  563. {
  564. required: true,
  565. message: ' ',
  566. trigger: 'blur'
  567. }
  568. ]
  569. },
  570. {
  571. label: '所属公司',
  572. prop: 'belongToCorpId',
  573. span: 16,
  574. dicData: [],
  575. rules: [
  576. {
  577. required: true,
  578. message: ' ',
  579. trigger: 'blur'
  580. }
  581. ]
  582. },
  583. {
  584. label: '合同日期',
  585. prop: 'businesDate',
  586. type:'datetime',
  587. data: [],
  588. rules: [
  589. {
  590. required: false,
  591. message: ' ',
  592. trigger: 'blur'
  593. }
  594. ]
  595. },
  596. {
  597. label: '合同金额',
  598. prop: 'orderAmount',
  599. rules: [
  600. {
  601. pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  602. message: ' ',
  603. trigger: 'blur'
  604. }
  605. ]
  606. },
  607. {
  608. label: '合同重量(吨)',
  609. prop: 'contractWeight',
  610. rules: [
  611. {
  612. required: false,
  613. message: ' ',
  614. trigger: 'blur'
  615. }
  616. ]
  617. },
  618. {
  619. label: '销售单价',
  620. prop: 'salesPrice',
  621. rules: [
  622. {
  623. required: false,
  624. message: ' ',
  625. trigger: 'blur'
  626. }
  627. ]
  628. },
  629. {
  630. label: '币别',
  631. prop: 'currency',
  632. }, {
  633. label: '汇率',
  634. prop: 'exchangeRate',
  635. rules: [
  636. {
  637. required: false,
  638. message: ' ',
  639. trigger: 'blur'
  640. }
  641. ]
  642. },
  643. {
  644. label: '客户首付日期',
  645. prop: 'advanceCollectionDate',
  646. type: 'datetime',
  647. rules: [
  648. {
  649. required: false,
  650. message: ' ',
  651. trigger: 'blur'
  652. }
  653. ]
  654. },
  655. {
  656. label: '首付比例',
  657. type:"unit",
  658. prop: 'downPayment',
  659. rules: [
  660. {
  661. required: false,
  662. message: ' ',
  663. trigger: 'blur'
  664. }
  665. ]
  666. },
  667. {
  668. label: '首付金额',
  669. prop: 'advancePayment',
  670. rules: [
  671. {
  672. pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  673. message: ' ',
  674. trigger: 'blur'
  675. }
  676. ]
  677. },
  678. {
  679. label: '已收人民币金额',
  680. prop: 'settlmentAmount',
  681. disabled: true,
  682. },
  683. {
  684. label: '已收外币金额',
  685. prop: 'foreignSettlmentAmount',
  686. disabled: true,
  687. },
  688. {
  689. label: '计划交期',
  690. prop: 'plannedDeliveryDate',
  691. type: 'datetime',
  692. },
  693. {
  694. label: '已退人民币金额',
  695. prop: 'refundSettlmentAmount',
  696. disabled: true,
  697. },
  698. {
  699. label: '已退外币金额',
  700. prop: 'refundForeignSettlmentAmount',
  701. disabled: true,
  702. },
  703. {
  704. label: '业务员',
  705. prop: 'salesName',
  706. dicData: [],
  707. },
  708. {
  709. label: '发票重量',
  710. prop: 'invoiceWeight',
  711. disabled: true,
  712. },
  713. {
  714. label: '码单重量',
  715. prop: 'billWeight',
  716. disabled: true,
  717. },
  718. {
  719. label: '开票单位',
  720. prop: 'vbrk',
  721. },
  722. {
  723. label: '包装要求',
  724. prop: 'packageRemarks',
  725. rules: [
  726. {
  727. required: false,
  728. message: ' ',
  729. trigger: 'blur'
  730. }
  731. ]
  732. },
  733. {
  734. label: '提成标准',
  735. prop: 'commissionRate',
  736. rules: [
  737. {
  738. required: false,
  739. message: ' ',
  740. trigger: 'blur'
  741. }
  742. ]
  743. },{
  744. label: "备注",
  745. span: 24,
  746. prop: "orderRemark",
  747. mock: {
  748. type: 'county'
  749. }
  750. }
  751. ],
  752. },
  753. //收款记录
  754. payeeDialog:false,
  755. payeeLoading:false,
  756. payeeData:[],
  757. payeePage:{
  758. pageSize: 10,
  759. currentPage: 1,
  760. total: 0
  761. },
  762. // 导入库存配置
  763. importInventory: {},
  764. importInventoryForm: {},
  765. importInventoryData: [],
  766. selection: [],
  767. //新旧数据对比
  768. oldForm:{},
  769. oldInventoryData:[],
  770. oldFeesList:[],
  771. oldFilesList:[],
  772. }
  773. },
  774. async created() {
  775. this.importInventory = await this.getColumnData(this.getColumnName(39), importInventory);
  776. //币别
  777. this.getWorkDicts("currency").then(res =>{
  778. this.currencyDic = res.data.data
  779. if(!this.detailData.id){
  780. this.$set(this.form,"currency","USD")
  781. this.currencyChange("USD")
  782. }
  783. })
  784. if(this.detailData.view){
  785. this.viewDisabled = true
  786. }
  787. if (this.detailData.id) {
  788. this.buttonLoading = true;
  789. let id = this.detailData.id.replace(/\"/g, "")
  790. detailSaleList(id).then(res => {
  791. this.afterEcho(res.data.data)
  792. }).finally(()=>{
  793. this.buttonLoading = false
  794. })
  795. }else{
  796. //采购日期默认当天
  797. let date = new Date();
  798. let strDate = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
  799. this.$set(this.form,"businesDate",strDate)
  800. }
  801. if(this.detailData.check){
  802. //待审批状态才可选择通过或者驳回
  803. if(this.detailData.check.auditStatus === "S"){
  804. this.buttonDisabled = false
  805. }
  806. this.viewDisabled = true //查看审批不能编辑
  807. this.auditDisabled = true
  808. this.buttonLoading = true;
  809. this.batchNo = this.detailData.check.batchNo
  810. let id = this.detailData.check.srcBillId.replace(/\"/g, "")
  811. detailSaleList(id).then(res => {
  812. this.afterEcho(res.data.data)
  813. }).finally(()=>{
  814. this.buttonLoading = false;
  815. })
  816. }
  817. },
  818. methods: {
  819. valueName(value,row){
  820. this.$set(row,"priceCategory",value.id)
  821. },
  822. //首付比例 带出金额
  823. downPaymentChange(){
  824. if(this.form.orderAmount){
  825. this.$set(this.form,"advancePayment",_.multiply(this.form.orderAmount,(this.form.downPayment*0.01)).toFixed(2))
  826. }
  827. },
  828. //合计
  829. totalChange(){
  830. let invoiceList = this.importInventoryData.map(item => {
  831. if(item.invoiceWeight){
  832. return parseFloat(item.invoiceWeight);
  833. }else return 0
  834. });
  835. let billList = this.importInventoryData.map(item => {
  836. if(item.billWeight){
  837. return parseFloat(item.billWeight);
  838. }else return 0
  839. });
  840. this.$set(this.form,"invoiceWeight", invoiceList.reduce((n,m) => n + m))
  841. this.$set(this.form,"billWeight", billList.reduce((n,m) => n + m))
  842. },
  843. //带出汇率
  844. currencyChange(value){
  845. this.currencyDic.forEach(item =>{
  846. if(item.dictValue === value){
  847. this.$set(this.form,"exchangeRate",item.remark)
  848. }
  849. })
  850. },
  851. //单价
  852. priceChange(row) {
  853. if (row.price && row.billWeight) {
  854. row.amount = _.multiply(row.billWeight, row.price).toFixed(2);
  855. }
  856. },
  857. //数量
  858. billWeightChange(row) {
  859. if (row.price && row.billWeight) {
  860. row.amount = _.multiply(row.billWeight, row.price).toFixed(2);
  861. }
  862. },
  863. //提单号带出合同号
  864. bingOut(row){
  865. getOrgOrderNo(row.billNo).then(res =>{
  866. if(res.data.length != 0){
  867. this.contractDic = res.data;
  868. row.orgOrderNo = res.data[0].orderNo
  869. row.itemId = res.data[0].itemId;
  870. row.priceCategoryNames = res.data[0].itemName[0].cname
  871. row.priceCategory = res.data[0].itemName[0].id
  872. row.cntrNo = res.data[0].cntrNo
  873. }else{
  874. this.$message.warning("无此提单号记录!");
  875. this.contractDic = [];
  876. row.orgOrderNo = ''
  877. row.itemId = ''
  878. row.priceCategoryNames = ''
  879. row.priceCategory = ''
  880. }
  881. }).catch(()=>{
  882. row.orgOrderNo = ''
  883. })
  884. },
  885. //打开申请记录
  886. openApplicationDialog(){
  887. this.applicationDialog = true
  888. },
  889. //关闭申记录
  890. choceApplication(){
  891. this.applicationDialog = false
  892. },
  893. //生成账单数据
  894. beforeBillData(bool,type){
  895. this.billType = type
  896. this.billData = {
  897. srcOrderno:this.form.orderNo,
  898. itemType:"销售",
  899. optionType:'JK',
  900. billNoList: this.importInventoryData.map(item =>{return item.billNo}),
  901. amount:this.form.orderAmount,
  902. belongToCorpId:this.form.belongToCorpId,
  903. corpsName:this.form.corpName,
  904. corpId:this.form.corpId,
  905. price:this.form.salesPrice,
  906. accDate:this.form.businesDate,
  907. currency:this.form.currency,
  908. exchangeRate:this.form.exchangeRate,
  909. srcParentId:this.form.id,
  910. }
  911. if(type){ //申请货款
  912. this.billData.srcId = -1
  913. }
  914. },
  915. //费用明细回调验证
  916. beforeFinance(feesData,callback){
  917. let params = {}
  918. if(contrastObj(this.form,this.oldForm) || contrastList(this.importInventoryData,this.oldInventoryData)
  919. || contrastList(feesData,this.oldFeesList) || contrastList(this.orderFilesList,this.oldFilesList)
  920. ){
  921. this.$confirm("数据发生变化,请先提交保存?", {
  922. confirmButtonText: "保存",
  923. cancelButtonText: "取消",
  924. type: "warning"
  925. }).then(() => {
  926. this.editCustomer();
  927. }).finally(()=>{
  928. params.valid = false
  929. callback(params)
  930. })
  931. }else{
  932. params.valid = true
  933. params.parentId = this.form.id
  934. params.srcOrderno = this.form.orderNo
  935. callback(params)
  936. }
  937. },
  938. //生成账单之后需要更新明细列表的属性
  939. afterFinance(){
  940. detailSaleList(this.form.id).then(res => {
  941. this.afterEcho(res.data.data)
  942. })
  943. },
  944. //请核
  945. auditCheck(){
  946. if(this.verificationData()){
  947. this.$confirm("确定审核此订单?", {
  948. confirmButtonText: "确定",
  949. cancelButtonText: "取消",
  950. type: "warning"
  951. }).then(()=>{
  952. this.buttonLoading = true
  953. const data = {
  954. id : this.form.id,
  955. checkType: 'xsqh',
  956. url: '/salesManagement/salesContract/index',
  957. pageStatus:"this.$store.getters.entranceXsStatus",
  958. pageLabel:"销售订单",
  959. checkFlag: 2,
  960. }
  961. pleaseCheck(data).then(res=>{
  962. if(res.data.success){
  963. this.$message.success("操作成功!")
  964. this.viewDisabled = true
  965. this.approverDisabled = true
  966. }
  967. })
  968. }).finally(()=>{
  969. this.buttonLoading = false
  970. })
  971. }
  972. },
  973. //财务操作
  974. applySettlement(type){
  975. if(this.verificationData()){
  976. this.beforeBillData(true,type)
  977. this.financialAccountDialog = true;
  978. }
  979. },
  980. choceFun(){
  981. this.financialAccountDialog = false
  982. },
  983. //刷新
  984. payeeRefreshChange(){
  985. console.log(1)
  986. },
  987. //申请记录
  988. payeeOnLoad(){
  989. console.log(1)
  990. },
  991. //商品选中触发
  992. productSelection(selection){
  993. this.selection = selection
  994. },
  995. //生成发货单
  996. generateShipmentD(){
  997. if(this.verificationData()) {
  998. if (this.$store.getters.goStatus) {
  999. this.$alert("发货单已存在,请保存发货单再进行操作", "温馨提示", {
  1000. confirmButtonText: "确定",
  1001. type: 'warning',
  1002. callback: action => {
  1003. }
  1004. });
  1005. } else {
  1006. const params = {
  1007. id:this.form.id,
  1008. orderItemIds:this.selection.map(i=>{return i.id})
  1009. }
  1010. this.$router.push({
  1011. path: "/importTrade/invoice/index",
  1012. query: {form: params},
  1013. });
  1014. this.$router.$avueRouter.closeTag('/importTrade/invoice/index');
  1015. }
  1016. }
  1017. },
  1018. //录入明细
  1019. newDetails(){
  1020. const params = {
  1021. price:this.form.salesPrice,
  1022. exRate:this.form.exchangeRate
  1023. }
  1024. this.$refs.importInventory.rowCellAdd(params);
  1025. },
  1026. //商品编辑
  1027. rowCell(row, index) {
  1028. this.$refs.importInventory.rowCell(row, index)
  1029. },
  1030. //新增明细保存触发
  1031. rowSaveList(row, done, loading){
  1032. done()
  1033. },
  1034. //修改明细触发
  1035. rowUpdateList(row, index, done, loading) {
  1036. done(row);
  1037. },
  1038. //关闭审核
  1039. choceCheckFun(){
  1040. this.checkDialog = false;
  1041. },
  1042. choceScheduleFun(){
  1043. this.checkScheduleDialog = false
  1044. },
  1045. //删除商品明细触发
  1046. rowDelList(row, index, donerowDel) {
  1047. this.$confirm("确定将选择数据删除?", {
  1048. confirmButtonText: "确定",
  1049. cancelButtonText: "取消",
  1050. type: "warning"
  1051. }).then(() => {
  1052. if (row.id){
  1053. goodsListRemove(row.id).then(res=>{
  1054. this.$message({
  1055. type: "success",
  1056. message: "操作成功!"
  1057. });
  1058. this.importInventoryData.splice(index, 1);
  1059. })
  1060. }else {
  1061. this.$message({
  1062. type: "success",
  1063. message: "操作成功!"
  1064. });
  1065. this.importInventoryData.splice(index, 1);
  1066. }
  1067. }).finally(()=>{
  1068. this.totalChange()
  1069. })
  1070. },
  1071. //修改
  1072. editCustomer(status) {
  1073. this.$refs["form"].validate((valid) => {
  1074. if (valid) {
  1075. let orderFeesList = this.$refs.feeInfo.submitData();
  1076. for (let i = 0; i < orderFeesList.length; i++) {
  1077. if (orderFeesList[i].corpId == null) {
  1078. return this.$message.error(`请输入第${i + 1}行的结算中心`);
  1079. }
  1080. if (orderFeesList[i].price == 0) {
  1081. return this.$message.error(`请正确输入第${i + 1}行的价格`);
  1082. }
  1083. if (orderFeesList[i].orderQuantity == 0) {
  1084. return this.$message.error(`请正确输入第${i + 1}行的件数`);
  1085. }
  1086. }
  1087. let orderUpLoadList = this.$refs.uploadFile.submitData();
  1088. for (let j = 0; j < this.importInventoryData.length; j++) {
  1089. if (this.importInventoryData[j].billNo === (null || "")) {
  1090. return this.$message.error(`请输入销售明细第${j + 1}行的提单号`);
  1091. }
  1092. if (this.importInventoryData[j].orgOrderNo === (null || "")) {
  1093. return this.$message.error(`请输入销售明细第${j + 1}行的合同号`);
  1094. }
  1095. if (this.importInventoryData[j].priceCategory === (null || "")) {
  1096. return this.$message.error(`请输入销售明细第${j + 1}行的货品物种`);
  1097. }
  1098. if (this.importInventoryData[j].orderQuantity === (null || "")) {
  1099. return this.$message.error(`请输入销售明细第${j + 1}行的件数`);
  1100. }
  1101. if (this.importInventoryData[j].invoiceWeight === (null || "")) {
  1102. return this.$message.error(`请输入销售明细第${j + 1}行的发票重量`);
  1103. }
  1104. }
  1105. this.buttonLoading = true;
  1106. if(this.importInventoryData.length !== 0){
  1107. //提单号
  1108. this.form.billNo =Array.from(new Set(this.importInventoryData.map(item =>{return item.billNo}))).join(",")
  1109. //发票金额合计 存入主表
  1110. let invoiceList = this.importInventoryData.map(item => {
  1111. if(item.amount){
  1112. return parseFloat(item.amount);
  1113. }else return 0
  1114. });
  1115. this.form.invoiceAmount = invoiceList.reduce((n,m) => n + m)
  1116. }
  1117. let submitDto = {
  1118. ...this.form,
  1119. orderItemsList: this.importInventoryData,
  1120. orderFeesList: orderFeesList,
  1121. orderUpLoadList:orderUpLoadList,
  1122. };
  1123. submitData(submitDto).then(res => {
  1124. if(res.data.success){
  1125. this.$message.success("操作成功!")
  1126. detailSaleList(res.data.data.id).then(res => {
  1127. this.afterEcho(res.data.data)
  1128. }).finally(()=>{
  1129. this.buttonLoading = false
  1130. })
  1131. }
  1132. })
  1133. if(status === true){
  1134. this.$emit("goBack");
  1135. }
  1136. } else {
  1137. return false;
  1138. }
  1139. });
  1140. },
  1141. afterEcho(data){
  1142. this.form = data;
  1143. this.oldForm = Object.assign({},data);
  1144. this.importInventoryData = data.orderItemsList
  1145. //销售明细列表如果存在已发数量或重量不为0 则此订单已发货 禁止编辑主要参数
  1146. this.takeDisabled = this.importInventoryData.map(item =>{if(item.actualQuantity != 0 || item.actualWeight != 0) return true}).some(item => {return item == true})
  1147. this.basicData.column.forEach(item =>{
  1148. if(item.prop == "advanceCollectionDate" || item.prop == "orderAmount" || item.prop == "salesPrice" || item.prop == "exchangeRate" || item.prop == "advancePayment" || item.prop == "orderNo" || item.prop == "contractWeight"){
  1149. item.disabled = this.takeDisabled
  1150. }
  1151. })
  1152. if(data.orderItemsList){
  1153. this.importInventoryData = data.orderItemsList
  1154. this.oldInventoryData = this.deepClone(data.orderItemsList)
  1155. }
  1156. if(data.orderFeesList){
  1157. this.orderFeesList = data.orderFeesList
  1158. this.oldFeesList = this.deepClone(data.orderFeesList)
  1159. }
  1160. if(data.orderFilesList){
  1161. this.orderFilesList = data.orderFilesList
  1162. this.oldFilesList = this.deepClone(data.orderFilesList)
  1163. }
  1164. if(this.detailData.status === 'copy'){
  1165. this.copyData()
  1166. }
  1167. },
  1168. //验证数据
  1169. verificationData(){
  1170. this.orderFeesList = this.$refs.feeInfo.submitData();
  1171. if(contrastObj(this.form,this.oldForm) || contrastList(this.importInventoryData,this.oldInventoryData)
  1172. || contrastList(this.orderFeesList,this.oldFeesList) || contrastList(this.orderFilesList,this.oldFilesList)
  1173. ){
  1174. this.$confirm("数据发生变化,请先提交保存!", "提示", {
  1175. confirmButtonText: "保存",
  1176. cancelButtonText: "取消",
  1177. type: "warning",
  1178. }).then(() => {
  1179. this.editCustomer()
  1180. }).catch(()=>{
  1181. return false
  1182. })
  1183. }else{
  1184. return true
  1185. }
  1186. },
  1187. createData(){
  1188. if(this.verificationData()){
  1189. this.$confirm("确定创建新的单据吗?", "提示", {
  1190. confirmButtonText: "保存",
  1191. cancelButtonText: "取消",
  1192. type: "warning",
  1193. }).then(() => {
  1194. this.form = {}
  1195. this.oldForm = {}
  1196. this.importInventoryData = []
  1197. this.oldInventoryData = []
  1198. this.orderFeesList = []
  1199. this.oldFeesList = []
  1200. this.orderFilesList = []
  1201. this.oldFilesList = []
  1202. })
  1203. }
  1204. },
  1205. //复制单据
  1206. copyData(){
  1207. if(this.verificationData()){
  1208. this.takeDisabled = false
  1209. this.basicData.column.forEach(item =>{
  1210. if(item.prop == "advanceCollectionDate" || item.prop == "orderAmount" || item.prop == "salesPrice" || item.prop == "exchangeRate" || item.prop == "advancePayment" || item.prop == "orderNo" || item.prop == "contractWeight"){
  1211. item.disabled = this.takeDisabled
  1212. }
  1213. })
  1214. delete this.form.id //删除id
  1215. this.$set(this.form,"sysNo","")//系统编号
  1216. this.$set(this.form,"orderNo","")//合同号
  1217. this.$set(this.form,"settlmentAmount","")//已付人民币
  1218. this.$set(this.form,"foreignSettlmentAmount","")//已付外币
  1219. this.$set(this.form,"refundSettlmentAmount","")//已退人民币
  1220. this.$set(this.form,"refundForeignSettlmentAmount","")//已退外币
  1221. this.importInventoryData.forEach(item =>{
  1222. delete item.id //删除id
  1223. item.actualQuantity = "" //已收件数
  1224. item.actualWeight = "" //已收发票
  1225. })
  1226. this.orderFeesList.forEach(item =>{
  1227. delete item.id //删除id
  1228. })
  1229. this.oldForm = {}
  1230. this.oldInventoryData = []
  1231. this.oldFeesList = []
  1232. this.oldFilesList = []
  1233. this.$message.success("复制成功!")
  1234. }
  1235. },
  1236. async openEdit() {
  1237. if(this.approverDisabled || this.form.status != 0){ //是否审批
  1238. this.$message.warning("此订单已提交审批,不可编辑!")
  1239. return
  1240. }
  1241. //标签页保存key
  1242. this.inDetailsKey(this.$route.name,this.detailData.lockData);
  1243. //单据是否锁定
  1244. if(!await this.checkLocks(this.detailData.lockData)){
  1245. this.onLock(this.detailData.lockData); //上锁
  1246. this.viewDisabled = false
  1247. }else{
  1248. this.$message.warning('此单据已被锁定,请稍后再进行操作!')
  1249. }
  1250. },
  1251. backToList() {
  1252. //如果单据已被锁定 并且编辑按钮存在 则直接返回
  1253. if(this.viewDisabled || !this.detailData.lockData){
  1254. this.$emit("goBack");
  1255. return
  1256. }
  1257. this.orderFeesList = this.$refs.feeInfo.submitData();
  1258. if(contrastObj(this.form,this.oldForm) || contrastList(this.importInventoryData,this.oldInventoryData)
  1259. || contrastList(this.orderFeesList,this.oldFeesList) || contrastList(this.orderFilesList,this.oldFilesList)
  1260. ){
  1261. this.$confirm("是否保存当前页面?", "提示", {
  1262. confirmButtonText: "保存",
  1263. cancelButtonText: "取消",
  1264. type: "warning",
  1265. }).then(() => {
  1266. this.editCustomer(true)
  1267. }).catch(()=>{
  1268. this.$emit("goBack");
  1269. }).finally(()=>{
  1270. if(this.form.id){
  1271. this.unLock(this.detailData.lockData);
  1272. this.leaveDetailsKey(this.$route.name);
  1273. }
  1274. })
  1275. }else{
  1276. this.$emit("goBack");
  1277. if(this.form.id){
  1278. this.unLock(this.detailData.lockData);
  1279. this.leaveDetailsKey(this.$route.name);
  1280. }
  1281. }
  1282. },
  1283. //列保存触发
  1284. async saveColumn() {
  1285. const inSave = await this.saveColumnData(
  1286. this.getColumnName(39),
  1287. this.importInventory
  1288. );
  1289. if (inSave) {
  1290. this.$message.success("保存成功");
  1291. //关闭窗口
  1292. this.$refs.importInventory.$refs.dialogColumn.columnBox = false;
  1293. }
  1294. },
  1295. async resetColumn() {
  1296. const inSave = await this.delColumnData(
  1297. this.getColumnName(39),
  1298. importInventory
  1299. );
  1300. if (inSave) {
  1301. this.$message.success("重置成功");
  1302. this.importInventory = importInventory;
  1303. //关闭窗口
  1304. this.$refs.importInventory.$refs.dialogColumn.columnBox = false;
  1305. }
  1306. },
  1307. },
  1308. }
  1309. </script>
  1310. <style scoped lang="scss">
  1311. .required_fields{
  1312. color: #F56C6C;
  1313. display:inline-block;
  1314. width: 7%
  1315. }
  1316. .upper_right_button{
  1317. display: flex;
  1318. position: fixed;
  1319. right: 12px;
  1320. top: 47px;
  1321. }
  1322. ::v-deep .el-form-item {
  1323. margin-bottom: 0;
  1324. }
  1325. ::v-deep .el-form-item__content{
  1326. line-height: 32px;
  1327. }
  1328. </style>