parametersBasic.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527
  1. <template>
  2. <el-form :inline="true" :model="formInline" ref="formRef" :rules="rules" class="form-inline" label-position="top">
  3. <div style="display: flex;flex-direction: column;">
  4. <div style="flex-grow: 1;height: 66vh;overflow-y: auto;overflow-x: hidden">
  5. <div class="disposition-title">基本参数</div>
  6. <el-row :gutter="20">
  7. <el-col :span="4">
  8. <el-form-item label="部别" prop="division" style="width: 200px">
  9. <el-input v-model="selectData.as_depart" disabled></el-input>
  10. </el-form-item>
  11. </el-col>
  12. <el-col :span="4">
  13. <el-form-item label="台站名称" prop="name" style="width: 200px">
  14. <el-input v-model="selectData.as_name" disabled></el-input>
  15. </el-form-item>
  16. </el-col>
  17. <el-col :span="4">
  18. <el-form-item label="站号" prop="numberStation" style="width: 200px">
  19. <el-input v-model="selectData.as_code" disabled></el-input>
  20. </el-form-item>
  21. </el-col>
  22. <el-col :span="4">
  23. <el-form-item label="地图级别" prop="level" style="width: 200px">
  24. <el-select v-model="selectData.map_level" disabled>
  25. <el-option label="1" :value="0"></el-option>
  26. <el-option label="2" :value="1"></el-option>
  27. <el-option label="3" :value="2"></el-option>
  28. <el-option label="4" :value="3"></el-option>
  29. <el-option label="5" :value="4"></el-option>
  30. <el-option label="6" :value="5"></el-option>
  31. <el-option label="7" :value="6"></el-option>
  32. <el-option label="8" :value="7"></el-option>
  33. <el-option label="9" :value="8"></el-option>
  34. <el-option label="10" :value="9"></el-option>
  35. <el-option label="11" :value="10"></el-option>
  36. <el-option label="12" :value="11"></el-option>
  37. <el-option label="13" :value="12"></el-option>
  38. <el-option label="14" :value="13"></el-option>
  39. <el-option label="15" :value="14"></el-option>
  40. <el-option label="16" :value="15"></el-option>
  41. <el-option label="17" :value="16"></el-option>
  42. <el-option label="18" :value="17"></el-option>
  43. </el-select>
  44. </el-form-item>
  45. </el-col>
  46. <el-col :span="4">
  47. <el-form-item label="所属基地" prop="base" style="width: 200px">
  48. <el-input v-model="selectData.as_base" disabled></el-input>
  49. </el-form-item>
  50. </el-col>
  51. <el-col :span="4">
  52. <el-form-item label="所属旅" prop="brigade" style="width: 200px">
  53. <el-input v-model="selectData.as_meteoro" disabled></el-input>
  54. </el-form-item>
  55. </el-col>
  56. </el-row>
  57. <el-row :gutter="20">
  58. <el-col :span="4">
  59. <el-form-item label="架设方式" prop="methodErection" style="width: 200px">
  60. <el-select v-model="selectData.install_type" disabled>
  61. <el-option label="业务站" :value="0"></el-option>
  62. <el-option label="无人站" :value="1"></el-option>
  63. <el-option label="梯度站" :value="2"></el-option>
  64. </el-select>
  65. </el-form-item>
  66. </el-col>
  67. <el-col :span="4">
  68. <el-form-item label="上传间隔" prop="interval" style="width: 200px">
  69. <div style="display:flex;align-items: center">
  70. <el-select v-model="selectData.update_space" disabled style="width: 180px">
  71. <el-option label="1" :value="1"></el-option>
  72. <el-option label="5" :value="5"></el-option>
  73. <el-option label="10" :value="10"></el-option>
  74. <el-option label="60" :value="60"></el-option>
  75. <el-option label="0" :value="0"></el-option>
  76. </el-select>
  77. <span style="padding-left: 10px">分</span>
  78. </div>
  79. </el-form-item>
  80. </el-col>
  81. <el-col :span="4">
  82. <el-form-item label="省" prop="provinces" style="width: 200px">
  83. <el-input v-model="selectData.as_province" disabled></el-input>
  84. </el-form-item>
  85. </el-col>
  86. <el-col :span="4">
  87. <el-form-item label="市县" prop="cities" style="width: 200px">
  88. <el-input v-model="selectData.as_city" disabled></el-input>
  89. </el-form-item>
  90. </el-col>
  91. <el-col :span="4">
  92. <el-form-item label="区镇" prop="districts" style="width: 200px">
  93. <el-input v-model="selectData.as_area" disabled></el-input>
  94. </el-form-item>
  95. </el-col>
  96. <el-col :span="4">
  97. <el-form-item label="乡镇" prop="townships" style="width: 200px">
  98. <el-input v-model="selectData.as_address" disabled></el-input>
  99. </el-form-item>
  100. </el-col>
  101. </el-row>
  102. <el-row :gutter="20">
  103. <el-col :span="4">
  104. <el-form-item label="相对县城距离" prop="interval" style="width: 200px">
  105. <div style="display:flex;align-items: center">
  106. <el-input v-model="selectData.county_dist" disabled style="width: 160px"></el-input>
  107. <span style="padding-left: 10px">公里</span>
  108. </div>
  109. </el-form-item>
  110. </el-col>
  111. <el-col :span="4">
  112. <el-form-item label="相对县城方向" prop="direction" style="width: 200px">
  113. <el-select v-model="selectData.county_pos" disabled>
  114. <el-option label="东方" :value="0"></el-option>
  115. <el-option label="南方" :value="1"></el-option>
  116. <el-option label="西方" :value="2"></el-option>
  117. <el-option label="北方" :value="3"></el-option>
  118. <el-option label="东南方" :value="4"></el-option>
  119. <el-option label="东北方" :value="5"></el-option>
  120. <el-option label="东北方" :value="6"></el-option>
  121. <el-option label="西北方" :value="7"></el-option>
  122. </el-select>
  123. </el-form-item>
  124. </el-col>
  125. <el-col :span="4">
  126. <el-form-item label="经度" prop="longitude" style="width: 200px">
  127. <div style="display:flex;align-items: center">
  128. <el-input v-model="selectData.as_lon" disabled></el-input>
  129. <!-- <el-select v-model="formInline.longitude2" placeholder="" style="width: 60px;margin-left: 10px">-->
  130. <!-- <el-option label="E" value="E"></el-option>-->
  131. <!-- <el-option label="W" value="W"></el-option>-->
  132. <!-- </el-select>-->
  133. </div>
  134. </el-form-item>
  135. </el-col>
  136. <el-col :span="4">
  137. <el-form-item label="纬度" prop="latitude" style="width: 200px">
  138. <div style="display:flex;align-items: center">
  139. <el-input v-model="selectData.as_lat" disabled></el-input>
  140. <!-- <el-select v-model="formInline.latitude2" placeholder="" style="width: 60px;margin-left: 10px">-->
  141. <!-- <el-option label="N" value="N"></el-option>-->
  142. <!-- <el-option label="S" value="S"></el-option>-->
  143. <!-- </el-select>-->
  144. </div>
  145. </el-form-item>
  146. </el-col>
  147. <el-col :span="4">
  148. <el-form-item label="观测场海拔高度" prop="fieldElevation" style="width: 200px">
  149. <div style="display:flex;align-items: center">
  150. <el-input v-model="selectData.observe_height" disabled style="width: 180px"></el-input>
  151. <span style="padding-left: 10px">米</span>
  152. </div>
  153. </el-form-item>
  154. </el-col>
  155. <el-col :span="4">
  156. <el-form-item label="气压传感器海拔高度" prop="sensorElevation" style="width: 200px">
  157. <div style="display:flex;align-items: center">
  158. <el-input v-model="selectData.pressure_height" disabled style="width: 180px"></el-input>
  159. <span style="padding-left: 10px">米</span>
  160. </div>
  161. </el-form-item>
  162. </el-col>
  163. </el-row>
  164. <el-row :gutter="20">
  165. <el-col :span="4">
  166. <el-form-item label="测风器距地高度" prop="heightAnmometers" style="width: 200px">
  167. <div style="display:flex;align-items: center">
  168. <el-input v-model="selectData.tower_height" disabled style="width: 180px"></el-input>
  169. <span style="padding-left: 10px">米</span>
  170. </div>
  171. </el-form-item>
  172. </el-col>
  173. <el-col :span="4">
  174. <el-form-item label="建站日期" prop="buildWebsiteTime" style="width: 200px">
  175. <el-date-picker
  176. disabled
  177. v-model="selectData.build_time"
  178. type="date"
  179. placeholder="请选择"
  180. />
  181. </el-form-item>
  182. </el-col>
  183. <el-col :span="4">
  184. <el-form-item label="观测组长" prop="leader" style="width: 200px">
  185. <el-input v-model="selectData.check_leader" disabled style="width: 180px"></el-input>
  186. </el-form-item>
  187. </el-col>
  188. <el-col :span="4">
  189. <el-form-item label="台长" prop="drector" style="width: 200px">
  190. <el-input v-model="selectData.station_leader" disabled style="width: 180px"></el-input>
  191. </el-form-item>
  192. </el-col>
  193. <el-col :span="4">
  194. <el-form-item label="预审员" prop="preExaminer" style="width: 200px">
  195. <el-input v-model="selectData.as_auditor" disabled style="width: 180px"></el-input>
  196. </el-form-item>
  197. </el-col>
  198. <el-col :span="4">
  199. <el-form-item label="授时许可" prop="grantPermission" style="width: 200px">
  200. <el-select v-model="selectData.set_time" disabled>
  201. <el-option label="不准授时" :value="0"></el-option>
  202. <el-option label="允许授时" :value="1"></el-option>
  203. </el-select>
  204. </el-form-item>
  205. </el-col>
  206. </el-row>
  207. <el-row :gutter="20">
  208. <el-col :span="4">
  209. <el-form-item label="观测方式" prop="modeObservation" style="width: 200px">
  210. <el-select v-model="selectData.view_mode" disabled>
  211. <el-option label="人工" :value="0"></el-option>
  212. <el-option label="自动" :value="1"></el-option>
  213. </el-select>
  214. </el-form-item>
  215. </el-col>
  216. <el-col :span="4">
  217. <el-form-item label="观测次数" prop="numberObservation" style="width: 200px">
  218. <div style="display:flex;align-items: center">
  219. <el-input v-model="selectedItems.length" style="width: 180px" disabled></el-input>
  220. <span style="padding-left: 10px">次</span>
  221. </div>
  222. </el-form-item>
  223. </el-col>
  224. </el-row>
  225. <el-row :gutter="20">
  226. <el-col :span="20">
  227. <el-form-item label="" prop="modeObservation" style="width: 200px">
  228. <div style="display: flex;align-items: center">
  229. <span>观测时次</span>
  230. <el-checkbox v-model="allTime" style="margin-left: 10px" label="全选" disabled/>
  231. </div>
  232. <sCheckbox style="margin-top: 5px" :data="selectedItemData" :data2="selectedItems" @update:data2="updateSelectedItems"></sCheckbox>
  233. </el-form-item>
  234. </el-col>
  235. </el-row>
  236. <div class="disposition-title">通信设置</div>
  237. <el-row :gutter="20">
  238. <el-col :span="20">
  239. <div style="display: flex;align-items: center;margin-bottom: 5px">
  240. <span>主通信</span>
  241. <el-checkbox v-model="formInline.enableCorrespondence" style="margin-left: 10px" label="启用从通信" />
  242. </div>
  243. </el-col>
  244. </el-row>
  245. <el-row :gutter="20">
  246. <el-col :span="4">
  247. <el-form-item label="通信方式" prop="methods" style="width: 200px">
  248. <el-select v-model="formInline.methods">
  249. <el-option label="2G" value="2"></el-option>
  250. <el-option label="3G" value="3"></el-option>
  251. <el-option label="4G" value="4"></el-option>
  252. </el-select>
  253. </el-form-item>
  254. </el-col>
  255. <el-col :span="4">
  256. <el-form-item label="传输协议" prop="agreement" style="width: 200px">
  257. <el-select v-model="formInline.agreement">
  258. <el-option label="TCP+DDP" value="2"></el-option>
  259. </el-select>
  260. </el-form-item>
  261. </el-col>
  262. <el-col :span="4">
  263. <el-form-item label="SIM卡号" prop="sim" style="width: 200px">
  264. <el-input v-model="formInline.sim"></el-input>
  265. </el-form-item>
  266. </el-col>
  267. <el-col :span="4">
  268. <el-form-item label="通信模块ID" prop="modelId" style="width: 200px">
  269. <el-input v-model="formInline.modelId"></el-input>
  270. </el-form-item>
  271. </el-col>
  272. <el-col :span="4">
  273. <el-form-item label="端口号" prop="port" style="width: 200px">
  274. <el-input v-model="formInline.port"></el-input>
  275. </el-form-item>
  276. </el-col>
  277. <el-col :span="4">
  278. <el-form-item label="通信模式" prop="communicationMode" style="width: 200px">
  279. <el-select v-model="formInline.communicationMode">
  280. <el-option label="主动+补发" value="2"></el-option>
  281. </el-select>
  282. </el-form-item>
  283. </el-col>
  284. </el-row>
  285. <el-row :gutter="20">
  286. <el-col :span="20">
  287. <el-form-item label="" prop="modeObservation" style="width: 200px">
  288. <div style="display: flex;align-items: center">
  289. <span>命令设置</span>
  290. <el-button type="primary" plain style="margin-left: 10px">设置命令</el-button>
  291. </div>
  292. </el-form-item>
  293. <!-- 表格主体 -->
  294. <div class="table-box" style="width:920px;">
  295. <el-table stripe ref="tableRef" :border="true" :data="processTableData" size="small">
  296. <template v-for="item in columns" :key="item">
  297. <el-table-column v-bind="item" :align="item.align ?? 'left'" :reserve-selection="item.type == 'selection'" :show-overflow-tooltip="true">
  298. <template #default="scope"></template>
  299. </el-table-column>
  300. </template>
  301. <!-- 无数据 -->
  302. <template #empty>
  303. <div class="table-empty">
  304. <slot name="empty">
  305. <div>暂无数据</div>
  306. </slot>
  307. </div>
  308. </template>
  309. </el-table>
  310. </div>
  311. </el-col>
  312. </el-row>
  313. <el-row :gutter="20">
  314. <el-col :span="20">
  315. <div style="display: flex;align-items: center;margin-bottom: 5px;margin-top: 20px">
  316. <span>从通信</span>
  317. </div>
  318. </el-col>
  319. </el-row>
  320. <el-row :gutter="20">
  321. <el-col :span="4">
  322. <el-form-item label="通信方式" prop="methods" style="width: 200px">
  323. <el-select v-model="formInline.methods">
  324. <el-option label="串口" value="2"></el-option>
  325. </el-select>
  326. </el-form-item>
  327. </el-col>
  328. <el-col :span="4">
  329. <el-form-item label="串口号" prop="agreement" style="width: 200px">
  330. <el-select v-model="formInline.agreement">
  331. <el-option label="/dev/ttyAMAO" value="2"></el-option>
  332. </el-select>
  333. </el-form-item>
  334. </el-col>
  335. <el-col :span="4">
  336. <el-form-item label="通信参数" prop="agreement" style="width: 200px">
  337. <el-select v-model="formInline.agreement">
  338. <el-option label="9600,N8,1" value="2"></el-option>
  339. </el-select>
  340. </el-form-item>
  341. </el-col>
  342. <el-col :span="4">
  343. <el-form-item label="通信模式" prop="communicationMode" style="width: 200px">
  344. <el-select v-model="formInline.communicationMode">
  345. <el-option label="主动+补发" value="2"></el-option>
  346. </el-select>
  347. </el-form-item>
  348. </el-col>
  349. </el-row>
  350. <el-row :gutter="20">
  351. <el-col :span="20">
  352. <el-form-item label="" prop="modeObservation" style="width: 200px">
  353. <div style="display: flex;align-items: center">
  354. <span>命令设置</span>
  355. <el-button type="primary" plain style="margin-left: 10px">设置命令</el-button>
  356. </div>
  357. </el-form-item>
  358. <!-- 表格主体 -->
  359. <div class="table-box" style="width:920px;">
  360. <el-table stripe ref="tableRef" :border="true" :data="processTableData" size="small">
  361. <template v-for="item in columns" :key="item">
  362. <el-table-column v-bind="item" :align="item.align ?? 'left'" :reserve-selection="item.type == 'selection'" :show-overflow-tooltip="true">
  363. <template #default="scope"></template>
  364. </el-table-column>
  365. </template>
  366. <!-- 无数据 -->
  367. <template #empty>
  368. <div class="table-empty">
  369. <slot name="empty">
  370. <div>暂无数据</div>
  371. </slot>
  372. </div>
  373. </template>
  374. </el-table>
  375. </div>
  376. </el-col>
  377. </el-row>
  378. </div>
  379. <div class="disposition-bottom">
  380. <el-button > 取消 </el-button>
  381. <el-button type="primary"> 下一步 </el-button>
  382. </div>
  383. </div>
  384. </el-form>
  385. </template>
  386. <script setup lang="tsx">
  387. import sCheckbox from "@/components/SCheckbox/index.vue"
  388. import {defineProps, onMounted, reactive, ref} from "vue";
  389. import {ColumnProps} from "@/components/ProTable/interface";
  390. import {getYasaverage, getYascomm} from "@/api/modules/allData";
  391. const props = defineProps<{
  392. selectData?: {};
  393. }>();
  394. const formRef = ref<any>();
  395. const formInline = ref<any>({
  396. division:"",
  397. name:"",
  398. numberStation:"",
  399. level:"",
  400. base:"",
  401. brigade:"",
  402. methodErection:"",
  403. interval:"",
  404. provinces:"",
  405. cities:"",
  406. districts:"",
  407. townships:"",
  408. distance:"",
  409. direction:"",
  410. longitude: "",
  411. longitude2: "E",
  412. latitude:"",
  413. latitude2:"N",
  414. fieldElevation:"",
  415. sensorElevation:"",
  416. modeObservation:"",
  417. numberObservation:"",
  418. heightAnmometers:"",
  419. buildWebsiteTime:"",
  420. leader:"",
  421. drector:"",
  422. preExaminer:"",
  423. grantPermission:"",
  424. allTime:"",
  425. enableCorrespondence:"",
  426. methods:"",
  427. agreement:"",
  428. sim:"",
  429. modelId:"",
  430. port:"",
  431. communicationMode:""
  432. })
  433. const rules = ref<any>(
  434. {
  435. division: [{ required: true, message: "部别不能为空", trigger: "blur" }],
  436. name: [{ required: true, message: "台站名称不能为空", trigger: "blur" }],
  437. numberStation: [{ required: true, message: "站号不能为空", trigger: "blur" }],
  438. base: [{ required: true, message: "所属基地不能为空", trigger: "blur" }],
  439. brigade: [{ required: true, message: "所属旅不能为空", trigger: "blur" }],
  440. methodErection: [{ required: true, message: "架设方式不能为空", trigger: "blur" }],
  441. provinces: [{ required: true, message: "省不能为空", trigger: "blur" }],
  442. cities: [{ required: true, message: "市县不能为空", trigger: "blur" }],
  443. districts: [{ required: true, message: "区镇不能为空", trigger: "blur" }],
  444. townships: [{ required: true, message: "乡镇不能为空", trigger: "blur" }],
  445. distance: [{ required: true, message: "相对县城距离不能为空", trigger: "blur" }],
  446. longitude: [{ required: true, message: "相对县城方向不能为空", trigger: "blur" }],
  447. latitude: [{ required: true, message: "相对县城方向不能为空", trigger: "blur" }],
  448. fieldElevation: [{ required: true, message: "观测场海拔高度不能为空", trigger: "blur" }],
  449. sensorElevation: [{ required: true, message: "气压传感器海拔高度不能为空", trigger: "blur" }],
  450. }
  451. );
  452. /** 提交按钮 */
  453. const submitForm = () => {
  454. formRef.value?.validate(async (valid: boolean) => {
  455. if (valid) {
  456. }
  457. });
  458. }
  459. const selectedItemData = ref<number[]>([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]);
  460. const selectedItems = ref<number[]>([]);
  461. function updateSelectedItems(newSelectedItems: number[]) {
  462. selectedItems.value = newSelectedItems;
  463. }
  464. const allTime = ref(false)
  465. const processTableData = ref([
  466. {
  467. id: "681913747276782417",
  468. a: "FZSJ",
  469. b: "FZSJ",
  470. c: "观测数据",
  471. d: "1分钟",
  472. }
  473. ]);
  474. // 表格配置项
  475. const columns = reactive<ColumnProps[]>([
  476. { prop: "a", label: "命令名称"},
  477. { prop: "b", label: "命令标识符"},
  478. { prop: "c", label: "命令类型" },
  479. { prop: "d", label: "间隔时间(分钟)"}
  480. ]);
  481. const pageable = ref<any>({
  482. asCode: props.selectData.as_code,
  483. pageNum: 1,
  484. pageSize: 20,
  485. });
  486. const primaryCommunications = ref();
  487. const fromCommunication = ref();
  488. const getYascommList= async ()=> {
  489. const {data} = await getYascomm(pageable.value);
  490. const averageList = data[props.selectData.as_code]
  491. console.log(averageList)
  492. }
  493. onMounted(() => {
  494. const observe_time = props.selectData.observe_time
  495. if (observe_time) {
  496. const timeArray = observe_time.split(';').map(item => parseInt(item, 10));
  497. selectedItems.value = timeArray;
  498. allTime.value = selectedItems.value.length===24? true:false
  499. }
  500. getYascommList()
  501. })
  502. console.log(props.selectData)
  503. </script>
  504. <style scoped>
  505. .table-box{
  506. height: auto;
  507. }
  508. </style>