CreateMis.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705
  1. <template>
  2. <div>
  3. <div class="createMisBox" v-if="selects == 1">
  4. <div>
  5. <h1 style="font-size: 16px;font-weight: bolder;">{{ editAndAdd }}</h1>
  6. </div>
  7. <div class="formBox" v-loading="saveLoading">
  8. <el-form ref="myForm" :inline="true" label-position="top" :model="newMission" class="demo-form-inline"
  9. style="width: 1200px;margin: 0 auto;" :rules="missionRules" require-asterisk-position="right"
  10. label-width="500px">
  11. <el-form-item label="检测任务名称" prop="misName">
  12. <el-input class="bestInput" v-model="newMission.misName" placeholder="请输入任务名称" clearable />
  13. </el-form-item>
  14. <el-form-item label="任务编号" prop="misNum">
  15. <el-input class="bestInput" disabled v-model="newMission.misNum" placeholder="自动生成任务编号..."
  16. clearable />
  17. </el-form-item>
  18. <el-form-item label="检测变电站" prop="flashId">
  19. <el-select style="width: 340px;height: 40px;" v-model="newMission.flashId" placeholder="请选择变电站"
  20. clearable @change="flashChange">
  21. <template v-for="(item, index) in flashList">
  22. <el-option :label="item.label" :value="item.value" />
  23. </template>
  24. </el-select>
  25. <img @click="addFlash" style="width: 40px;height: 40px;"
  26. src="../../../assets/icon/create_misBtn.png" alt="">
  27. </el-form-item>
  28. <el-form-item label="检测模型" prop="cmodel">
  29. <el-input class="bestInput" style="width: 600px;" disabled placeholder="输入内容"
  30. v-model="newMission.cmodel"></el-input>
  31. <el-button @click="modelOpen" style="height: 40px;margin-left: 5px;" type="primary" plain><el-icon>
  32. <Coin style="color: #449DFD;" />
  33. </el-icon>选择模型</el-button>
  34. </el-form-item>
  35. <el-form-item label="报告模板" prop="reportNow">
  36. <el-select class="bestInput" style="width: 400px;height: 40px;" @chang="bmChange"
  37. v-model="newMission.reportNow" placeholder="请选择模板" clearable>
  38. <el-option v-for="(item, index) in rmList" :label="item.name" :value="item.id" />
  39. </el-select>
  40. </el-form-item>
  41. <el-form-item prop="misMes">
  42. <template #label>
  43. <span style="color: red;">任务说明</span>
  44. </template>
  45. <el-input style="width: 1136px;" v-model="newMission.misMes"></el-input>
  46. </el-form-item>
  47. <el-form-item label="SCD文件">
  48. <!-- <div style="width:100%;text-align: left;">{{ scdName }}</div> -->
  49. <el-upload ref="upload" class="upload-demo" :http-request="nowUpload" :limit="2"
  50. element-loading-text="上传中..." element-loading-background="rgba(255, 255, 255, 0.8)"
  51. :show-file-list="false">
  52. <template #trigger>
  53. <el-button style="border-bottom: 1px solid #7BBAFD;width: calc(100vw - 1000px);"
  54. type="primary" plain>{{ scdName ? scdName : '选择SCD文件' }}</el-button>
  55. </template>
  56. </el-upload>
  57. <span style="margin-left: 10px;" v-loading="scdLoading">{{ textIs ? scdLoading ? ' 正在进行SCD间隔装置分析' :
  58. ' SCD分析已完成' : '' }}
  59. </span>
  60. </el-form-item>
  61. </el-form>
  62. </div>
  63. <!-- 间隔、装置列表 -->
  64. <div>
  65. <el-button style="width: 200px;height: 30px;" @click="backMent">返回</el-button>
  66. <el-button style="width: 200px;height: 30px;" @click="saveMent" type="primary">保存</el-button>
  67. </div>
  68. <div class="gapAndUnit" v-if="successScd">
  69. <!-- 间隔列表 -->
  70. <div class="gapBox">
  71. <div style="display: flex;justify-content: flex-start;align-items: center;margin: 5px;">
  72. <div>
  73. <img src="../../../assets/icon/DotsNine.png" alt="">
  74. </div>
  75. <div style="height: 24px;line-height: 22px;margin-left: 5px;">
  76. <span style="font-size: 16px;font-weight: 400;">间隔列表</span>
  77. </div>
  78. </div>
  79. <!-- <p :class="jgSelect == index ? 'result' : ''" v-for="(item, index) in jgList"
  80. style="text-align: left;cursor: pointer;" @click="jgClick(item, index)">
  81. {{ item.name }}
  82. </p> -->
  83. <el-tree :props="anyProps" :data="anyData" @node-click="handleCheckChange" />
  84. </div>
  85. <!-- 装置列表 -->
  86. <div class="unitBox">
  87. <div style="display: flex;justify-content: flex-start;align-items: center;margin: 10px 10px;">
  88. <div>
  89. <img src="../../../assets/icon/HardDrives.png" alt="">
  90. </div>
  91. <div style="height: 24px;line-height: 22px;margin-left: 5px;">
  92. <span style="font-size: 16px;font-weight: 400;">装置列表——间隔:<em>{{ jg }}</em></span>
  93. <span style="font-size: 16px;font-weight: 400;">检测模型:<em>{{ flashLevel ? flashLevel : '' }}</em></span>
  94. </div>
  95. <div
  96. style="position: absolute;top: 0px;right: 0px;display: flex;justify-content: center;align-items: center;">
  97. <!-- <div style="margin: 0 10px;">
  98. <el-checkbox label="开启检测" size="large" />
  99. </div> -->
  100. <div style="margin: 5px;">
  101. <el-button type="primary" size="small" plain @click="checkTime">选择装置</el-button>
  102. </div>
  103. </div>
  104. </div>
  105. <div v-loading="iedLoading" style="margin: 10px;float: left;">
  106. <!-- <div v-for="(item, index) in mx">
  107. {{ item.ied_name }}
  108. </div> -->
  109. <el-tag v-for="(item, index) in mx" :key="item.ied_name" @click="tagClick(item, index)" size="large"
  110. :class="item.isChoose ? 'mx-2' : 'mx-1'" closable="true" effect="plain" @close="tagClose(item)">
  111. {{ '[' + item.ied_name + ']' + (item.attr_desc || '') }}
  112. </el-tag>
  113. </div>
  114. </div>
  115. </div>
  116. <div v-if="successScd">
  117. <el-button style="width: 200px;height: 30px;" @click="backMent">返回</el-button>
  118. <el-button style="width: 200px;height: 30px;" type="primary" @click="iedSave">保存</el-button>
  119. </div>
  120. </div>
  121. <!-- 模态框组件 -->
  122. <div>
  123. <LookScd v-if="scdLooks" :scdLooks="scdLooks" @nowBack="nowBack" @lookNum="lookNum"></LookScd>
  124. <ModelTree v-if="treeMool" :treeMool="treeMool" :treeNeed="treeNeed" :checkedNodeNames="checkedNodeNames"
  125. @treeBack="treeBack" @treeNum="treeNum">
  126. </ModelTree>
  127. <FlashCreate v-if="fcModal" :fcModal="fcModal" @fcBack="fcBack"></FlashCreate>
  128. <CheckIed v-if="iedModal" :iedModal="iedModal" :loadScdId="loadScdId" @iedBack="iedBack"
  129. @iedArrBack="iedArrBack"></CheckIed>
  130. </div>
  131. </div>
  132. </template>
  133. <script>
  134. import { ref, onMounted, reactive, watch, onBeforeUnmount } from 'vue';
  135. import flashPower from '../../../api/flashPower'
  136. import report from '@/api/report';
  137. import scd from "@/api/scd"
  138. import task from '@/api/task';
  139. import cid from '@/api/cid/cid';
  140. import LookScd from '../modalComp/LookScd.vue';
  141. import ModelTree from '../modalComp/ModelTree.vue';
  142. import FlashCreate from '../modalComp/FlashCreate.vue';
  143. import CheckIed from '../modalComp/CheckIed.vue';
  144. import { ElMessage, ElMessageBox, ElLoading } from 'element-plus';
  145. export default {
  146. props: {
  147. btnSelect: {
  148. type: Number,
  149. require: true
  150. },
  151. taskList: {
  152. type: Array,
  153. require: true
  154. },
  155. editRow: {
  156. type: Object,
  157. require: true
  158. },
  159. status: {
  160. type: Number,
  161. require: true
  162. }
  163. },
  164. setup(props, { emit }) {
  165. let selects = props.btnSelect
  166. let arrList = props.taskList
  167. let newMission = ref({
  168. misName: "",
  169. misNum: "",
  170. flashId: "",
  171. reportNow: "",
  172. misMes: "",
  173. scdFolder: "",
  174. misId: "",
  175. cmodel: "",
  176. })//创建任务提交表单
  177. let missionRules = ref({
  178. misName: [
  179. { required: true, message: '请输入名称', trigger: 'blur' },
  180. ],
  181. flashId: [
  182. { required: true, message: "请选择变电站", trigger: "blur" }
  183. ],
  184. reportNow: [
  185. { required: true, message: "请选择模板", trigger: "blur" }
  186. ],
  187. misMes: [
  188. { required: true, message: "请输入任务说明", trigger: "blur" }
  189. ],
  190. cmodel: [
  191. { required: true, message: "请选择检测模型", trigger: "blur" }
  192. ],
  193. })//表单验证
  194. let flashList = ref([])//表单选择的变电站
  195. let scdLooks = ref(false)//选择scd文件时的显示与否
  196. let treeMool = ref(false)//选择模型模态框
  197. let btnName = ref('点击选择scd文件')
  198. let jg = ref("请选择")
  199. let jgList = ref([])//间隔列表
  200. let jgSelect = ref()//选择间隔
  201. let jgid = ref("")//间隔id
  202. let mx = ref([])
  203. let mxList = ref([])//模型列表
  204. let mxId = ref("")//模型id
  205. let rmList = ref([])//报告模板list
  206. let scdId = ref('')//lookscd.vue返回的scdid
  207. let scdName = ref('')//lookscd.vue返回的scdname
  208. let cmodel = ref('')
  209. let fcModal = ref(false)//创建变电站模态框
  210. let scdLoading = ref(false)//上传scd文件后进行分析
  211. let loadScdId = ref(0)//上传成功后拿到的scdid
  212. let successScd = ref(false)//保存任务后继续选择的间隔模型
  213. let iedModal = ref(false)//checkied.vue模态框状态
  214. let loadAreaId = ref("")
  215. let iedName = ref("")//一串ied名称字符串
  216. let iedLoading = ref(false)//加载ied
  217. let needEdit = ref({})//需要编辑的任务
  218. let anyProps = ref({
  219. label: "area_name",
  220. id: "area_id",
  221. })
  222. let treeNeed = ref([])//modelTree.vue需要的回显数据
  223. let checkedNodeNames = ref([])
  224. let anyData = ref([])
  225. let states = ref(0)
  226. let flashLevel = ref("")
  227. const myForm = ref(null)//表单ref
  228. let saveLoading = ref(false)
  229. let editAndAdd = ref("新建检测任务")
  230. let textIs = ref(false)
  231. watch(() => props.editRow, (newVal) => {
  232. needEdit.value = newVal
  233. })
  234. watch(() => props.status, (newValue, oldValue) => {
  235. if (newValue !== 2) {
  236. resetForm(); // 重置表单数据
  237. }
  238. });
  239. function resetForm() {
  240. if (myForm.value) {
  241. myForm.value.resetFields();
  242. states.value = 1
  243. }
  244. };
  245. function reload() {
  246. states.value = props.status
  247. if (states.value == 2) {
  248. if (props.editRow.name) {
  249. needEdit.value = props.editRow
  250. newMission.value.misName = needEdit.value.name//任务名称
  251. newMission.value.misNum = needEdit.value.code
  252. newMission.value.misId = needEdit.value.id //任务id
  253. newMission.value.flashId = needEdit.value.station_id//变电站id
  254. newMission.value.misMes = needEdit.value.memo//备注或描述
  255. newMission.value.reportNow = needEdit.value.report_id//报告模板
  256. loadScdId.value = needEdit.value.scd_id//scdid
  257. editAndAdd.value = '编辑检测任务'
  258. task.getTaskById({ id: needEdit.value.id - 0 }).then(res => {
  259. if (res.data != null) {
  260. let modelnames = res.data.models.map((item, index) => {
  261. return item.model_name
  262. })
  263. let arr = res.data.models.map((item, index) => {
  264. return item.sys_model_id
  265. })
  266. newMission.value.cmodel = modelnames.join(',')
  267. mxId.value = arr
  268. treeNeed.value = arr
  269. checkedNodeNames.value = modelnames
  270. loadScdId.value = res.data.scd_id
  271. scdName.value = res.data.scd_info.scd_name
  272. successScd.value = true
  273. scd.getLoadScd({ scd_id: res.data.scd_id * 1 }).then(res => {
  274. if (res.code == 0) {
  275. successScd.value = true
  276. anyData.value = res.data
  277. }
  278. })
  279. }
  280. })
  281. } else {
  282. return
  283. }
  284. } else {
  285. return
  286. }
  287. }
  288. function searchAllFlash() {
  289. flashPower.getAllArea({}).then(res => {
  290. flashPower.getAllFlashPower({ pid: res.data[0].pid }).then(res => {
  291. if (res.data == null) {
  292. return
  293. } else {
  294. flashList.value = res.data.map(item => {
  295. return {
  296. label: item.area_name,
  297. value: item.id
  298. }
  299. })
  300. }
  301. })
  302. })
  303. report.getReport({}).then(res => {
  304. rmList.value = res.data
  305. })
  306. }
  307. //变电站下拉框change事件
  308. function flashChange(e) {
  309. // searchScd(e)
  310. newMission.value.flashId = e
  311. }
  312. function bmChange(e) {
  313. newMission.value.reportNow = e.id
  314. }
  315. function jgClick(row, num) {
  316. jg.value = row.name
  317. jgSelect.value = num
  318. jgid.value = row.id
  319. }
  320. // 选择scd文件
  321. function chooseScdFile() {
  322. scdLooks.value = true
  323. }
  324. // lookscd组件传回得数据
  325. function nowBack(data, names, sid) {
  326. scdLooks.value = data
  327. if (names && sid) {
  328. newMission.value.scdFolder = sid
  329. btnName.value = names
  330. scd.getScdMiddle({ scd_id: sid }).then(res => {
  331. console.log(res, 'sid');
  332. })
  333. scd.getIedMiddle({ scd_id: sid }).then(res => {
  334. console.log(res, 'ied');
  335. })
  336. }
  337. }
  338. // t
  339. function saveMent() {//保存检测任务
  340. myForm.value.validate((val) => {
  341. if (val) {
  342. saveLoading.value = true
  343. task.createTask({
  344. // id: newMission.value.misId - 0,
  345. code: newMission.value.misNum,
  346. id: needEdit.value.id - 0,
  347. name: newMission.value.misName,
  348. station_id: newMission.value.flashId - 0,
  349. memo: newMission.value.misMes,
  350. report_id: newMission.value.reportNow - 0,
  351. scd_id: loadScdId.value - 0,
  352. modelids: mxId.value.toString()
  353. }).then(res => {
  354. if (res.code == 0) {
  355. ElMessage({
  356. message: "创建成功",
  357. type: "success"
  358. })
  359. saveLoading.value = false
  360. // emit("createBack", 0)
  361. scd.getLoadScd({ scd_id: loadScdId.value - 0 }).then(res => {
  362. if (res.code == 0) {
  363. successScd.value = true
  364. anyData.value = res.data
  365. console.log(anyData.value, 'any')
  366. } else {
  367. ElMessage({
  368. message: res.msg,
  369. type: "error"
  370. })
  371. }
  372. })
  373. } else {
  374. ElMessage({
  375. message: res.msg,
  376. type: "error"
  377. })
  378. saveLoading.value = false
  379. }
  380. })
  381. }
  382. })
  383. }
  384. function nowUpload(e) {
  385. if (scdLoading.value) {
  386. return
  387. }
  388. const loading = ElLoading.service({
  389. lock: true,
  390. text: '文件上传中',
  391. background: 'rgba(0, 0, 0, 0.7)',
  392. })
  393. cid.fileUpload({ station_id: newMission.value.flashId - 0, data_type: 'a_scd', file: e.file }).then(res => {
  394. scdLoading.value = true
  395. if (res.code == 0) {
  396. loading.close()
  397. }
  398. scdName.value = res.data.filename
  399. scd.loadScd({ station_id: newMission.value.flashId - 0, scd_path: res.data.path, scd_name: res.data.filename }).then(the => {
  400. // scd.getLoadScd({ scd_id: the.data - 0 }).then(lod => {
  401. // console.log(lod,'rsasdas');
  402. if (the.code == 0) {
  403. loadScdId.value = the.data - 0
  404. scdLoading.value = false
  405. textIs.value = true
  406. }
  407. // })
  408. })
  409. })
  410. }
  411. function handleCheckChange(e) {
  412. jg.value = e.area_name
  413. loadAreaId.value = e.area_id
  414. flashLevel.value = e.model_name.split(']')[1]
  415. iedLoading.value = true
  416. scd.getTikIed({ scd_id: loadScdId.value - 0, area_id: e.area_id - 0 }).then(res => {
  417. if (res.data != null) {
  418. mx.value = res.data.map(item => ({ ...item, isChoose: false }));
  419. iedName.value = mx.value.map(item => item.ied_name).join(',')
  420. iedLoading.value = false
  421. } else {
  422. mx.value = []
  423. iedLoading.value = false
  424. }
  425. })
  426. }
  427. function iedSave() {
  428. scd.stickIed({ scd_id: loadScdId.value - 0, area_id: loadAreaId.value - 0, ied_ids: iedName.value }).then(res => {
  429. console.log(res, 'res');
  430. if (res.code == 0) {
  431. ElMessage({
  432. type: "success",
  433. message: "间隔装置设置保存成功!",
  434. duration: 1500,
  435. })
  436. // emit("createBack", 0)
  437. } else {
  438. ElMessage({
  439. type: "error",
  440. message: res.msg,
  441. duration: 3000,
  442. })
  443. }
  444. })
  445. }
  446. function tagClose(row, num) {
  447. ElMessageBox.confirm('确认从该间隔移除当前装置' + row.ied_name + '吗?', '删除装置').then(() => {
  448. mx.value.splice(mx.value.indexOf(row), 1)
  449. iedName.value = mx.value.map(item => item.ied_name).join(',');
  450. }).catch(() => { })
  451. }
  452. function tagClick(row, num) {
  453. // 将所有对象的 isChoose 属性设置为 false
  454. mx.value.forEach(item => {
  455. item.isChoose = false;
  456. });
  457. // 将当前点击的对象的 isChoose 属性设置为 true
  458. row.isChoose = true;
  459. }
  460. function checkTime() {
  461. iedModal.value = true
  462. }
  463. function addFlash() {
  464. fcModal.value = true
  465. }
  466. function backMent() {
  467. emit("createBack", 0)
  468. }
  469. function treeBack(data) {
  470. treeMool.value = data
  471. }
  472. function modelOpen() {
  473. treeMool.value = true
  474. }
  475. function treeNum(data, name) {
  476. mxId.value = data
  477. // cmodel.value = name.toString()
  478. newMission.value.cmodel = name.toString()
  479. }
  480. function lookNum(name, id) {
  481. scdId.value = id
  482. scd.getScdMiddle({ scd_id: id }).then(res => {
  483. jgList.value = res.data
  484. })
  485. scdName.value = name
  486. }
  487. function fcBack(data) {
  488. fcModal.value = data
  489. }
  490. function iedBack(data) {
  491. iedModal.value = data
  492. }
  493. function iedArrBack(data) {
  494. for (let i = 0; i < data.length; i++) {
  495. let obj = mx.value.filter(item => item.ied_name == data[i].ied_name)
  496. if (obj != null && obj.length > 0) {
  497. ElMessage({
  498. type: "info",
  499. message: data[i].ied_name + ":该装置已存在!",
  500. duration: 3000,
  501. })
  502. return
  503. }
  504. }
  505. mx.value = mx.value.concat(data)
  506. iedName.value = mx.value.map(item => item.ied_name).join(',');
  507. }
  508. onMounted(() => {
  509. searchAllFlash()
  510. reload()
  511. })
  512. onBeforeUnmount(() => {
  513. resetForm()
  514. })
  515. return {
  516. selects,
  517. arrList,
  518. newMission,
  519. searchAllFlash,//获取变电站
  520. missionRules,//表单验证
  521. flashList,//表单选择的变电站
  522. flashChange,//变电站下拉框change事件
  523. scdLooks,//选择scd文件时的显示与否
  524. chooseScdFile,// 选择scd文件
  525. nowBack, // lookscd组件传回得数据
  526. btnName,//按钮内修改文字
  527. treeMool,//选择模型显示与否
  528. treeBack,//modeltree传回数据
  529. modelOpen,//选择模型打开模态框
  530. jg,//间隔
  531. jgList,//间隔列表
  532. jgSelect,//选择
  533. jgClick,//间隔点击
  534. jgid,//间隔id
  535. mx,//模型
  536. mxList,//模型列表
  537. treeNum,//modelTree.vue返回的id函数
  538. mxId,//模型id
  539. rmList,//报告模板列表
  540. scdId,//lookscd.vue返回的数据
  541. scdName,//lookscd.vue返回的数据
  542. saveMent,//保存检测任务
  543. bmChange,
  544. backMent,//返回切换
  545. cmodel,
  546. addFlash,//新建变电站
  547. fcModal,//创建变电站模态框
  548. fcBack,//flashcreate.vue返回的模态框值
  549. nowUpload,//文件上传
  550. scdLoading,
  551. loadScdId,//上传成功后拿到的scdid
  552. successScd,//保存任务后继续选择的间隔模型
  553. handleCheckChange,//树形组件
  554. anyData,
  555. anyProps,
  556. iedModal,//checkied.vue模态框状态
  557. iedBack,//checkied.vue返回模态框状态
  558. checkTime,//打开选择ied
  559. iedArrBack,//checkied.vue返回选择数组
  560. tagClose,
  561. loadAreaId,//area_id
  562. iedSave,//保存ied状态
  563. iedName,//一串ied字符串
  564. iedLoading,
  565. needEdit,//需要编辑的任务
  566. treeNeed,//modelTree.vue需要的回显id
  567. checkedNodeNames,
  568. states,
  569. myForm,//表单ref
  570. resetForm,
  571. flashLevel,
  572. tagClick,//tag标签的点击事件
  573. editAndAdd,
  574. textIs,
  575. saveLoading,
  576. }
  577. },
  578. components: {
  579. LookScd,
  580. ModelTree,//选择模型
  581. FlashCreate,//创建变电站
  582. CheckIed,//选择ied
  583. }
  584. }
  585. </script>
  586. <style scoped>
  587. em {
  588. font-style: normal;
  589. color: #5779D7;
  590. margin-right: 5px;
  591. }
  592. .createMisBox {
  593. width: 100%;
  594. height: calc(100vh - 150px);
  595. text-align: center;
  596. margin-top: 20px;
  597. /* line-height: calc(100vh - 150px); */
  598. }
  599. .formBox {
  600. width: 1136px;
  601. height: 360px;
  602. margin: 0 auto;
  603. /* border-bottom: 1px dashed #dbdbdb; */
  604. }
  605. .bestInput {
  606. width: 360px;
  607. height: 40px;
  608. border-radius: 2px 2px 2px 2px;
  609. }
  610. .gapAndUnit {
  611. width: 1136px;
  612. /* height: 150px; */
  613. /* border: 1px solid black; */
  614. margin: 5px auto;
  615. display: flex;
  616. justify-content: space-around;
  617. align-items: center;
  618. }
  619. .gapBox {
  620. width: 288px;
  621. height: calc(100vh - 640px);
  622. overflow-y: auto;
  623. border: 1px solid #5779D7;
  624. }
  625. .unitBox {
  626. width: 832px;
  627. height: calc(100vh - 640px);
  628. overflow-y: auto;
  629. border: 1px solid #5779D7;
  630. position: relative;
  631. }
  632. .result {
  633. color: #5779D7;
  634. }
  635. .chooseSpan {
  636. width: 150px;
  637. height: 30px;
  638. margin-left: 10px;
  639. border: 1px solid blue;
  640. text-align: center;
  641. line-height: 30px;
  642. }
  643. .mx-1 {
  644. float: left;
  645. min-width: 100px;
  646. height: 30px;
  647. margin-right: 10px;
  648. margin-top: 5px;
  649. margin-bottom: 5px;
  650. border: 1px solid #5779D7;
  651. color: black;
  652. }
  653. .mx-2 {
  654. float: left;
  655. min-width: 100px;
  656. height: 30px;
  657. margin-right: 10px;
  658. margin-top: 5px;
  659. margin-bottom: 5px;
  660. border: 1px solid #5779D7;
  661. background-color: rgba(89, 120, 213, 0.3);
  662. color: #5779D7;
  663. }
  664. :deep(.el-form--inline .el-form-item) {
  665. margin-right: 12px !important;
  666. }
  667. :deep(.el-select .el-input__wrapper) {
  668. height: 38px;
  669. }
  670. .demo-form-inline:nth-child(2) {
  671. background-color: red;
  672. }
  673. .my-red-label {
  674. color: red;
  675. }
  676. :deep(.el-tag--large .el-tag__close) {
  677. margin-left: 25px;
  678. }
  679. :deep(.el-icon svg) {
  680. /* color: red; */
  681. }
  682. </style>