applyPayment.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811
  1. <template>
  2. <!-- 加班申请单 发起付款申请(不要调用接口的)-->
  3. <el-dialog
  4. :close-on-click-modal="false"
  5. :close-on-press-escape="false"
  6. :visible.sync="dialogVisible"
  7. title="发起付款申请"
  8. top="50px"
  9. width="75%"
  10. :append-to-body="true"
  11. :before-close="beforeClose"
  12. class="statistic_base"
  13. :modal-append-to-body="true"
  14. custom-class="tagdialog"
  15. v-loading="loading1"
  16. >
  17. <div class="tabsdom">
  18. <el-tabs v-model="activeName" @tab-click="handleClick">
  19. <el-tab-pane label="付款申请" name="first">
  20. <el-row type="flex" justify="end">
  21. <el-col :span="3" class="col-txt"><span>流程编号:</span></el-col>
  22. <el-col :span="6" class="col-input"><span style="font-size: 14px">{{ formData.flowNum }}</span></el-col>
  23. </el-row>
  24. <el-form
  25. ref="elForm"
  26. :model="formData"
  27. :rules="rules"
  28. label-width="150px"
  29. >
  30. <el-card shadow="always" style="padding: 15px 5px 5px 15px">
  31. <el-row :gutter="15">
  32. <el-col :span="24">
  33. <el-form-item label="标题" prop="titlexxx">
  34. <el-input v-model="formData.title" placeholder="付款领用单-年月日" readonly/>
  35. </el-form-item>
  36. </el-col>
  37. <el-col :span="12">
  38. <el-form-item label="创建人">
  39. <el-input v-model="userinfo.truename" placeholder="创建人" readonly />
  40. </el-form-item>
  41. </el-col>
  42. <el-col :span="12">
  43. <el-form-item label="创建部门">
  44. <el-input v-model="userinfo.deptName" placeholder="创建部门" readonly />
  45. </el-form-item>
  46. </el-col>
  47. <el-col :span="24">
  48. <el-form-item label="是否为无合同付款">
  49. <el-select
  50. v-model="formData.isNoContract"
  51. clearable
  52. filterable
  53. placeholder="是否为无合同付款"
  54. style="width: 100%"
  55. :popper-append-to-body="false"
  56. popper-class="statistic_base"
  57. >
  58. <el-option
  59. v-for="item in dc_data.ANSWER_NEED"
  60. :key="item.value"
  61. :label="item.label"
  62. :value="item.value"
  63. :popper-append-to-body="false"
  64. popper-class="statistic_base"
  65. />
  66. </el-select>
  67. </el-form-item>
  68. </el-col>
  69. <el-col :span="24">
  70. <el-form-item label="付款单位">
  71. <el-input v-model="formData.payerName" placeholder="请填写" />
  72. </el-form-item>
  73. </el-col>
  74. <el-col :span="24">
  75. <el-form-item label="收款单位">
  76. <el-input v-model="formData.payeeName" placeholder="请填写" />
  77. </el-form-item>
  78. </el-col>
  79. <el-col :span="24">
  80. <el-form-item label="资金用途">
  81. <el-input v-model="formData.moneyPurpose" placeholder="请填写" />
  82. </el-form-item>
  83. </el-col>
  84. <el-col :span="24">
  85. <el-form-item label="合同总价">
  86. <el-input v-model="formData.contractPrice" oninput="value=value.replace(/[^\d.]/g,'')" placeholder="请填写" />
  87. </el-form-item>
  88. </el-col>
  89. <el-col :span="24">
  90. <el-form-item label="付款说明">
  91. <el-input
  92. v-model="formData.payRemark"
  93. :autosize="{minRows: 4, maxRows: 4}"
  94. :style="{width: '100%'}"
  95. placeholder="请填写"
  96. type="textarea"
  97. maxlength="2000"
  98. show-word-limit
  99. />
  100. </el-form-item>
  101. </el-col>
  102. <el-col :span="24">
  103. <el-form-item label="累计付款">
  104. <el-input v-model="formData.havePayMoney" oninput="value=value.replace(/[^\d.]/g,'')" placeholder="请填写" />
  105. </el-form-item>
  106. </el-col>
  107. <el-col :span="12">
  108. <el-form-item label="申请金额(小写)" prop="applyPayMoney">
  109. <el-input v-model="formData.applyPayMoney" oninput="value=value.replace(/[^\d.]/g,'')" placeholder="请填写" @change="swapper(formData.applyPayMoney)" />
  110. </el-form-item>
  111. </el-col>
  112. <el-col :span="12">
  113. <el-form-item label="申请金额(大写)" prop="applyPayMoneyUppercase">
  114. <el-input v-model="formData.applyPayMoneyUppercase" placeholder="请填写" />
  115. </el-form-item>
  116. </el-col>
  117. <!-- <el-col :span="24">formData.applyPayMoneyUppercase={{formData.applyPayMoneyUppercase}}</el-col>-->
  118. <el-col :span="7">
  119. <el-form-item label="相关附件">
  120. <el-upload
  121. :action="$constant.BASE_URI+'/FileController/upload'"
  122. :file-list="formData.fileUrlList"
  123. :http-request="uploadFile"
  124. class="upload-demo"
  125. multiple
  126. >
  127. <el-button size="small" type="primary">上传附件</el-button>
  128. <div slot="file" slot-scope="{file}">
  129. <a :href="file.url">{{ file.name }}</a>
  130. <span class="el-upload-list__item-actions">
  131. <i class="el-icon-delete" @click="handlePictureRemove(file,formData.fileUrlList)" />
  132. </span>
  133. </div>
  134. </el-upload>
  135. </el-form-item>
  136. </el-col>
  137. <el-col :span="17" />
  138. </el-row>
  139. </el-card>
  140. </el-form>
  141. </el-tab-pane>
  142. <el-tab-pane label="流程图 " name="second">
  143. <div style="width: 100%">
  144. <el-row>
  145. <el-col :span="24">
  146. <div class="node_info">
  147. <div>节点说明:</div>
  148. <div v-for="item in nodeColor" class="dis_flex">
  149. <div class="node_class" :style="{backgroundColor: item.nodeback}" />
  150. {{ item.name }}
  151. </div>
  152. </div>
  153. <div v-show="true" id="containeraddwork1" style="width: 100%" />
  154. </el-col>
  155. </el-row>
  156. </div>
  157. </el-tab-pane>
  158. </el-tabs>
  159. </div>
  160. <div slot="footer">
  161. <el-button @click="dialogVisible=false">取消</el-button>
  162. <el-button :loading="loading" type="primary" @click="handelConfirm">确定</el-button>
  163. </div>
  164. </el-dialog>
  165. </template>
  166. <script>
  167. import { upload } from '@/static/utils/channel'
  168. import Base from '@/views/base/base'
  169. import BaseData from '@/views/base/baseData'
  170. import UserSelect from '@/views/components/UserSelect'
  171. import * as echarts from 'echarts'
  172. import { isPassword } from '@/static/utils/validate'
  173. const lineStyle = {
  174. color: '#00116a',
  175. width: 2
  176. }
  177. const redLinestyle = {
  178. color: 'red',
  179. width: 2
  180. }
  181. export default {
  182. name: 'ApplyPay',
  183. components: {
  184. upload, UserSelect
  185. },
  186. mixins: [Base, BaseData],
  187. data() {
  188. return {
  189. loading1:false,
  190. loading: false,
  191. nodeColor: [
  192. { name: '审核通过', nodeback: '#2A3980' },
  193. { name: '未经过', nodeback: '#999999' },
  194. { name: '退回', nodeback: '#E04242' },
  195. { name: '审核中', nodeback: '#E08E42' },
  196. { name: '撤回', nodeback: '#4294E0' }
  197. ],
  198. dc_key: ['ANSWER_NEED'],
  199. dialogVisible: false,
  200. formData: {
  201. payerName: '无锡市安居投资发展有限公司'
  202. },
  203. userinfo: {},
  204. activeName: 'first',
  205. rules: {
  206. title: [{
  207. required: true,
  208. message: '请输入标题',
  209. trigger: 'change'
  210. }],
  211. applyPayMoney: [{
  212. required: true,
  213. message: '请输入申请金额(小写)',
  214. trigger: 'change'
  215. }
  216. ],
  217. applyPayMoneyUppercase: [{
  218. required: true,
  219. message: '请输入申请金额(大写)',
  220. trigger: 'change'
  221. }]
  222. // applyReasons: [{
  223. // required: true,
  224. // message: '请输入加班事由',
  225. // trigger: 'change'
  226. // }],
  227. // position: [{
  228. // required: true,
  229. // message: '加班位置不能为空',
  230. // trigger: 'change'
  231. // }]
  232. },
  233. positionOptions: [
  234. {
  235. 'label': '公司',
  236. 'value': 1
  237. },
  238. {
  239. 'label': '客户处',
  240. 'value': 2
  241. }, {
  242. 'label': '居家',
  243. 'value': 3
  244. }],
  245. nodes: [ // 节点
  246. {
  247. name: '经办人发起',
  248. value: [45, 100],
  249. symbol: 'image://' + require('../asste/huifangkuai.png'),
  250. symbolSize: [110, 60]
  251. },
  252. {
  253. name: '部门负责人审核',
  254. value: [125, 100],
  255. symbol: 'image://' + require('../asste/huifangkuai.png'),
  256. symbolSize: [110, 60]
  257. },
  258. {
  259. name: '财务负责人审核',
  260. value: [205, 100],
  261. symbol: 'image://' + require('../asste/huifangkuai.png'),
  262. symbolSize: [110, 60]
  263. },
  264. {
  265. name: '分管领导审核',
  266. value: [285, 100],
  267. symbol: 'image://' + require('../asste/huifangkuai.png'),
  268. symbolSize: [110, 60]
  269. },
  270. {
  271. name: '总经理审核',
  272. value: [365, 100],
  273. symbol: 'image://' + require('../asste/huifangkuai.png'),
  274. symbolSize: [110, 60]
  275. },
  276. {
  277. name: '董事长审核',
  278. value: [445, 100],
  279. symbol: 'image://' + require('../asste/huifangkuai.png'),
  280. symbolSize: [110, 60]
  281. },
  282. {
  283. name: '结束',
  284. value: [525, 100],
  285. symbol: 'image://' + require('../asste/huifangkuai.png'),
  286. symbolSize: [110, 60]
  287. },
  288. {
  289. label: {
  290. show: true,
  291. color: 'red', // 节点文字颜色
  292. backgroundColor: '#f5f5f5'
  293. },
  294. itemStyle: {
  295. color: '#f5f5f5'
  296. },
  297. name: '退回发起人',
  298. value: [350, 400],
  299. symbolSize: [70, 20]
  300. },
  301. {
  302. label: {
  303. show: true,
  304. color: 'red', // 节点文字颜色
  305. backgroundColor: '#f5f5f5'
  306. },
  307. itemStyle: {
  308. color: '#f5f5f5'
  309. },
  310. name: ' 退回发起人 ',
  311. value: [300, 350],
  312. symbolSize: [20, 20]
  313. },
  314. {
  315. label: {
  316. show: true,
  317. color: 'red', // 节点文字颜色
  318. backgroundColor: '#f5f5f5'
  319. },
  320. itemStyle: {
  321. color: '#f5f5f5'
  322. },
  323. name: ' 退回发起人 ',
  324. value: [250, 300],
  325. symbolSize: [20, 20]
  326. },
  327. {
  328. label: {
  329. show: true,
  330. color: 'red', // 节点文字颜色
  331. backgroundColor: '#f5f5f5'
  332. },
  333. itemStyle: {
  334. color: '#f5f5f5'
  335. },
  336. name: ' 退回发起人 ',
  337. value: [250, 300],
  338. symbolSize: [20, 20]
  339. },
  340. {
  341. label: {
  342. show: true,
  343. color: 'red', // 节点文字颜色
  344. backgroundColor: '#f5f5f5'
  345. },
  346. itemStyle: {
  347. color: '#f5f5f5'
  348. },
  349. name: ' 退回发起人 ',
  350. value: [175, 250],
  351. symbolSize: [20, 20]
  352. },
  353. {
  354. label: {
  355. show: true,
  356. color: 'red', // 节点文字颜色
  357. backgroundColor: '#f5f5f5'
  358. },
  359. itemStyle: {
  360. color: '#f5f5f5'
  361. },
  362. name: ' 退回发起人 ',
  363. value: [100, 200],
  364. symbolSize: [20, 20]
  365. }
  366. ],
  367. linesData: [ // 连线
  368. {
  369. lineStyle: lineStyle,
  370. coords: [[45, 100], [105, 100]]
  371. },
  372. {
  373. lineStyle: lineStyle,
  374. coords: [[125, 100], [185, 100]]
  375. },
  376. {
  377. lineStyle: lineStyle,
  378. coords: [[205, 100], [265, 100]]
  379. },
  380. {
  381. lineStyle: lineStyle,
  382. coords: [[285, 100], [345, 100]]
  383. },
  384. {
  385. lineStyle: lineStyle,
  386. coords: [[365, 100], [425, 100]]
  387. },
  388. {
  389. lineStyle: lineStyle,
  390. coords: [[445, 100], [505, 100]]
  391. },
  392. {
  393. lineStyle: lineStyle,
  394. coords: [[450, 100], [450, 400]],
  395. symbol: 'none'
  396. },
  397. {
  398. lineStyle: lineStyle,
  399. coords: [[370, 100], [370, 350]],
  400. symbol: 'none'
  401. },
  402. {
  403. lineStyle: lineStyle,
  404. coords: [[290, 100], [290, 300]],
  405. symbol: 'none'
  406. },
  407. {
  408. lineStyle: lineStyle,
  409. coords: [[210, 100], [210, 250]],
  410. symbol: 'none'
  411. },
  412. {
  413. lineStyle: lineStyle,
  414. coords: [[130, 100], [130, 200]],
  415. symbol: 'none'
  416. },
  417. {
  418. lineStyle: lineStyle,
  419. coords: [[50, 100], [50, 400]],
  420. symbol: 'none'
  421. },
  422. {
  423. lineStyle: lineStyle,
  424. coords: [[450, 400], [50, 400]],
  425. symbol: 'none'
  426. },
  427. {
  428. lineStyle: lineStyle,
  429. coords: [[370, 350], [50, 350]],
  430. symbol: 'none'
  431. },
  432. {
  433. lineStyle: lineStyle,
  434. coords: [[290, 300], [50, 300]],
  435. symbol: 'none'
  436. },
  437. {
  438. lineStyle: lineStyle,
  439. coords: [[210, 250], [50, 250]],
  440. symbol: 'none'
  441. },
  442. {
  443. lineStyle: lineStyle,
  444. coords: [[130, 200], [50, 200]],
  445. symbol: 'none'
  446. },
  447. {
  448. lineStyle: lineStyle,
  449. coords: [[50, 150], [50, 150]],
  450. symbol: 'none'
  451. }
  452. ]
  453. }
  454. },
  455. computed: {},
  456. watch: {},
  457. created() {
  458. },
  459. mounted() {
  460. this.initDict(this.dc_key).then((res) => {
  461. })
  462. // this.initProject({ /* signstatus: '2,3'*/ })
  463. },
  464. methods: {
  465. handlePictureRemove(file, fileUrlList) {
  466. var index = fileUrlList.indexOf(file)
  467. fileUrlList.splice(index, 1)
  468. },
  469. uploadFile: function(param) {
  470. const _this = this
  471. upload(param, true).then((res) => {
  472. _this.formData.fileUrlList.push(res)
  473. })
  474. },
  475. swapper(n) {
  476. // console.log('ddd',n)
  477. if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n)) { return '数据非法' }
  478. var unit = '千百拾亿千百拾万千百拾元角分'; var str = ''
  479. n += '00'
  480. var p = n.indexOf('.')
  481. if (p >= 0) { n = n.substring(0, p) + n.substr(p + 1, 2) }
  482. unit = unit.substr(unit.length - n.length)
  483. for (var i = 0; i < n.length; i++) { str += '零壹贰叁肆伍陆柒捌玖'.charAt(n.charAt(i)) + unit.charAt(i) }
  484. // console.log('end',str.replace(/零(千|百|拾|角)/g, '零').replace(/(零)+/g, '零').replace(/零(万|亿|元)/g, '$1').replace(/(亿)万|壹(拾)/g, '$1$2').replace(/^元零?|零分/g, '').replace(/元$/g, '元整'))
  485. this.formData.applyPayMoneyUppercase = str.replace(/零(千|百|拾|角)/g, '零').replace(/(零)+/g, '零').replace(/零(万|亿|元)/g, '$1').replace(/(亿)万|壹(拾)/g, '$1$2').replace(/^元零?|零分/g, '').replace(/元$/g, '元整')
  486. // console.log('end',this.formData.applyPayMoneyUppercase)
  487. this.$forceUpdate()
  488. },
  489. beforeClose() {
  490. // eslint-disable-next-line no-mixed-spaces-and-tabs
  491. this.formData = {
  492. // payerName: '无锡市安居投资发展有限公司'
  493. // eslint-disable-next-line no-mixed-spaces-and-tabs
  494. }
  495. this.dialogVisible = false
  496. this.activeName = 'first'
  497. this.$forceUpdate()
  498. },
  499. handleClick(tab, event) {
  500. if (this.activeName == 'second') this.createNodeCanvas()
  501. },
  502. createNodeCanvas() {
  503. this.$nextTick(() => {
  504. const chartDom = document.getElementById('containeraddwork1')
  505. var myCharts = echarts.init(chartDom)
  506. const charts = {
  507. nodes: this.nodes,
  508. linesData: this.linesData
  509. }
  510. const option = {
  511. xAxis: {
  512. min: 0,
  513. max: 600,
  514. padding: [0, 50, 0, 50],
  515. show: false,
  516. type: 'value'
  517. },
  518. yAxis: {
  519. min: 0,
  520. max: 450,
  521. show: false,
  522. type: 'value'
  523. },
  524. grid: {
  525. left: 50,
  526. right: 0,
  527. bottom: 0,
  528. top: 0
  529. },
  530. series: [
  531. {
  532. type: 'graph',
  533. coordinateSystem: 'cartesian2d',
  534. symbol: 'rect',
  535. symbolSize: [80, 40],
  536. itemStyle: {
  537. color: 'rgb(225,7,7)'
  538. },
  539. symbolOffset: [10, 0],
  540. // force: {
  541. // edgeLength: 100,//连线的长度
  542. // repulsion: 200 //子节点之间的间距
  543. // },
  544. label: {
  545. show: true,
  546. color: 'white' // 节点文字颜色
  547. },
  548. data: charts.nodes
  549. },
  550. {
  551. type: 'lines',
  552. polyline: false,
  553. coordinateSystem: 'cartesian2d',
  554. symbol: ['', 'arrow'],
  555. symbolSize: 10,
  556. data: charts.linesData
  557. }
  558. ]
  559. }
  560. myCharts.clear()
  561. myCharts.setOption(option)
  562. window.addEventListener('resize', () => {
  563. myCharts.resize()
  564. })
  565. })
  566. },
  567. getHour(s1, s2) {
  568. var reDate = /\d{4}-\d{1,2}-\d{1,2} /
  569. s1 = new Date((reDate.test(s1) ? s1 : '2018-1-1 ' + s1).replace(/-/g, '/'))
  570. s2 = new Date((reDate.test(s2) ? s2 : '2018-1-1 ' + s2).replace(/-/g, '/'))
  571. var ms = s2.getTime() - s1.getTime()
  572. if (ms < 0) return 0
  573. console.log(ms)
  574. return (ms / 1000 / 60 / 60).toFixed(1) // 小时
  575. },
  576. async getUserInfo() {
  577. const { data: userinfo } = await this.baseRequest1('ApplyPaymentSettleController', 'getUserInfoByUserId', { userId: '' })
  578. this.userinfo = userinfo
  579. this.formData.truename = userinfo.truename
  580. this.formData.deptName = userinfo.deptName
  581. console.log(this.userinfo)
  582. },
  583. async getMaxNum() {
  584. const { data: maxNum } = await this.baseRequest1('ApplyPaymentSettleController', 'getMaxNum', { })
  585. this.formData.title = maxNum
  586. this.loading1 = false
  587. console.log(maxNum,this.formData.title)
  588. },
  589. baseRequest1(prefix, opUrl, postData) {
  590. return this.$channel.globleRequest(prefix, opUrl, postData, 'project task')
  591. },
  592. setVisible(status) {
  593. this.loading1 = true
  594. this.formData = {
  595. payerName: '无锡市安居投资发展有限公司'
  596. }
  597. this.formData.fileUrlList = []
  598. this.getMaxNum()
  599. this.getUserInfo()
  600. this.dialogVisible = status
  601. },
  602. onOpen() {
  603. },
  604. onClose() {
  605. this.$refs['elForm'].resetFields()
  606. },
  607. close() {
  608. this.$emit('update:visible', false)
  609. },
  610. async handelConfirm() {
  611. this.$refs['elForm'].validate(async valid => {
  612. if (!valid) return
  613. // delete formData.applyAddWorkTime
  614. if (this.formData.fileUrlList.length > 0) {
  615. this.formData.fileDataIds = this.formData.fileUrlList.map((e) => {
  616. return e.data
  617. }).toString()
  618. }
  619. const formData = {
  620. ...this.formData
  621. }
  622. this.loading = true
  623. const { data } = await this.baseRequest1('ApplyPaymentSettleController', 'addApplyPaymentSettle', { ...formData })
  624. if (data.code == 200) {
  625. this.loading = false
  626. this.$message.success('付款申请发起成功')
  627. this.dialogVisible = false
  628. this.$emit('getData')
  629. }
  630. this.close()
  631. })
  632. }
  633. }
  634. }
  635. </script>
  636. <style lang="scss">
  637. .cclist {
  638. .col-input {
  639. padding: 0;
  640. }
  641. }
  642. #containeraddwork1 {
  643. height: 600px;
  644. width: 100%;
  645. background: #F5F5F5;
  646. }
  647. .pdr10px {
  648. padding-right: 10px;
  649. }
  650. .mgb10px {
  651. margin-bottom: 10px;
  652. }
  653. .mb25 {
  654. margin-bottom: 25px;
  655. }
  656. .pdtopbottom16 {
  657. padding: 0px 16px;
  658. }
  659. .pdtop16px {
  660. padding-top: 16px;
  661. }
  662. .totalApplyTime {
  663. font-size: 16px;
  664. font-family: 微软雅黑;
  665. font-weight: 400;
  666. color: #1890FF;
  667. text-align: right;
  668. margin: 15px 0 15px 0;
  669. width: 100%;
  670. }
  671. .cost_form {
  672. .col-input {
  673. font-weight: 400;
  674. }
  675. .el-form-item__label .moneydetails {
  676. text-align: right;
  677. font-size: 16px;
  678. font-family: 微软雅黑;
  679. padding-right: 10px;
  680. line-height: 40px;
  681. word-break: keep-all;
  682. white-space: nowrap;
  683. color: #606266;
  684. text-rendering: optimizeLegibility;
  685. font-weight: 400;
  686. }
  687. .moneydetails {
  688. text-align: right;
  689. font-size: 16px;
  690. font-family: 微软雅黑;
  691. padding-right: 10px;
  692. word-break: keep-all;
  693. white-space: nowrap;
  694. color: #606266;
  695. text-rendering: optimizeLegibility;
  696. font-weight: 400;
  697. }
  698. .moneydetails:before {
  699. content: "*";
  700. color: #ff4949;
  701. }
  702. }
  703. .txtc {
  704. text-align: center
  705. }
  706. .ml5 {
  707. margin-left: 5px;
  708. }
  709. .eltype {
  710. margin-bottom: 15px;
  711. }
  712. .tabsdom {
  713. .el-input {
  714. width: 100%;
  715. }
  716. .el-upload {
  717. width: 100%;
  718. text-align: left;
  719. }
  720. .el-tabs__header {
  721. text-align: center !important;
  722. width: 139px !important;
  723. text-align: center !important;
  724. display: block !important;
  725. margin: auto !important;
  726. margin-bottom: 15px !important;
  727. }
  728. .el-tabs__nav-wrap::after {
  729. display: none;
  730. }
  731. .el-upload {
  732. width: 100%;
  733. }
  734. }
  735. .feeMoneyTotal {
  736. width: 100%;
  737. height: 14px;
  738. font-size: 14px;
  739. font-weight: 400;
  740. color: #1890FF;
  741. margin-top: 31px;
  742. margin-bottom: 13px;
  743. }
  744. </style>