refund_list-detail.vue 43 KB

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