refund_list-detail.vue 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281
  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></el-table-column>
  473. <el-table-column
  474. align="right"
  475. label="单价"
  476. prop="price"
  477. min-width="160"
  478. show-overflow-tooltip
  479. >
  480. <template slot-scope="scope">
  481. {{ scope.row.price | numToFixed }}
  482. </template>
  483. </el-table-column>
  484. <el-table-column
  485. align="right"
  486. label="数量"
  487. prop="qty"
  488. min-width="160"
  489. show-overflow-tooltip
  490. />
  491. <el-table-column
  492. align="right"
  493. label="金额"
  494. prop="totalAmount"
  495. min-width="160"
  496. show-overflow-tooltip
  497. >
  498. <template slot-scope="scope">
  499. {{ scope.row.totalAmount | numToFixed }}
  500. </template>
  501. </el-table-column>
  502. <el-table-column
  503. align="right"
  504. label="押金数量"
  505. prop="hasSendQty"
  506. min-width="160"
  507. show-overflow-tooltip
  508. />
  509. <el-table-column
  510. align="right"
  511. label="发货数量"
  512. prop="orderHasSendQty"
  513. min-width="160"
  514. show-overflow-tooltip
  515. />
  516. <el-table-column
  517. align="right"
  518. label="押金金额"
  519. prop="depositAmount"
  520. min-width="160"
  521. show-overflow-tooltip
  522. >
  523. <template slot-scope="scope">
  524. {{ scope.row.depositAmount | numToFixed }}
  525. </template>
  526. </el-table-column>
  527. <el-table-column
  528. align="right"
  529. label="合同数量"
  530. prop="contractQty"
  531. min-width="160"
  532. show-overflow-tooltip
  533. >
  534. <template slot-scope="scope">
  535. <el-input
  536. :readonly="title == '详情'"
  537. class="inpt"
  538. v-model="scope.row.contractQty"
  539. size="mini"
  540. clearable
  541. ></el-input>
  542. </template>
  543. </el-table-column>
  544. <el-table-column
  545. align="right"
  546. label="合同单价"
  547. prop="contractPrice"
  548. min-width="160"
  549. show-overflow-tooltip
  550. >
  551. <template slot-scope="scope">
  552. <el-input
  553. :readonly="title == '详情'"
  554. class="inpt"
  555. v-model="scope.row.contractPrice"
  556. size="mini"
  557. clearable
  558. ></el-input>
  559. </template>
  560. </el-table-column>
  561. <el-table-column
  562. align="right"
  563. label="合同金额"
  564. prop="contractAmount"
  565. min-width="160"
  566. show-overflow-tooltip
  567. >
  568. <template slot-scope="scope">
  569. <div >
  570. {{comTotal(scope.row.contractQty,scope.row.contractPrice)}}
  571. </div>
  572. <!-- <el-input
  573. readonly
  574. class="inpt"
  575. v-model="scope.row.contractAmount"
  576. size="mini"
  577. clearable
  578. ></el-input> -->
  579. </template>
  580. </el-table-column>
  581. <el-table-column
  582. align="right"
  583. label="上交资料"
  584. prop="dataQty"
  585. min-width="160"
  586. show-overflow-tooltip
  587. >
  588. <template slot-scope="scope">
  589. <el-input
  590. :readonly="title == '详情'"
  591. class="inpt"
  592. v-model="scope.row.dataQty"
  593. size="mini"
  594. clearable
  595. ></el-input>
  596. </template>
  597. </el-table-column>
  598. <el-table-column
  599. align="right"
  600. label="收差全额"
  601. prop="diffAmount"
  602. min-width="160"
  603. show-overflow-tooltip
  604. >
  605. <template slot-scope="scope">
  606. {{ scope.row.diffAmount | numToFixed }}
  607. </template>
  608. </el-table-column>
  609. </el-table>
  610. </div>
  611. </div>
  612. </div>
  613. <h3 class="gdzl">工程资料</h3>
  614. <el-button
  615. :readonly="isDis"
  616. class="batchDownload"
  617. type="primary"
  618. size="small"
  619. @click="batchDownloadFn"
  620. >批量下载</el-button
  621. >
  622. <el-divider></el-divider>
  623. <!-- 列表 -->
  624. <div class="mymain-container">
  625. <div class="table">
  626. <el-table
  627. v-loading="listLoading"
  628. :data="detailList.dataList"
  629. element-loading-text="Loading"
  630. border
  631. fit
  632. highlight-current-row
  633. stripe
  634. >
  635. <el-table-column
  636. align="left"
  637. label="资料描述"
  638. prop="dataDescribe"
  639. min-width="160"
  640. show-overflow-tooltip
  641. ></el-table-column>
  642. <el-table-column
  643. align="left"
  644. label="原文件名"
  645. prop="fileName"
  646. min-width="160"
  647. show-overflow-tooltip
  648. ></el-table-column>
  649. <el-table-column
  650. align="left"
  651. label="缩略图"
  652. prop="fileUrl"
  653. min-width="160"
  654. show-overflow-tooltip
  655. >
  656. <template slot-scope="scope">
  657. <el-image
  658. ref="img"
  659. :src="imageURL + scope.row.fileUrl"
  660. v-if="checkFileType(scope.row.fileUrl) == 'image'"
  661. style="width: 120px; height: 120px"
  662. fit="cover"
  663. :preview-src-list="[imageURL + scope.row.fileUrl]"
  664. >
  665. </el-image>
  666. <img
  667. class="file"
  668. src="@/assets/common/word.png"
  669. v-if="checkFileType(scope.row.fileUrl) == 'word'"
  670. />
  671. <img
  672. class="file"
  673. src="@/assets/common/excel.png"
  674. v-if="checkFileType(scope.row.fileUrl) == 'excel'"
  675. />
  676. <img
  677. class="file"
  678. src="@/assets/common/ppt.png"
  679. v-if="checkFileType(scope.row.fileUrl) == 'ppt'"
  680. />
  681. <img
  682. class="file"
  683. src="@/assets/common/pdf.png"
  684. v-if="checkFileType(scope.row.fileUrl) == 'pdf'"
  685. />
  686. <img
  687. v-if="checkFileType(scope.row.fileUrl) == 'file'"
  688. class="file aaa"
  689. src="@/assets/common/zip.jpeg"
  690. />
  691. </template>
  692. </el-table-column>
  693. <el-table-column
  694. align="left"
  695. label="下载文件名称"
  696. prop="fileName"
  697. min-width="160"
  698. show-overflow-tooltip
  699. >
  700. <template slot-scope="scope">
  701. {{ "资料_" + scope.row.fileName }}
  702. </template>
  703. </el-table-column>
  704. <el-table-column
  705. align="center"
  706. label="操作"
  707. min-width="160"
  708. show-overflow-tooltip
  709. >
  710. <template slot-scope="scope">
  711. <el-button
  712. type="text"
  713. class="textColor"
  714. @click="downLoadFn(scope.row.fileUrl, scope.row.fileName)"
  715. >下载</el-button
  716. >
  717. </template>
  718. </el-table-column>
  719. </el-table>
  720. </div>
  721. </div>
  722. <el-divider></el-divider>
  723. <div class="diy-table-1">
  724. <el-row :gutter="0">
  725. <el-col :xs="12" :sm="12" :lg="12" class="item">
  726. <div class="label">申请人</div>
  727. <div class="value">{{ detailList.submitName }}</div>
  728. </el-col>
  729. <el-col :xs="12" :sm="12" :lg="12" class="item">
  730. <div class="label">申请日期</div>
  731. <div class="value">{{ detailList.submitTime }}</div>
  732. </el-col>
  733. <el-col :xs="12" :sm="24" :lg="24" class="item">
  734. <div class="label">申请退押金</div>
  735. <div class="value">{{ detailList.applyNote }}</div>
  736. </el-col>
  737. </el-row>
  738. </div>
  739. <h3>记录</h3>
  740. <el-divider></el-divider>
  741. <!-- 列表 -->
  742. <div class="mymain-container">
  743. <div class="table">
  744. <el-table
  745. v-loading="listLoading"
  746. :data="detailList.checkRecordItems"
  747. element-loading-text="Loading"
  748. border
  749. fit
  750. highlight-current-row
  751. stripe
  752. >
  753. <el-table-column
  754. align="left"
  755. label="申请人"
  756. prop="submitName"
  757. min-width="160"
  758. show-overflow-tooltip
  759. ></el-table-column>
  760. <el-table-column
  761. align="left"
  762. label="申请日期"
  763. prop="submitTime"
  764. min-width="160"
  765. show-overflow-tooltip
  766. ></el-table-column>
  767. <el-table-column
  768. align="left"
  769. label="申请说明"
  770. prop="applyNote"
  771. min-width="160"
  772. show-overflow-tooltip
  773. ></el-table-column>
  774. <el-table-column
  775. align="left"
  776. label="验收人"
  777. prop="checkName"
  778. min-width="160"
  779. show-overflow-tooltip
  780. ></el-table-column>
  781. <el-table-column
  782. align="left"
  783. label="受理日期"
  784. prop="checkDate"
  785. min-width="160"
  786. show-overflow-tooltip
  787. ></el-table-column>
  788. <el-table-column
  789. align="left"
  790. label="验收说明"
  791. prop="checkNote"
  792. min-width="160"
  793. show-overflow-tooltip
  794. ></el-table-column>
  795. <el-table-column
  796. align="left"
  797. label="审批结果"
  798. prop="isRefundDeposit"
  799. min-width="160"
  800. show-overflow-tooltip
  801. >
  802. <template slot-scope="scope">
  803. {{ scope.row.isRefundDeposit == false ? "否" : "是" }}
  804. </template>
  805. </el-table-column>
  806. </el-table>
  807. </div>
  808. </div>
  809. <h3
  810. v-if="
  811. detailList.examineStatus == 'WAIT' ||
  812. detailList.examineStatus == 'FAIL' ||
  813. detailList.examineStatus == 'OK'
  814. "
  815. >
  816. 审批
  817. </h3>
  818. <el-divider
  819. v-if="
  820. detailList.examineStatus == 'WAIT' ||
  821. detailList.examineStatus == 'FAIL' ||
  822. detailList.examineStatus == 'OK'
  823. "
  824. ></el-divider>
  825. <div v-if="detailList.examineStatus == 'WAIT'" class="diy-table-1">
  826. <el-row :gutter="0">
  827. <el-col :xs="12" :sm="12" :lg="12" class="item">
  828. <div class="label">验收人</div>
  829. <div class="value">{{ this.checkBy }}</div>
  830. </el-col>
  831. <el-col :xs="12" :sm="12" :lg="12" class="item dateS">
  832. <div class="label">受理日期</div>
  833. <div class="value">
  834. <el-date-picker
  835. readonly
  836. prefix-icon="''"
  837. class="selectStyle"
  838. type="datetime"
  839. placeholder="系统自动生成"
  840. default-time="00:00:00"
  841. value-format="yyyy-MM-dd HH:mm:ss"
  842. >
  843. </el-date-picker>
  844. </div>
  845. </el-col>
  846. <el-col :xs="12" :sm="24" :lg="24" class="item">
  847. <div class="label">是否退押</div>
  848. <div class="value">
  849. <el-radio-group v-model="isRefundDeposit">
  850. <el-radio :label="true">是</el-radio>
  851. <el-radio :label="false">否</el-radio>
  852. </el-radio-group>
  853. </div>
  854. </el-col>
  855. <el-col :xs="12" :sm="24" :lg="24" class="item">
  856. <div class="label">验收说明</div>
  857. <div class="value">
  858. <el-input v-model="checkNote" placeholder="请输入内容"></el-input>
  859. </div>
  860. </el-col>
  861. </el-row>
  862. </div>
  863. <div
  864. v-if="
  865. detailList.examineStatus == 'OK' || detailList.examineStatus == 'FAIL'
  866. "
  867. class="diy-table-1"
  868. >
  869. <el-row :gutter="0">
  870. <el-col :xs="12" :sm="12" :lg="12" class="item">
  871. <div class="label">验收人</div>
  872. <div class="value">{{ detailList.checkBy }}</div>
  873. </el-col>
  874. <el-col :xs="12" :sm="12" :lg="12" class="item dateS">
  875. <div class="label">受理日期</div>
  876. <div class="value">
  877. <el-date-picker
  878. readonly
  879. prefix-icon="''"
  880. class="selectStyle"
  881. v-model="detailList.checkDate"
  882. type="datetime"
  883. placeholder=""
  884. default-time="00:00:00"
  885. value-format="yyyy-MM-dd HH:mm:ss"
  886. >
  887. </el-date-picker>
  888. </div>
  889. </el-col>
  890. <el-col :xs="12" :sm="24" :lg="24" class="item">
  891. <div class="label">是否退押</div>
  892. <div class="value">
  893. <el-radio-group v-model="detailList.isRefundDeposit">
  894. <el-radio readonly :label="true">是</el-radio>
  895. <el-radio readonly :label="false">否</el-radio>
  896. </el-radio-group>
  897. </div>
  898. </el-col>
  899. <el-col :xs="12" :sm="24" :lg="24" class="item dateS">
  900. <div class="label">验收说明</div>
  901. <div class="value">
  902. <el-input
  903. readonly
  904. v-model="detailList.checkNote"
  905. placeholder="请输入内容"
  906. ></el-input>
  907. </div>
  908. </el-col>
  909. <el-col :xs="12" :sm="24" :lg="24" class="item dateS">
  910. <div class="label">审批通过后备注</div>
  911. <div class="value">
  912. <el-input
  913. v-model="detailList.examineAfterRemark"
  914. placeholder="请输入内容"
  915. ></el-input>
  916. </div>
  917. </el-col>
  918. </el-row>
  919. </div>
  920. <br />
  921. <!-- 按钮 -->
  922. <!-- detailList.examineStatus != 'OK' || detailList.examineStatus != 'FAIL' -->
  923. <div class="btn-group clearfix">
  924. <div class="fl">
  925. <el-button
  926. v-if="detailList.examineStatus == 'WAIT'"
  927. type="primary"
  928. size="small"
  929. @click="adoptFn"
  930. >审批通过</el-button
  931. >
  932. <el-button
  933. v-if="detailList.examineStatus == 'WAIT'"
  934. type="primary"
  935. size="small"
  936. @click="rejectFn"
  937. >审批驳回</el-button
  938. >
  939. <el-button
  940. v-if="detailList.examineStatus == 'OK'"
  941. type="primary"
  942. size="small"
  943. @click="saveFn"
  944. >保存</el-button
  945. >
  946. </div>
  947. </div>
  948. </div>
  949. </template>
  950. <script>
  951. import { downloadFiles } from "@/utils/util";
  952. import IMAGEUPLOAD from "@/components/Common/image-upload.vue";
  953. import { getFileUrl } from "@/api/common";
  954. import { mapGetters } from "vuex";
  955. import {
  956. getDepositManageDetail,
  957. getDepositManageExamine,
  958. getDepositManageDownZip,
  959. getDepositManageEdit,
  960. getCommonFileGetStream,
  961. } from "@/api/engin_deposit/refund_list";
  962. import ret from "bluebird/js/release/util";
  963. export default {
  964. props: {
  965. detailId: {
  966. type: String,
  967. required: true,
  968. },
  969. },
  970. components: { IMAGEUPLOAD },
  971. computed: {
  972. ...mapGetters(["name"]),
  973. comTotal(){
  974. return (qty,price)=>{
  975. console.log(qty,price);
  976. return Number(qty) * Number(price)
  977. }
  978. }
  979. },
  980. data() {
  981. return {
  982. isCustomer: JSON.parse(localStorage.getItem("supply_user")).isCustomer,
  983. isDis: true,
  984. imageURL: this.$imageUrl,
  985. title: "审批",
  986. imageURL: this.$imageUrl,
  987. listLoading: false, // 列表加载loading
  988. dataList: [], // 列表数据
  989. detailList: {},
  990. checkBy: "",
  991. checkDate: "",
  992. isRefundDeposit: true,
  993. checkNote: "",
  994. };
  995. },
  996. created() {
  997. console.log(this.$imageUrl, 8888);
  998. this.checkBy = this.name;
  999. this.getData({ id: this.detailId });
  1000. },
  1001. watch:{
  1002. "detailList.items": {
  1003. handler(newValue, oldValue) {
  1004. if (newValue && newValue.length) {
  1005. newValue.forEach((item, index) => {
  1006. item.contractAmount = Number(item.contractQty) * Number(item.contractPrice)
  1007. });
  1008. }
  1009. this.detailList.items = newValue;
  1010. },
  1011. immediate: true,
  1012. deep: true,
  1013. },
  1014. },
  1015. methods: {
  1016. //审批通过后可以编辑
  1017. async saveFn() {
  1018. console.log(this.detailList);
  1019. await getDepositManageEdit(this.detailList);
  1020. this.$message.success("保存成功");
  1021. this.goBack();
  1022. this.$emit("updateList");
  1023. },
  1024. //批量下载
  1025. async batchDownloadFn() {
  1026. downloadFiles("deposit-manage/downZip", { parentId: this.detailId });
  1027. },
  1028. //下载
  1029. async downLoadFn(v, name) {
  1030. // getCommonFileGetStream({ key: v, fileName: name }).then((res) => {
  1031. // // window.open(res.data);
  1032. // });
  1033. // // window.open(this.imageURL + v);
  1034. downloadFiles("common/file/getStream", { key: v, fileName: name });
  1035. // await getCommonFileGetStream({ key: v, fileName: name });
  1036. },
  1037. // 检查文件类型
  1038. checkFileType(url) {
  1039. if (!url) return "";
  1040. const fileSuffix = url.substring(url.lastIndexOf(".") + 1);
  1041. if (["jpg", "jpeg", "png"].includes(fileSuffix)) {
  1042. return "image";
  1043. } else if (["doc", "docx", "dot", "wps", "wpt"].includes(fileSuffix)) {
  1044. return "word";
  1045. } else if (["xls", "xlsx", "xlt", "et", "ett"].includes(fileSuffix)) {
  1046. return "excel";
  1047. } else if (
  1048. ["ppt", "pptx", "dps", "dpt", "pot", "pps"].includes(fileSuffix)
  1049. ) {
  1050. return "ppt";
  1051. } else if (["pdf"].includes(fileSuffix)) {
  1052. return "pdf";
  1053. } else if (["zip", "rar", "gz", "apk"].includes(fileSuffix)) {
  1054. return "file";
  1055. } else {
  1056. return "";
  1057. }
  1058. },
  1059. //审批驳回
  1060. async rejectFn() {
  1061. this.$confirm("此操作将审批订单, 是否继续?", "提示", {
  1062. confirmButtonText: "确定",
  1063. cancelButtonText: "取消",
  1064. type: "warning",
  1065. })
  1066. .then(() => {
  1067. if (!this.detailList.installDate) {
  1068. this.$message.error("请选择安装时间");
  1069. return;
  1070. }
  1071. this.detailList.items.map(e=>{
  1072. e.contractAmount = e.contractQty * e.contractPrice
  1073. if (!e.contractAmount) {
  1074. return this.$errorMsg('合同单价、合同数量不能为空')
  1075. }
  1076. })
  1077. let data = {
  1078. ...this.detailList,
  1079. checkBy: this.checkBy,
  1080. // checkDate: this.checkDate,
  1081. isRefundDeposit: this.isRefundDeposit,
  1082. checkNote: this.checkNote,
  1083. examineResult: 0,
  1084. };
  1085. getDepositManageExamine(data)
  1086. .then((res) => {
  1087. if (!res.data) {
  1088. this.goBack();
  1089. this.$emit("updateList");
  1090. } else {
  1091. this.$confirm("审批成功!是否跳转下一张待审批订单?", "提示", {
  1092. confirmButtonText: "跳转",
  1093. cancelButtonText: "取消",
  1094. type: "warning",
  1095. })
  1096. .then(() => {
  1097. this.$successMsg("进入下一张待审批订单");
  1098. this.detailList = res.data;
  1099. })
  1100. .catch(() => {
  1101. this.goBack();
  1102. this.$emit("updateList");
  1103. });
  1104. }
  1105. })
  1106. .finally((res) => {});
  1107. })
  1108. .catch(() => {});
  1109. // if (!this.detailList.installDate) {
  1110. // this.$message.error("请选择安装时间");
  1111. // return;
  1112. // }
  1113. // let data = {
  1114. // ...this.detailList,
  1115. // checkBy: this.checkBy,
  1116. // // checkDate: this.checkDate,
  1117. // isRefundDeposit: this.isRefundDeposit,
  1118. // checkNote: this.checkNote,
  1119. // examineResult: 0,
  1120. // };
  1121. // await getDepositManageExamine(data);
  1122. // this.$message.success("审批驳回");
  1123. // this.goBack();
  1124. // this.$emit("updateList");
  1125. },
  1126. //审批通过
  1127. async adoptFn() {
  1128. this.$confirm("此操作将审批订单, 是否继续?", "提示", {
  1129. confirmButtonText: "确定",
  1130. cancelButtonText: "取消",
  1131. type: "warning",
  1132. })
  1133. .then(() => {
  1134. if (!this.detailList.installDate) {
  1135. this.$message.error("请选择安装时间");
  1136. return;
  1137. }
  1138. this.detailList.items.map(e=>{
  1139. if (!e.contractAmount) {
  1140. return this.$errorMsg('合同单价、合同数量不能为空')
  1141. }
  1142. })
  1143. let data = {
  1144. ...this.detailList,
  1145. checkBy: this.checkBy,
  1146. // checkDate: this.checkDate,
  1147. isRefundDeposit: this.isRefundDeposit,
  1148. checkNote: this.checkNote,
  1149. examineResult: 1,
  1150. };
  1151. getDepositManageExamine(data)
  1152. .then((res) => {
  1153. if (!res.data) {
  1154. this.goBack();
  1155. this.$emit("updateList");
  1156. } else {
  1157. this.$confirm("审批成功!是否跳转下一张待审批订单?", "提示", {
  1158. confirmButtonText: "跳转",
  1159. cancelButtonText: "取消",
  1160. type: "warning",
  1161. })
  1162. .then(() => {
  1163. this.$successMsg("进入下一张待审批订单");
  1164. this.detailList = res.data;
  1165. })
  1166. .catch(() => {
  1167. this.goBack();
  1168. this.$emit("updateList");
  1169. });
  1170. }
  1171. })
  1172. .finally((res) => {});
  1173. })
  1174. .catch(() => {});
  1175. // if (!this.detailList.installDate) {
  1176. // this.$message.error("请选择安装时间");
  1177. // return;
  1178. // }
  1179. // let data = {
  1180. // ...this.detailList,
  1181. // checkBy: this.checkBy,
  1182. // // checkDate: this.checkDate,
  1183. // isRefundDeposit: this.isRefundDeposit,
  1184. // checkNote: this.checkNote,
  1185. // examineResult: 1,
  1186. // };
  1187. // await getDepositManageExamine(data);
  1188. // this.$message.success("审批通过");
  1189. // this.goBack();
  1190. // this.$emit("updateList");
  1191. },
  1192. async getData(data) {
  1193. const res = await getDepositManageDetail(data);
  1194. console.log(res);
  1195. if (res.data.dataList.length == 0) {
  1196. this.isDis = true;
  1197. } else {
  1198. this.isDis = false;
  1199. }
  1200. let arr = [];
  1201. res.data.items.forEach((item) => {
  1202. if (Number(item.qty) > 0) {
  1203. arr.push(item);
  1204. }
  1205. // item.number = (item.qty*100 - item.directTransferQty*100 - item.retiredQty*100) / 100;
  1206. item.sums1 = ['orderHasSendQty', 'dataQty', 'qty',"hasSendQty","contractQty"]
  1207. item.sums2 = ['totalAmount', 'diffAmount', 'price','depositAmount',"contractPrice","comTotal","contractAmount",
  1208. ]
  1209. });
  1210. res.data.items = arr;
  1211. this.detailList = res.data;
  1212. if (
  1213. res.data.examineStatus == "SAVE" ||
  1214. res.data.examineStatus == "OK" ||
  1215. res.data.examineStatus == "FAIL"
  1216. ) {
  1217. this.title = "详情";
  1218. }
  1219. },
  1220. goBack() {
  1221. this.$parent.showSurrender = true;
  1222. },
  1223. },
  1224. };
  1225. </script>
  1226. <style lang="scss" scoped>
  1227. .inpt {
  1228. ::v-deep .el-input__inner {
  1229. text-align: right;
  1230. }
  1231. }
  1232. .aaa {
  1233. height: 64px;
  1234. width: 64px;
  1235. }
  1236. .dateS {
  1237. .value {
  1238. padding: 0;
  1239. }
  1240. }
  1241. .batchDownload {
  1242. float: right;
  1243. margin-top: 9px;
  1244. }
  1245. .gdzl {
  1246. display: inline-block;
  1247. }
  1248. .dateStyle {
  1249. width: 100%;
  1250. }
  1251. .label {
  1252. width: 150px !important;
  1253. }
  1254. .selectStyle {
  1255. width: 100%;
  1256. }
  1257. </style>