detailsPage.vue 44 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357
  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 || checkDisabled"
  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 || checkDisabled"
  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 || checkDisabled"
  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 || checkDisabled"
  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. checkDisabled:false,
  506. viewDisabled:false,
  507. takeDisabled:false,
  508. buttonDisabled:false,
  509. checkScheduleDialog:false,//审批窗口
  510. auditDisabled:false,//显示审批按钮还是正常按钮
  511. checkDialog:false,//审批窗口
  512. approverDisabled:false,//是否审批过了
  513. batchNo:'',//审批流程
  514. lockData:{},
  515. form: {},
  516. orderFeesList:[],
  517. orderFilesList:[],
  518. currencyDic:[],
  519. contractDic:[],
  520. selectKind:-1,
  521. billUrl:"",
  522. billType:"",
  523. billData:{},
  524. itemConfiguration:{
  525. multipleChoices:false,
  526. multiple:false,
  527. disabled:false,
  528. searchShow:true,
  529. collapseTags:false,
  530. placeholder:'请点击右边按钮选择',
  531. dicData:[]
  532. },
  533. // 基础信息
  534. basicData: {
  535. column: [
  536. {
  537. label: '系统号',
  538. prop: 'sysNo',
  539. disabled:true,
  540. rules: [
  541. {
  542. required: false,
  543. message: ' ',
  544. trigger: 'blur'
  545. }
  546. ]
  547. },
  548. {
  549. label: '客户名称',
  550. span:16,
  551. prop: 'corpId',
  552. rules: [
  553. {
  554. required: true,
  555. message: ' ',
  556. trigger: 'blur'
  557. }
  558. ]
  559. },
  560. {
  561. label: '合同号',
  562. prop: 'orderNo',
  563. rules: [
  564. {
  565. required: true,
  566. message: ' ',
  567. trigger: 'blur'
  568. }
  569. ]
  570. },
  571. {
  572. label: '所属公司',
  573. prop: 'belongToCorpId',
  574. span: 16,
  575. dicData: [],
  576. rules: [
  577. {
  578. required: true,
  579. message: ' ',
  580. trigger: 'blur'
  581. }
  582. ]
  583. },
  584. {
  585. label: '合同日期',
  586. prop: 'businesDate',
  587. type:'datetime',
  588. data: [],
  589. rules: [
  590. {
  591. required: false,
  592. message: ' ',
  593. trigger: 'blur'
  594. }
  595. ]
  596. },
  597. {
  598. label: '合同金额',
  599. prop: 'orderAmount',
  600. rules: [
  601. {
  602. pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  603. message: ' ',
  604. trigger: 'blur'
  605. }
  606. ]
  607. },
  608. {
  609. label: '合同重量(吨)',
  610. prop: 'contractWeight',
  611. rules: [
  612. {
  613. required: false,
  614. message: ' ',
  615. trigger: 'blur'
  616. }
  617. ]
  618. },
  619. {
  620. label: '销售单价',
  621. prop: 'salesPrice',
  622. rules: [
  623. {
  624. required: false,
  625. message: ' ',
  626. trigger: 'blur'
  627. }
  628. ]
  629. },
  630. {
  631. label: '币别',
  632. prop: 'currency',
  633. }, {
  634. label: '汇率',
  635. prop: 'exchangeRate',
  636. rules: [
  637. {
  638. required: false,
  639. message: ' ',
  640. trigger: 'blur'
  641. }
  642. ]
  643. },
  644. {
  645. label: '客户首付日期',
  646. prop: 'advanceCollectionDate',
  647. type: 'datetime',
  648. rules: [
  649. {
  650. required: false,
  651. message: ' ',
  652. trigger: 'blur'
  653. }
  654. ]
  655. },
  656. {
  657. label: '首付比例',
  658. type:"unit",
  659. prop: 'downPayment',
  660. rules: [
  661. {
  662. required: false,
  663. message: ' ',
  664. trigger: 'blur'
  665. }
  666. ]
  667. },
  668. {
  669. label: '首付金额',
  670. prop: 'advancePayment',
  671. rules: [
  672. {
  673. pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  674. message: ' ',
  675. trigger: 'blur'
  676. }
  677. ]
  678. },
  679. {
  680. label: '已收人民币金额',
  681. prop: 'settlmentAmount',
  682. disabled: true,
  683. },
  684. {
  685. label: '已收外币金额',
  686. prop: 'foreignSettlmentAmount',
  687. disabled: true,
  688. },
  689. {
  690. label: '计划交期',
  691. prop: 'plannedDeliveryDate',
  692. type: 'datetime',
  693. },
  694. {
  695. label: '已退人民币金额',
  696. prop: 'refundSettlmentAmount',
  697. disabled: true,
  698. },
  699. {
  700. label: '已退外币金额',
  701. prop: 'refundForeignSettlmentAmount',
  702. disabled: true,
  703. },
  704. {
  705. label: '业务员',
  706. prop: 'salesName',
  707. dicData: [],
  708. },
  709. {
  710. label: '发票重量',
  711. prop: 'invoiceWeight',
  712. disabled: true,
  713. },
  714. {
  715. label: '码单重量',
  716. prop: 'billWeight',
  717. disabled: true,
  718. },
  719. {
  720. label: '开票单位',
  721. prop: 'vbrk',
  722. },
  723. {
  724. label: '包装要求',
  725. prop: 'packageRemarks',
  726. rules: [
  727. {
  728. required: false,
  729. message: ' ',
  730. trigger: 'blur'
  731. }
  732. ]
  733. },
  734. {
  735. label: '提成标准',
  736. prop: 'commissionRate',
  737. rules: [
  738. {
  739. required: false,
  740. message: ' ',
  741. trigger: 'blur'
  742. }
  743. ]
  744. },{
  745. label: "备注",
  746. span: 24,
  747. prop: "orderRemark",
  748. mock: {
  749. type: 'county'
  750. }
  751. }
  752. ],
  753. },
  754. //收款记录
  755. payeeDialog:false,
  756. payeeLoading:false,
  757. payeeData:[],
  758. payeePage:{
  759. pageSize: 10,
  760. currentPage: 1,
  761. total: 0
  762. },
  763. // 导入库存配置
  764. importInventory: {},
  765. importInventoryForm: {},
  766. importInventoryData: [],
  767. selection: [],
  768. //新旧数据对比
  769. oldForm:{},
  770. oldInventoryData:[],
  771. oldFeesList:[],
  772. oldFilesList:[],
  773. }
  774. },
  775. async created() {
  776. this.importInventory = await this.getColumnData(this.getColumnName(39), importInventory);
  777. //币别
  778. this.getWorkDicts("currency").then(res =>{
  779. this.currencyDic = res.data.data
  780. if(!this.detailData.id){
  781. this.$set(this.form,"currency","USD")
  782. this.currencyChange("USD")
  783. }
  784. })
  785. if(this.detailData.view){
  786. this.viewDisabled = true
  787. this.checkDisabled = true
  788. }
  789. if (this.detailData.id) {
  790. this.buttonLoading = true;
  791. let id = this.detailData.id.replace(/\"/g, "")
  792. detailSaleList(id).then(res => {
  793. this.afterEcho(res.data.data)
  794. }).finally(()=>{
  795. this.buttonLoading = false
  796. })
  797. }else{
  798. //采购日期默认当天
  799. let date = new Date();
  800. let strDate = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
  801. this.$set(this.form,"businesDate",strDate)
  802. }
  803. if(this.detailData.check){
  804. //待审批状态才可选择通过或者驳回
  805. if(this.detailData.check.auditStatus === "S"){
  806. this.buttonDisabled = false
  807. }
  808. this.viewDisabled = true //查看审批不能编辑
  809. this.auditDisabled = true
  810. this.buttonLoading = true;
  811. this.batchNo = this.detailData.check.batchNo
  812. let id = this.detailData.check.srcBillId.replace(/\"/g, "")
  813. detailSaleList(id).then(res => {
  814. this.afterEcho(res.data.data)
  815. }).finally(()=>{
  816. this.buttonLoading = false;
  817. })
  818. }
  819. },
  820. methods: {
  821. valueName(value,row){
  822. this.$set(row,"priceCategory",value.id)
  823. },
  824. //首付比例 带出金额
  825. downPaymentChange(){
  826. if(this.form.orderAmount){
  827. this.$set(this.form,"advancePayment",_.multiply(this.form.orderAmount,(this.form.downPayment*0.01)).toFixed(2))
  828. }
  829. },
  830. //合计
  831. totalChange(){
  832. let invoiceList = this.importInventoryData.map(item => {
  833. if(item.invoiceWeight){
  834. return parseFloat(item.invoiceWeight);
  835. }else return 0
  836. });
  837. let billList = this.importInventoryData.map(item => {
  838. if(item.billWeight){
  839. return parseFloat(item.billWeight);
  840. }else return 0
  841. });
  842. this.$set(this.form,"invoiceWeight", invoiceList.reduce((n,m) => n + m))
  843. this.$set(this.form,"billWeight", billList.reduce((n,m) => n + m))
  844. },
  845. //带出汇率
  846. currencyChange(value){
  847. this.currencyDic.forEach(item =>{
  848. if(item.dictValue === value){
  849. this.$set(this.form,"exchangeRate",item.remark)
  850. }
  851. })
  852. },
  853. //单价
  854. priceChange(row) {
  855. if (row.price && row.billWeight) {
  856. row.amount = _.multiply(row.billWeight, row.price).toFixed(2);
  857. }
  858. },
  859. //数量
  860. billWeightChange(row) {
  861. if (row.price && row.billWeight) {
  862. row.amount = _.multiply(row.billWeight, row.price).toFixed(2);
  863. }
  864. },
  865. //提单号带出合同号
  866. bingOut(row){
  867. getOrgOrderNo(row.billNo).then(res =>{
  868. if(res.data.length != 0){
  869. this.contractDic = res.data;
  870. row.orgOrderNo = res.data[0].orderNo
  871. row.itemId = res.data[0].itemId;
  872. row.priceCategoryNames = res.data[0].itemName[0].cname
  873. row.priceCategory = res.data[0].itemName[0].id
  874. row.cntrNo = res.data[0].cntrNo
  875. }else{
  876. this.$message.warning("无此提单号记录!");
  877. this.contractDic = [];
  878. row.orgOrderNo = ''
  879. row.itemId = ''
  880. row.priceCategoryNames = ''
  881. row.priceCategory = ''
  882. }
  883. }).catch(()=>{
  884. row.orgOrderNo = ''
  885. })
  886. },
  887. //打开申请记录
  888. openApplicationDialog(){
  889. this.applicationDialog = true
  890. },
  891. //关闭申记录
  892. choceApplication(){
  893. this.applicationDialog = false
  894. },
  895. //生成账单数据
  896. beforeBillData(bool,type){
  897. this.billType = type
  898. this.billData = {
  899. srcOrderno:this.form.orderNo,
  900. itemType:"销售",
  901. optionType:'JK',
  902. billNoList: this.importInventoryData.map(item =>{return item.billNo}),
  903. amount:this.form.orderAmount,
  904. belongToCorpId:this.form.belongToCorpId,
  905. corpsName:this.form.corpName,
  906. corpId:this.form.corpId,
  907. price:this.form.salesPrice,
  908. accDate:this.form.businesDate,
  909. currency:this.form.currency,
  910. exchangeRate:this.form.exchangeRate,
  911. srcParentId:this.form.id,
  912. }
  913. if(type){ //申请货款
  914. this.billData.srcId = -1
  915. }
  916. },
  917. //费用明细回调验证
  918. beforeFinance(feesData,callback){
  919. let params = {}
  920. if(contrastObj(this.form,this.oldForm) || contrastList(this.importInventoryData,this.oldInventoryData)
  921. || contrastList(feesData,this.oldFeesList) || contrastList(this.orderFilesList,this.oldFilesList)
  922. ){
  923. this.$confirm("数据发生变化,请先提交保存?", {
  924. confirmButtonText: "保存",
  925. cancelButtonText: "取消",
  926. type: "warning"
  927. }).then(() => {
  928. this.editCustomer();
  929. }).finally(()=>{
  930. params.valid = false
  931. callback(params)
  932. })
  933. }else{
  934. params.valid = true
  935. params.parentId = this.form.id
  936. params.srcOrderno = this.form.orderNo
  937. callback(params)
  938. }
  939. },
  940. //生成账单之后需要更新明细列表的属性
  941. afterFinance(){
  942. detailSaleList(this.form.id).then(res => {
  943. this.afterEcho(res.data.data)
  944. })
  945. },
  946. //请核
  947. auditCheck(){
  948. if(this.verificationData()){
  949. this.$confirm("确定审核此订单?", {
  950. confirmButtonText: "确定",
  951. cancelButtonText: "取消",
  952. type: "warning"
  953. }).then(()=>{
  954. this.buttonLoading = true
  955. const data = {
  956. id : this.form.id,
  957. checkType: 'xsqh',
  958. url: '/salesManagement/salesContract/index',
  959. pageStatus:"this.$store.getters.entranceXsStatus",
  960. pageLabel:"销售订单",
  961. checkFlag: 2,
  962. }
  963. pleaseCheck(data).then(res=>{
  964. if(res.data.success){
  965. this.$message.success("操作成功!")
  966. this.viewDisabled = true
  967. this.approverDisabled = true
  968. }
  969. })
  970. }).finally(()=>{
  971. this.buttonLoading = false
  972. })
  973. }
  974. },
  975. //财务操作
  976. applySettlement(type){
  977. if(this.verificationData()){
  978. this.beforeBillData(true,type)
  979. this.financialAccountDialog = true;
  980. }
  981. },
  982. choceFun(){
  983. this.financialAccountDialog = false
  984. },
  985. //刷新
  986. payeeRefreshChange(){
  987. console.log(1)
  988. },
  989. //申请记录
  990. payeeOnLoad(){
  991. console.log(1)
  992. },
  993. //商品选中触发
  994. productSelection(selection){
  995. this.selection = selection
  996. },
  997. //生成发货单
  998. generateShipmentD(){
  999. if(this.verificationData()) {
  1000. if (this.$store.getters.goStatus) {
  1001. this.$alert("发货单已存在,请保存发货单再进行操作", "温馨提示", {
  1002. confirmButtonText: "确定",
  1003. type: 'warning',
  1004. callback: action => {
  1005. }
  1006. });
  1007. } else {
  1008. const params = {
  1009. id:this.form.id,
  1010. orderItemIds:this.selection.map(i=>{return i.id})
  1011. }
  1012. this.$router.push({
  1013. path: "/importTrade/invoice/index",
  1014. query: {form: params},
  1015. });
  1016. this.$router.$avueRouter.closeTag('/importTrade/invoice/index');
  1017. }
  1018. }
  1019. },
  1020. //录入明细
  1021. newDetails(){
  1022. const params = {
  1023. price:this.form.salesPrice,
  1024. exRate:this.form.exchangeRate
  1025. }
  1026. this.$refs.importInventory.rowCellAdd(params);
  1027. },
  1028. //商品编辑
  1029. rowCell(row, index) {
  1030. this.$refs.importInventory.rowCell(row, index)
  1031. },
  1032. //新增明细保存触发
  1033. rowSaveList(row, done, loading){
  1034. done()
  1035. },
  1036. //修改明细触发
  1037. rowUpdateList(row, index, done, loading) {
  1038. done(row);
  1039. },
  1040. //关闭审核
  1041. choceCheckFun(){
  1042. this.checkDialog = false;
  1043. },
  1044. choceScheduleFun(){
  1045. this.checkScheduleDialog = false
  1046. },
  1047. //删除商品明细触发
  1048. rowDelList(row, index, donerowDel) {
  1049. this.$confirm("确定将选择数据删除?", {
  1050. confirmButtonText: "确定",
  1051. cancelButtonText: "取消",
  1052. type: "warning"
  1053. }).then(() => {
  1054. if (row.id){
  1055. goodsListRemove(row.id).then(res=>{
  1056. this.$message({
  1057. type: "success",
  1058. message: "操作成功!"
  1059. });
  1060. this.importInventoryData.splice(index, 1);
  1061. })
  1062. }else {
  1063. this.$message({
  1064. type: "success",
  1065. message: "操作成功!"
  1066. });
  1067. this.importInventoryData.splice(index, 1);
  1068. }
  1069. }).finally(()=>{
  1070. this.totalChange()
  1071. })
  1072. },
  1073. //修改
  1074. editCustomer(status) {
  1075. this.$refs["form"].validate((valid) => {
  1076. if (valid) {
  1077. let orderFeesList = this.$refs.feeInfo.submitData();
  1078. for (let i = 0; i < orderFeesList.length; i++) {
  1079. if (orderFeesList[i].corpId == null) {
  1080. return this.$message.error(`请输入第${i + 1}行的结算中心`);
  1081. }
  1082. if (orderFeesList[i].price == 0) {
  1083. return this.$message.error(`请正确输入第${i + 1}行的价格`);
  1084. }
  1085. if (orderFeesList[i].orderQuantity == 0) {
  1086. return this.$message.error(`请正确输入第${i + 1}行的件数`);
  1087. }
  1088. }
  1089. let orderUpLoadList = this.$refs.uploadFile.submitData();
  1090. for (let j = 0; j < this.importInventoryData.length; j++) {
  1091. if (this.importInventoryData[j].billNo === (null || "")) {
  1092. return this.$message.error(`请输入销售明细第${j + 1}行的提单号`);
  1093. }
  1094. if (this.importInventoryData[j].orgOrderNo === (null || "")) {
  1095. return this.$message.error(`请输入销售明细第${j + 1}行的合同号`);
  1096. }
  1097. if (this.importInventoryData[j].priceCategory === (null || "")) {
  1098. return this.$message.error(`请输入销售明细第${j + 1}行的货品物种`);
  1099. }
  1100. if (this.importInventoryData[j].orderQuantity === (null || "")) {
  1101. return this.$message.error(`请输入销售明细第${j + 1}行的件数`);
  1102. }
  1103. if (this.importInventoryData[j].invoiceWeight === (null || "")) {
  1104. return this.$message.error(`请输入销售明细第${j + 1}行的发票重量`);
  1105. }
  1106. }
  1107. this.buttonLoading = true;
  1108. if(this.importInventoryData.length !== 0){
  1109. //提单号
  1110. this.form.billNo =Array.from(new Set(this.importInventoryData.map(item =>{return item.billNo}))).join(",")
  1111. //发票金额合计 存入主表
  1112. let invoiceList = this.importInventoryData.map(item => {
  1113. if(item.amount){
  1114. return parseFloat(item.amount);
  1115. }else return 0
  1116. });
  1117. this.form.invoiceAmount = invoiceList.reduce((n,m) => n + m)
  1118. }
  1119. let submitDto = {
  1120. ...this.form,
  1121. orderItemsList: this.importInventoryData,
  1122. orderFeesList: orderFeesList,
  1123. orderUpLoadList:orderUpLoadList,
  1124. };
  1125. submitData(submitDto).then(res => {
  1126. if(res.data.success){
  1127. this.$message.success("操作成功!")
  1128. detailSaleList(res.data.data.id).then(res => {
  1129. this.afterEcho(res.data.data)
  1130. }).finally(()=>{
  1131. this.buttonLoading = false
  1132. })
  1133. }
  1134. })
  1135. if(status === true){
  1136. this.$emit("goBack");
  1137. }
  1138. } else {
  1139. return false;
  1140. }
  1141. });
  1142. },
  1143. afterEcho(data){
  1144. this.form = data;
  1145. this.oldForm = Object.assign({},data);
  1146. this.importInventoryData = data.orderItemsList
  1147. //销售明细列表如果存在已发数量或重量不为0 则此订单已发货 禁止编辑主要参数
  1148. this.takeDisabled = this.importInventoryData.map(item =>{if(item.actualQuantity != 0 || item.actualWeight != 0) return true}).some(item => {return item == true})
  1149. this.basicData.column.forEach(item =>{
  1150. if(item.prop == "advanceCollectionDate" || item.prop == "orderAmount" || item.prop == "salesPrice" || item.prop == "exchangeRate" || item.prop == "advancePayment" || item.prop == "orderNo" || item.prop == "contractWeight"){
  1151. item.disabled = this.takeDisabled
  1152. }
  1153. })
  1154. if(data.orderItemsList){
  1155. this.importInventoryData = data.orderItemsList
  1156. this.oldInventoryData = this.deepClone(data.orderItemsList)
  1157. }
  1158. if(data.orderFeesList){
  1159. this.orderFeesList = data.orderFeesList
  1160. this.oldFeesList = this.deepClone(data.orderFeesList)
  1161. }
  1162. if(data.orderFilesList){
  1163. this.orderFilesList = data.orderFilesList
  1164. this.oldFilesList = this.deepClone(data.orderFilesList)
  1165. }
  1166. if(this.detailData.status === 'copy'){
  1167. this.copyData()
  1168. }
  1169. },
  1170. //验证数据
  1171. verificationData(){
  1172. this.orderFeesList = this.$refs.feeInfo.submitData();
  1173. if(contrastObj(this.form,this.oldForm) || contrastList(this.importInventoryData,this.oldInventoryData)
  1174. || contrastList(this.orderFeesList,this.oldFeesList) || contrastList(this.orderFilesList,this.oldFilesList)
  1175. ){
  1176. this.$confirm("数据发生变化,请先提交保存!", "提示", {
  1177. confirmButtonText: "保存",
  1178. cancelButtonText: "取消",
  1179. type: "warning",
  1180. }).then(() => {
  1181. this.editCustomer()
  1182. }).catch(()=>{
  1183. return false
  1184. })
  1185. }else{
  1186. return true
  1187. }
  1188. },
  1189. createData(){
  1190. if(this.verificationData()){
  1191. this.$confirm("确定创建新的单据吗?", "提示", {
  1192. confirmButtonText: "保存",
  1193. cancelButtonText: "取消",
  1194. type: "warning",
  1195. }).then(() => {
  1196. this.form = {}
  1197. this.oldForm = {}
  1198. this.importInventoryData = []
  1199. this.oldInventoryData = []
  1200. this.orderFeesList = []
  1201. this.oldFeesList = []
  1202. this.orderFilesList = []
  1203. this.oldFilesList = []
  1204. })
  1205. }
  1206. },
  1207. //复制单据
  1208. copyData(){
  1209. if(this.verificationData()){
  1210. this.takeDisabled = false
  1211. this.basicData.column.forEach(item =>{
  1212. if(item.prop == "advanceCollectionDate" || item.prop == "orderAmount" || item.prop == "salesPrice" || item.prop == "exchangeRate" || item.prop == "advancePayment" || item.prop == "orderNo" || item.prop == "contractWeight"){
  1213. item.disabled = this.takeDisabled
  1214. }
  1215. })
  1216. delete this.form.id //删除id
  1217. this.$set(this.form,"sysNo","")//系统编号
  1218. this.$set(this.form,"orderNo","")//合同号
  1219. this.$set(this.form,"settlmentAmount","")//已付人民币
  1220. this.$set(this.form,"foreignSettlmentAmount","")//已付外币
  1221. this.$set(this.form,"refundSettlmentAmount","")//已退人民币
  1222. this.$set(this.form,"refundForeignSettlmentAmount","")//已退外币
  1223. this.importInventoryData.forEach(item =>{
  1224. delete item.id //删除id
  1225. item.actualQuantity = "" //已收件数
  1226. item.actualWeight = "" //已收发票
  1227. })
  1228. this.orderFeesList.forEach(item =>{
  1229. delete item.id //删除id
  1230. })
  1231. this.oldForm = {}
  1232. this.oldInventoryData = []
  1233. this.oldFeesList = []
  1234. this.oldFilesList = []
  1235. this.$message.success("复制成功!")
  1236. }
  1237. },
  1238. async openEdit() {
  1239. if(this.approverDisabled || this.form.status != 0){ //是否审批
  1240. this.$message.warning("此订单已提交审批,不可编辑!")
  1241. return
  1242. }
  1243. //标签页保存key
  1244. this.inDetailsKey(this.$route.name,this.detailData.lockData);
  1245. //单据是否锁定
  1246. if(!await this.checkLocks(this.detailData.lockData)){
  1247. this.onLock(this.detailData.lockData); //上锁
  1248. this.viewDisabled = false
  1249. this.checkDisabled = false
  1250. }else{
  1251. this.$message.warning('此单据已被锁定,请稍后再进行操作!')
  1252. }
  1253. },
  1254. backToList() {
  1255. //如果单据已被锁定 并且编辑按钮存在 则直接返回
  1256. if(this.viewDisabled || !this.detailData.lockData){
  1257. this.$emit("goBack");
  1258. return
  1259. }
  1260. this.orderFeesList = this.$refs.feeInfo.submitData();
  1261. if(contrastObj(this.form,this.oldForm) || contrastList(this.importInventoryData,this.oldInventoryData)
  1262. || contrastList(this.orderFeesList,this.oldFeesList) || contrastList(this.orderFilesList,this.oldFilesList)
  1263. ){
  1264. this.$confirm("是否保存当前页面?", "提示", {
  1265. confirmButtonText: "保存",
  1266. cancelButtonText: "取消",
  1267. type: "warning",
  1268. }).then(() => {
  1269. this.editCustomer(true)
  1270. }).catch(()=>{
  1271. this.$emit("goBack");
  1272. }).finally(()=>{
  1273. if(this.form.id){
  1274. this.unLock(this.detailData.lockData);
  1275. this.leaveDetailsKey(this.$route.name);
  1276. }
  1277. })
  1278. }else{
  1279. this.$emit("goBack");
  1280. if(this.form.id){
  1281. this.unLock(this.detailData.lockData);
  1282. this.leaveDetailsKey(this.$route.name);
  1283. }
  1284. }
  1285. },
  1286. //列保存触发
  1287. async saveColumn() {
  1288. const inSave = await this.saveColumnData(
  1289. this.getColumnName(39),
  1290. this.importInventory
  1291. );
  1292. if (inSave) {
  1293. this.$message.success("保存成功");
  1294. //关闭窗口
  1295. this.$refs.importInventory.$refs.dialogColumn.columnBox = false;
  1296. }
  1297. },
  1298. async resetColumn() {
  1299. const inSave = await this.delColumnData(
  1300. this.getColumnName(39),
  1301. importInventory
  1302. );
  1303. if (inSave) {
  1304. this.$message.success("重置成功");
  1305. this.importInventory = importInventory;
  1306. //关闭窗口
  1307. this.$refs.importInventory.$refs.dialogColumn.columnBox = false;
  1308. }
  1309. },
  1310. },
  1311. }
  1312. </script>
  1313. <style scoped lang="scss">
  1314. .required_fields{
  1315. color: #F56C6C;
  1316. display:inline-block;
  1317. width: 7%
  1318. }
  1319. .upper_right_button{
  1320. display: flex;
  1321. position: fixed;
  1322. right: 12px;
  1323. top: 47px;
  1324. }
  1325. ::v-deep .el-form-item {
  1326. margin-bottom: 0;
  1327. }
  1328. ::v-deep .el-form-item__content{
  1329. line-height: 32px;
  1330. }
  1331. </style>