Menuventdoor.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374
  1. <template>
  2. <div class="l_Dialog bou tablebk">
  3. <!--风门-->
  4. <div class="common-layout" style="margin: 0">
  5. <el-aside
  6. width="480px"
  7. class="L_aside L_aside1 asideg asidegbg leftbgimg1"
  8. v-show="sendialogVisible"
  9. >
  10. <div class="demo-collapse">
  11. <el-collapse accordion>
  12. <el-collapse-item name="1" class="btnicon">
  13. <template #title>
  14. <el-icon class="iconimg Frame3" fit="contain"></el-icon>
  15. 风门<el-icon class="header-icon"> </el-icon>
  16. </template>
  17. <div class="asides_content">
  18. <div class="jc_content tablecolor">
  19. <div class="jc_padding font12">
  20. <div class="xian btncolor tablefocus bmar">
  21. <el-table
  22. :data="fmObjs"
  23. style="width: 100%"
  24. :max-height="tableHeight"
  25. :highlight-current-row="currentrow"
  26. :row-class-name="tableRowClassName"
  27. @row-click="fmtabxz($event)"
  28. :header-cell-style="{
  29. background: 'rgba(13, 22, 57, 0) '
  30. }"
  31. >
  32. <template v-slot:empty>
  33. <p>暂无数据</p>
  34. </template>
  35. <el-table-column prop="doorname" label="风门名称" />
  36. <el-table-column prop="pname" label="巷道名称" />
  37. <!-- <el-table-column prop="site" label="相对位置" /> -->
  38. <el-table-column property="siteremark" label="位置"/>
  39. <el-table-column prop="dragcoe" label="阻力系数" />
  40. <el-table-column prop="onoff" label="开启状态">
  41. <template #default="scope">
  42. {{
  43. scope.row.onoff == 0
  44. ? "否"
  45. : scope.row.onoff == 1
  46. ? "是"
  47. : "是"
  48. }}
  49. </template>
  50. </el-table-column>
  51. </el-table>
  52. <div class="dialog-footer footer_div l_btn">
  53. <div class="footerbtn flex1">
  54. <div class="borderimg"><el-button @click="fmadd();">添加</el-button></div>
  55. </div>
  56. <div class="footerbtn flex1">
  57. <div class="borderimg"><el-button @click="fmupdate();">修改</el-button></div>
  58. </div>
  59. <div class="footerbtn flex1">
  60. <div class="borderimg"><el-button @click="fmdeldialog();">删除</el-button></div>
  61. </div>
  62. </div>
  63. </div>
  64. </div>
  65. </div>
  66. </div>
  67. </el-collapse-item>
  68. </el-collapse>
  69. <!-- 风门的添加 -->
  70. <el-dialog
  71. v-model="fmDShow"
  72. draggable :modal="false" modal-class="summary-dlg"
  73. @close="clearvtk"
  74. align-center :append-to-body="true" width="400" class="dialog_class bgcolor tianjia foter_l tianjia"
  75. >
  76. <template #header="{ titleId, titleClass }">
  77. <div class="my-header">
  78. <el-image :src="icon" fit="contain"></el-image>
  79. <h4 :id="titleId" :class="titleClass">{{ tishi }}</h4>
  80. </div>
  81. </template>
  82. <el-form>
  83. <!-- 只能输入引文oninput ="value=value.replace(/[^a-zA-Z]/g, '');" -->
  84. <el-form-item label="编码" :label-width="formLabelWidth6">
  85. <el-input
  86. v-model="fmObj.doorcode"
  87. maxlength="18"
  88. @input="fmObj.doorcode = fmObj.doorcode.replace(/[\u4e00-\u9fa5\s]/g, '')"
  89. class="w-50 m-2"
  90. placeholder="请输入"
  91. />
  92. </el-form-item>
  93. <el-form-item label="风门名称" :label-width="formLabelWidth6">
  94. <el-input
  95. v-model="fmObj.doorname"
  96. maxlength="18"
  97. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')"
  98. class="w-50 m-2"
  99. placeholder="请输入"
  100. />
  101. </el-form-item>
  102. <div class="demo-input-suffix firsttitle magintop">
  103. <el-form-item label="巷道名称" :label-width="formLabelWidth6">
  104. <el-input
  105. v-model="fmObj.pname"
  106. disabled
  107. class="w-50 m-2"
  108. placeholder="巷道名称"
  109. />
  110. </el-form-item>
  111. <div class="btn2">
  112. <el-button
  113. type="primary"
  114. @click="fireclick()"
  115. >选择巷道</el-button
  116. >
  117. </div>
  118. </div>
  119. <div class="input">
  120. <el-form-item label="相对位置" :label-width="formLabelWidth6">
  121. <el-input-number
  122. v-model="fmObj.site"
  123. :min="0"
  124. :max="1"
  125. :precision="2"
  126. :step="0.1"
  127. controls-position="right"
  128. class="w-50 m-2"
  129. placeholder="相对位置"
  130. @change="inputnumberChange"
  131. />
  132. </el-form-item>
  133. </div>
  134. <el-form-item label="位置" :label-width="formLabelWidth6">
  135. <el-input
  136. v-model="fmObj.siteremark"
  137. class="w-50 m-2"
  138. placeholder="请输入位置说明"
  139. />
  140. </el-form-item>
  141. <div style="display: flex">
  142. <span class="switchppm">开启状态</span>
  143. <el-switch
  144. v-model="fmObj.onoff"
  145. inline-prompt
  146. active-text="是"
  147. inactive-text="否"
  148. :active-value="1"
  149. :inactive-value="0"
  150. />
  151. </div>
  152. <el-form-item label="阻力系数" :label-width="formLabelWidth6">
  153. <el-input
  154. v-model="fmObj.dragcoe"
  155. maxlength="10"
  156. oninput="value=value.replace(/[^0-9.]/g,'')"
  157. class="w-50 m-2"
  158. placeholder="请输入"
  159. />
  160. </el-form-item>
  161. </el-form>
  162. <div class="dialog-footer footer_div l_btn">
  163. <div class="footerbtn flex1">
  164. <div class="borderimg">
  165. <el-button
  166. @click="clearvtk();fmDShow = false"
  167. >取消</el-button
  168. >
  169. </div>
  170. </div>
  171. <div class="footerbtn flex1">
  172. <div class="borderimg">
  173. <el-button @click="fmsave()"> 确定 </el-button>
  174. </div>
  175. </div>
  176. </div>
  177. </el-dialog>
  178. <!-- 删除框 -->
  179. <el-dialog v-model="dialogsgdelect" draggable :modal="false" modal-class="summary-dlg" align-center :append-to-body="true" width="400" class="dialog_class bgcolor tianjia">
  180. <template #header="{ titleId, titleClass }">
  181. <div class="my-header ">
  182. <el-image :src="icon" fit="contain"></el-image>
  183. <h4 :id="titleId" :class="titleClass">删除框</h4>
  184. </div>
  185. </template>
  186. <h4 class="delecttitle"> 是否确认删除: <span class="spanclad">{{ fmdelname }}</span></h4>
  187. <div class="dialog-footer footer_div l_btn">
  188. <div class="footerbtn flex1">
  189. <div class="borderimg"><el-button @click="dialogsgdelect = false">取消</el-button></div>
  190. </div>
  191. <div class="footerbtn flex1">
  192. <div class="borderimg"><el-button @click="fmdel(); dialogsgdelect = false">
  193. 确定
  194. </el-button></div>
  195. </div>
  196. </div>
  197. </el-dialog>
  198. <!-- 选择管道 -->
  199. <pipelines
  200. ref="pipeline"
  201. :selectstr="fmObj.pname"
  202. @pipelineapi="pipelineapi"
  203. />
  204. </div>
  205. </el-aside>
  206. </div>
  207. </div>
  208. </template>
  209. <script setup>
  210. import { computed, ref, onMounted, reactive, toRef } from "vue"
  211. import { request, uploadFile } from "@/utils/request"
  212. import { ElMessage, ElButton, ElDialog, ElSelect } from "element-plus"
  213. import { message } from '@/utils/message';
  214. import zhCn from "element-plus/es/locale/lang/zh-cn"
  215. import icon from "@/assets/img/icon.png"
  216. import pipelines from "./PipeIine.vue"
  217. import { vtkmodel } from "@/control/vtkModel.js"
  218. import { timestampToTime } from "@/js/lindex.js"
  219. let tableHeight = ref(200)
  220. const formLabelWidth6 = ref(100);
  221. let pipeline = ref()
  222. const tableRowClassName = ({ row, rowIndex }) => {
  223. if (rowIndex % 2 != 0) {
  224. return "evenRow"
  225. }
  226. return "oddRow"
  227. }
  228. let currentrow=ref(false);
  229. let sendialogVisible=ref(false);
  230. let fmDShow =ref(false);
  231. let fmObjs=ref([]);
  232. let fmObj= ref({});
  233. let tishi = ref();
  234. const fmtabxz=(val)=>{
  235. fmObj.value = val;
  236. currentrow.value = true
  237. vtkmodel.delAll();
  238. vtkmodel.adddoor(val.pid,val.site);
  239. }
  240. const fmupdate=()=>{
  241. if (JSON.stringify(fmObj.value) == "{}") {
  242. message.error("你还没有选中修改的项目")
  243. }else{
  244. tishi.value = "修改";
  245. fmDShow.value = true;
  246. vtkmodel.delAll();
  247. vtkmodel.clearJgAddMode();
  248. //选中指定管道
  249. vtkmodel.selectByPipeId(fmObj.value.pid);
  250. vtkmodel.addpipdoor(fmObj.value.pid, fmObj.value.site);
  251. }
  252. }
  253. const fmadd=()=>{
  254. tishi.value = "添加";
  255. fmObj.value={};
  256. currentrow.value = false;
  257. fmDShow.value = true;
  258. vtkmodel.delAll();
  259. }
  260. const fmsave=()=>{
  261. const params = {
  262. transCode: "D50011",
  263. doorbaseid:fmObj.value.doorbaseid,
  264. doorcode:fmObj.value.doorcode,
  265. pid:fmObj.value.pid,
  266. doorname:fmObj.value.doorname,
  267. site:fmObj.value.site,
  268. dragcoe:parseFloat(fmObj.value.dragcoe),
  269. onoff:fmObj.value.onoff,
  270. siteremark: fmObj.value.siteremark,
  271. }
  272. request(params)
  273. .then((res) => {
  274. fmfind();
  275. fmDShow.value = false;
  276. fmObj.value={};
  277. message.success("风门"+ tishi.value + "成功");
  278. clearvtk();
  279. })
  280. .catch((err) => {
  281. message.error(err.returnMsg)
  282. })
  283. }
  284. let dialogsgdelect=ref(false);
  285. let fmdelname=ref("");
  286. const fmdeldialog=()=>{
  287. if (JSON.stringify(fmObj.value) == "{}") {
  288. message.error("你还没有选中删除的项目")
  289. }else{
  290. dialogsgdelect.value = true;
  291. fmdelname.value = fmObj.value.doorname;
  292. }
  293. }
  294. const fmdel=()=>{
  295. if (JSON.stringify(fmObj.value) == "{}") {
  296. message.error("你还没有选中删除的项目")
  297. }else{
  298. const params = {
  299. transCode: "D50012",
  300. doorbaseid:fmObj.value.doorbaseid,
  301. }
  302. request(params)
  303. .then((res) => {
  304. fmfind();
  305. message.success("风门删除成功")
  306. vtkmodel.delAll();
  307. })
  308. .catch((err) => {
  309. message.error(err.returnMsg)
  310. })
  311. }
  312. }
  313. const fmfind=()=>{
  314. const params = {
  315. transCode: "D50010"
  316. }
  317. request(params)
  318. .then((res) => {
  319. fmObjs.value = res.rows
  320. })
  321. .catch((err) => {
  322. message.error(err.returnMsg)
  323. })
  324. }
  325. onMounted(() => {
  326. fmfind()
  327. })
  328. // 选择巷道
  329. const fireclick = () => {
  330. pipeline.value.searchtaggd = ""
  331. pipeline.value.dialogVisiblenode = true
  332. pipeline.value.pipelinedata("")
  333. }
  334. //点击确定
  335. const pipelineapi = (row) => {
  336. fmObj.value.pid = row.id
  337. fmObj.value.pcode = row.code
  338. fmObj.value.pname = row.name
  339. vtkmodel.clearJgAddMode();
  340. //选中指定管道
  341. vtkmodel.selectByPipeId(row.id);
  342. vtkmodel.addpipdoor(row.id, 0.0);
  343. }
  344. const inputnumberChange = (val) => {
  345. console.log("fmObj.value",fmObj.value)
  346. vtkmodel.addpipdoor(fmObj.value.pid, val);
  347. }
  348. const clearvtk = () => {
  349. vtkmodel.clearpipdoor();
  350. vtkmodel.selectNoting();
  351. }
  352. defineExpose({ sendialogVisible })
  353. </script>