evolutionView.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384
  1. <template>
  2. <div >
  3. <div class="left_container " v-show="isshow">
  4. <h2 ref="title">{{props.title1}}</h2>
  5. <!-- <div
  6. class="img"
  7. v-for="(item, index) in listArray"
  8. :key="index"
  9. >
  10. <span>{{ item.name }}</span>
  11. </div> -->
  12. <el-tabs
  13. v-model="activeName"
  14. type="card"
  15. :tab-position="tabPosition"
  16. class="demo-tabs yanshib"
  17. @tab-click="handleClick"
  18. >
  19. <!-- 火灾 -->
  20. <el-tab-pane label="火灾" name="111">
  21. <div class="demo-input-suffix firsttitle">
  22. <el-form-item label="火灾源" label-width="formLabelWidth5">
  23. <el-input v-model="input2"
  24. class="w-50 m-2"
  25. placeholder="节点名称"
  26. :prefix-icon="Search" />
  27. </el-form-item>
  28. <div class="btn2">
  29. <el-button type="success">导入</el-button></div>
  30. <div class="btn2">
  31. <el-button type="success">开始演化</el-button></div>
  32. </div>
  33. <!-- table表 -->
  34. <el-table :data="tableData" style="width: 100%">
  35. <el-table-column fixed prop="date" label="时间序列名" width="100" />
  36. <el-table-column prop="name" label="节点名称" width="80" />
  37. <el-table-column prop="state" label="值" width="90" />
  38. <el-table-column label="操作" width="220">
  39. <template #default="scope">
  40. <el-button size="small" @click="handleEdit(scope.$index, scope.row)"
  41. >添加</el-button
  42. >
  43. <el-button
  44. size="small"
  45. type="success"
  46. @click="handleDelete(scope.$index, scope.row)"
  47. >Delete</el-button
  48. >
  49. <el-button
  50. size="small"
  51. type="danger"
  52. @click="handleDelete(scope.$index, scope.row)"
  53. >删除</el-button
  54. >
  55. </template>
  56. </el-table-column>
  57. </el-table>
  58. <div class="input">
  59. <el-form-item label="时间序列名" :label-width="formLabelWidth5">
  60. <el-input v-model="input2"
  61. class="w-50 m-2"
  62. placeholder="节点名称"
  63. />
  64. </el-form-item>
  65. </div>
  66. <div class="demo-input-suffix firsttitle">
  67. <el-form-item label="节点名称" :label-width="formLabelWidth5">
  68. <el-input v-model="input3"
  69. class="w-50 m-2"
  70. placeholder="节点名称"
  71. :prefix-icon="Search" />
  72. </el-form-item>
  73. <div class="btn2">
  74. <el-button type="primary" @click="dialogVisiblenode = true;selenum=1">选择节点</el-button></div>
  75. </div>
  76. <div class="input " style="margin-top: -2px;">
  77. <el-form-item label="值" :label-width="formLabelWidth5" >
  78. <el-input v-model="des1" :autosize="{ minRows: 5, maxRows: 10}" type="textarea" />
  79. </el-form-item>
  80. </div>
  81. </el-tab-pane>
  82. <!-- 选择节点弹出框 -->
  83. <el-dialog
  84. v-model="dialogVisiblenode"
  85. title="Tips"
  86. width="50%"
  87. >
  88. <div class="demo-input-suffix firsttitle">
  89. <el-form-item label="节点选择" :label-width="formLabelWidth5">
  90. <el-input v-model="input2"
  91. class="w-50 m-2"
  92. placeholder="节点名称"
  93. :prefix-icon="Search" />
  94. </el-form-item>
  95. <div class="btn2">
  96. <el-button type="success">导入</el-button></div>
  97. </div>
  98. <el-table
  99. ref="multipleTableRef"
  100. :data="tableData2"
  101. style="width: 100%"
  102. @selection-change="handleSelectionChange"
  103. >
  104. <el-table-column type="selection" width="55" />
  105. <!-- <el-table-column label="Date" width="120">
  106. <template #default="scope">{{ scope.row.date }}</template>
  107. </el-table-column> -->
  108. <el-table-column type="index" width="50" />
  109. <el-table-column property="name" label="名称" width="120" />
  110. <el-table-column property="chuk" label="位置坐标"/>
  111. <el-table-column property="chuk" label="出口"/>
  112. <el-table-column property="w1" label="初始水位(升)" width="120"/>
  113. <el-table-column property="w2" label="初始温度(K)" width="120"/>
  114. </el-table>
  115. <template #footer>
  116. <span class="dialog-footer">
  117. <el-button @click="dialogVisiblenode = false">取消</el-button>
  118. <el-button type="primary" @click="queding();dialogVisiblenode = false">
  119. 确认
  120. </el-button>
  121. </span>
  122. </template>
  123. </el-dialog>
  124. <!--水灾 -->
  125. <el-tab-pane label="水灾" name="222" >
  126. <div class="demo-input-suffix firsttitle">
  127. <el-form-item label="突水源" label-width="formLabelWidth5">
  128. <el-input v-model="input4"
  129. class="w-50 m-2"
  130. placeholder="节点名称"
  131. :prefix-icon="Search" />
  132. </el-form-item>
  133. <div class="btn2">
  134. <el-button type="success">导入</el-button></div>
  135. <div class="btn2">
  136. <el-button type="success">开始演化</el-button></div>
  137. </div>
  138. <!-- table表 -->
  139. <el-table :data="tableData" style="width: 100%">
  140. <el-table-column fixed prop="date" label="时间序列名" width="100" />
  141. <el-table-column prop="name" label="节点名称" width="80" />
  142. <el-table-column prop="state" label="值" width="90" />
  143. <el-table-column label="操作" width="220">
  144. <template #default="scope">
  145. <el-button size="small" @click="handleEdit(scope.$index, scope.row)"
  146. >添加</el-button
  147. >
  148. <el-button
  149. size="small"
  150. type="success"
  151. @click="handleDelete(scope.$index, scope.row)"
  152. >Delete</el-button
  153. >
  154. <el-button
  155. size="small"
  156. type="danger"
  157. @click="handleDelete(scope.$index, scope.row)"
  158. >删除</el-button
  159. >
  160. </template>
  161. </el-table-column>
  162. </el-table>
  163. <div class="input">
  164. <el-form-item label="时间序列名" :label-width="formLabelWidth5">
  165. <el-input v-model="input2"
  166. class="w-50 m-2"
  167. placeholder="节点名称"
  168. />
  169. </el-form-item>
  170. </div>
  171. <div class="demo-input-suffix firsttitle">
  172. <el-form-item label="节点名称" :label-width="formLabelWidth5">
  173. <el-input v-model="input4"
  174. class="w-50 m-2"
  175. placeholder="节点名称"
  176. :prefix-icon="Search" />
  177. </el-form-item>
  178. <div class="btn2">
  179. <el-button type="primary" @click="dialogVisiblenode = true;selenum=2">选择节点</el-button></div>
  180. </div>
  181. <div class="input " style="margin-top: -2px;">
  182. <el-form-item label="值" :label-width="formLabelWidth5" >
  183. <el-input v-model="des2" :autosize="{ minRows: 5, maxRows: 10}" type="textarea" />
  184. </el-form-item>
  185. </div>
  186. </el-tab-pane>
  187. <el-tab-pane label="瓦斯爆炸" name="333">还在开发中.....</el-tab-pane>
  188. </el-tabs>
  189. <!-- 底部 -->
  190. <div class="dialog-footer">
  191. <el-button type="primary" @click="isshow = false">
  192. 确认
  193. </el-button>
  194. <span class="btn" @click="isshow = false">关 闭</span>
  195. </div>
  196. </div>
  197. </div>
  198. </template>
  199. <script setup >
  200. import { ref, onMounted,defineProps, reactive,defineExpose } from "vue";
  201. import { Calendar, Search } from '@element-plus/icons-vue'
  202. const props= defineProps(['title1']);
  203. let isshow=ref(false);
  204. let sum=ref('1')
  205. let title=ref()
  206. let selectstr=ref('')
  207. let input3=ref("")
  208. let input4=ref("")
  209. let selenum=ref(1)
  210. const dialogVisiblenode = ref(false)
  211. const tabPosition = ref('left')
  212. // let title1=ref("1")
  213. let dialogVisible=ref(true);
  214. const formLabelWidth5=ref(77)
  215. const multipleTableRef = ref()
  216. const multipleSelection = ref([])
  217. let listArray = ref([
  218. { id: 0, name: "灾情演化" },
  219. { id: 1, name: "演化过程" },
  220. { id: 2, name: "灾情历史" },
  221. { id: 3, name: "日志" },
  222. ]);
  223. let input2=ref("")
  224. let des1=ref(" 0 373 0.1 0.1 \n 10 373 0.1 0.1\n 20 373 0.1 0.1")
  225. let des2=ref(" 0 100\n 10 100 \n 20 100")
  226. const tableData = [
  227. {
  228. date: '2022-05-03',
  229. name: 'Tom',
  230. state: 'California',
  231. city: 'Los Angeles',
  232. address: 'No. 189, Grove St, Los Angeles',
  233. zip: 'CA 90036',
  234. tag: 'Home',
  235. },
  236. {
  237. date: '2023-05-02',
  238. name: 'Tom',
  239. state: 'California',
  240. city: 'Los Angeles',
  241. address: 'No. 189, Grove St, Los Angeles',
  242. zip: 'CA 90036',
  243. tag: 'Office',
  244. },
  245. {
  246. date: '2016-05-04',
  247. name: 'Tom',
  248. state: 'California',
  249. city: 'Los Angeles',
  250. address: 'No. 189, Grove St, Los Angeles',
  251. zip: 'CA 90036',
  252. tag: 'Home',
  253. },
  254. {
  255. date: '2016-05-01',
  256. name: 'Tom',
  257. state: 'California',
  258. city: 'Los Angeles',
  259. address: 'No. 189, Grove St, Los Angeles',
  260. zip: 'CA 90036',
  261. tag: 'Office',
  262. },
  263. ]
  264. const tableData2= [
  265. {
  266. date: '2022-05-03',
  267. name: 'Tom0',
  268. address: 'No. 189, Grove St, Los Angeles',
  269. chuk: '是',
  270. w1:"30",
  271. w2:'10'
  272. },
  273. {
  274. date: '2023-05-02',
  275. name: 'Tom1',
  276. address: 'No. 189, Grove St, Los Angeles',
  277. chuk: '否',
  278. w1:"20",
  279. w2:'10'
  280. },
  281. ]
  282. const activeName = ref('111')
  283. function handleClick(tab, event){
  284. activeName.value=tab.props.name;
  285. // console.log( activeName.value);
  286. }
  287. function handleClicktable() {
  288. console.log('click')
  289. }
  290. function handleSelectionChange(val){
  291. multipleSelection.value = val
  292. console.log( multipleSelection.value );
  293. }
  294. function handleEdit(index,row){
  295. console.log(index, row)
  296. }
  297. function handleDelete(index,row) {
  298. console.log(index, row)
  299. }
  300. function queding(){
  301. selectfun();
  302. if(selenum.value==1){
  303. input3.value=selectstr.value
  304. }else{
  305. input4.value=selectstr.value
  306. }
  307. }
  308. function selectfun(){
  309. selectstr.value='';
  310. if(multipleSelection.value.length!=0){
  311. //selectstr.value='';
  312. for(let i=0;i<=multipleSelection.value.length-1;i++){
  313. selectstr.value+=multipleSelection.value[i].name;
  314. selectstr.value+=','
  315. console.log(multipleSelection.value[i].name)
  316. }
  317. }else{
  318. selectstr.value='';
  319. }
  320. }
  321. onMounted(()=>{
  322. console.log(props)
  323. // title1.value='我是头部'
  324. // console.log(title.value)
  325. })
  326. defineExpose({isshow})
  327. </script>
  328. <style scoped>
  329. .left_container {
  330. padding: 15px;
  331. width: 600px;
  332. position: relative;
  333. top: 49px;
  334. left: 89px;
  335. z-index: 2018;
  336. border-radius: 5px;
  337. box-shadow: 0px 3px 10px rgba(255, 255, 255, 0.1);
  338. background-color: #fff;
  339. font-size: 12px;
  340. }
  341. .demo-input-suffix{
  342. /* padding: 10px; */
  343. }
  344. .firsttitle{
  345. display: flex;
  346. }
  347. .btn2{
  348. padding: 0 20px;
  349. }
  350. .input{
  351. width: 400px;
  352. margin-top: 10px;
  353. }
  354. </style>
  355. <style>
  356. .yanshib .el-tabs__content{
  357. border: 1px solid #e4e7ed !important;
  358. padding: 5px 20px;
  359. min-height: 200px;
  360. }
  361. .el-tabs--left .el-tabs__header.is-left{
  362. margin-right: 0 !important;
  363. }
  364. </style>