DeviceInfo.vue 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. <template>
  2. <ContentWrap>
  3. <div style="display: flex; flex-direction: row; height: 12em; margin-top: 2px">
  4. <div style="flex: 1; height: 12em; margin-left: 20px">
  5. <el-image
  6. :key="index"
  7. :src="formData.picUrl"
  8. style="width: 35em; height: 12em"
  9. @click="imagePreview(formData.picUrl)"
  10. />
  11. </div>
  12. <div style="flex: 2; height: 12em; margin-top: 23px">
  13. <el-form ref="formRef" :disabled="false" :model="formData" label-width="120px">
  14. <el-row>
  15. <el-col :span="8">
  16. <el-form-item label="资产编码:" prop="deviceCode"
  17. >{{ formData.deviceCode }}
  18. </el-form-item>
  19. </el-col>
  20. <el-col :span="8">
  21. <el-form-item label="设备名称:" prop="deviceName"
  22. >{{ formData.deviceName }}
  23. </el-form-item>
  24. </el-col>
  25. <el-col :span="8">
  26. <el-form-item label="品牌:" prop="brand">
  27. {{ formData.brandName }}
  28. </el-form-item>
  29. </el-col>
  30. </el-row>
  31. <el-row>
  32. <el-col :span="8">
  33. <el-form-item label="所在部门:" prop="deptId">
  34. {{ formData.deptName }}
  35. </el-form-item>
  36. </el-col>
  37. <el-col :span="8">
  38. <el-form-item label="资产类别:" prop="assetClass">
  39. {{ formData.assetClassName }}
  40. </el-form-item>
  41. </el-col>
  42. <el-col :span="8">
  43. <el-form-item label="设备状态:" prop="deviceStatus">
  44. {{ getDictLabel(DICT_TYPE.PMS_DEVICE_STATUS, formData.deviceStatus) }}
  45. </el-form-item>
  46. </el-col>
  47. </el-row>
  48. <el-row>
  49. <el-col :span="8">
  50. <el-form-item label="资产性质:" prop="assetProperty">
  51. {{ getDictLabel(DICT_TYPE.PMS_ASSET_PROPERTY, formData.assetProperty) }}
  52. </el-form-item>
  53. </el-col>
  54. <el-col :span="8">
  55. <el-form-item label="规格型号:" prop="model">
  56. {{formData.modelName?formData.modelName:'-'}}
  57. </el-form-item>
  58. </el-col>
  59. </el-row>
  60. </el-form>
  61. </div>
  62. </div>
  63. </ContentWrap>
  64. <ContentWrap v-loading="formLoading">
  65. <el-tabs v-model="activeName">
  66. <el-tab-pane label="基础信息" name="info">
  67. <el-form style="margin-top: 5px; margin-left: 35px;margin-right: 35px;">
  68. <el-row style="border-bottom: 1px solid #dcdfe6;">
  69. <el-col :span="6">
  70. <el-form-item label="制造商:" prop="manufacturerId">
  71. {{ formData.zzName }}
  72. </el-form-item>
  73. </el-col>
  74. <el-col :span="6">
  75. <el-form-item label="生产日期:" prop="manDate">
  76. {{ formatDate(formData.manDate, 'YYYY-MM-DD') }}
  77. </el-form-item>
  78. </el-col>
  79. <el-col :span="6">
  80. <el-form-item label="供应商" prop="supplierId">
  81. {{ formData.supplierName ? formData.supplierName : '-' }}
  82. </el-form-item>
  83. </el-col>
  84. <el-col :span="6">
  85. <el-form-item label="铭牌信息:" prop="nameplate">
  86. {{ formData.nameplate ? formData.nameplate : '-' }}
  87. </el-form-item>
  88. </el-col>
  89. <el-col :span="6">
  90. <el-form-item label="质保到期:" prop="expires">
  91. {{ formData.expires ? formatDate(formData.expires, 'YYYY-MM-DD') : '-' }}
  92. </el-form-item>
  93. </el-col>
  94. </el-row>
  95. <el-row style="margin-top:20px;border-bottom: 1px solid #dcdfe6;">
  96. <el-col :span="6">
  97. <el-form-item label="采购价格:" prop="plPrice">
  98. {{ formData.plPrice ? formData.plPrice : '-' }}
  99. </el-form-item>
  100. </el-col>
  101. <el-col :span="6">
  102. <el-form-item label="采购日期:" prop="plDate">
  103. {{ formData.plDate ? formatDate(formData.plDate, 'YYYY-MM-DD') : '-' }}
  104. </el-form-item>
  105. </el-col>
  106. <el-col :span="6">
  107. <el-form-item label="折旧年限:" prop="plYear">
  108. {{ formData.plYear ? formData.plYear : '-' }}
  109. </el-form-item>
  110. </el-col>
  111. <el-col :span="6">
  112. <el-form-item label="折旧开始日期:" prop="plStartDate">
  113. {{ formData.plStartDate ? formatDate(formData.plStartDate, 'YYYY-MM-DD') : '-' }}
  114. </el-form-item>
  115. </el-col>
  116. <el-col :span="6">
  117. <el-form-item label="已提折旧月数:" prop="plMonthed">
  118. {{ formData.plMonthed ? formData.plMonthed : '-' }}
  119. </el-form-item>
  120. </el-col>
  121. <el-col :span="6">
  122. <el-form-item label="已提折旧金额:" prop="plAmounted">
  123. {{ formData.plAmounted ? formData.plAmounted : '-' }}
  124. </el-form-item>
  125. </el-col>
  126. <el-col :span="6">
  127. <el-form-item label="剩余金额:" prop="remainAmount">
  128. {{ formData.remainAmount ? formData.remainAmount : '-' }}
  129. </el-form-item>
  130. </el-col>
  131. </el-row>
  132. <el-row style="margin-top:20px">
  133. <el-col v-for="field in list" :key="field.sort" :span="6">
  134. <el-form-item :label="field.name" :prop="field.identifier" >
  135. {{ field.value }}
  136. </el-form-item>
  137. </el-col>
  138. </el-row>
  139. </el-form>
  140. </el-tab-pane>
  141. <el-tab-pane label="资料库" name="file">
  142. <DeviceUpload
  143. ref="fileRef"
  144. v-model:activeName="activeName"
  145. />
  146. </el-tab-pane>
  147. <el-tab-pane label="设备BOM" name="bom">
  148. <BomInfo
  149. ref="bomRef"
  150. v-model:activeName="activeName"
  151. />
  152. </el-tab-pane>
  153. <el-tab-pane label="故障记录" name="failure">
  154. <FailureList
  155. ref="failureRef"
  156. v-model:activeName="activeName"
  157. :deviceId = "id"
  158. />
  159. </el-tab-pane>
  160. <el-tab-pane label="维修记录" name="maintain">
  161. <MaintainList
  162. ref="maintainRef"
  163. v-model:activeName="activeName"
  164. :deviceId = "id"
  165. />
  166. </el-tab-pane>
  167. <!-- <el-tab-pane label="保养记录" name="maintenance">-->
  168. <!-- <ConnectList-->
  169. <!-- ref="connectRef"-->
  170. <!-- v-model:activeName="activeName"-->
  171. <!-- :propFormData="formData"-->
  172. <!-- :ifAlone="false"-->
  173. <!-- />-->
  174. <!-- </el-tab-pane>-->
  175. <!-- <el-tab-pane label="巡检记录" name="inspect">-->
  176. <!-- <ConnectList-->
  177. <!-- ref="connectRef"-->
  178. <!-- v-model:activeName="activeName"-->
  179. <!-- :propFormData="formData"-->
  180. <!-- :ifAlone="false"-->
  181. <!-- />-->
  182. <!-- </el-tab-pane>-->
  183. </el-tabs>
  184. </ContentWrap>
  185. </template>
  186. <script lang="ts" setup>
  187. import ContactList from '@/views/supplier/contact/index.vue'
  188. import CoreList from '@/views/supplier/coreproduct/index.vue'
  189. import ConnectList from '@/views/supplier/connect/index.vue'
  190. import { IotDeviceApi, IotDeviceVO } from '@/api/pms/device'
  191. import { DICT_TYPE, getDictLabel } from '@/utils/dict'
  192. import { formatDate } from '../../../utils/formatTime'
  193. import DeviceUpload from "@/views/pms/device/DeviceUpload.vue";
  194. import BomInfo from "@/views/pms/device/BomInfo.vue";
  195. import FailureList from "@/views/pms/device/FailureList.vue";
  196. import MaintainList from "@/views/pms/device/MaintainList.vue";
  197. import {createImageViewer} from "@/components/ImageViewer";
  198. defineOptions({ name: 'DeviceDetailInfo' })
  199. const { t } = useI18n() // 国际化
  200. const message = useMessage() // 消息弹窗
  201. const { params } = useRoute() // 查询参数
  202. const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
  203. const activeName = ref('info') // Tag 激活的窗口
  204. const list = ref([])
  205. const id = params.id
  206. const fileRef = ref() // 搜索的表单
  207. // SPU 表单数据
  208. const formData = ref({
  209. id: undefined,
  210. code: undefined,
  211. name: undefined,
  212. classification: undefined,
  213. type: undefined,
  214. nature: undefined,
  215. creditCode: undefined,
  216. tin: undefined,
  217. corporation: undefined,
  218. incorporationDate: undefined,
  219. address: undefined,
  220. bizScope: undefined,
  221. registeredCapital: undefined,
  222. annualTurnove: undefined,
  223. size: undefined,
  224. status: undefined,
  225. remark: undefined,
  226. deptName: undefined
  227. })
  228. const pics = ref([])
  229. /** 获得详情 */
  230. const getDetail = async () => {
  231. if (id) {
  232. formLoading.value = true
  233. try {
  234. const res = (await IotDeviceApi.getIotDevice(id)) as IotDeviceVO
  235. formData.value = res
  236. pics.value.push(res.picUrl)
  237. if (res) {
  238. if (res.templateJson) {
  239. list.value = JSON.parse(res.templateJson)
  240. }
  241. }
  242. } finally {
  243. formLoading.value = false
  244. }
  245. }
  246. }
  247. const imagePreview = (imgUrl: string) => {
  248. createImageViewer({
  249. urlList: [imgUrl]
  250. })
  251. }
  252. /** 初始化 */
  253. onMounted(async () => {
  254. await getDetail()
  255. })
  256. </script>
  257. <style scoped></style>