applyLxWorkConfirm.vue 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797
  1. <template>
  2. <el-dialog
  3. :close-on-click-modal="false"
  4. :close-on-press-escape="false"
  5. :visible.sync="dialogLxVisible"
  6. title="立项申请单-审核"
  7. top="50px"
  8. width="75%"
  9. >
  10. <div class="tabsdom">
  11. <el-tabs v-model="activeName" @tab-click="handleClick">
  12. <el-tab-pane label="立项申请" name="first">
  13. <el-card shadow="always" style="padding: 15px 5px 5px 15px">
  14. <el-form
  15. ref="elformData"
  16. :model="formData"
  17. :rules="rules"
  18. class="payform"
  19. label-width="200px"
  20. size="medium"
  21. >
  22. <h3 style="margin-top: 0"><span style="color: red">*</span> 基本信息</h3>
  23. <el-card style="padding:0px 20px;margin-bottom: 25px">
  24. <el-row>
  25. <el-col :span="12">
  26. <el-form-item label="关联项目" prop="proId">
  27. <el-select v-model="formData.proId" disabled filterable placeholder="关联项目名称" @change="proChange">
  28. <el-option
  29. v-for="item in ProjectData"
  30. :key="item.value"
  31. :label="item.label"
  32. :value="item.value"
  33. >
  34. <span style="float: left">{{ item.label }}</span>
  35. <span style="float: right; color: #8492a6; font-size: 13px">{{
  36. item.custname
  37. }}</span>
  38. </el-option>
  39. </el-select>
  40. </el-form-item>
  41. </el-col>
  42. <el-col :span="12">
  43. <el-form-item label="项目类型">
  44. <div style="line-height: 40px;height: 40px">{{ formData.protype }}</div>
  45. </el-form-item>
  46. </el-col>
  47. <el-col :span="12">
  48. <el-form-item label="储备项目状态">
  49. <div style="line-height: 40px;height: 40px">{{ formData.signStatus }}</div>
  50. </el-form-item>
  51. </el-col>
  52. <el-col :span="12">
  53. <el-form-item label="预计销售金额(元)">
  54. <div style="line-height: 40px;height: 40px">{{ formData.presales ? formData.presales + '(元)' : '' }}</div>
  55. </el-form-item>
  56. </el-col>
  57. </el-row>
  58. </el-card>
  59. <h3 style="margin-top: 0"><span style="color: red">*</span> 立项内容</h3>
  60. <el-card style="padding:0px 20px;margin-bottom: 25px">
  61. <el-row :gutter="15">
  62. <el-col :span="24">
  63. <el-form-item label="*项目概述" label-width="160px">
  64. <el-input type="textarea" v-model="formData.approval.proOverview" :rows="3" readonly/>
  65. </el-form-item>
  66. </el-col>
  67. <el-col :span="12">
  68. <el-form-item label="*是否实现盈利" label-width="160px">
  69. <el-select v-model="formData.approval.isProfit" filterable clearable placeholder="是否实现盈利" disabled>
  70. <el-option v-for="item in billTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
  71. </el-select>
  72. </el-form-item>
  73. </el-col>
  74. <el-col :span="12">
  75. <el-form-item label="*税率" label-width="160px">
  76. <el-input v-model="formData.approval.rate" readonly />
  77. </el-form-item>
  78. </el-col>
  79. <el-col :span="24">
  80. <el-form-item label="*项目实施计划" label-width="160px">
  81. <el-input v-model="formData.approval.implementationContent" type="textarea" :raws="2" readonly/>
  82. </el-form-item>
  83. </el-col>
  84. <el-col :span="24">
  85. <el-form-item label="*项目工作实施方案" label-width="160px" prop="proId">
  86. <el-upload
  87. class="upload-demo"
  88. :action="$constant.BASE_URI + '/FileController/upload'"
  89. :http-request="upload"
  90. disabled
  91. :before-remove="beforeRemove"
  92. :file-list="fileUrlList"
  93. >
  94. <!-- <el-button v-if="!isView" size="small" type="primary">点击上传</el-button>-->
  95. <!-- <div v-if="!isView" slot="tip" class="el-upload__tip">请上传50MB以内的文件</div>-->
  96. <div slot="file" slot-scope="{file}">
  97. <a :href="file.url">{{ file.name }}</a>
  98. <span class="el-upload-list__item-actions">
  99. <i v-if="!isView" class="el-icon-delete" @click="handlePictureRemove(file,fileUrlList)" />
  100. </span>
  101. </div>
  102. </el-upload>
  103. </el-form-item>
  104. </el-col>
  105. <el-col :span="24">
  106. <el-form-item label="*调研报告" label-width="160px" prop="proId">
  107. <el-upload
  108. class="upload-demo"
  109. :action="$constant.BASE_URI + '/FileController/upload'"
  110. :http-request="upload2"
  111. disabled
  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. disabled
  133. :before-remove="beforeRemove"
  134. :file-list="fileUrlList3"
  135. >
  136. <!-- <el-button v-if="!isView" size="small" type="primary">点击上传</el-button>-->
  137. <!-- <div v-if="!isView" slot="tip" class="el-upload__tip">请上传50MB以内的文件</div>-->
  138. <div slot="file" slot-scope="{file}">
  139. <a :href="file.url">{{ file.name }}</a>
  140. <span class="el-upload-list__item-actions">
  141. <i v-if="!isView" class="el-icon-delete" @click="handlePictureRemove(file,fileUrlList3)" />
  142. </span>
  143. </div>
  144. </el-upload>
  145. </el-form-item>
  146. </el-col>
  147. <el-col :span="24">
  148. <span class="card_title">*回款计划</span>
  149. <el-card shadow="always">
  150. <el-row>
  151. <el-col :span="24">
  152. <el-table
  153. v-loading="planLoading"
  154. :data="SalsReturnPlanData"
  155. stripe
  156. row-class-name="g_table_row"
  157. >
  158. <el-table-column type="index" width="60" />
  159. <el-table-column label="应收日期" prop="ardateStr" />
  160. <el-table-column label="提醒日期" prop="noticedateStr" />
  161. <el-table-column label="应收金额(元)" prop="aramountStr" header-align="center" align="center" />
  162. <el-table-column label="已收金额(元)" prop="rcamountStr" header-align="center" align="center" />
  163. <el-table-column label="收款名称" prop="arname" header-align="center" align="center" />
  164. <el-table-column label="收款状态" prop="statusStr" header-align="center" align="center" />
  165. <!-- <el-table-column align="right" width="160">
  166. <template slot="header">
  167. <el-button
  168. size="mini"
  169. class="ch-button-warning"
  170. @click="addPlan(ctrId)"
  171. >添加回款计划</el-button>
  172. </template>
  173. <template scope="scope">
  174. <el-button
  175. size="mini"
  176. type="danger"
  177. @click="deletePlan(scope.row.index) "
  178. >删除</el-button>
  179. </template>
  180. </el-table-column>-->
  181. </el-table>
  182. </el-col>
  183. </el-row>
  184. </el-card>
  185. </el-col>
  186. </el-row>
  187. </el-card>
  188. <h3 style="margin-top: 0"><span style="color: red">*</span> 预算信息</h3>
  189. <el-card style="padding:0px 20px;margin-bottom: 25px">
  190. <el-row :gutter="15">
  191. <el-col :span="24">
  192. <bug-get ref="bidss" :key="keys" :pro-id="formData.proId" :is-audit="isView?'true':''" />
  193. </el-col>
  194. </el-row>
  195. </el-card>
  196. <h3 style="margin-top: 0">
  197. 申请内容
  198. </h3>
  199. <el-card style="padding:0px 20px;margin-bottom: 25px">
  200. <el-row :gutter="15">
  201. <el-col :span="24">
  202. <el-form-item label="申请理由" label-width="160px" prop="reason">
  203. <el-input
  204. v-model="formData.reason"
  205. :style="{width: '100%'}"
  206. clearable
  207. placeholder="请输入申请理由"
  208. />
  209. </el-form-item>
  210. </el-col>
  211. <el-col :span="24">
  212. <el-form-item label="备注说明" label-width="160px" prop="comment">
  213. <el-input
  214. v-model="formData.comment"
  215. :style="{width: '100%'}"
  216. clearable
  217. />
  218. </el-form-item>
  219. </el-col>
  220. </el-row>
  221. </el-card>
  222. </el-form>
  223. <h3>流程历史</h3>
  224. <div class="tableDom">
  225. <el-table
  226. :data="tableData"
  227. :header-cell-style="{
  228. background:'#1890FF !important',
  229. color:'white'
  230. }"
  231. border
  232. style="width: 100%"
  233. >
  234. <el-table-column fixed label="序号" type="index" width="60"/>
  235. <el-table-column
  236. label="节点名称"
  237. prop="nodeName"
  238. width="180"
  239. />
  240. <el-table-column
  241. label="处理人"
  242. prop="auditUserName"
  243. width="180"
  244. />
  245. <el-table-column
  246. label="审核结果"
  247. prop="auditResultString"
  248. />
  249. <el-table-column
  250. label="审核意见"
  251. prop="auditContent"
  252. />
  253. <el-table-column
  254. label="发起/审核时间"
  255. prop="createdAt"
  256. >
  257. <template slot-scope="scope">
  258. {{ $common.transTime(scope.row.createdAt) }}
  259. </template>
  260. </el-table-column>
  261. </el-table>
  262. </div>
  263. <h3>处理</h3>
  264. <el-card shadow="always" style="padding: 0px 5px 5px 15px">
  265. <el-form
  266. ref="confirmForm"
  267. :model="confirmForm"
  268. class="cost_form"
  269. label-width="100px"
  270. style="width: 100%;padding: 5px"
  271. >
  272. <el-row :gutter="10">
  273. <el-col :span="24">
  274. <el-form-item label="处理结果" style="margin-bottom: 15px">
  275. <el-radio-group v-model="confirmForm.confirmResult">
  276. <el-radio :label="1">同意</el-radio>
  277. <el-radio v-if="argeeNoStatus" :label="2">退回发起人</el-radio>
  278. <el-radio v-if="argeeBackStatus" :label="3">退回上节点</el-radio>
  279. <!-- c<el-radio :label="4">结束流程</el-radio>-->
  280. </el-radio-group>
  281. </el-form-item>
  282. </el-col>
  283. <el-col :span="24">
  284. <el-form-item label="处理意见">
  285. <el-input v-model="confirmForm.confirmContent" style="margin-top:10px" type="textarea"/>
  286. <el-dropdown size="mini" split-button trigger="hover" type="primary">
  287. 常用语选择
  288. <el-dropdown-menu slot="dropdown">
  289. <el-dropdown-item
  290. v-for="item in dc_data.COMMON_PHRASES"
  291. @click.native="selectCommonPhrases(item.label)"
  292. >
  293. {{ item.label }}
  294. </el-dropdown-item>
  295. </el-dropdown-menu>
  296. </el-dropdown>
  297. </el-form-item>
  298. </el-col>
  299. </el-row>
  300. <el-col :span="24">
  301. <el-form-item label="审核人抄送">
  302. <user-select
  303. :default-select="confirmList"
  304. :multiple="true"
  305. class="cclist"
  306. @selectValue="parentMethod"
  307. />
  308. </el-form-item>
  309. </el-col>
  310. </el-form>
  311. </el-card>
  312. </el-card>
  313. </el-tab-pane>
  314. <el-tab-pane label="流程图 " name="second">
  315. <lx-work-canvas ref="lxWorkCanvas"/>
  316. </el-tab-pane>
  317. </el-tabs>
  318. </div>
  319. <div slot="footer">
  320. <el-button @click="dialogLxVisible=false">取消</el-button>
  321. <el-button type="primary" @click="handelConfirm">确定</el-button>
  322. </div>
  323. </el-dialog>
  324. </template>
  325. <script>
  326. import BaseData from '@/views/base/baseData.vue'
  327. import Base from '@/views/base/base.vue'
  328. import UserSelect from '@/views/components/UserSelect'
  329. import BugGet from '@/views/workflow/components/myProcess/applyBudgetingApprove.vue'
  330. import Constant from '@/static/utils/constant'
  331. import LxWorkCanvas from '@/views/workflow/components/myProcess/lxWorkCanvas.vue'
  332. export default {
  333. name: 'ApplyLx',
  334. components: {
  335. UserSelect,
  336. BugGet,
  337. LxWorkCanvas
  338. },
  339. mixins: [Base, BaseData],
  340. data() {
  341. return {
  342. ProjectData: [],
  343. SalsReturnPlanData:[],
  344. confirmList: [],
  345. tableData:[],
  346. formData: this.initForm(),
  347. dc_sign_status: Constant.dc_sign_status_2,
  348. hasRecord: false,
  349. planLoading: false,
  350. keys: 0,
  351. ctrId:'',
  352. fileUrlList:[],
  353. fileUrlList2:[],
  354. fileUrlList3:[],
  355. confirmForm: {
  356. confirmContent: '',
  357. confirmResult: 1
  358. },
  359. argeeBackStatus: false,
  360. argeeNoStatus: false,
  361. planForm: {
  362. id: '',
  363. planno: '',
  364. ctrid: '',
  365. ardate: '',
  366. aramount: '',
  367. arname: '',
  368. noticedate: '',
  369. updatedby: '',
  370. updatedname: '',
  371. updatedatStr: ''
  372. },
  373. planRules:{},
  374. isAdd:false,
  375. isView: false,
  376. dialogPlanVisible:false,
  377. dialogPlanTitle:'新增计划',
  378. hasNewTemplate:false,
  379. referenceId: '',
  380. fileError: false,
  381. bizByList: [],
  382. selectList: [],
  383. detailsForm: {},
  384. buttonLoading: false,
  385. // 查询的时候用的字典========================================
  386. dc_key: ['PAY_TYPE', 'BUDGET_CB', 'RECEIPT_TYPE', 'COMMON_PHRASES'],
  387. fileDataIdsAction: 'https://jsonplaceholder.typicode.com/posts/',
  388. billTypeOptions: [
  389. { 'label': '是', 'value': '是' },
  390. { 'label': '否', 'value': '否'}
  391. ],
  392. nodeColor: [
  393. { name: '审核通过', nodeback: '#2A3980' },
  394. { name: '未经过', nodeback: '#999999' },
  395. { name: '退回', nodeback: '#E04242' },
  396. { name: '审核中', nodeback: '#E08E42' },
  397. { name: '撤回', nodeback: '#4294E0' }
  398. ],
  399. onlineForm: {},
  400. dialogTitle: '立项申请',
  401. dialogLxVisible: false,
  402. form: {},
  403. activeName: 'first',
  404. OutOrderList: [],
  405. rules: {
  406. fileDataIds: [{ required: false, message: '请上传发票文件', trigger: 'change' }],
  407. totalPayMoney: [{ required: true, message: '请输入订单累计已支付金额', trigger: 'change' }],
  408. payName: [{ required: true, message: '请输入付款名称', trigger: 'change' }],
  409. payMoney: [{ required: true, message: '请输入付款金额', trigger: 'change' }]
  410. // costsType: [{required: true, message: '请选择', trigger: 'change'}],
  411. }
  412. }
  413. },
  414. mounted() {
  415. this.initProType()
  416. this.generateDcMap()
  417. this.initDict(this.dc_key).then((res) => {
  418. this.initProject({ /* signstatus: '2,3'*/ })
  419. })
  420. // /webServer/BugLibraryController/listBizUserAll
  421. },
  422. methods: {
  423. generateDcMap: function() {
  424. this.dc_map['dc_sign_status'] = this.$common.transDcMap(Constant.dc_sign_status_2)
  425. },
  426. initForm(){
  427. return{
  428. id:'',
  429. proId:'',
  430. ctrId:'',
  431. approvalId:'',
  432. workReceivableId:'',
  433. reason:'',
  434. comment:'',
  435. status:'',
  436. approvalForm:'',
  437. approval:{},
  438. workReceivableForm:''
  439. }
  440. },
  441. handleClick(tab, event) {
  442. this.canVasStatus = false
  443. if (this.activeName == 'second') {
  444. this.canVasStatus = true
  445. this.$nextTick(() => {
  446. this.$refs.lxWorkCanvas.createNodeCanvas(this.row)
  447. })
  448. }
  449. },
  450. parentMethod(val) {
  451. if (val.length > 0) {
  452. this.confirmForm.ccList = val.join(',')
  453. }
  454. },
  455. selectCommonPhrases(e) {
  456. if (!this.confirmForm.confirmContent) this.confirmForm.confirmContent = ''
  457. this.confirmForm.confirmContent += e
  458. },
  459. changeAddWorkTime(totalAddTime) {
  460. this.formData.totalAddTime = totalAddTime
  461. },
  462. async getUserInfo(applyUser) {
  463. let { data: userinfo } = await this.baseRequest1('ApplyAddWorkController', 'getUserInfoByUserId', { userId: applyUser })
  464. this.userinfo = userinfo
  465. console.log(this.userinfo)
  466. },
  467. spliceListRow(index) {
  468. this.formData.workTimeList.splice(index, 1)
  469. },
  470. proChange(){
  471. const _this = this
  472. _this.ProjectData.forEach(item=>{
  473. if(item.value===_this.formData.proId){
  474. _this.formData.protype = _this.ProTypeMap[item.protype]
  475. _this.formData.signStatus = _this.dc_map.dc_sign_status[item.signstatus]
  476. _this.formData.presales = item.presales
  477. _this.formData.proName = item.label
  478. }
  479. })
  480. _this.getBudgetData()
  481. _this.ctrMainByProId(_this.formData.proId)
  482. },
  483. ctrMainByProId(proId){
  484. const _this = this
  485. this.ctrMainRequest('getByProId',{proId:proId}).then(res=>{
  486. if(res.data){
  487. _this.ctrId = res.data.id
  488. _this.getPlanData(res.data.id)
  489. }
  490. })
  491. },
  492. getPlanData: function(ctrId) {
  493. const _this = this
  494. this.SalsReturnPlanData = []
  495. if (ctrId) {
  496. this.planLoading = true
  497. const postData = this.$qs.stringify({
  498. ctrid: ctrId,
  499. pageNum: this.currentPage,
  500. pageSize: this.pageSize
  501. })
  502. console.log(postData)
  503. this.$axios({
  504. headers: {
  505. 'MVVM-Key': String(new Date().getTime()),
  506. 'xx': 'anything'
  507. },
  508. method: 'post',
  509. url: _this.$constant.BASE_URI + '/AccountReceivableController/list',
  510. data: postData
  511. }).then((res) => {
  512. console.log('sales return plan list', res)
  513. _this.$common.checkLoginStatus(res.data.statusCode)
  514. if (res.data.rows) {
  515. res.data.rows.forEach(function(item) {
  516. const json = {
  517. planstatus: item.planstatus,
  518. arname: item.arname,
  519. // aramountStr: '¥' + _this.$common.formatMoney(item.aramount),
  520. // rcamountStr: '¥' + _this.$common.formatMoney(item.receiveamount),
  521. ardateStr: _this.$common.transDate(item.ardate),
  522. noticedateStr: _this.$common.transDate(item.noticedate),
  523. id: item.id
  524. }
  525. const ra = _this.$common.formatMoney(item.receiveamount)
  526. json.rcamountStr = ra ? '¥' + ra : ''
  527. item.ysAmount = parseInt(item.aramount || 0)
  528. const sr = _this.$common.formatMoney(item.ysAmount)
  529. json.ysAmountStr = sr ? '¥' + sr : ''
  530. item.aramount = parseInt(item.aramount || 0) + parseInt(item.adjustamount || 0)
  531. const r = _this.$common.formatMoney(item.aramount)
  532. json.aramountStr = r ? '¥' + r : ''
  533. json.statusStr = '未收款'
  534. if (item.planstatus === '1') {
  535. json.statusStr = '收款中'
  536. } else if (item.planstatus === '2') {
  537. json.statusStr = '收款完成'
  538. }
  539. _this.SalsReturnPlanData.push(json)
  540. })
  541. }
  542. _this.planLoading = false
  543. }).catch((err, x) => {
  544. console.log('sales return plan list error', err, x)
  545. })
  546. }
  547. },
  548. getBudgetData() {
  549. const _this = this
  550. this.budGetingRequest('checkRecordApproval', { proId:this.formData.proId }).then(res => {
  551. if (res.data.hasRecord) {
  552. _this.hasRecord = true
  553. if (res.data.templateId) {
  554. const postData = {
  555. proId: _this.formData.proId,
  556. templateId: res.data.templateId
  557. }
  558. _this.budGetingRequest('checkNewTemplate', postData).then(res => {
  559. _this.hasNewTemplate = !res.data;
  560. _this.keys++
  561. _this.$nextTick(() => {
  562. _this.$refs.bidss.initData(_this.hasNewTemplate)
  563. })
  564. })
  565. }else {
  566. _this.keys++
  567. _this.$nextTick(() => {
  568. _this.$refs.bidss.initData(_this.hasNewTemplate)
  569. })
  570. }
  571. }else{
  572. _this.keys++
  573. _this.$nextTick(() => {
  574. _this.$refs.bidss.initData(_this.hasNewTemplate)
  575. })
  576. }
  577. })
  578. },
  579. async setVisible(status, row) {
  580. const _this = this
  581. this.row=row
  582. this.activeName='first'
  583. this.confirmForm.flowMainPushId = row.flowMainPushId
  584. let { data } = await this.baseRequest1('ApplyLxWorkController', 'getInfoByFlowMainPushId', { flowMainPushId: row.flowMainPushId })
  585. const { data: flowHistroy } = await this.baseRequest1('FlowMainController', 'getFlowHistroyByFlowMainId', { flowMainId: row.id })
  586. const noAndbackstatus = await this.baseRequest1('FlowMainController', 'getOutgoingFlowsByFlowMainPushId', { flowMainPushId: row.flowMainPushId })
  587. for (let i = 0; i < noAndbackstatus.data.length; i++) {
  588. if (noAndbackstatus.data[i].conditionExpression == '${agree==\'no\'}') this.argeeNoStatus = true
  589. if (noAndbackstatus.data[i].conditionExpression == '${agree==\'back\'}') this.argeeBackStatus = true
  590. }
  591. this.tableData = flowHistroy
  592. this.formData = data
  593. this.proChange()
  594. this.fileUrlList = this.formData.approval.implementationProgramme?this.$common.castEval(this.formData.approval.implementationProgramme):[]
  595. this.fileUrlList2 = this.formData.approval.researchReport?this.$common.castEval(this.formData.approval.researchReport):[]
  596. this.fileUrlList3 = this.formData.approval.otherFile?this.$common.castEval(this.formData.approval.otherFile):[]
  597. _this.SalsReturnPlanData = []
  598. this.formData.applyWorkReceivables.forEach(function(item) {
  599. const json = {
  600. planstatus: item.planstatus,
  601. arname: item.arname,
  602. // aramountStr: '¥' + _this.$common.formatMoney(item.aramount),
  603. // rcamountStr: '¥' + _this.$common.formatMoney(item.receiveamount),
  604. ardateStr: _this.$common.transDate(item.ardate),
  605. noticedateStr: _this.$common.transDate(item.noticedate),
  606. id: item.id
  607. }
  608. const ra = _this.$common.formatMoney(item.receiveamount)
  609. json.rcamountStr = ra ? '¥' + ra : ''
  610. item.ysAmount = parseInt(item.aramount || 0)
  611. const sr = _this.$common.formatMoney(item.ysAmount)
  612. json.ysAmountStr = sr ? '¥' + sr : ''
  613. item.aramount = parseInt(item.aramount || 0) + parseInt(item.adjustamount || 0)
  614. const r = _this.$common.formatMoney(item.aramount)
  615. json.aramountStr = r ? '¥' + r : ''
  616. json.statusStr = '未收款'
  617. if (item.planstatus === '1') {
  618. json.statusStr = '收款中'
  619. } else if (item.planstatus === '2') {
  620. json.statusStr = '收款完成'
  621. }
  622. _this.SalsReturnPlanData.push(json)
  623. })
  624. this.dialogLxVisible = status
  625. this.row = row
  626. },
  627. budGetingRequest(opUrl, postData) {
  628. return this.$channel.globleRequest('BudgetMakingController', opUrl, postData, 'project')
  629. },
  630. ctrMainRequest(opUrl, postData) {
  631. return this.$channel.globleRequest('CtrMainController', opUrl, postData, 'project')
  632. },
  633. baseRequest1(prefix, opUrl, postData) {
  634. return this.$channel.globleRequest(prefix, opUrl, postData, 'project task')
  635. },
  636. async handelConfirm() {
  637. this.$refs['confirmForm'].validate(async valid => {
  638. // if (!valid) return
  639. // ApplyAddWorkController/AddConfirmResultAddWork
  640. console.log(this.confirmForm)
  641. const { data } = await this.baseRequest1('ApplyLxWorkController', 'AddConfirmResultAddWork', { ...this.confirmForm })
  642. if (data.code == 200) {
  643. this.$message.success('处理成功')
  644. this.form = {}
  645. this.confirmForm = { confirmContent: '' }
  646. this.dialogLxVisible = false
  647. this.$emit('getData')
  648. }
  649. })
  650. }
  651. }
  652. }
  653. </script>
  654. <style lang="scss">
  655. .cclist {
  656. .col-input {
  657. padding: 0;
  658. }
  659. }
  660. .pdr10px {
  661. padding-right: 10px;
  662. }
  663. .mgb10px {
  664. margin-bottom: 10px;
  665. }
  666. .mb25 {
  667. margin-bottom: 25px;
  668. }
  669. .pdtopbottom16 {
  670. padding: 0px 16px;
  671. }
  672. .pdtop16px {
  673. padding-top: 16px;
  674. }
  675. .cost_form {
  676. .col-input {
  677. font-weight: 400;
  678. }
  679. .el-form-item__label .moneydetails {
  680. text-align: right;
  681. font-size: 16px;
  682. font-family: 微软雅黑;
  683. padding-right: 10px;
  684. line-height: 40px;
  685. word-break: keep-all;
  686. white-space: nowrap;
  687. color: #606266;
  688. text-rendering: optimizeLegibility;
  689. font-weight: 400;
  690. }
  691. .moneydetails {
  692. text-align: right;
  693. font-size: 16px;
  694. font-family: 微软雅黑;
  695. padding-right: 10px;
  696. word-break: keep-all;
  697. white-space: nowrap;
  698. color: #606266;
  699. text-rendering: optimizeLegibility;
  700. font-weight: 400;
  701. }
  702. .moneydetails:before {
  703. content: "*";
  704. color: #ff4949;
  705. }
  706. }
  707. .txtc {
  708. text-align: center
  709. }
  710. .ml5 {
  711. margin-left: 5px;
  712. }
  713. .eltype {
  714. margin-bottom: 15px;
  715. }
  716. .tabsdom {
  717. .el-input {
  718. width: 100%;
  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>