applyLxSjWorkConfirm.vue 36 KB

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