baseInfo.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590
  1. <template>
  2. <div class="baseinfo-container">
  3. <basicInfoVue ref="basicInfoVueRef" />
  4. <!-- <el-descriptions title="" :column="4" size="medium" border>
  5. <el-descriptions-item>
  6. <template slot="label"> 分类 </template>
  7. {{ categoryObj.categoryLevelName }}
  8. </el-descriptions-item>
  9. <el-descriptions-item>
  10. <template slot="label"> 编码 </template>
  11. {{ categoryObj.code }}
  12. </el-descriptions-item>
  13. <el-descriptions-item>
  14. <template slot="label"> 名称 </template>
  15. {{ categoryObj.name }}
  16. </el-descriptions-item>
  17. <el-descriptions-item>
  18. <template slot="label"> 牌号</template>
  19. {{ categoryObj.brandNum }}
  20. </el-descriptions-item>
  21. <el-descriptions-item>
  22. <template slot="label"> 型号 </template>
  23. {{ categoryObj.modelType }}
  24. </el-descriptions-item>
  25. <el-descriptions-item>
  26. <template slot="label"> 规格 </template>
  27. {{ categoryObj.specification }}
  28. </el-descriptions-item>
  29. <el-descriptions-item>
  30. <template slot="label"> 计量单位 </template>
  31. {{ categoryObj.measuringUnit }}
  32. </el-descriptions-item>
  33. <el-descriptions-item>
  34. <template slot="label"> 重量单位 </template>
  35. {{ categoryObj.weightUnit }}
  36. </el-descriptions-item>
  37. <el-descriptions-item>
  38. <template slot="label"> 包装单位 </template>
  39. {{ categoryObj.packingUnit }}
  40. </el-descriptions-item>
  41. <el-descriptions-item>
  42. <template slot="label"> 体积 </template>
  43. {{ categoryObj.volume }}{{ '/' + categoryObj.volumeUnit }}
  44. </el-descriptions-item>
  45. <el-descriptions-item>
  46. <template slot="label"> 毛重 </template>
  47. {{ categoryObj.roughWeight }}
  48. </el-descriptions-item>
  49. <el-descriptions-item>
  50. <template slot="label">净重 </template>
  51. {{ categoryObj.netWeight }}
  52. </el-descriptions-item>
  53. <el-descriptions-item>
  54. <template slot="label">所属部门 </template>
  55. {{ depInfo.groupName }}
  56. </el-descriptions-item>
  57. <el-descriptions-item>
  58. <template slot="label">负责人 </template>
  59. {{ depInfo.name }}
  60. </el-descriptions-item>
  61. </el-descriptions> -->
  62. <div class="basic-details-title border-none">
  63. <span class="border-span">模具信息</span>
  64. </div>
  65. <el-descriptions title="" :column="4" size="medium" border>
  66. <el-descriptions-item>
  67. <template slot="label"> 收缩系数</template>
  68. {{
  69. categoryMold.shrinkEffictive
  70. ? categoryMold.shrinkEffictive + '%'
  71. : null
  72. }}
  73. </el-descriptions-item>
  74. <el-descriptions-item>
  75. <template slot="label"> 芯杆数量 </template>
  76. {{ categoryMold.coreBarNum }}
  77. </el-descriptions-item>
  78. <el-descriptions-item>
  79. <template slot="label"> 模孔数量</template>
  80. {{ categoryMold.dieHoleNum }}
  81. </el-descriptions-item>
  82. <el-descriptions-item>
  83. <template slot="label"> 上冲头数量</template>
  84. {{ categoryMold.upperPunchNum }}
  85. </el-descriptions-item>
  86. <el-descriptions-item>
  87. <template slot="label"> 下冲头数量</template>
  88. {{ categoryMold.downPunchNum }}
  89. </el-descriptions-item>
  90. <el-descriptions-item>
  91. <template slot="label"> 最大冲压次数</template>
  92. {{ categoryMold.maxCyTimes }}
  93. </el-descriptions-item>
  94. <el-descriptions-item>
  95. <template slot="label"> 大模体型号 </template>
  96. {{ categoryMold.maxMoldType }}
  97. </el-descriptions-item>
  98. <el-descriptions-item>
  99. <template slot="label"> 芯棒直径 </template>
  100. {{ categoryMold.mandrelDiameter }}
  101. </el-descriptions-item>
  102. </el-descriptions>
  103. <div class="basic-details-title border-none">
  104. <span class="border-span">资产信息</span>
  105. </div>
  106. <el-descriptions title="" :column="4" size="medium" border>
  107. <el-descriptions-item>
  108. <template slot="label"> 固资编码 </template>
  109. {{ info.fixCode }}
  110. </el-descriptions-item>
  111. <el-descriptions-item>
  112. <template slot="label"> 模具编号 </template>
  113. {{ info.fixCode }}
  114. </el-descriptions-item>
  115. <el-descriptions-item>
  116. <template slot="label"> 冲压次数</template>
  117. <!-- {{ info.processName }} -->
  118. </el-descriptions-item>
  119. <el-descriptions-item>
  120. <template slot="label"> 所属工序</template>
  121. {{ info.processName }}
  122. </el-descriptions-item>
  123. <el-descriptions-item>
  124. <template slot="label"> 权属部门 </template>
  125. {{ info.ownershipDeptName }}
  126. </el-descriptions-item>
  127. <el-descriptions-item>
  128. <template slot="label"> 品牌 </template>
  129. {{ info.brand }}
  130. </el-descriptions-item>
  131. <el-descriptions-item>
  132. <template slot="label"> 供应商</template>
  133. {{ info.supplierName }}
  134. </el-descriptions-item>
  135. <el-descriptions-item>
  136. <template slot="label"> 供应商电话 </template>
  137. {{ info.supplierMobile }}
  138. </el-descriptions-item>
  139. <el-descriptions-item>
  140. <template slot="label"> 采购日期 </template>
  141. <!-- {{info.warehouseDetail.procurementTime}} -->
  142. </el-descriptions-item>
  143. <el-descriptions-item>
  144. <template slot="label"> 过保日期 </template>
  145. <!-- {{info.warehouseDetail.expirationTime}} -->
  146. </el-descriptions-item>
  147. </el-descriptions>
  148. <div class="basic-details-title border-none">
  149. <span class="border-span">仓储配置</span>
  150. </div>
  151. <el-descriptions title="" :column="4" size="medium" border>
  152. <el-descriptions-item>
  153. <template slot="label"> 启用库存预警</template>
  154. {{ dictType[categoryWms.isWarn] }}
  155. </el-descriptions-item>
  156. <el-descriptions-item>
  157. <template slot="label">允许拆包</template>
  158. {{ dictType[categoryWms.isUnpack] }}
  159. </el-descriptions-item>
  160. <el-descriptions-item>
  161. <template slot="label">安全库存</template>
  162. {{ categoryWms.secureInventory }}
  163. </el-descriptions-item>
  164. <el-descriptions-item>
  165. <template slot="label">最小库存</template>
  166. {{ categoryWms.minInventory }}
  167. </el-descriptions-item>
  168. <el-descriptions-item>
  169. <template slot="label"> 最大库存</template>
  170. {{ categoryWms.maxInventory }}
  171. </el-descriptions-item>
  172. <el-descriptions-item>
  173. <template slot="label">盘点模式</template>
  174. {{ dictPd[categoryWms.inventoryMode] }}
  175. </el-descriptions-item>
  176. <el-descriptions-item>
  177. <template slot="label">质保预警参考</template>
  178. <!-- <DictSelection
  179. dictName="质保预警参考"
  180. clearable
  181. v-model="categoryWms.warrantyWarnRefer"
  182. >
  183. </DictSelection> -->
  184. {{ categoryWms.warrantyWarnRefer }}
  185. </el-descriptions-item>
  186. <el-descriptions-item>
  187. <template slot="label">保质期</template>
  188. {{ categoryWms.warrantyPeriod ? categoryWms.warrantyPeriod + '/' : null
  189. }}{{ categoryWms.warrantyPeriodUnit }}
  190. </el-descriptions-item>
  191. </el-descriptions>
  192. <div class="basic-details-title border-none">
  193. <span class="border-span">生产信息</span>
  194. </div>
  195. <el-descriptions title="" :column="4" size="medium" border>
  196. <el-descriptions-item>
  197. <template slot="label"> 是否齐套件</template>
  198. {{ dictType[categoryMes.isCompleteSet] }}
  199. </el-descriptions-item>
  200. <el-descriptions-item>
  201. <template slot="label">消耗波动</template>
  202. {{ categoryMes.consumWave ? categoryMes.consumWave + '%' : null }}
  203. </el-descriptions-item>
  204. <el-descriptions-item>
  205. <template slot="label">变动损耗率</template>
  206. {{
  207. categoryMes.changeLossRate ? categoryMes.changeLossRate + '%' : null
  208. }}
  209. </el-descriptions-item>
  210. <el-descriptions-item>
  211. <template slot="label">固定损耗数</template>
  212. {{ categoryMes.fixLossNum }}
  213. </el-descriptions-item>
  214. <el-descriptions-item>
  215. <template slot="label">排程类型</template>
  216. {{ categoryMes.apsType }}
  217. </el-descriptions-item>
  218. <el-descriptions-item>
  219. <template slot="label">允许改型</template>
  220. {{ dictType[categoryMes.isModify] }}
  221. </el-descriptions-item>
  222. <el-descriptions-item>
  223. <template slot="label">允许返工返修</template>
  224. {{ dictType[categoryMes.isRework] }}
  225. </el-descriptions-item>
  226. <el-descriptions-item>
  227. <template slot="label">是否返回料</template>
  228. {{ dictType[categoryMes.isRematerial] }}
  229. </el-descriptions-item>
  230. <el-descriptions-item>
  231. <template slot="label">是否副产品</template>
  232. {{ dictType[categoryMes.isByProduct] }}
  233. </el-descriptions-item>
  234. <el-descriptions-item>
  235. <template slot="label">是否废品</template>
  236. {{ dictType[categoryMes.isWaste] }}
  237. </el-descriptions-item>
  238. <el-descriptions-item>
  239. <template slot="label">是否不良品</template>
  240. {{ dictType[categoryMes.isDefective] }}
  241. </el-descriptions-item>
  242. </el-descriptions>
  243. <div class="basic-details-title border-none">
  244. <span class="border-span">计划</span>
  245. </div>
  246. <el-descriptions title="" :column="4" size="medium" border>
  247. <el-descriptions-item>
  248. <template slot="label">固定提前期</template>
  249. {{ categoryAps.fixLeadTime }}
  250. </el-descriptions-item>
  251. <el-descriptions-item>
  252. <template slot="label">变动提前期</template>
  253. {{ categoryAps.changeLeadTime }}
  254. </el-descriptions-item>
  255. <el-descriptions-item>
  256. <template slot="label">检验提前期</template>
  257. {{ categoryAps.checkLeadTime }}
  258. </el-descriptions-item>
  259. <el-descriptions-item>
  260. <template slot="label">累计提前期</template>
  261. {{ categoryAps.cumLeadTime }}
  262. </el-descriptions-item>
  263. <el-descriptions-item>
  264. <template slot="label">提前期单位</template>
  265. {{ categoryAps.unit }}
  266. </el-descriptions-item>
  267. <el-descriptions-item>
  268. <template slot="label">订货间隔期</template>
  269. {{
  270. categoryAps.orderIntervalTime
  271. ? categoryAps.orderIntervalTime + '/'
  272. : null
  273. }}{{ categoryAps.orderIntervalUnit }}
  274. </el-descriptions-item>
  275. </el-descriptions>
  276. <div class="basic-details-title border-none">
  277. <span class="border-span">质量配置</span>
  278. </div>
  279. <el-descriptions title="" :column="4" size="medium" border>
  280. <el-descriptions-item>
  281. <template slot="label">是否来料检验</template>
  282. {{ dictType[categoryQms.isComeCheck] }}
  283. </el-descriptions-item>
  284. <el-descriptions-item>
  285. <template slot="label">检验方案</template>
  286. {{ categoryQms.checkFormula }}
  287. </el-descriptions-item>
  288. <el-descriptions-item>
  289. <template slot="label">采购组织</template>
  290. {{ cgInfo.groupName }}
  291. </el-descriptions-item>
  292. <el-descriptions-item>
  293. <template slot="label">采购员</template>
  294. {{ cgInfo.name }}
  295. </el-descriptions-item>
  296. </el-descriptions>
  297. <div class="basic-details-title border-none">
  298. <span class="border-span">备注信息</span>
  299. </div>
  300. <el-descriptions title="" :column="4" size="medium" border>
  301. <el-descriptions-item>
  302. <template slot="label">附件信息</template>
  303. {{ categoryObj.fileName }}
  304. </el-descriptions-item>
  305. <el-descriptions-item>
  306. <template slot="label">备注</template>
  307. {{ categoryObj.remark }}
  308. </el-descriptions-item>
  309. </el-descriptions>
  310. <div class="basic-details-title border-none">
  311. <span class="border-span">关联信息</span>
  312. </div>
  313. <linkMsg
  314. ref="linkMsgRef"
  315. :id="categoryObj.id"
  316. :categoryLevelId="categoryObj.categoryLevelId"
  317. :categoryLevelGroupId="categoryObj.categoryLevelGroupId"
  318. />
  319. <div class="basic-details-title border-none">
  320. <span class="border-span">文档信息</span>
  321. </div>
  322. <div class="upload-container">
  323. <div class="img-box">
  324. <img src="~@/assets/upload-placeholder.svg" alt="" v-if="!imageUrl" />
  325. <img v-else :src="imageUrl" alt="设备图片" />
  326. </div>
  327. <div class="file-list">
  328. <div
  329. :class="{ disabled: !item.storePath }"
  330. @click="openfile(item)"
  331. v-for="(item, index) in fileList"
  332. :key="index"
  333. class="file-box"
  334. >
  335. {{ item.t_name }}
  336. </div>
  337. </div>
  338. </div>
  339. <div class="basic-details-title border-none">
  340. <span class="border-span">扩展信息</span>
  341. </div>
  342. <el-descriptions title="" :column="4" size="medium" border>
  343. <el-descriptions-item
  344. v-for="(item, index) in info.extInfoSelf"
  345. :key="index"
  346. :span="1"
  347. >
  348. <template slot="label"> {{ item.key }} </template>
  349. <div>{{ item.value }}</div>
  350. </el-descriptions-item>
  351. </el-descriptions>
  352. <!-- <DetailsDialog
  353. ref="detailsDialogRef"
  354. /> -->
  355. </div>
  356. </template>
  357. <script>
  358. import { getImageUrl } from '@/utils/file.js';
  359. import { getFile } from '@/api/system/file/index.js';
  360. import { getAssetInfo } from '@/api/ledgerAssets';
  361. import { getDetails } from '@/api/classifyManage/itemInformation';
  362. import { getDetailInfo } from '@/api/material/list';
  363. import { getUserPage } from '@/api/system/organization';
  364. import { sysDict } from '@/utils/sys';
  365. import linkMsg from '../../equipment/components/link-msg.vue';
  366. import basicInfoVue from '../../components/basicInfo.vue';
  367. export default {
  368. props: {
  369. rowId: {
  370. type: String,
  371. default: ''
  372. }
  373. },
  374. components: { linkMsg, basicInfoVue },
  375. data() {
  376. return {
  377. categoryMold: {},
  378. cgInfo: {},
  379. categoryQms: {},
  380. categoryAps: {},
  381. categoryMes: {},
  382. categoryWms: {},
  383. dictType: {
  384. 1: '是',
  385. 0: '否'
  386. },
  387. dictPd: {
  388. 1: '逐个盘点',
  389. 2: '批量盘点'
  390. },
  391. categoryObj: {},
  392. fileList: [
  393. { t_name: '使用说明书' },
  394. { t_name: '生产许可证书' },
  395. { t_name: '防爆合格证书' },
  396. { t_name: '检验报告' },
  397. { t_name: '检验周期说明' },
  398. { t_name: '图纸资料' },
  399. { t_name: '产品合格证' }
  400. ],
  401. info: {
  402. baseInfo: {},
  403. extInfoSelf: [],
  404. extraInfo: {}
  405. },
  406. // 设备图片
  407. imageUrl: '',
  408. sourceType: null,
  409. depList: [],
  410. depInfo: {}
  411. };
  412. },
  413. created() {
  414. this.getDetilInfo();
  415. },
  416. methods: {
  417. async getDetilInfo() {
  418. const data = await getAssetInfo(this.rowId);
  419. if (data) {
  420. this.info = data;
  421. this.$set(this.info, 'baseInfo', data.category.category);
  422. this.$set(this.info, 'extraInfo', data.category.categoryMold);
  423. this.sourceType =
  424. data.positionList.length > 0 && data.positionList[0].type;
  425. // 设备图片
  426. if (typeof data.imageUrl != 'string') {
  427. this.imageUrl = getImageUrl(data.imageUrl.storePath);
  428. }
  429. if (data.attUrl && data.attUrl.length > 0) {
  430. // 文档信息
  431. data.attUrl.forEach((item, index) => {
  432. Object.assign(this.fileList[item.sort - 1], item);
  433. });
  434. }
  435. this.searchMoudol(data.category.category.id);
  436. }
  437. },
  438. async searchMoudol(id) {
  439. const res = await getDetailInfo(id);
  440. console.log(res);
  441. this.categoryObj = {
  442. ...res.category,
  443. // deptId:
  444. fileName: res.category.remarkAttach
  445. ? res.category.remarkAttach.map((item) => item.name).join(', ')
  446. : ''
  447. };
  448. this.$nextTick(() => {
  449. this.$refs.basicInfoVueRef.getDetailInfoAugr(this.categoryObj);
  450. });
  451. await this.searchDeptNodeClick(res.category.deptLeaderId);
  452. for (const key in this.depList) {
  453. if (this.depList[key].id == res.category.deptId) {
  454. this.depInfo = this.depList[key];
  455. break;
  456. }
  457. }
  458. for (const key in this.depList) {
  459. if (this.depList[key].id == res.categoryQms.checkPerson) {
  460. console.log('++', this.depList[key]);
  461. this.cgInfo = this.depList[key];
  462. break;
  463. }
  464. }
  465. this.categoryWms = {
  466. ...res.categoryWms,
  467. warrantyPeriodUnit: await sysDict(
  468. '保质期单位',
  469. res.categoryWms.warrantyPeriodUnit
  470. ),
  471. warrantyWarnRefer: await sysDict(
  472. '质保预警参考',
  473. res.categoryWms.warrantyWarnRefer
  474. )
  475. };
  476. this.categoryMes = {
  477. ...res.categoryMes,
  478. apsType: await sysDict('排程类型', res.categoryMes.apsType)
  479. };
  480. this.categoryAps = {
  481. ...res.categoryAps,
  482. orderIntervalUnit: await sysDict(
  483. '提前期单位',
  484. res.categoryAps.orderIntervalUnit
  485. ),
  486. unit: await sysDict('提前期单位', res.categoryAps.unit)
  487. };
  488. this.categoryQms = {
  489. ...res.categoryQms,
  490. checkFormula: await sysDict('检验方案', res.categoryQms.checkFormula)
  491. };
  492. this.categoryMold = { ...res.categoryMold };
  493. },
  494. // 选择所属部门
  495. async searchDeptNodeClick(id, ids) {
  496. // 根据部门获取人员
  497. const res = await getUserPage({
  498. pageNum: 1,
  499. size: -1,
  500. executeGroupId: id ? id : ''
  501. });
  502. this.depList = res.list;
  503. },
  504. // 打开详情弹窗
  505. jumpDetails() {
  506. if (!this.info.warehouseDetail) {
  507. return;
  508. }
  509. this.$refs.detailsDialogRef.init(
  510. this.info.warehouseDetail,
  511. this.sourceType
  512. );
  513. },
  514. openfile(row) {
  515. if (row.accessUrl) {
  516. fileSystemDownload(row);
  517. }
  518. }
  519. }
  520. };
  521. </script>
  522. <style lang="scss" scoped>
  523. .baseinfo-container {
  524. background-color: #fff;
  525. padding: 0px 20px 20px;
  526. .content {
  527. padding: 0 20px;
  528. }
  529. .basic-details-title {
  530. font-size: 16px;
  531. margin: 15px 0;
  532. }
  533. .upload-container {
  534. display: flex;
  535. .img-box {
  536. width: 280px;
  537. height: 342px;
  538. border: 1px solid rgba(215, 215, 215, 1);
  539. display: flex;
  540. justify-content: center;
  541. align-items: center;
  542. img {
  543. max-width: 100%;
  544. }
  545. }
  546. .file-list {
  547. margin-left: 50px;
  548. flex: 1;
  549. display: flex;
  550. justify-content: space-between;
  551. flex-wrap: wrap;
  552. justify-items: baseline;
  553. align-content: flex-start;
  554. .file-box {
  555. width: 30%;
  556. margin-bottom: 20px;
  557. height: 57px;
  558. text-align: center;
  559. line-height: 55px;
  560. border: 1px solid #1890ff;
  561. color: #1890ff;
  562. cursor: pointer;
  563. &.disabled {
  564. cursor: not-allowed;
  565. border-color: rgba(215, 215, 215, 1);
  566. color: rgba(215, 215, 215, 1);
  567. }
  568. }
  569. }
  570. }
  571. }
  572. </style>