refund_list-detail.vue 44 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336
  1. <template>
  2. <div>
  3. <div class="sty">
  4. <el-page-header @back="goBack" :content="title"> </el-page-header>
  5. </div>
  6. <el-divider></el-divider>
  7. <h3>工程项目信息</h3>
  8. <el-divider></el-divider>
  9. <div class="diy-table-1">
  10. <el-row :gutter="0">
  11. <el-col :xs="12" :sm="24" :lg="8" class="item">
  12. <div class="label">
  13. {{
  14. detailList.enginOrderType == "HOME"
  15. ? "工程登录编号"
  16. : "工程信息编号"
  17. }}
  18. </div>
  19. <div class="value">{{ detailList.refEnginRecordNo }}</div>
  20. </el-col>
  21. <!-- <el-col :xs="12" :sm="24" :lg="8" class="item">
  22. <div class="label">工程信息编号</div>
  23. <div class="value">{{ detailList.refEnginRecordNo }}</div>
  24. </el-col> -->
  25. <el-col :xs="12" :sm="24" :lg="8" class="item">
  26. <div class="label">项目类别</div>
  27. <div class="value">{{ detailList.refProjectCategory }}</div>
  28. </el-col>
  29. <el-col :xs="12" :sm="24" :lg="8" class="item">
  30. <div class="label">行业类别</div>
  31. <div class="value">
  32. {{ detailList.refTradeCategory }}
  33. </div>
  34. </el-col>
  35. <el-col :xs="24" :sm="24" :lg="8" class="item">
  36. <div class="label">跨区厂编号</div>
  37. <div class="value">{{ detailList.refFactoryNo }}</div>
  38. </el-col>
  39. <el-col :xs="24" :sm="24" :lg="8" class="item">
  40. <div class="label">使用单位</div>
  41. <div class="value">{{ detailList.refUseUnit }}</div>
  42. </el-col>
  43. <!-- <el-col :xs="24" :sm="24" :lg="8" class="item">
  44. <div class="label">经销商二级代码</div>
  45. <div class="value">{{detailList.}}</div>
  46. </el-col> -->
  47. <el-col :xs="24" :sm="24" :lg="8" class="item">
  48. <div class="label">业务员</div>
  49. <div class="value">{{ detailList.serviceName }}</div>
  50. </el-col>
  51. <el-col :xs="24" :sm="24" :lg="8" class="item">
  52. <div class="label">联系人</div>
  53. <div class="value">{{ detailList.refLinkman }}</div>
  54. </el-col>
  55. <el-col :xs="24" :sm="24" :lg="8" class="item">
  56. <div class="label">固定电话</div>
  57. <div class="value">{{ detailList.refTel }}</div>
  58. </el-col>
  59. <el-col :xs="24" :sm="24" :lg="8" class="item">
  60. <div class="label">移动电话</div>
  61. <div class="value">{{ detailList.refPhone }}</div>
  62. </el-col>
  63. <!-- <el-col :xs="24" :sm="24" :lg="8" class="item">
  64. <div class="label">移动电话</div>
  65. <div class="value">
  66. <el-input
  67. :readonly="title == '详情'"
  68. placeholder="请输入"
  69. v-model="detailList.refPhone"
  70. ></el-input>
  71. </div>
  72. </el-col> -->
  73. <!-- <el-col :xs="24" :sm="24" :lg="8" class="item">
  74. <div class="label">押金比例</div>
  75. <div class="value">{{detailList.}}</div>
  76. </el-col> -->
  77. <el-col :xs="24" :sm="24" :lg="8" class="item">
  78. <div class="label">单据状态</div>
  79. <div class="value">
  80. {{
  81. detailList.examineStatus == "SAVE"
  82. ? "保存"
  83. : detailList.examineStatus == "WAIT"
  84. ? "待审核"
  85. : detailList.examineStatus == "OK"
  86. ? "通过"
  87. : detailList.examineStatus == "FAIL"
  88. ? "不通过"
  89. : "关闭"
  90. }}
  91. </div>
  92. </el-col>
  93. <el-col :xs="24" :sm="24" :lg="8" class="item">
  94. <div class="label">销售类型</div>
  95. <div class="value">{{ detailList.saleTypeName }}</div>
  96. </el-col>
  97. <!-- <el-col :xs="24" :sm="24" :lg="8" class="item">
  98. <div class="label">不扣押金</div>
  99. <div class="value">{{ detailList.customerName }}</div>
  100. </el-col> -->
  101. <el-col :xs="24" :sm="24" :lg="8" class="item">
  102. <div class="label">第几次申报</div>
  103. <div class="value">{{ detailList.refDeclareNo }}</div>
  104. </el-col>
  105. <el-col :xs="24" :sm="24" :lg="8" class="item">
  106. <div class="label">项目类型</div>
  107. <div class="value">{{ detailList.refProjectType }}</div>
  108. </el-col>
  109. <el-col :xs="24" :sm="24" :lg="8" class="item">
  110. <div class="label">经销商编码</div>
  111. <div class="value">{{ detailList.customerNumber }}</div>
  112. </el-col>
  113. <el-col :xs="24" :sm="24" :lg="8" class="item">
  114. <div class="label">押金总额</div>
  115. <div class="value">{{ detailList.depositAmount }}</div>
  116. </el-col>
  117. <el-col :xs="24" :sm="24" :lg="8" class="item">
  118. <div class="label">安装时间</div>
  119. <div class="value">
  120. <el-date-picker
  121. prefix-icon="''"
  122. placeholder="请选择安装时间"
  123. :readonly="title == '详情'"
  124. class="selectStyle"
  125. v-model="detailList.installDate"
  126. type="datetime"
  127. default-time="00:00:00"
  128. value-format="yyyy-MM-dd HH:mm:ss"
  129. >
  130. </el-date-picker>
  131. </div>
  132. </el-col>
  133. <el-col :xs="24" :sm="24" :lg="16" class="item">
  134. <div class="label">安装地址</div>
  135. <div class="value">{{ detailList.refInstallAddress }}</div>
  136. </el-col>
  137. <!-- <el-col :xs="24" :sm="24" :lg="8" class="item">
  138. <div class="label">工程订单号</div>
  139. <div class="value">{{ detailList.customerName }}</div>
  140. </el-col> -->
  141. <el-col :xs="24" :sm="24" :lg="16" class="item">
  142. <div class="label">经销商名称</div>
  143. <div class="value">{{ detailList.customerName }}</div>
  144. </el-col>
  145. <el-col :xs="24" :sm="24" :lg="16" class="item">
  146. <div class="label">项目说明</div>
  147. <div class="value">{{ detailList.refProjectNote }}</div>
  148. </el-col>
  149. <!-- <el-col :xs="24" :sm="24" :lg="8" class="item">
  150. <div class="label">订单日期</div>
  151. <div class="value">{{ detailList.customerName }}</div>
  152. </el-col> -->
  153. <!-- <el-col :xs="24" :sm="24" :lg="16" class="item">
  154. <div class="label">格力内部备注</div>
  155. <div class="value">{{ detailList.customerName }}</div>
  156. </el-col> -->
  157. <!-- <el-col :xs="24" :sm="24" :lg="8" class="item">
  158. <div class="label">文件编码</div>
  159. <div class="value">{{ detailList.customerName }}</div>
  160. </el-col> -->
  161. <el-col :xs="24" :sm="24" :lg="16" class="item">
  162. <div class="label">备注</div>
  163. <!-- <div class="value">{{ detailList.remark }}</div> -->
  164. <div class="value">
  165. <el-input
  166. :readonly="detailList.examineStatus !== 'WAIT'"
  167. v-model="detailList.remark"
  168. placeholder="请输入内容"
  169. ></el-input>
  170. </div>
  171. </el-col>
  172. <el-col v-if="!isCustomer" :xs="24" :sm="24" :lg="16" class="item">
  173. <div class="label">格力内部备注</div>
  174. <!-- <div class="value">{{ detailList.geLiInerNote}}</div> -->
  175. <div class="value">
  176. <el-input
  177. :readonly="detailList.examineStatus !== 'WAIT'"
  178. v-model="detailList.geLiInerNote"
  179. placeholder="请输入内容"
  180. ></el-input>
  181. </div>
  182. </el-col>
  183. <el-col :xs="24" :sm="24" :lg="8" class="item">
  184. <div class="label">提交保证函</div>
  185. <!-- <div class="value">{{ detailList.remark }}</div> -->
  186. <div class="value">
  187. <el-input
  188. readonly
  189. v-model="detailList.refPromiseProvide"
  190. ></el-input>
  191. </div>
  192. </el-col>
  193. <el-col :xs="24" :sm="24" :lg="8" class="item">
  194. <div class="label">跟进函备注</div>
  195. <!-- <div class="value">{{ detailList.remark }}</div> -->
  196. <div class="value">
  197. <el-input
  198. readonly
  199. v-model="detailList.refFollowAcceptRemark"
  200. ></el-input>
  201. </div>
  202. </el-col>
  203. <el-col :xs="24" :sm="24" :lg="8" class="item">
  204. <div class="label">资料提交日期</div>
  205. <div class="value">{{ detailList.refDatumProvideDate }}</div>
  206. <!-- <div class="value">
  207. <el-date-picker
  208. prefix-icon="''"
  209. placeholder="请选择安装时间"
  210. class="selectStyle"
  211. v-model="detailList.refDatumProvideDate"
  212. type="datetime"
  213. default-time="00:00:00"
  214. value-format="yyyy-MM-dd HH:mm:ss"
  215. >
  216. </el-date-picker>
  217. </div> -->
  218. </el-col>
  219. <el-col :xs="24" :sm="24" :lg="8" class="item">
  220. <div class="label">大额工程</div>
  221. <div class="value">{{ detailList.refIsBigAmounts }}</div>
  222. <!-- <div class="value">
  223. <el-select
  224. v-model="detailList.refIsBigAmounts"
  225. v
  226. clearable
  227. filterable
  228. >
  229. <el-option label="是" value="是"> </el-option>
  230. <el-option label="否" value="否"> </el-option>
  231. </el-select>
  232. </div> -->
  233. </el-col>
  234. <el-col :xs="24" :sm="24" :lg="8" class="item">
  235. <div class="label">合同变更批复结果</div>
  236. <!-- <div class="value">{{ detailList.remark }}</div> -->
  237. <div class="value">
  238. <el-input
  239. readonly
  240. v-model="detailList.refContractResult"
  241. ></el-input>
  242. </div>
  243. </el-col>
  244. <el-col :xs="24" :sm="24" :lg="8" class="item">
  245. <div class="label">工程机转零售批复结果</div>
  246. <!-- <div class="value">{{ detailList.remark }}</div> -->
  247. <div class="value">
  248. <el-input
  249. readonly
  250. v-model="detailList.refToRetailResult"
  251. ></el-input>
  252. </div>
  253. </el-col>
  254. <el-col :xs="24" :sm="24" :lg="8" class="item">
  255. <div class="label">资料延期批复结果</div>
  256. <!-- <div class="value">{{ detailList.remark }}</div> -->
  257. <div class="value">
  258. <el-input
  259. readonly
  260. v-model="detailList.refDataDelayResult"
  261. ></el-input>
  262. </div>
  263. </el-col>
  264. <el-col :xs="24" :sm="24" :lg="8" class="item">
  265. <div class="label">其他附件批复结果</div>
  266. <!-- <div class="value">{{ detailList.remark }}</div> -->
  267. <div class="value">
  268. <el-input
  269. readonly
  270. v-model="detailList.refOtherAnnexResult"
  271. ></el-input>
  272. </div>
  273. </el-col>
  274. <el-col :xs="24" :sm="24" :lg="8" class="item">
  275. <div class="label">保证函受理状态</div>
  276. <!-- <div class="value">{{ detailList.remark }}</div> -->
  277. <div class="value">
  278. <el-input
  279. readonly
  280. v-model="detailList.refPromiseAcceptStatus"
  281. ></el-input>
  282. </div>
  283. </el-col>
  284. <el-col :xs="24" :sm="24" :lg="8" class="item">
  285. <div class="label">保证函备注</div>
  286. <!-- <div class="value">{{ detailList.remark }}</div> -->
  287. <div class="value">
  288. <el-input
  289. readonly
  290. v-model="detailList.refPromisePriceRemark"
  291. ></el-input>
  292. </div>
  293. </el-col>
  294. <el-col :xs="24" :sm="24" :lg="8" class="item">
  295. <div class="label">附件备注</div>
  296. <!-- <div class="value">{{ detailList.remark }}</div> -->
  297. <div class="value">
  298. <el-input
  299. readonly
  300. v-model="detailList.refFjShenPiRemark"
  301. ></el-input>
  302. </div>
  303. </el-col>
  304. <el-col :xs="24" :sm="24" :lg="8" class="item">
  305. <div class="label">资料状态</div>
  306. <!-- <div class="value">{{ detailList.remark }}</div> -->
  307. <div class="value">
  308. <el-input readonly v-model="detailList.refDatumProvide"></el-input>
  309. </div>
  310. </el-col>
  311. <el-col :xs="24" :sm="24" :lg="8" class="item">
  312. <div class="label">资料审核结果</div>
  313. <!-- <div class="value">{{ detailList.remark }}</div> -->
  314. <div class="value">
  315. <el-input
  316. readonly
  317. v-model="detailList.refDatumAcceptStatus"
  318. ></el-input>
  319. </div>
  320. </el-col>
  321. <el-col :xs="24" :sm="24" :lg="8" class="item">
  322. <div class="label">合同变更批复意见</div>
  323. <!-- <div class="value">{{ detailList.remark }}</div> -->
  324. <div class="value">
  325. <el-input readonly v-model="detailList.refContractIdea"></el-input>
  326. </div>
  327. </el-col>
  328. <el-col :xs="24" :sm="24" :lg="8" class="item">
  329. <div class="label">工程机转零售批复意见</div>
  330. <!-- <div class="value">{{ detailList.remark }}</div> -->
  331. <div class="value">
  332. <el-input readonly v-model="detailList.refToRetailIdea"></el-input>
  333. </div>
  334. </el-col>
  335. <el-col :xs="24" :sm="24" :lg="8" class="item">
  336. <div class="label">资料延期批复意见</div>
  337. <!-- <div class="value">{{ detailList.remark }}</div> -->
  338. <div class="value">
  339. <el-input readonly v-model="detailList.refDataDelayIdea"></el-input>
  340. </div>
  341. </el-col>
  342. <el-col :xs="24" :sm="24" :lg="8" class="item">
  343. <div class="label">其他附件审批</div>
  344. <!-- <div class="value">{{ detailList.remark }}</div> -->
  345. <div class="value">
  346. <el-input
  347. readonly
  348. v-model="detailList.refOtherAnnexIdea"
  349. ></el-input>
  350. </div>
  351. </el-col>
  352. <el-col :xs="24" :sm="24" :lg="8" class="item">
  353. <div class="label">资料审核日期</div>
  354. <div class="value">{{ detailList.refDatumAcceptDate }}</div>
  355. <!-- <div class="value">
  356. <el-date-picker
  357. readonly
  358. prefix-icon="''"
  359. placeholder="请选择安装时间"
  360. class="selectStyle"
  361. v-model="detailList.refDatumAcceptDate"
  362. type="datetime"
  363. default-time="00:00:00"
  364. value-format="yyyy-MM-dd HH:mm:ss"
  365. >
  366. </el-date-picker>
  367. </div> -->
  368. </el-col>
  369. <!-- <el-col :xs="24" :sm="24" :lg="8" class="item">
  370. <div class="label">寄厂日期</div>
  371. <div class="value">
  372. <el-date-picker
  373. :readonly="title == '详情'"
  374. class="selectStyle"
  375. v-model="detailList.sendFactoryDate"
  376. type="datetime"
  377. prefix-icon="''"
  378. placeholder="请选择寄厂日期"
  379. default-time="00:00:00"
  380. value-format="yyyy-MM-dd HH:mm:ss"
  381. >
  382. </el-date-picker>
  383. </div>
  384. </el-col> -->
  385. <!-- <el-col :xs="24" :sm="24" :lg="8" class="item">
  386. <div class="label">提货日期</div>
  387. <div class="value">{{detailList.}}</div>
  388. </el-col> -->
  389. </el-row>
  390. </div>
  391. <h3>货品信息</h3>
  392. <el-divider></el-divider>
  393. <!-- 列表 -->
  394. <div class="mymain-container">
  395. <div class="table">
  396. <div class="table">
  397. <el-table
  398. v-loading="listLoading"
  399. :data="detailList.items"
  400. element-loading-text="Loading"
  401. border
  402. fit
  403. highlight-current-row
  404. stripe
  405. show-summary
  406. :summary-method="$getSummaries"
  407. >
  408. <template v-if="!isCustomer">
  409. <el-table-column
  410. align="left"
  411. label="厂编号"
  412. prop="factoryNo"
  413. min-width="160"
  414. show-overflow-tooltip
  415. >
  416. <template slot-scope="scope">
  417. <CopyButton :copyText="scope.row.factoryNo" />
  418. <span>{{ scope.row.factoryNo }}</span>
  419. </template>
  420. </el-table-column>
  421. <el-table-column
  422. align="left"
  423. label="物料编码"
  424. prop="materialNumber"
  425. min-width="160"
  426. show-overflow-tooltip
  427. >
  428. <template slot-scope="scope">
  429. <CopyButton :copyText="scope.row.materialNumber" />
  430. <span>{{ scope.row.materialNumber }}</span>
  431. </template>
  432. </el-table-column>
  433. </template>
  434. <el-table-column
  435. align="left"
  436. label="产品编码"
  437. prop="materialOldNumber"
  438. min-width="160"
  439. show-overflow-tooltip
  440. >
  441. <template slot-scope="scope">
  442. <CopyButton :copyText="scope.row.materialOldNumber" />
  443. <span>{{ scope.row.materialOldNumber }}</span>
  444. </template>
  445. </el-table-column>
  446. <el-table-column
  447. align="left"
  448. label="产品名称"
  449. prop="materialName"
  450. min-width="160"
  451. show-overflow-tooltip
  452. >
  453. <template slot-scope="scope">
  454. <CopyButton :copyText="scope.row.materialName" />
  455. <span>{{ scope.row.materialName }}</span>
  456. </template>
  457. </el-table-column>
  458. <el-table-column
  459. align="left"
  460. label="规格型号"
  461. prop="specification"
  462. min-width="160"
  463. show-overflow-tooltip
  464. >
  465. <template slot-scope="scope">
  466. <CopyButton :copyText="scope.row.specification" />
  467. <span>{{ scope.row.specification }}</span>
  468. </template>
  469. </el-table-column>
  470. <el-table-column align="left" label="实装物料编号" prop="realMaterialNumber" min-width="150" show-overflow-tooltip></el-table-column>
  471. <el-table-column align="left" label="实装厂产品编码" prop="realMaterialOldNumber" min-width="200" show-overflow-tooltip></el-table-column>
  472. <el-table-column align="left" label="实装规格型号" prop="realSpecification" min-width="300" show-overflow-tooltip>
  473. <template slot-scope="scope">
  474. <div :style="title !== '详情' && scope.row.realSpecification != scope.row.specification?{color:'blue'}:''">
  475. {{scope.row.realSpecification}}
  476. </div>
  477. </template>
  478. </el-table-column>
  479. <el-table-column
  480. align="right"
  481. label="单价"
  482. prop="price"
  483. min-width="160"
  484. show-overflow-tooltip
  485. >
  486. <template slot-scope="scope">
  487. {{ scope.row.price | numToFixed }}
  488. </template>
  489. </el-table-column>
  490. <el-table-column
  491. align="right"
  492. label="数量"
  493. prop="qty"
  494. min-width="160"
  495. show-overflow-tooltip
  496. />
  497. <el-table-column
  498. align="right"
  499. label="金额"
  500. prop="totalAmount"
  501. min-width="160"
  502. show-overflow-tooltip
  503. >
  504. <template slot-scope="scope">
  505. {{ scope.row.totalAmount | numToFixed }}
  506. </template>
  507. </el-table-column>
  508. <el-table-column
  509. align="right"
  510. label="押金数量"
  511. prop="hasSendQty"
  512. min-width="160"
  513. show-overflow-tooltip
  514. />
  515. <el-table-column
  516. align="right"
  517. label="发货数量"
  518. prop="orderHasSendQty"
  519. min-width="160"
  520. show-overflow-tooltip
  521. />
  522. <el-table-column
  523. align="right"
  524. label="押金金额"
  525. prop="depositAmount"
  526. min-width="160"
  527. show-overflow-tooltip
  528. >
  529. <template slot-scope="scope">
  530. {{ scope.row.depositAmount | numToFixed }}
  531. </template>
  532. </el-table-column>
  533. <el-table-column
  534. align="right"
  535. label="合同数量"
  536. prop="contractQty"
  537. min-width="160"
  538. show-overflow-tooltip
  539. >
  540. <template slot-scope="scope">
  541. <el-input
  542. v-if="title !== '详情'"
  543. class="inpt"
  544. v-model.number="scope.row.contractQty"
  545. size="mini"
  546. clearable
  547. ></el-input>
  548. <div v-else>
  549. {{scope.row.contractQty}}
  550. </div>
  551. </template>
  552. </el-table-column>
  553. <el-table-column
  554. align="right"
  555. label="合同单价"
  556. prop="contractPrice"
  557. min-width="160"
  558. show-overflow-tooltip
  559. >
  560. <template slot-scope="scope">
  561. <el-input
  562. v-if="title !== '详情'"
  563. class="inpt"
  564. v-model.number="scope.row.contractPrice"
  565. size="mini"
  566. clearable
  567. ></el-input>
  568. <div v-else>
  569. {{scope.row.contractPrice}}
  570. </div>
  571. </template>
  572. </el-table-column>
  573. <el-table-column
  574. align="right"
  575. label="合同金额"
  576. prop="contractAmount"
  577. min-width="160"
  578. show-overflow-tooltip
  579. >
  580. <template slot-scope="scope">
  581. <div >
  582. {{comTotal(scope.row.contractQty,scope.row.contractPrice)}}
  583. </div>
  584. </template>
  585. </el-table-column>
  586. <el-table-column
  587. align="right"
  588. label="上交资料"
  589. prop="dataQty"
  590. min-width="160"
  591. show-overflow-tooltip
  592. >
  593. <template slot-scope="scope">
  594. <el-input
  595. v-if="title !== '详情'"
  596. class="inpt"
  597. v-model.number="scope.row.dataQty"
  598. size="mini"
  599. @blur="setDataQty($event,scope.row)"
  600. clearable
  601. ></el-input>
  602. <div v-else>
  603. {{scope.row.dataQty}}
  604. </div>
  605. </template>
  606. </el-table-column>
  607. <el-table-column
  608. align="right"
  609. label="收差金额"
  610. prop="diffAmount"
  611. min-width="160"
  612. show-overflow-tooltip
  613. >
  614. <template slot-scope="scope">
  615. {{ scope.row.diffAmount | numToFixed }}
  616. </template>
  617. </el-table-column>
  618. <el-table-column
  619. align="right"
  620. label="收差政策价格"
  621. prop="diffPolicyPrice"
  622. min-width="200"
  623. show-overflow-tooltip
  624. >
  625. <template slot-scope="scope">
  626. {{ scope.row.diffPolicyPrice | numToFixed }}
  627. </template>
  628. </el-table-column>
  629. </el-table>
  630. </div>
  631. </div>
  632. </div>
  633. <h3 class="gdzl">工程资料</h3>
  634. <el-button
  635. :readonly="isDis"
  636. class="batchDownload"
  637. type="primary"
  638. size="small"
  639. @click="batchDownloadFn"
  640. >批量下载</el-button
  641. >
  642. <el-divider></el-divider>
  643. <!-- 列表 -->
  644. <div class="mymain-container">
  645. <div class="table">
  646. <el-table
  647. v-loading="listLoading"
  648. :data="detailList.dataList"
  649. element-loading-text="Loading"
  650. border
  651. fit
  652. highlight-current-row
  653. stripe
  654. >
  655. <el-table-column
  656. align="left"
  657. label="资料描述"
  658. prop="dataDescribe"
  659. min-width="160"
  660. show-overflow-tooltip
  661. ></el-table-column>
  662. <el-table-column
  663. align="left"
  664. label="原文件名"
  665. prop="fileName"
  666. min-width="160"
  667. show-overflow-tooltip
  668. ></el-table-column>
  669. <el-table-column
  670. align="left"
  671. label="缩略图"
  672. prop="fileUrl"
  673. min-width="160"
  674. show-overflow-tooltip
  675. >
  676. <template slot-scope="scope">
  677. <el-image
  678. ref="img"
  679. :src="imageURL + scope.row.fileUrl"
  680. v-if="checkFileType(scope.row.fileUrl) == 'image'"
  681. style="width: 120px; height: 120px"
  682. fit="cover"
  683. :preview-src-list="[imageURL + scope.row.fileUrl]"
  684. >
  685. </el-image>
  686. <img
  687. class="file"
  688. src="@/assets/common/word.png"
  689. v-if="checkFileType(scope.row.fileUrl) == 'word'"
  690. />
  691. <img
  692. class="file"
  693. src="@/assets/common/excel.png"
  694. v-if="checkFileType(scope.row.fileUrl) == 'excel'"
  695. />
  696. <img
  697. class="file"
  698. src="@/assets/common/ppt.png"
  699. v-if="checkFileType(scope.row.fileUrl) == 'ppt'"
  700. />
  701. <img
  702. class="file"
  703. src="@/assets/common/pdf.png"
  704. v-if="checkFileType(scope.row.fileUrl) == 'pdf'"
  705. />
  706. <img
  707. v-if="checkFileType(scope.row.fileUrl) == 'file'"
  708. class="file aaa"
  709. src="@/assets/common/zip.jpeg"
  710. />
  711. </template>
  712. </el-table-column>
  713. <el-table-column
  714. align="left"
  715. label="下载文件名称"
  716. prop="fileName"
  717. min-width="160"
  718. show-overflow-tooltip
  719. >
  720. <template slot-scope="scope">
  721. {{ "资料_" + scope.row.fileName }}
  722. </template>
  723. </el-table-column>
  724. <el-table-column
  725. align="center"
  726. label="操作"
  727. min-width="160"
  728. show-overflow-tooltip
  729. >
  730. <template slot-scope="scope">
  731. <el-button
  732. type="text"
  733. class="textColor"
  734. @click="downLoadFn(scope.row.fileUrl, scope.row.fileName)"
  735. >下载</el-button
  736. >
  737. </template>
  738. </el-table-column>
  739. </el-table>
  740. </div>
  741. </div>
  742. <el-divider></el-divider>
  743. <div class="diy-table-1">
  744. <el-row :gutter="0">
  745. <el-col :xs="12" :sm="12" :lg="12" class="item">
  746. <div class="label">申请人</div>
  747. <div class="value">{{ detailList.submitName }}</div>
  748. </el-col>
  749. <el-col :xs="12" :sm="12" :lg="12" class="item">
  750. <div class="label">申请日期</div>
  751. <div class="value">{{ detailList.submitTime }}</div>
  752. </el-col>
  753. <el-col :xs="12" :sm="24" :lg="24" class="item">
  754. <div class="label">申请退押金</div>
  755. <div class="value">{{ detailList.applyNote }}</div>
  756. </el-col>
  757. </el-row>
  758. </div>
  759. <h3>记录</h3>
  760. <el-divider></el-divider>
  761. <!-- 列表 -->
  762. <div class="mymain-container">
  763. <div class="table">
  764. <el-table
  765. v-loading="listLoading"
  766. :data="detailList.checkRecordItems"
  767. element-loading-text="Loading"
  768. border
  769. fit
  770. highlight-current-row
  771. stripe
  772. >
  773. <el-table-column
  774. align="left"
  775. label="申请人"
  776. prop="submitName"
  777. min-width="160"
  778. show-overflow-tooltip
  779. ></el-table-column>
  780. <el-table-column
  781. align="left"
  782. label="申请日期"
  783. prop="submitTime"
  784. min-width="160"
  785. show-overflow-tooltip
  786. ></el-table-column>
  787. <el-table-column
  788. align="left"
  789. label="申请说明"
  790. prop="applyNote"
  791. min-width="160"
  792. show-overflow-tooltip
  793. ></el-table-column>
  794. <el-table-column
  795. align="left"
  796. label="验收人"
  797. prop="checkName"
  798. min-width="160"
  799. show-overflow-tooltip
  800. ></el-table-column>
  801. <el-table-column
  802. align="left"
  803. label="受理日期"
  804. prop="checkDate"
  805. min-width="160"
  806. show-overflow-tooltip
  807. ></el-table-column>
  808. <el-table-column
  809. align="left"
  810. label="验收说明"
  811. prop="checkNote"
  812. min-width="160"
  813. show-overflow-tooltip
  814. ></el-table-column>
  815. <el-table-column
  816. align="left"
  817. label="审批结果"
  818. prop="isRefundDeposit"
  819. min-width="160"
  820. show-overflow-tooltip
  821. >
  822. <template slot-scope="scope">
  823. {{ scope.row.isRefundDeposit == false ? "否" : "是" }}
  824. </template>
  825. </el-table-column>
  826. </el-table>
  827. </div>
  828. </div>
  829. <h3
  830. v-if="
  831. detailList.examineStatus == 'WAIT' ||
  832. detailList.examineStatus == 'FAIL' ||
  833. detailList.examineStatus == 'OK'
  834. "
  835. >
  836. 审批
  837. </h3>
  838. <el-divider
  839. v-if="
  840. detailList.examineStatus == 'WAIT' ||
  841. detailList.examineStatus == 'FAIL' ||
  842. detailList.examineStatus == 'OK'
  843. "
  844. ></el-divider>
  845. <div v-if="detailList.examineStatus == 'WAIT'" class="diy-table-1">
  846. <el-row :gutter="0">
  847. <el-col :xs="12" :sm="12" :lg="12" class="item">
  848. <div class="label">验收人</div>
  849. <div class="value">{{ this.checkBy }}</div>
  850. </el-col>
  851. <el-col :xs="12" :sm="12" :lg="12" class="item dateS">
  852. <div class="label">受理日期</div>
  853. <div class="value">
  854. <el-date-picker
  855. readonly
  856. prefix-icon="''"
  857. class="selectStyle"
  858. type="datetime"
  859. placeholder="系统自动生成"
  860. default-time="00:00:00"
  861. value-format="yyyy-MM-dd HH:mm:ss"
  862. >
  863. </el-date-picker>
  864. </div>
  865. </el-col>
  866. <el-col :xs="12" :sm="24" :lg="24" class="item">
  867. <div class="label">是否退押</div>
  868. <div class="value">
  869. <el-radio-group v-model="isRefundDeposit">
  870. <el-radio :label="true">是</el-radio>
  871. <el-radio :label="false">否</el-radio>
  872. </el-radio-group>
  873. </div>
  874. </el-col>
  875. <el-col :xs="12" :sm="24" :lg="24" class="item">
  876. <div class="label">验收说明</div>
  877. <div class="value">
  878. <el-input v-model="checkNote" placeholder="请输入内容"></el-input>
  879. </div>
  880. </el-col>
  881. </el-row>
  882. </div>
  883. <div
  884. v-if="
  885. detailList.examineStatus == 'OK' || detailList.examineStatus == 'FAIL'
  886. "
  887. class="diy-table-1"
  888. >
  889. <el-row :gutter="0">
  890. <el-col :xs="12" :sm="12" :lg="12" class="item">
  891. <div class="label">验收人</div>
  892. <div class="value">{{ detailList.checkBy }}</div>
  893. </el-col>
  894. <el-col :xs="12" :sm="12" :lg="12" class="item dateS">
  895. <div class="label">受理日期</div>
  896. <div class="value">
  897. <el-date-picker
  898. readonly
  899. prefix-icon="''"
  900. class="selectStyle"
  901. v-model="detailList.checkDate"
  902. type="datetime"
  903. placeholder=""
  904. default-time="00:00:00"
  905. value-format="yyyy-MM-dd HH:mm:ss"
  906. >
  907. </el-date-picker>
  908. </div>
  909. </el-col>
  910. <el-col :xs="12" :sm="24" :lg="24" class="item">
  911. <div class="label">是否退押</div>
  912. <div class="value">
  913. <el-radio-group v-model="detailList.isRefundDeposit">
  914. <el-radio readonly :label="true">是</el-radio>
  915. <el-radio readonly :label="false">否</el-radio>
  916. </el-radio-group>
  917. </div>
  918. </el-col>
  919. <el-col :xs="12" :sm="24" :lg="24" class="item dateS">
  920. <div class="label">验收说明</div>
  921. <div class="value">
  922. <el-input
  923. readonly
  924. v-model="detailList.checkNote"
  925. placeholder="请输入内容"
  926. ></el-input>
  927. </div>
  928. </el-col>
  929. <el-col :xs="12" :sm="24" :lg="24" class="item dateS">
  930. <div class="label">审批通过后备注</div>
  931. <div class="value">
  932. <el-input
  933. v-model="detailList.examineAfterRemark"
  934. placeholder="请输入内容"
  935. ></el-input>
  936. </div>
  937. </el-col>
  938. </el-row>
  939. </div>
  940. <br />
  941. <!-- 按钮 -->
  942. <!-- detailList.examineStatus != 'OK' || detailList.examineStatus != 'FAIL' -->
  943. <div class="btn-group clearfix">
  944. <div class="fl">
  945. <el-button
  946. v-if="detailList.examineStatus == 'WAIT'"
  947. type="primary"
  948. size="small"
  949. @click="adoptFn"
  950. >审批通过</el-button
  951. >
  952. <el-button
  953. v-if="detailList.examineStatus == 'WAIT'"
  954. type="primary"
  955. size="small"
  956. @click="rejectFn"
  957. >审批驳回</el-button
  958. >
  959. <el-button
  960. v-if="detailList.examineStatus == 'OK'"
  961. type="primary"
  962. size="small"
  963. @click="saveFn"
  964. >保存</el-button
  965. >
  966. </div>
  967. </div>
  968. </div>
  969. </template>
  970. <script>
  971. import { downloadFiles } from "@/utils/util";
  972. import IMAGEUPLOAD from "@/components/Common/image-upload.vue";
  973. import { getFileUrl } from "@/api/common";
  974. import { mapGetters } from "vuex";
  975. import {
  976. getDepositManageDetail,
  977. getDepositManageExamine,
  978. getDepositManageDownZip,
  979. getDepositManageEdit,
  980. getCommonFileGetStream,
  981. } from "@/api/engin_deposit/refund_list";
  982. import { computeDiff } from '@/api/engin_deposit.js'
  983. import ret from "bluebird/js/release/util";
  984. export default {
  985. props: {
  986. detailId: {
  987. type: String,
  988. required: true,
  989. },
  990. },
  991. components: { IMAGEUPLOAD },
  992. computed: {
  993. ...mapGetters(["name"]),
  994. comTotal(){
  995. return (qty,price)=>{
  996. console.log(qty,price);
  997. return Number(qty) * Number(price)
  998. }
  999. }
  1000. },
  1001. data() {
  1002. return {
  1003. isCustomer: JSON.parse(localStorage.getItem("supply_user")).isCustomer,
  1004. isDis: true,
  1005. imageURL: this.$imageUrl,
  1006. title: "审批",
  1007. imageURL: this.$imageUrl,
  1008. listLoading: false, // 列表加载loading
  1009. dataList: [], // 列表数据
  1010. detailList: {},
  1011. checkBy: "",
  1012. checkDate: "",
  1013. isRefundDeposit: true,
  1014. checkNote: "",
  1015. };
  1016. },
  1017. created() {
  1018. console.log(this.$imageUrl, 8888);
  1019. this.checkBy = this.name;
  1020. this.getData({ id: this.detailId });
  1021. },
  1022. watch:{
  1023. "detailList.items": {
  1024. handler(newValue, oldValue) {
  1025. if (newValue && newValue.length) {
  1026. newValue.forEach((item, index) => {
  1027. item.contractAmount = Number(item.contractQty) * Number(item.contractPrice)
  1028. });
  1029. }
  1030. this.detailList.items = newValue;
  1031. },
  1032. immediate: true,
  1033. deep: true,
  1034. },
  1035. },
  1036. methods: {
  1037. //审批通过后可以编辑
  1038. async saveFn() {
  1039. console.log(this.detailList);
  1040. await getDepositManageEdit(this.detailList);
  1041. this.$message.success("保存成功");
  1042. this.goBack();
  1043. this.$emit("updateList");
  1044. },
  1045. //批量下载
  1046. async batchDownloadFn() {
  1047. downloadFiles("deposit-manage/downZip", { parentId: this.detailId });
  1048. },
  1049. //下载
  1050. async downLoadFn(v, name) {
  1051. // getCommonFileGetStream({ key: v, fileName: name }).then((res) => {
  1052. // // window.open(res.data);
  1053. // });
  1054. // // window.open(this.imageURL + v);
  1055. downloadFiles("common/file/getStream", { key: v, fileName: name });
  1056. // await getCommonFileGetStream({ key: v, fileName: name });
  1057. },
  1058. // 检查文件类型
  1059. checkFileType(url) {
  1060. if (!url) return "";
  1061. const fileSuffix = url.substring(url.lastIndexOf(".") + 1);
  1062. if (["jpg", "jpeg", "png"].includes(fileSuffix)) {
  1063. return "image";
  1064. } else if (["doc", "docx", "dot", "wps", "wpt"].includes(fileSuffix)) {
  1065. return "word";
  1066. } else if (["xls", "xlsx", "xlt", "et", "ett"].includes(fileSuffix)) {
  1067. return "excel";
  1068. } else if (
  1069. ["ppt", "pptx", "dps", "dpt", "pot", "pps"].includes(fileSuffix)
  1070. ) {
  1071. return "ppt";
  1072. } else if (["pdf"].includes(fileSuffix)) {
  1073. return "pdf";
  1074. } else if (["zip", "rar", "gz", "apk"].includes(fileSuffix)) {
  1075. return "file";
  1076. } else {
  1077. return "";
  1078. }
  1079. },
  1080. // 计算收差金额
  1081. setDataQty(e,row){
  1082. if(!row.dataQty) return
  1083. row.saleTypeId = this.detailList.saleTypeId
  1084. computeDiff(row).then(res=>{
  1085. row.diffAmount = res.data.diffAmount
  1086. row.diffPolicyPrice = res.data.diffPolicyPrice
  1087. // this.$successMsg('已计算收差金额')
  1088. })
  1089. }
  1090. ,
  1091. //审批驳回
  1092. async rejectFn() {
  1093. this.$confirm("此操作将审批订单, 是否继续?", "提示", {
  1094. confirmButtonText: "确定",
  1095. cancelButtonText: "取消",
  1096. type: "warning",
  1097. })
  1098. .then(() => {
  1099. if (!this.detailList.installDate) {
  1100. this.$message.error("请选择安装时间");
  1101. return;
  1102. }
  1103. if (this.isCustomer) {
  1104. for (let i = 0; i < this.detailList.items.length; i++) {
  1105. this.detailList.items[i].contractAmount = this.detailList.items[i].contractQty * this.detailList.items[i].contractPrice
  1106. if (!this.detailList.items[i].contractAmount) {
  1107. return this.$errorMsg('合同单价、合同数量不能为空')
  1108. }
  1109. }
  1110. }
  1111. // this.detailList.items.map(e=>{
  1112. // e.contractAmount = e.contractQty * e.contractPrice
  1113. // if (!e.contractAmount) {
  1114. // return this.$errorMsg('合同单价、合同数量不能为空')
  1115. // }
  1116. // })
  1117. let data = {
  1118. ...this.detailList,
  1119. checkBy: this.checkBy,
  1120. // checkDate: this.checkDate,
  1121. isRefundDeposit: this.isRefundDeposit,
  1122. checkNote: this.checkNote,
  1123. examineResult: 0,
  1124. };
  1125. getDepositManageExamine(data)
  1126. .then((res) => {
  1127. if (!res.data) {
  1128. this.goBack();
  1129. this.$emit("updateList");
  1130. } else {
  1131. this.$confirm("审批成功!是否跳转下一张待审批订单?", "提示", {
  1132. confirmButtonText: "跳转",
  1133. cancelButtonText: "取消",
  1134. type: "warning",
  1135. })
  1136. .then(() => {
  1137. this.$successMsg("进入下一张待审批订单");
  1138. this.detailList = res.data;
  1139. })
  1140. .catch(() => {
  1141. this.goBack();
  1142. this.$emit("updateList");
  1143. });
  1144. }
  1145. })
  1146. .finally((res) => {});
  1147. })
  1148. .catch(() => {});
  1149. // if (!this.detailList.installDate) {
  1150. // this.$message.error("请选择安装时间");
  1151. // return;
  1152. // }
  1153. // let data = {
  1154. // ...this.detailList,
  1155. // checkBy: this.checkBy,
  1156. // // checkDate: this.checkDate,
  1157. // isRefundDeposit: this.isRefundDeposit,
  1158. // checkNote: this.checkNote,
  1159. // examineResult: 0,
  1160. // };
  1161. // await getDepositManageExamine(data);
  1162. // this.$message.success("审批驳回");
  1163. // this.goBack();
  1164. // this.$emit("updateList");
  1165. },
  1166. //审批通过
  1167. async adoptFn() {
  1168. this.$confirm("此操作将审批订单, 是否继续?", "提示", {
  1169. confirmButtonText: "确定",
  1170. cancelButtonText: "取消",
  1171. type: "warning",
  1172. })
  1173. .then(() => {
  1174. if (!this.detailList.installDate) {
  1175. this.$message.error("请选择安装时间");
  1176. return;
  1177. }
  1178. if (this.isCustomer) {
  1179. for (let i = 0; i < this.detailList.items.length; i++) {
  1180. this.detailList.items[i].contractAmount = this.detailList.items[i].contractQty * this.detailList.items[i].contractPrice
  1181. if (!this.detailList.items[i].contractAmount) {
  1182. return this.$errorMsg('合同单价、合同数量不能为空')
  1183. }
  1184. }
  1185. }
  1186. let data = {
  1187. ...this.detailList,
  1188. checkBy: this.checkBy,
  1189. // checkDate: this.checkDate,
  1190. isRefundDeposit: this.isRefundDeposit,
  1191. checkNote: this.checkNote,
  1192. examineResult: 1,
  1193. };
  1194. getDepositManageExamine(data)
  1195. .then((res) => {
  1196. if (!res.data) {
  1197. this.goBack();
  1198. this.$emit("updateList");
  1199. } else {
  1200. this.$confirm("审批成功!是否跳转下一张待审批订单?", "提示", {
  1201. confirmButtonText: "跳转",
  1202. cancelButtonText: "取消",
  1203. type: "warning",
  1204. })
  1205. .then(() => {
  1206. this.$successMsg("进入下一张待审批订单");
  1207. this.detailList = res.data;
  1208. })
  1209. .catch(() => {
  1210. this.goBack();
  1211. this.$emit("updateList");
  1212. });
  1213. }
  1214. })
  1215. .finally((res) => {});
  1216. })
  1217. .catch(() => {});
  1218. // if (!this.detailList.installDate) {
  1219. // this.$message.error("请选择安装时间");
  1220. // return;
  1221. // }
  1222. // let data = {
  1223. // ...this.detailList,
  1224. // checkBy: this.checkBy,
  1225. // // checkDate: this.checkDate,
  1226. // isRefundDeposit: this.isRefundDeposit,
  1227. // checkNote: this.checkNote,
  1228. // examineResult: 1,
  1229. // };
  1230. // await getDepositManageExamine(data);
  1231. // this.$message.success("审批通过");
  1232. // this.goBack();
  1233. // this.$emit("updateList");
  1234. },
  1235. async getData(data) {
  1236. const res = await getDepositManageDetail(data);
  1237. console.log(res);
  1238. if (res.data.dataList.length == 0) {
  1239. this.isDis = true;
  1240. } else {
  1241. this.isDis = false;
  1242. }
  1243. let arr = [];
  1244. res.data.items.forEach((item) => {
  1245. if (Number(item.qty) > 0) {
  1246. arr.push(item);
  1247. }
  1248. // item.number = (item.qty*100 - item.directTransferQty*100 - item.retiredQty*100) / 100;
  1249. item.sums1 = ['orderHasSendQty', 'dataQty', 'qty',"hasSendQty","contractQty"]
  1250. item.sums2 = ['totalAmount', 'diffAmount', 'price','depositAmount',"contractPrice","comTotal","contractAmount",
  1251. ]
  1252. });
  1253. res.data.items = arr;
  1254. this.detailList = res.data;
  1255. if (
  1256. res.data.examineStatus == "SAVE" ||
  1257. res.data.examineStatus == "OK" ||
  1258. res.data.examineStatus == "FAIL"
  1259. ) {
  1260. this.title = "详情";
  1261. }
  1262. },
  1263. goBack() {
  1264. this.$parent.showSurrender = true;
  1265. },
  1266. },
  1267. };
  1268. </script>
  1269. <style lang="scss" scoped>
  1270. .inpt {
  1271. ::v-deep .el-input__inner {
  1272. text-align: right;
  1273. }
  1274. }
  1275. .aaa {
  1276. height: 64px;
  1277. width: 64px;
  1278. }
  1279. .dateS {
  1280. .value {
  1281. padding: 0;
  1282. }
  1283. }
  1284. .batchDownload {
  1285. float: right;
  1286. margin-top: 9px;
  1287. }
  1288. .gdzl {
  1289. display: inline-block;
  1290. }
  1291. .dateStyle {
  1292. width: 100%;
  1293. }
  1294. .label {
  1295. width: 150px !important;
  1296. }
  1297. .selectStyle {
  1298. width: 100%;
  1299. }
  1300. </style>