applyPayment.vue 19 KB

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