applyAgainLxSjWork.vue 61 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351
  1. <template>
  2. <!-- 发起付款申请 -->
  3. <el-dialog
  4. :close-on-click-modal="false"
  5. :close-on-press-escape="false"
  6. title="立项申请"
  7. :visible.sync="dialogLxVisible"
  8. top="50px"
  9. width="75%"
  10. :before-close="beforeClose"
  11. >
  12. <div class="tabsdom">
  13. <el-tabs v-model="activeName" @tab-click="handleClick">
  14. <el-tab-pane label="立项申请" name="first">
  15. <el-card shadow="always" style="padding: 15px 5px 5px 15px">
  16. <el-form
  17. ref="elformData"
  18. :model="formData"
  19. :rules="rules"
  20. class="payform"
  21. label-width="200px"
  22. size="medium"
  23. >
  24. <h3 style="margin-top: 0"><span style="color: red">*</span> 基本信息</h3>
  25. <el-card style="padding:0px 20px;margin-bottom: 25px">
  26. <el-row>
  27. <el-col :span="12">
  28. <el-form-item label="关联项目" prop="proId">
  29. <el-select v-model="formData.proId" filterable placeholder="关联项目名称" @change="proChange">
  30. <el-option
  31. v-for="item in ProjectData"
  32. :key="item.value"
  33. :label="item.label"
  34. :value="item.value"
  35. >
  36. <span style="float: left">{{ item.label }}</span>
  37. <span style="float: right; color: #8492a6; font-size: 13px">{{
  38. item.custname
  39. }}</span>
  40. </el-option>
  41. </el-select>
  42. </el-form-item>
  43. </el-col>
  44. <el-col :span="12">
  45. <el-form-item label="项目类型">
  46. <div style="line-height: 40px;height: 40px">{{ formData.protype }}</div>
  47. </el-form-item>
  48. </el-col>
  49. <el-col :span="12">
  50. <el-form-item label="储备项目状态">
  51. <div style="line-height: 40px;height: 40px">{{ formData.signStatus }}</div>
  52. </el-form-item>
  53. </el-col>
  54. <el-col :span="12">
  55. <el-form-item label="预计销售金额(元)">
  56. <div style="line-height: 40px;height: 40px">{{ formData.presales ? formData.presales + '(元)' : '' }}</div>
  57. </el-form-item>
  58. </el-col>
  59. </el-row>
  60. </el-card>
  61. <h3 style="margin-top: 0"><span style="color: red">*</span> 立项内容</h3>
  62. <el-card style="padding:0px 20px;margin-bottom: 25px">
  63. <el-row :gutter="15">
  64. <el-col :span="24">
  65. <el-form-item label="*项目概述" label-width="160px">
  66. <el-input type="textarea" v-model="formData.approval.proOverview" :rows="3" />
  67. </el-form-item>
  68. </el-col>
  69. <el-col :span="12">
  70. <el-form-item label="*是否实现盈利" label-width="160px">
  71. <el-select v-model="formData.approval.isProfit" filterable clearable placeholder="是否实现盈利">
  72. <el-option v-for="item in billTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
  73. </el-select>
  74. </el-form-item>
  75. </el-col>
  76. <el-col :span="12">
  77. <el-form-item label="*税率" label-width="160px">
  78. <el-input v-model="formData.approval.rate" />
  79. </el-form-item>
  80. </el-col>
  81. <el-col :span="24">
  82. <el-form-item label="*项目实施计划" label-width="160px">
  83. <el-input v-model="formData.approval.implementationContent" type="textarea" :raws="2" />
  84. </el-form-item>
  85. </el-col>
  86. <el-col :span="24">
  87. <el-form-item label="*项目工作实施方案" label-width="160px" prop="proId">
  88. <el-upload
  89. class="upload-demo"
  90. :action="$constant.BASE_URI + '/FileController/upload'"
  91. :http-request="upload"
  92. :before-remove="beforeRemove"
  93. :file-list="fileUrlList"
  94. >
  95. <el-button v-if="!isView" size="small" type="primary">点击上传</el-button>
  96. <div v-if="!isView" slot="tip" class="el-upload__tip">请上传50MB以内的文件</div>
  97. <div slot="file" slot-scope="{file}">
  98. <a :href="file.url">{{ file.name }}</a>
  99. <span class="el-upload-list__item-actions">
  100. <i v-if="!isView" class="el-icon-delete" @click="handlePictureRemove(file,fileUrlList)" />
  101. </span>
  102. </div>
  103. </el-upload>
  104. </el-form-item>
  105. </el-col>
  106. <el-col :span="24">
  107. <el-form-item label="*调研报告" label-width="160px" prop="proId">
  108. <el-upload
  109. class="upload-demo"
  110. :action="$constant.BASE_URI + '/FileController/upload'"
  111. :http-request="upload2"
  112. :before-remove="beforeRemove"
  113. :file-list="fileUrlList2"
  114. >
  115. <el-button v-if="!isView" size="small" type="primary">点击上传</el-button>
  116. <div v-if="!isView" slot="tip" class="el-upload__tip">请上传50MB以内的文件</div>
  117. <div slot="file" slot-scope="{file}">
  118. <a :href="file.url">{{ file.name }}</a>
  119. <span class="el-upload-list__item-actions">
  120. <i v-if="!isView" class="el-icon-delete" @click="handlePictureRemove(file,fileUrlList2)" />
  121. </span>
  122. </div>
  123. </el-upload>
  124. </el-form-item>
  125. </el-col>
  126. <el-col :span="24">
  127. <el-form-item label="其他附件" label-width="160px" prop="proId">
  128. <el-upload
  129. class="upload-demo"
  130. :action="$constant.BASE_URI + '/FileController/upload'"
  131. :http-request="upload3"
  132. :before-remove="beforeRemove"
  133. :file-list="fileUrlList3"
  134. >
  135. <el-button v-if="!isView" size="small" type="primary">点击上传</el-button>
  136. <div v-if="!isView" slot="tip" class="el-upload__tip">请上传50MB以内的文件</div>
  137. <div slot="file" slot-scope="{file}">
  138. <a :href="file.url">{{ file.name }}</a>
  139. <span class="el-upload-list__item-actions">
  140. <i v-if="!isView" class="el-icon-delete" @click="handlePictureRemove(file,fileUrlList3)" />
  141. </span>
  142. </div>
  143. </el-upload>
  144. </el-form-item>
  145. </el-col>
  146. <el-col :span="24">
  147. <span class="card_title">*回款计划</span>
  148. <el-card shadow="always">
  149. <el-row>
  150. <el-col :span="24">
  151. <el-table
  152. v-loading="planLoading"
  153. :data="SalsReturnPlanData"
  154. stripe
  155. row-class-name="g_table_row"
  156. >
  157. <el-table-column type="index" width="60" />
  158. <el-table-column label="应收日期" prop="ardateStr" />
  159. <el-table-column label="提醒日期" prop="noticedateStr" />
  160. <el-table-column label="应收金额(元)" prop="aramountStr" header-align="center" align="center" />
  161. <el-table-column label="已收金额(元)" prop="rcamountStr" header-align="center" align="center" />
  162. <el-table-column label="收款名称" prop="arname" header-align="center" align="center" />
  163. <el-table-column label="收款状态" prop="statusStr" header-align="center" align="center" />
  164. <el-table-column align="right" width="160">
  165. <template slot="header">
  166. <el-button
  167. size="mini"
  168. class="ch-button-warning"
  169. @click="addPlan(ctrId)"
  170. >添加回款计划</el-button>
  171. </template>
  172. <template scope="scope">
  173. <el-button
  174. size="mini"
  175. type="danger"
  176. @click="deletePlan(scope.row.index) "
  177. >删除</el-button>
  178. </template>
  179. </el-table-column>
  180. </el-table>
  181. </el-col>
  182. </el-row>
  183. </el-card>
  184. </el-col>
  185. </el-row>
  186. </el-card>
  187. <h3 style="margin-top: 0"><span style="color: red">*</span> 预算信息</h3>
  188. <el-card style="padding:0px 20px;margin-bottom: 25px">
  189. <el-row :gutter="15">
  190. <el-col :span="24">
  191. <bug-get ref="bids" :key="keys" :pro-id="formData.proId" :is-audit="isView?'true':''" />
  192. </el-col>
  193. </el-row>
  194. </el-card>
  195. <h3 style="margin-top: 0">
  196. 申请内容
  197. </h3>
  198. <el-card style="padding:0px 20px;margin-bottom: 25px">
  199. <el-row :gutter="15">
  200. <el-col :span="24">
  201. <el-form-item label="申请理由" label-width="160px" prop="reason">
  202. <el-input
  203. v-model="formData.reason"
  204. :style="{width: '100%'}"
  205. clearable
  206. placeholder="请输入申请理由"
  207. />
  208. </el-form-item>
  209. </el-col>
  210. <el-col :span="24">
  211. <el-form-item label="备注说明" label-width="160px" prop="comment">
  212. <el-input
  213. v-model="formData.comment"
  214. :style="{width: '100%'}"
  215. clearable
  216. />
  217. </el-form-item>
  218. </el-col>
  219. </el-row>
  220. </el-card>
  221. </el-form>
  222. </el-card>
  223. </el-tab-pane>
  224. <el-tab-pane label="流程图 " name="second">
  225. <lx-sj-work-canvas ref="lxWorkCanvas"/>
  226. </el-tab-pane>
  227. </el-tabs>
  228. </div>
  229. <div slot="footer">
  230. <el-button @click="dialogLxVisible = false">取 消</el-button>
  231. <el-button :loading="buttonLoading" type="primary" @click="confirmSubmit()">确 定</el-button>
  232. </div>
  233. <el-dialog :title="dialogPlanTitle" :visible.sync="dialogPlanVisible" width="70%" top="50px" :close-on-click-modal="false" :close-on-press-escape="false" append-to-body @open="dlgPlanCRUDOpen">
  234. <el-form ref="planForm" :model="planForm" style="width: 100%;padding: 5px" :rules="planRules">
  235. <el-row>
  236. <el-col style="padding-bottom: 10px">
  237. <span class="card_title">基本信息</span>
  238. <el-card shadow="always" style="padding: 15px 5px 5px 15px">
  239. <el-row>
  240. <el-col :span="24">
  241. <el-row>
  242. <el-col :span="3" class="col-txt"><span>应收日期</span></el-col>
  243. <el-col :span="8" class="col-input">
  244. <el-form-item prop="ardate">
  245. <el-date-picker
  246. v-model="planForm.ardate"
  247. style="width: 100%"
  248. type="date"
  249. placeholder="应收日期"
  250. @change="arDateChange"
  251. />
  252. </el-form-item>
  253. </el-col>
  254. <el-col :span="4" class="col-txt"><span>提醒日期</span></el-col>
  255. <el-col :span="8" class="col-input">
  256. <el-form-item prop="noticedate">
  257. <el-date-picker
  258. v-model="planForm.noticedate"
  259. style="width: 100%"
  260. type="date"
  261. placeholder="提醒日期"
  262. />
  263. </el-form-item>
  264. </el-col>
  265. </el-row>
  266. <el-row>
  267. <el-col :span="3" class="col-txt"><span>应收金额</span></el-col>
  268. <el-col :span="8" class="col-input">
  269. <el-form-item prop="aramount">
  270. <el-input v-model="planForm.aramount" placeholder="0" type="number">
  271. <template slot="prepend">¥</template>
  272. </el-input>
  273. </el-form-item>
  274. </el-col>
  275. <el-col :span="4" class="col-txt"><span>收款名称</span></el-col>
  276. <el-col :span="8" class="col-input">
  277. <el-form-item prop="arname">
  278. <el-input v-model="planForm.arname" />
  279. </el-form-item>
  280. </el-col>
  281. </el-row>
  282. </el-col>
  283. </el-row>
  284. </el-card>
  285. </el-col>
  286. </el-row>
  287. <el-row>
  288. <el-col style="padding-bottom: 10px">
  289. <span class="card_title">其他信息</span>
  290. <el-card shadow="always" style="padding: 15px 5px 5px 15px">
  291. <el-row>
  292. <el-col :span="3" class="col-txt"><span>更新日期</span></el-col>
  293. <el-col :span="8" class="col-input">
  294. <el-form-item>
  295. <el-input v-model="planForm.updatedatStr" disabled />
  296. </el-form-item>
  297. </el-col>
  298. <el-col :span="3" class="col-txt"><span>更新人</span></el-col>
  299. <el-col :span="9" class="col-input">
  300. <el-form-item>
  301. <el-input v-model="planForm.updatedname" disabled />
  302. </el-form-item>
  303. </el-col>
  304. </el-row>
  305. </el-card>
  306. </el-col>
  307. </el-row>
  308. </el-form>
  309. <div slot="footer">
  310. <el-button @click="dialogPlanVisible = false">取 消</el-button>
  311. <el-button v-preventReClick type="primary" @click.native="confirmPlanSubmit()">确 定</el-button>
  312. </div>
  313. </el-dialog>
  314. </el-dialog>
  315. </template>
  316. <script>
  317. import { upload } from '@/static/utils/channel'
  318. import Base from '@/views/base/base'
  319. import BaseData from '@/views/base/baseData'
  320. import UserSelect from '@/views/components/UserSelect'
  321. import * as echarts from 'echarts'
  322. import Constant from '@/static/utils/constant'
  323. import BugGet from '@/views/workflow/components/myProcess/applyBudgetingApprove.vue'
  324. import LxSjWorkCanvas from '@/views/workflow/components/myProcess/lxSjWorkCanvas.vue'
  325. const lineStyle = {
  326. color: '#00116a',
  327. width: 2
  328. }
  329. const redLinestyle = {
  330. color: 'red',
  331. width: 2
  332. }
  333. const intiData = {}
  334. export default {
  335. name: 'ApplyPay',
  336. components: {
  337. UserSelect,
  338. BugGet,
  339. LxSjWorkCanvas
  340. },
  341. mixins: [Base, BaseData],
  342. data() {
  343. return {
  344. ProjectData: [],
  345. SalsReturnPlanData:[],
  346. tableData:[],
  347. formData: this.initForm(),
  348. dc_sign_status: Constant.dc_sign_status_2,
  349. hasRecord: false,
  350. planLoading: false,
  351. keys: 0,
  352. ctrId:'',
  353. fileUrlList:[],
  354. fileUrlList2:[],
  355. fileUrlList3:[],
  356. planForm: {
  357. id: '',
  358. planno: '',
  359. ctrid: '',
  360. ardate: '',
  361. aramount: '',
  362. arname: '',
  363. noticedate: '',
  364. updatedby: '',
  365. updatedname: '',
  366. updatedatStr: ''
  367. },
  368. planRules:{},
  369. isAdd:false,
  370. isView: false,
  371. dialogPlanVisible:false,
  372. dialogPlanTitle:'新增计划',
  373. hasNewTemplate:false,
  374. referenceId: '',
  375. fileError: false,
  376. bizByList: [],
  377. selectList: [],
  378. detailsForm: {},
  379. buttonLoading: false,
  380. // 查询的时候用的字典========================================
  381. dc_key: ['PAY_TYPE', 'BUDGET_CB', 'RECEIPT_TYPE'],
  382. fileDataIdsAction: 'https://jsonplaceholder.typicode.com/posts/',
  383. billTypeOptions: [
  384. { 'label': '是', 'value': '是' },
  385. { 'label': '否', 'value': '否'}
  386. ],
  387. nodeColor: [
  388. { name: '审核通过', nodeback: '#2A3980' },
  389. { name: '未经过', nodeback: '#999999' },
  390. { name: '退回', nodeback: '#E04242' },
  391. { name: '审核中', nodeback: '#E08E42' },
  392. { name: '撤回', nodeback: '#4294E0' }
  393. ],
  394. onlineForm: {},
  395. dialogTitle: '立项申请',
  396. dialogLxVisible: false,
  397. form: {},
  398. activeName: 'first',
  399. OutOrderList: [],
  400. rules: {
  401. fileDataIds: [{ required: false, message: '请上传发票文件', trigger: 'change' }],
  402. totalPayMoney: [{ required: true, message: '请输入订单累计已支付金额', trigger: 'change' }],
  403. payName: [{ required: true, message: '请输入付款名称', trigger: 'change' }],
  404. payMoney: [{ required: true, message: '请输入付款金额', trigger: 'change' }]
  405. // costsType: [{required: true, message: '请选择', trigger: 'change'}],
  406. }
  407. }
  408. },
  409. mounted() {
  410. this.initProType()
  411. this.generateDcMap()
  412. this.initDict(this.dc_key).then((res) => {
  413. this.initProject({ /* signstatus: '2,3'*/ })
  414. })
  415. // /webServer/BugLibraryController/listBizUserAll
  416. },
  417. methods: {
  418. generateDcMap: function() {
  419. this.dc_map['dc_sign_status'] = this.$common.transDcMap(Constant.dc_sign_status_2)
  420. },
  421. upload(param){
  422. this.uploadRp(param,'fileUrlList')
  423. },
  424. upload2(param){
  425. this.uploadRp(param,'fileUrlList2')
  426. },
  427. upload3(param){
  428. this.uploadRp(param,'fileUrlList3')
  429. },
  430. uploadRp: function(param,fileName) {
  431. const _this = this
  432. _this.fileError = true
  433. upload(param, true).then((res) => {
  434. if (res.key === 200) {
  435. if('fileUrlList'===fileName){
  436. _this.fileUrlList.push(res)
  437. }else if('fileUrlList2'===fileName){
  438. _this.fileUrlList2.push(res)
  439. }else if('fileUrlList3'===fileName){
  440. _this.fileUrlList3.push(res)
  441. }
  442. this.$message.info('文件上传成功')
  443. } else {
  444. this.$message.error('文件上传失败')
  445. }
  446. _this.fileError = false
  447. })
  448. },
  449. initForm(){
  450. return{
  451. id:'',
  452. proId:'',
  453. ctrId:'',
  454. approvalId:'',
  455. workReceivableId:'',
  456. reason:'',
  457. comment:'',
  458. status:'',
  459. approvalForm:'',
  460. approval:{},
  461. workReceivableForm:''
  462. }
  463. },
  464. ctrMainByProId(proId){
  465. const _this = this
  466. this.ctrMainRequest('getByProId',{proId:proId}).then(res=>{
  467. if(res.data){
  468. _this.ctrId = res.data.id
  469. _this.getPlanData(res.data.id)
  470. }
  471. })
  472. },
  473. getPlanData: function(ctrId) {
  474. const _this = this
  475. this.SalsReturnPlanData = []
  476. if (ctrId) {
  477. this.planLoading = true
  478. const postData = this.$qs.stringify({
  479. ctrid: ctrId,
  480. pageNum: this.currentPage,
  481. pageSize: this.pageSize
  482. })
  483. console.log(postData)
  484. this.$axios({
  485. headers: {
  486. 'MVVM-Key': String(new Date().getTime()),
  487. 'xx': 'anything'
  488. },
  489. method: 'post',
  490. url: _this.$constant.BASE_URI + '/AccountReceivableController/list',
  491. data: postData
  492. }).then((res) => {
  493. console.log('sales return plan list', res)
  494. _this.$common.checkLoginStatus(res.data.statusCode)
  495. if (res.data.rows) {
  496. res.data.rows.forEach(function(item) {
  497. const json = {
  498. planstatus: item.planstatus,
  499. arname: item.arname,
  500. // aramountStr: '¥' + _this.$common.formatMoney(item.aramount),
  501. // rcamountStr: '¥' + _this.$common.formatMoney(item.receiveamount),
  502. ardateStr: _this.$common.transDate(item.ardate),
  503. noticedateStr: _this.$common.transDate(item.noticedate),
  504. id: item.id
  505. }
  506. const ra = _this.$common.formatMoney(item.receiveamount)
  507. json.rcamountStr = ra ? '¥' + ra : ''
  508. item.ysAmount = parseInt(item.aramount || 0)
  509. const sr = _this.$common.formatMoney(item.ysAmount)
  510. json.ysAmountStr = sr ? '¥' + sr : ''
  511. item.aramount = parseInt(item.aramount || 0) + parseInt(item.adjustamount || 0)
  512. const r = _this.$common.formatMoney(item.aramount)
  513. json.aramountStr = r ? '¥' + r : ''
  514. json.statusStr = '未收款'
  515. if (item.planstatus === '1') {
  516. json.statusStr = '收款中'
  517. } else if (item.planstatus === '2') {
  518. json.statusStr = '收款完成'
  519. }
  520. _this.SalsReturnPlanData.push(json)
  521. })
  522. }
  523. _this.planLoading = false
  524. }).catch((err, x) => {
  525. console.log('sales return plan list error', err, x)
  526. })
  527. }
  528. },
  529. arDateChange: function(val) {
  530. // console.log('contract date change:' + val)
  531. if (!val) return
  532. const time = new Date(val)
  533. time.setTime(time.getTime() - 3600 * 1000 * 24 * 15)
  534. this.planForm.noticedate = time
  535. },
  536. confirmPlanSubmit: function() {
  537. const _this = this
  538. this.$refs.planForm.validate(valid => {
  539. if (valid) {
  540. var acting = this.$notify({
  541. title: '正在上传信息,喝杯咖啡等等',
  542. type: 'warning'
  543. })
  544. const postData = {
  545. id: this.planForm.id,
  546. ctrid: this.ctrId,
  547. ardate: this.$common.transDate(this.planForm.ardate, Constant.DATE_PATTERN.DATE_TIME_h),
  548. aramount: this.planForm.aramount,
  549. arname: this.planForm.arname,
  550. noticedate: this.$common.transDate(this.planForm.noticedate, Constant.DATE_PATTERN.DATE_TIME_h),
  551. updatedby: this.planForm.updatedby,
  552. updatedat: this.$common.transDate(new Date(), Constant.DATE_PATTERN.DATE_TIME_h)
  553. }
  554. postData.ardateStr= postData.ardate.split(' ')[0]
  555. postData.noticedateStr= postData.noticedate.split(' ')[0]
  556. const r = _this.$common.formatMoney(postData.aramount)
  557. postData.aramountStr = r ? '¥' + r : ''
  558. postData.planno = this.planForm.planno
  559. postData.planstatus = '0'
  560. postData.groupId = this.$common.currUser() ? this.$common.currUser().groupId : ''
  561. postData.statusStr = '未收款'
  562. _this.SalsReturnPlanData.push(postData)
  563. _this.dialogPlanVisible = false
  564. _this.$notify({
  565. title: '添加成功',
  566. type: 'info'
  567. })
  568. } else {
  569. console.log('error submit!!')
  570. return false
  571. }
  572. })
  573. },
  574. /* 删除*/
  575. deletePlan: function(pId,index) {
  576. this.SalsReturnPlanData.splice(index,1)
  577. },
  578. /* 新增*/
  579. addPlan: function(ctrId) {
  580. this.planForm = {
  581. id: '',
  582. planno: 'PLN-' + new Date().Format('yyyyMMddhhmm'),
  583. ctrid: ctrId,
  584. ardate: '',
  585. aramount: '',
  586. arname: '',
  587. noticedate: '',
  588. updatedby: '',
  589. updatedname: '',
  590. updatedatStr: ''
  591. }
  592. const currUser = this.$common.currUser()
  593. if (currUser) {
  594. this.planForm.updatedatStr = this.$common.transDate(new Date().getTime())
  595. this.planForm.updatedname = currUser.truename
  596. this.planForm.updatedby = currUser.id
  597. }
  598. this.isAdd = true
  599. this.dialogPlanVisible = true
  600. this.dialogPlanTitle = '新增计划'
  601. },
  602. getBudgetData() {
  603. const _this = this
  604. this.budGetingRequest('checkRecordApproval', { proId:this.formData.proId }).then(res => {
  605. if (res.data.hasRecord) {
  606. _this.hasRecord = true
  607. if (res.data.templateId) {
  608. const postData = {
  609. proId: _this.formData.proId,
  610. templateId: res.data.templateId
  611. }
  612. _this.budGetingRequest('checkNewTemplate', postData).then(res => {
  613. _this.hasNewTemplate = !res.data;
  614. _this.keys++
  615. _this.$nextTick(() => {
  616. this.$refs.bids.initData(_this.hasNewTemplate)
  617. })
  618. })
  619. }else {
  620. _this.keys++
  621. _this.$nextTick(() => {
  622. this.$refs.bids.initData(_this.hasNewTemplate)
  623. })
  624. }
  625. }else{
  626. _this.keys++
  627. _this.$nextTick(() => {
  628. this.$refs.bids.initData(_this.hasNewTemplate)
  629. })
  630. }
  631. })
  632. },
  633. proChange(){
  634. const _this = this
  635. _this.ProjectData.forEach(item=>{
  636. if(item.value===_this.formData.proId){
  637. _this.formData.protype = _this.ProTypeMap[item.protype]
  638. _this.formData.signStatus = _this.dc_map.dc_sign_status[item.signstatus]
  639. _this.formData.presales = item.presales
  640. _this.formData.proName = item.label
  641. }
  642. })
  643. _this.getBudgetData()
  644. // _this.ctrMainByProId(_this.formData.proId)
  645. },
  646. beforeClose() {
  647. // this.formData = {
  648. // fileUrlList: []
  649. // }
  650. this.dialogLxVisible = false
  651. },
  652. handleClick(tab, event) {
  653. if (this.activeName == 'second') this.$refs.lxWorkCanvas.createNodeCanvas(this.row)
  654. },
  655. createNodeCanvas() {
  656. this.$nextTick(() => {
  657. let chartDom = document.getElementById('containerPay')
  658. var myCharts = echarts.init(chartDom)
  659. let charts = {
  660. nodes: [ // 节点
  661. {
  662. name: '申请人发起',
  663. value: [45, 100],
  664. symbol: 'image://' + require('../asste/huifangkuai.png'),
  665. symbolSize: [110, 60]
  666. },
  667. {
  668. name: '直接上级审核',
  669. value: [125, 100],
  670. symbol: 'image://' + require('../asste/huifangkuai.png'),
  671. symbolSize: [110, 60]
  672. },
  673. {
  674. name: '部门负责人审核',
  675. value: [205, 100],
  676. symbol: 'image://' + require('../asste/huifangkuai.png'),
  677. symbolSize: [110, 60]
  678. },
  679. {
  680. name: '财务负责人',
  681. value: [285, 100],
  682. symbol: 'image://' + require('../asste/huifangkuai.png'),
  683. symbolSize: [110, 60]
  684. },
  685. {
  686. name: '分管领导审核',
  687. value: [365, 100],
  688. symbol: 'image://' + require('../asste/huifangkuai.png'),
  689. symbolSize: [110, 60]
  690. },
  691. {
  692. name: '上级分管领导\n审核',
  693. value: [445, 100],
  694. symbol: 'image://' + require('../asste/huifangkuai.png'),
  695. symbolSize: [110, 60]
  696. },
  697. {
  698. name: '总经理(董事长)\n审核',
  699. value: [605, 100],
  700. symbol: 'image://' + require('../asste/huifangkuai.png'),
  701. symbolSize: [110, 60]
  702. },
  703. {
  704. name: '结束',
  705. value: [685, 100],
  706. symbol: 'image://' + require('../asste/huifangkuai.png'),
  707. symbolSize: [110, 60]
  708. },
  709. {
  710. label: {
  711. show: true,
  712. color: 'red', // 节点文字颜色
  713. backgroundColor: '#f5f5f5'
  714. },
  715. itemStyle: {
  716. color: '#f5f5f5'
  717. },
  718. name: ' 退回发起人 ',
  719. value: [450, 500],
  720. symbolSize: [70, 20]
  721. },
  722. // {
  723. // label: {
  724. // show: true,
  725. // color: 'red', // 节点文字颜色
  726. // backgroundColor: '#f5f5f5'
  727. // },
  728. // itemStyle: {
  729. // color: '#f5f5f5'
  730. // },
  731. // name: '退回发起人 ',
  732. // value: [400, 450],
  733. // symbolSize: [70, 20]
  734. // },
  735. {
  736. label: {
  737. show: true,
  738. color: 'red', // 节点文字颜色
  739. backgroundColor: '#f5f5f5'
  740. },
  741. itemStyle: {
  742. color: '#f5f5f5'
  743. },
  744. name: '退回发起人 ',
  745. value: [350, 400],
  746. symbolSize: [70, 20]
  747. },
  748. {
  749. label: {
  750. show: true,
  751. color: 'red', // 节点文字颜色
  752. backgroundColor: '#f5f5f5'
  753. },
  754. itemStyle: {
  755. color: '#f5f5f5'
  756. },
  757. name: ' 退回发起人 ',
  758. value: [300, 350],
  759. symbolSize: [20, 20]
  760. },
  761. {
  762. label: {
  763. show: true,
  764. color: 'red', // 节点文字颜色
  765. backgroundColor: '#f5f5f5'
  766. },
  767. itemStyle: {
  768. color: '#f5f5f5'
  769. },
  770. name: ' 退回发起人 ',
  771. value: [250, 300],
  772. symbolSize: [20, 20]
  773. },
  774. {
  775. label: {
  776. show: true,
  777. color: 'red', // 节点文字颜色
  778. backgroundColor: '#f5f5f5'
  779. },
  780. itemStyle: {
  781. color: '#f5f5f5'
  782. },
  783. name: ' 退回发起人 ',
  784. value: [250, 300],
  785. symbolSize: [20, 20]
  786. },
  787. {
  788. label: {
  789. show: true,
  790. color: 'red', // 节点文字颜色
  791. backgroundColor: '#f5f5f5'
  792. },
  793. itemStyle: {
  794. color: '#f5f5f5'
  795. },
  796. name: ' 退回发起人 ',
  797. value: [175, 250],
  798. symbolSize: [20, 20]
  799. },
  800. {
  801. label: {
  802. show: true,
  803. color: 'red', // 节点文字颜色
  804. backgroundColor: '#f5f5f5'
  805. },
  806. itemStyle: {
  807. color: 'rgb(0,0,0,0)'
  808. },
  809. name: ' 项目金额<200万 ',
  810. value: [525, 40],
  811. symbolSize: [20, 20]
  812. },
  813. {
  814. label: {
  815. show: true,
  816. color: 'red', // 节点文字颜色
  817. backgroundColor: '#f5f5f5'
  818. },
  819. itemStyle: {
  820. color: 'rgb(0,0,0,0)'
  821. },
  822. name: ' 项目金额≥200万 ',
  823. value: [525, 100],
  824. symbolSize: [110, 60]
  825. },
  826. {
  827. label: {
  828. show: true,
  829. color: 'red', // 节点文字颜色
  830. backgroundColor: '#f5f5f5'
  831. },
  832. itemStyle: {
  833. color: '#f5f5f5'
  834. },
  835. name: ' 退回发起人 ',
  836. value: [100, 200],
  837. symbolSize: [20, 20]
  838. }
  839. ],
  840. linesData: [ // 连线
  841. {
  842. lineStyle: lineStyle,
  843. coords: [[45, 100], [100, 100]]
  844. },
  845. {
  846. lineStyle: lineStyle,
  847. coords: [[125, 100], [180, 100]]
  848. },
  849. {
  850. lineStyle: lineStyle,
  851. coords: [[205, 100], [260, 100]]
  852. },
  853. {
  854. lineStyle: lineStyle,
  855. coords: [[285, 100], [340, 100]]
  856. },
  857. {
  858. lineStyle: lineStyle,
  859. coords: [[365, 100], [420, 100]]
  860. },
  861. {
  862. lineStyle: lineStyle,
  863. coords: [[445, 100], [580, 100]]
  864. },
  865. {
  866. lineStyle: lineStyle,
  867. coords: [[600, 100], [660, 100]]
  868. },
  869. {
  870. lineStyle: lineStyle,
  871. coords: [[610, 100], [610, 500]],
  872. symbol: 'none'
  873. },
  874. {
  875. lineStyle: lineStyle,
  876. coords: [[450, 70], [450, 40]],
  877. symbol: 'none'
  878. },
  879. {
  880. lineStyle: lineStyle,
  881. coords: [[450, 40], [685, 40]],
  882. symbol: 'none'
  883. },
  884. {
  885. lineStyle: lineStyle,
  886. coords: [[685, 40], [685, 70]]
  887. },
  888. {
  889. lineStyle: lineStyle,
  890. coords: [[450, 100], [450, 400]],
  891. symbol: 'none'
  892. },
  893. {
  894. lineStyle: lineStyle,
  895. coords: [[370, 100], [370, 350]],
  896. symbol: 'none'
  897. },
  898. {
  899. lineStyle: lineStyle,
  900. coords: [[290, 100], [290, 300]],
  901. symbol: 'none'
  902. },
  903. {
  904. lineStyle: lineStyle,
  905. coords: [[210, 100], [210, 250]],
  906. symbol: 'none'
  907. },
  908. {
  909. lineStyle: lineStyle,
  910. coords: [[130, 100], [130, 200]],
  911. symbol: 'none'
  912. },
  913. {
  914. lineStyle: lineStyle,
  915. coords: [[50, 500],[50, 130]]
  916. },
  917. // {
  918. // lineStyle: lineStyle,
  919. // coords: [[610, 500], [50, 500]],
  920. // symbol: 'none'
  921. // },
  922. // {
  923. // lineStyle: lineStyle,
  924. // coords: [[530, 450], [50, 450]],
  925. // symbol: 'none'
  926. // },
  927. {
  928. lineStyle: lineStyle,
  929. coords: [[450, 400], [50, 400]],
  930. symbol: 'none'
  931. },
  932. {
  933. lineStyle: lineStyle,
  934. coords: [[50, 400], [50, 100]]
  935. },
  936. {
  937. lineStyle: lineStyle,
  938. coords: [[370, 350], [50, 350]],
  939. symbol: 'none'
  940. },
  941. {
  942. lineStyle: lineStyle,
  943. coords: [[290, 300], [50, 300]],
  944. symbol: 'none'
  945. },
  946. {
  947. lineStyle: lineStyle,
  948. coords: [[210, 250], [50, 250]],
  949. symbol: 'none'
  950. },
  951. {
  952. lineStyle: lineStyle,
  953. coords: [[130, 200], [50, 200]],
  954. symbol: 'none'
  955. },
  956. {
  957. lineStyle: lineStyle,
  958. coords: [[50, 150], [50, 150]],
  959. symbol: 'none'
  960. }
  961. ]
  962. }
  963. let option = {
  964. xAxis: {
  965. min: 0,
  966. max: 760,
  967. padding: [0, 50, 0, 50],
  968. show: false,
  969. type: 'value'
  970. },
  971. yAxis: {
  972. min: 0,
  973. max: 650,
  974. show: false,
  975. type: 'value'
  976. },
  977. grid: {
  978. left: 50,
  979. right: 0,
  980. bottom: 0,
  981. top: 0
  982. },
  983. series: [
  984. {
  985. type: 'graph',
  986. coordinateSystem: 'cartesian2d',
  987. symbol: 'rect',
  988. symbolSize: [80, 40],
  989. itemStyle: {
  990. color: 'rgb(225,7,7)'
  991. },
  992. symbolOffset: [10, 0],
  993. // force: {
  994. // edgeLength: 100,//连线的长度
  995. // repulsion: 200 //子节点之间的间距
  996. // },
  997. label: {
  998. show: true,
  999. color: 'white' // 节点文字颜色
  1000. },
  1001. data: charts.nodes
  1002. },
  1003. {
  1004. type: 'lines',
  1005. polyline: false,
  1006. coordinateSystem: 'cartesian2d',
  1007. symbol: ['', 'arrow'],
  1008. symbolSize: 10,
  1009. data: charts.linesData
  1010. }
  1011. ]
  1012. }
  1013. myCharts.clear()
  1014. myCharts.setOption(option)
  1015. window.addEventListener('resize', () => {
  1016. myCharts.resize()
  1017. })
  1018. })
  1019. },
  1020. handlePictureRemove(file, fileUrlList) {
  1021. var index = fileUrlList.indexOf(file)
  1022. fileUrlList.splice(index, 1)
  1023. },
  1024. uploadFile: function(param) {
  1025. const _this = this
  1026. upload(param, true).then((res) => {
  1027. _this.formData.fileUrlList.push(res)
  1028. })
  1029. },
  1030. downloadFaPiao(url) {
  1031. window.open(url)
  1032. },
  1033. parentMethod(val) {
  1034. if (val.length > 0) {
  1035. this.formData.ccList = val.join(',')
  1036. }
  1037. },
  1038. async getBizeUserList() {
  1039. const { data } = await this.baseRequest1('BugLibraryController', 'listBizUserAll', {})
  1040. this.bizByList = data
  1041. },
  1042. async selectOutOrderDetails(e) {
  1043. const postData = { id: e }
  1044. const { data } = await this.baseRequest1('OutOrderMainController', 'getVoById', postData)
  1045. // ApplyPaymentController/getTotalMoneyByProId
  1046. let index = this.OutOrderList.findIndex((a) => a.id == e)
  1047. const res = await this.baseRequest1('ApplyPaymentController', 'getTotalMoneyByProId', { proId: this.OutOrderList[index].proId })
  1048. const res2 = await this.baseRequest1('ApplyPaymentController', 'getTotalPayMoneyByOrderNo', { orderNo: this.OutOrderList[index].orderNo })
  1049. let fileUrlList = this.formData.fileUrlList
  1050. this.formData = { ...data, fileUrlList: fileUrlList }
  1051. this.formData.projectName = data.proName
  1052. this.formData.customerName = data.custName
  1053. // this.formData.supplierName = data.bizName
  1054. this.formData.bizBy = data.bizBy
  1055. this.formData.dealAt = this.$common.transServDate(data.dealAt)
  1056. this.formData.outTimeline = this.$common.transServDate(data.outTimeline)
  1057. this.formData.orderNo = data.custName + '-' + data.orderNo
  1058. this.formData.orderId = e
  1059. this.formData.totalReturnMoney = res.data.data
  1060. this.formData.totalPayMoney = res2.data.data
  1061. // this.formData.fileUrlList = []
  1062. },
  1063. // /webServer/OutOrderMainController/list
  1064. async getOutOrderList() {
  1065. // 获取采购订单号下拉数据
  1066. const postData = {
  1067. pageNum: 1,
  1068. pageSize: 10000,
  1069. shouldAmount: 0
  1070. }
  1071. const { data } = await this.baseRequest1('OutOrderMainController', 'list', postData)
  1072. this.OutOrderList = data.rows
  1073. },
  1074. baseRequest1(prefix, opUrl, postData) {
  1075. return this.$channel.globleRequest(prefix, opUrl, postData, 'project task')
  1076. },
  1077. async confirmSubmit() {
  1078. this.$delete(this.formData,'applyWorkReceivables')
  1079. if(!this.formData.proId){
  1080. this.$message.warning('请选择项目')
  1081. return
  1082. }
  1083. if(!this.formData.approval.proOverview){
  1084. this.$message.warning('请输入项目概述')
  1085. return
  1086. }
  1087. if(!this.formData.approval.isProfit){
  1088. this.$message.warning('请选择是否实现盈利')
  1089. return
  1090. }
  1091. if(!this.formData.approval.rate){
  1092. this.$message.warning('请输入税率')
  1093. return
  1094. }
  1095. if(!this.formData.approval.implementationContent){
  1096. this.$message.warning('请输入项目实施计划')
  1097. return
  1098. }
  1099. if(this.fileUrlList&&this.fileUrlList.length>0){
  1100. this.formData.approval.implementationProgramme=JSON.stringify(this.fileUrlList)
  1101. }else{
  1102. this.$message.warning('请上传实施方案')
  1103. return
  1104. }
  1105. if(this.fileUrlList2&&this.fileUrlList2.length>0){
  1106. this.formData.approval.researchReport=JSON.stringify(this.fileUrlList2)
  1107. }else{
  1108. this.$message.warning('请上传调研报告')
  1109. return
  1110. }
  1111. if(this.fileUrlList3&&this.fileUrlList3.length>0){
  1112. this.formData.approval.otherFile=JSON.stringify(this.fileUrlList3)
  1113. }
  1114. if(this.SalsReturnPlanData&&this.SalsReturnPlanData.length>0){
  1115. this.formData.workReceivableForm= JSON.stringify(this.SalsReturnPlanData)
  1116. }else{
  1117. this.$message.warning('请添加回款计划')
  1118. return
  1119. }
  1120. this.formData.ctrId = this.ctrId
  1121. this.formData.approval.ctrId = this.ctrId
  1122. this.formData.approval.status = '0'
  1123. this.formData.approval.proId = this.formData.proId
  1124. this.formData.approval.groupId = this.$common.currUser().groupId
  1125. this.formData.groupId = this.$common.currUser().groupId
  1126. this.formData.approvalForm = JSON.stringify(this.formData.approval)
  1127. // this.formData.approval ={}
  1128. this.formData.flowMainCcList =[]
  1129. this.$refs.bids.toSave('1')
  1130. this.$refs.elformData.validate(async(valid) => {
  1131. if (valid) {
  1132. let formData = { ...this.formData }
  1133. formData.approval={}
  1134. this.buttonLoading = true
  1135. const { data } = await this.baseRequest1(
  1136. 'ApplyLxSjWorkController',
  1137. 'addApplyLxSjWorkAgain',
  1138. { ...formData })
  1139. this.buttonLoading = false
  1140. if (data.code == 200) {
  1141. this.$message.success('流程已发起')
  1142. this.dialogLxVisible = false
  1143. this.formData= this.initForm()
  1144. this.fileUrlList = []
  1145. this.fileUrlList2 = []
  1146. this.fileUrlList3 = []
  1147. this.ctrId =''
  1148. this.SalsReturnPlanData = []
  1149. this.$emit('getData')
  1150. }
  1151. //
  1152. } else {
  1153. }
  1154. })
  1155. },
  1156. async setVisible(status, row) {
  1157. const _this = this
  1158. this.row=row
  1159. this.activeName='first'
  1160. let { data } = await this.baseRequest1('ApplyLxSjWorkController', 'getInfoByFlowMainId', { flowMainId: row.id })
  1161. this.formData = data
  1162. row.prosale = data.presales
  1163. this.proChange()
  1164. this.fileUrlList = this.formData.approval.implementationProgramme?this.$common.castEval(this.formData.approval.implementationProgramme):[]
  1165. this.fileUrlList2 = this.formData.approval.researchReport?this.$common.castEval(this.formData.approval.researchReport):[]
  1166. this.fileUrlList3 = this.formData.approval.otherFile?this.$common.castEval(this.formData.approval.otherFile):[]
  1167. _this.SalsReturnPlanData = []
  1168. this.formData.applyWorkReceivables.forEach(function(item) {
  1169. const json = {
  1170. planstatus: item.planstatus,
  1171. arname: item.arname,
  1172. aramount:item.aramount,
  1173. planno:item.planno,
  1174. groupId:item.groupId,
  1175. ardate:item.ardate,
  1176. noticedate:item.noticedate,
  1177. updatedby:item.updatedby,
  1178. updatedat:item.updatedat,
  1179. // rcamountStr: '¥' + _this.$common.formatMoney(item.receiveamount),
  1180. ardateStr: _this.$common.transDate(item.ardate),
  1181. noticedateStr: _this.$common.transDate(item.noticedate),
  1182. id: item.id
  1183. }
  1184. const ra = _this.$common.formatMoney(item.receiveamount)
  1185. json.rcamountStr = ra ? '¥' + ra : ''
  1186. item.ysAmount = parseInt(item.aramount || 0)
  1187. const sr = _this.$common.formatMoney(item.ysAmount)
  1188. json.ysAmountStr = sr ? '¥' + sr : ''
  1189. item.aramount = parseInt(item.aramount || 0) + parseInt(item.adjustamount || 0)
  1190. const r = _this.$common.formatMoney(item.aramount)
  1191. json.aramountStr = r ? '¥' + r : ''
  1192. json.statusStr = '未收款'
  1193. if (item.planstatus === '1') {
  1194. json.statusStr = '收款中'
  1195. } else if (item.planstatus === '2') {
  1196. json.statusStr = '收款完成'
  1197. }
  1198. _this.SalsReturnPlanData.push(json)
  1199. })
  1200. this.dialogLxVisible = status
  1201. this.row = row
  1202. },
  1203. budGetingRequest(opUrl, postData) {
  1204. return this.$channel.globleRequest('BudgetMakingController', opUrl, postData, 'project')
  1205. },
  1206. ctrMainRequest(opUrl, postData) {
  1207. return this.$channel.globleRequest('CtrMainController', opUrl, postData, 'project')
  1208. }
  1209. }
  1210. }
  1211. </script>
  1212. <style lang="scss">
  1213. #containerPay {
  1214. width: 100%;
  1215. height: 600px;
  1216. background: #F5F5F5;
  1217. }
  1218. .mb25 {
  1219. margin-bottom: 25px;
  1220. }
  1221. .pdtopbottom16 {
  1222. padding: 0px 16px;
  1223. }
  1224. .pdtop16px {
  1225. padding-top: 16px;
  1226. }
  1227. .elformdom {
  1228. label {
  1229. text-align: right;
  1230. font-size: 16px;
  1231. font-family: 微软雅黑;
  1232. padding-right: 10px;
  1233. line-height: 40px;
  1234. word-break: keep-all;
  1235. white-space: nowrap;
  1236. -webkit-font-smoothing: antialiased;
  1237. color: #303133;
  1238. text-rendering: optimizeLegibility;
  1239. font-weight: 400;
  1240. }
  1241. .el-radio {
  1242. height: 15px;
  1243. margin-top: -19px;
  1244. }
  1245. }
  1246. .payform {
  1247. .el-form-item__label {
  1248. text-align: right;
  1249. font-size: 16px;
  1250. font-family: 微软雅黑;
  1251. padding-right: 10px;
  1252. line-height: 40px;
  1253. word-break: keep-all;
  1254. white-space: nowrap;
  1255. font-weight: 400;
  1256. }
  1257. }
  1258. .tabsdom {
  1259. .el-tabs__header {
  1260. text-align: center !important;
  1261. width: 139px !important;
  1262. text-align: center !important;
  1263. display: block !important;
  1264. margin: auto !important;
  1265. margin-bottom: 15px !important;
  1266. }
  1267. .el-tabs__nav-wrap::after {
  1268. display: none;
  1269. }
  1270. }
  1271. .cost_form {
  1272. .col-input {
  1273. font-weight: 400;
  1274. }
  1275. .el-form-item__label {
  1276. text-align: right;
  1277. font-size: 16px;
  1278. font-family: 微软雅黑;
  1279. padding-right: 10px;
  1280. line-height: 40px;
  1281. word-break: keep-all;
  1282. white-space: nowrap;
  1283. color: #606266;
  1284. text-rendering: optimizeLegibility;
  1285. font-weight: 400;
  1286. }
  1287. .el-form-item__label .moneydetails {
  1288. text-align: right;
  1289. font-size: 16px;
  1290. font-family: 微软雅黑;
  1291. padding-right: 10px;
  1292. line-height: 40px;
  1293. word-break: keep-all;
  1294. white-space: nowrap;
  1295. color: #606266;
  1296. text-rendering: optimizeLegibility;
  1297. font-weight: 400;
  1298. }
  1299. }
  1300. </style>