detail.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. <template>
  2. <div>
  3. <el-card class="system-dic-container" style="position: relative">
  4. <div class="content">
  5. <div class="flex cont_box">
  6. <div class="font26">升级包名称:{{detail.name}}</div>
  7. <div class="pro-status"><span :class="detail.checkres == 1 ? 'on' : 'off'"></span>{{ detail.checkres == 1 ? '已验证' : '未验证' }}</div>
  8. </div>
  9. <div class="mt20"></div>
  10. <div class="container">
  11. <div class="item">升级包类型:{{detail.types==1?'整包':'差分'}}</div>
  12. <div class="item">升级包签名:d52b637c5eaf2bc9c24008bc4b723600</div>
  13. </div>
  14. <div class="container">
  15. <div class="item">签名算法:{{detail.are}}</div>
  16. <div class="item">模块名称:{{detail.moduleName}}</div>
  17. </div>
  18. <!-- <div class="mt20"></div>
  19. <div class="status_list">
  20. <div class="otaflex">
  21. <div class="otaflex_div1">
  22. <div class="otaflex_div2">
  23. <span class="title">目标设备总数</span>
  24. <div class="count otaflex_div3">0</div>
  25. </div>
  26. </div>
  27. <div class="otaflex_div1">
  28. <div class="otaflex_div2">
  29. <span class="title"><span class="on"></span>目标成功数</span>
  30. <div class="count otaflex_div3">0</div>
  31. </div>
  32. </div>
  33. <div class="otaflex_div1">
  34. <div class="otaflex_div2">
  35. <span class="title"><span class="off"></span>目标失败数</span>
  36. <div class="count otaflex_div3">0</div>
  37. </div>
  38. </div>
  39. <div class="otaflex_div1">
  40. <div class="otaflex_div2">
  41. <span class="title"><span class="ofn"></span>目标取消数</span>
  42. <div class="count otaflex_div3">0</div>
  43. </div>
  44. </div>
  45. </div>
  46. </div> -->
  47. </div>
  48. </el-card>
  49. <div class="mt10"></div>
  50. <el-card class="system-dic-container" style="position: relative">
  51. <el-tabs v-model="activeTab">
  52. <el-tab-pane label="批次管理" name="tab1">
  53. <BatchList v-if="detail.id" :detail="detail" />
  54. </el-tab-pane>
  55. <!-- <el-tab-pane label="设备列表" name="tab2">-->
  56. <!-- <DeviceList v-if="detail.id" :detail="detail" />-->
  57. <!-- </el-tab-pane>-->
  58. <el-tab-pane label="升级包信息" name="tab3">
  59. <InfoList v-if="detail.id" :detail="detail" />
  60. </el-tab-pane>
  61. </el-tabs>
  62. </el-card>
  63. </div>
  64. </template>
  65. <script lang="ts">
  66. import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue'
  67. import type { TabsPaneContext } from 'element-plus'
  68. import { useRoute } from 'vue-router'
  69. import { EditPen, DocumentAdd } from '@element-plus/icons-vue'
  70. import EditForm from '/@/views/iot/ota-update/update/component/edit.vue';
  71. import InfoList from './component/info.vue'
  72. import DeviceList from './component/device.vue'
  73. import BatchList from './component/batch.vue'
  74. import api from '/@/api/ota'
  75. const editFormRef = ref()
  76. export default defineComponent({
  77. components: { EditPen, EditForm, DocumentAdd, InfoList, DeviceList, BatchList},
  78. setup(props) {
  79. const route = useRoute()
  80. const state = reactive({
  81. activeTab:'tab1',
  82. developer_status: 2,
  83. detail: {
  84. id: '',
  85. name: '',
  86. types: 1,
  87. are: '',
  88. moduleName: '',
  89. checkres: 0,
  90. productId: 0,
  91. },
  92. });
  93. const getDetail = () => {
  94. const id = route.params && route.params.id
  95. api.manage.detail(Number(id)).then((res: any) => {
  96. state.detail = res
  97. })
  98. };
  99. const addOrEdit = async (row?: any) => {
  100. editFormRef.value.open(row)
  101. };
  102. onMounted(() => {
  103. getDetail()
  104. });
  105. return {
  106. addOrEdit,
  107. editFormRef,
  108. getDetail,
  109. ...toRefs(props),
  110. ...toRefs(state),
  111. }
  112. },
  113. })
  114. </script>
  115. <style scoped lang="scss">
  116. .status_list{
  117. width: 100%;
  118. display: flex;
  119. justify-content: space-between;
  120. align-items: center;
  121. padding: 10px;
  122. .otaflex{
  123. font-size: 12px;
  124. display: flex;
  125. align-items: center;
  126. margin-left: -6px;
  127. .otaflex_div1{
  128. padding: 0 24px;
  129. min-width: 200px;
  130. width: fit-content;
  131. .otaflex_div2 {
  132. align-items: center;
  133. .title{
  134. color: #666;
  135. font-size: 14px;
  136. }
  137. span {
  138. display: block;
  139. border-radius: 50%;
  140. .on {
  141. background: #52c41a;
  142. }
  143. .off {
  144. background: #c41a1a;
  145. }
  146. .ofn {
  147. background: rgb(255, 138, 0);
  148. }
  149. span {
  150. position: relative;
  151. top: -1px;
  152. display: inline-block;
  153. width:10px;
  154. height: 10px;
  155. vertical-align: middle;
  156. border-radius: 50%;
  157. margin-right: 5px;
  158. }
  159. }
  160. .otaflex_div3{
  161. font-size: 24px;
  162. margin-top: 10px;
  163. color: #373d41;
  164. }
  165. }
  166. }
  167. }
  168. }
  169. .container {
  170. display: flex;
  171. padding: 10px;
  172. }
  173. .item {
  174. flex: 1;
  175. }
  176. .desc {
  177. margin-top: 15px;
  178. }
  179. .edit {
  180. line-height: 40px;
  181. margin-top: 15px;
  182. margin-left: 30px;
  183. }
  184. .cont_box .pro-status {
  185. line-height: 40px;
  186. margin-left: 30px;
  187. margin-top: 5px;
  188. .on {
  189. background: #52c41a;
  190. }
  191. .off {
  192. background: #c41a1a;
  193. }
  194. span {
  195. position: relative;
  196. top: -1px;
  197. display: inline-block;
  198. width: 6px;
  199. height: 6px;
  200. vertical-align: middle;
  201. border-radius: 50%;
  202. margin-right: 5px;
  203. }
  204. }
  205. </style>