index.vue 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <template>
  2. <div>
  3. <!-- :disable="utils.isDisabled(userData.status,['ACTIVE'])" -->
  4. <detail-template
  5. :headData="mainAreaData"
  6. :title="`${userData.prodname}(${userData.prodnum})`"
  7. :tabs="['详情信息','物模型','告警配置']"
  8. ownertable="w_product"
  9. :delParam="{id:'20230815135002',content:{w_productid:router.currentRoute.value.query.id}}"
  10. :disable="!utils.hasPermission('delete') || isDisabled"
  11. >
  12. <template #operation>
  13. <Edit :disabled="utils.isDisabled(userData.isedit,[0]) && !utils.hasPermission('update') || isDisabled" :data="userData" @onSuccess="mianData"></Edit>
  14. <customBtn
  15. :btnName="userData.isused ? '禁用' : '启用'"
  16. idName="20230609160002"
  17. keyName="w_productid"
  18. :id="userData.w_productid"
  19. type="primary"
  20. size="middle"
  21. :paramData="[{key:'isused',value:userData.isused ? 0 : 1}]"
  22. :message="userData.isused ? '确定禁用当前产品吗?' : '确定启用当前产品吗?'"
  23. @onSuccess="mianData"
  24. :disabled="!utils.hasPermission('use') || isDisabled"
  25. />
  26. </template>
  27. <template #tab0>
  28. <p class="normal-title">基本信息</p>
  29. <defaultInfo :data="defaultInfoData" style="margin-bottom: 16px;"></defaultInfo>
  30. <p class="normal-title">系统信息</p>
  31. <defaultInfo :data="systemInfoData" :column="2" :attinfos="userData.attinfos"></defaultInfo>
  32. </template>
  33. <template #tab1>
  34. <SelectModel
  35. ref="Class"
  36. @selectRowData="selectChange"
  37. rowKey="w_firmwareid"
  38. :param="firmwareParam"
  39. :columns="utils.TBLayout('firmwareTable')" title="选择固件版本"
  40. >
  41. <template v-slot:slot1>
  42. <div style="display: block;margin-bottom: 10px;">
  43. <span style="margin-right: 10px">固件版本:</span>
  44. <a-input @click="$refs.Class.modeVisible=true" style="width: 200px;" placeholder="请选择固件版本" readonly v-model:value="firmware.firmwarename"></a-input>
  45. </div>
  46. </template>
  47. </SelectModel>
  48. <a-radio-group v-model:value="currentInfoModel" :style="{ marginBottom: '8px' }" style="margin-bottom:10px">
  49. <a-radio-button value="attribute">属性定义</a-radio-button>
  50. <a-radio-button value="server">功能定义</a-radio-button>
  51. <!-- <a-radio-button value="event">事件定义</a-radio-button> -->
  52. </a-radio-group>
  53. <AttributeTab :disabled="!utils.hasPermission('modelTab') || isDisabled" :data="userData" ref="attributeTab" v-if="currentInfoModel == 'attribute'">
  54. </AttributeTab>
  55. <serveTable :disabled="!utils.hasPermission('modelTab') || isDisabled" :data="userData" ref="serveTab" v-else-if="currentInfoModel == 'server'">
  56. <template #add>
  57. </template>
  58. </serveTable>
  59. <eventTab :disabled="!utils.hasPermission('modelTab') || isDisabled" :data="userData" v-else></eventTab>
  60. </template>
  61. <template #tab2>
  62. <warningSet :disabled="!utils.hasPermission('warningSet') || isDisabled"></warningSet>
  63. </template>
  64. </detail-template>
  65. </div>
  66. </template>
  67. <script setup>
  68. import Api from '@/api/api'
  69. import utils from '@/utils/utils'
  70. import SelectModel from '@/components/selectModel/index.vue'
  71. import detailTemplate from '@/components/detailTemplate/index.vue'
  72. import defaultInfo from '@/template/defaultInfo/index.vue'
  73. import customBtn from '@/components/customHandleBtn/index.vue'
  74. import Edit from './modules/Edit.vue'
  75. import AddServe from './modules/serveTable/modules/Add.vue'
  76. import AttributeTab from './modules/attributeTab/index.vue'
  77. import serveTable from './modules/serveTable/index.vue'
  78. import eventTab from './modules/eventTab/index.vue'
  79. import warningSet from './modules/warningSet/index.vue'
  80. import { message, Modal } from 'ant-design-vue'
  81. import { ExclamationCircleOutlined } from '@ant-design/icons-vue'
  82. import { useRouter } from "vue-router";
  83. import { onMounted,ref,createVNode,computed, provide } from "vue"
  84. const router = useRouter()
  85. const mainAreaData = ref([])
  86. let currentInfoModel = ref('attribute')
  87. const userData = ref({})
  88. let defaultInfoData = ref([])
  89. let systemInfoData = ref([])
  90. let serveTab = ref()
  91. let isDisabled = computed(() => {
  92. return userData.value.isOffical != 1
  93. })
  94. provide('detailData',() => {return userData.value})
  95. provide('isDisabled',() => {return isDisabled})
  96. const mianData = async ()=>{
  97. const res = await Api.requested({
  98. "id":20230612152502,
  99. "content": {
  100. "w_productid": router.currentRoute.value.query.id
  101. }
  102. })
  103. res.data.attinfos.forEach(item => {
  104. item.name = item.document
  105. })
  106. userData.value = res.data
  107. console.log(userData.value);
  108. changeDataStructure(res.data)
  109. }
  110. const changeDataStructure = (data) => {
  111. mainAreaData.value = [
  112. {
  113. label:'产品编码',
  114. value:data.prodnum
  115. },
  116. {
  117. label:'产品名称',
  118. value:data.prodname
  119. },
  120. {
  121. label:'产品分类',
  122. value:data.prodclassname
  123. },
  124. {
  125. label:'连接类型',
  126. value:data.prodtype
  127. },
  128. {
  129. label:'厂商',
  130. value:data.enterprisename
  131. },
  132. {
  133. label:'状态',
  134. value:data.isused ? '启用':'停用',
  135. style:() => {
  136. let style = {}
  137. style.color = utils.statusAndColor(userData.value.isused ? '启用' : '停用')
  138. return style
  139. }
  140. },
  141. {
  142. label:'描述',
  143. value:data.remarks
  144. },
  145. ]
  146. defaultInfoData.value = [
  147. {label:'产品编码',value:userData.value.prodnum},
  148. {label:'产品名称',value:userData.value.prodname},
  149. {label:'产品分类',value:userData.value.prodclassname},
  150. {label:'连接类型',value:userData.value.prodtype},
  151. {label:'厂商',value:userData.value.enterprisename},
  152. {label:'状态',value:userData.value.isused ? '启用' : '停用',style:() => {
  153. let style = {}
  154. style.color = utils.statusAndColor(userData.value.isused ? '启用' : '停用')
  155. return style
  156. }},
  157. {label:'设备数量',value:userData.value.device_count},
  158. {
  159. label:'是否指令反馈',
  160. value:data.isfeedback ? '是' : '否'
  161. },
  162. {
  163. label:'是否支持蓝牙',
  164. value:data.issupportbluetooth ? '是' : '否'
  165. },
  166. {
  167. label:'设备时间标准',
  168. value:data.tsfrom ? '设备时间' : '接收时间'
  169. },
  170. {label:'描述',value:userData.value.remarks},
  171. ]
  172. systemInfoData.value = [
  173. {label:'创建时间',value:userData.value.createdate},
  174. {label:'创建人',value:userData.value.createby},
  175. {label:'最近编辑时间',value:userData.value.changedate},
  176. {label:'最近编辑人',value:userData.value.changeby},
  177. ]
  178. }
  179. //获取固件信息
  180. let firmware = ref()
  181. let firmwareParam = ref({
  182. "content": {
  183. "pageNumber":1,
  184. "pageSize":20,
  185. "w_productid": router.currentRoute.value.query.id
  186. },
  187. "id": "2024072313473202",
  188. })
  189. provide('firmware',() => firmware.value)
  190. let getFirmwareid = async () => {
  191. let res = await Api.requested(firmwareParam.value)
  192. firmware.value = res.data[0]||{firmwarename:'',w_firmwareid:''}
  193. console.log(firmware,'固件');
  194. }
  195. let selectChange = (data) => {
  196. firmware.value = data[data.length - 1]
  197. }
  198. let serveSuccess = () => {
  199. serveTab.value.param.content.ownerid = router.currentRoute.value.query.id
  200. serveTab.value.$refs.list.listData()
  201. }
  202. onMounted (()=>{
  203. mianData()
  204. getFirmwareid()
  205. })
  206. </script>
  207. <style>
  208. </style>