WellParamEdit.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375
  1. <template>
  2. <div class="edit-page">
  3. <el-form :model="formModel" ref="formcomp" label-position="left" label-width="auto" :inline="false" :rules="rules" :inline-message="false">
  4. <el-row :gutter="50">
  5. <el-col :sm="24" :md="12">
  6. <el-form-item label="参数名" prop="paramName">
  7. <el-input v-model="formModel.paramName" autocomplete="off" placeholder="请输入参数名" clearable/>
  8. </el-form-item>
  9. </el-col>
  10. <el-col :sm="24" :md="12">
  11. <el-form-item label="参数编码" prop="paramCode" >
  12. <el-select v-model="formModel.paramCode" placeholder="选择参数编码" style="width:100%" @change="changeParamHandle">
  13. <el-option
  14. v-for="item in paramCodeOpts"
  15. :key="item.paramCode"
  16. :label="item.paramName+'【'+item.paramCode+'】'"
  17. :value="item.paramCode"
  18. />
  19. </el-select>
  20. </el-form-item>
  21. </el-col>
  22. <el-col :sm="24" :md="12">
  23. <el-form-item label="显示单位" prop="displayUnit">
  24. <el-select v-model="formModel.displayUnit" placeholder="请选择显示单位" style="width:100%">
  25. <el-option
  26. v-for="item in unitOpts"
  27. :key="item.unitSymbol"
  28. :label="item.unitSymbol"
  29. :value="item.unitSymbol"
  30. />
  31. </el-select>
  32. </el-form-item>
  33. </el-col>
  34. <el-col :sm="24" :md="12">
  35. <el-form-item label="显示格式" >
  36. <el-input v-model="formModel.displayFormat" autocomplete="off" placeholder="请输入显示格式" clearable/>
  37. </el-form-item>
  38. </el-col>
  39. <el-col :sm="24" :md="12">
  40. <el-form-item label="入库单位" prop="insertUnit">
  41. <el-select v-model="formModel.insertUnit" placeholder="请选择入库单位" style="width:100%">
  42. <el-option
  43. v-for="item in unitOpts"
  44. :key="item.unitSymbol"
  45. :label="item.unitSymbol"
  46. :value="item.unitSymbol"
  47. />
  48. </el-select>
  49. </el-form-item>
  50. </el-col>
  51. <el-col :sm="24" :md="12">
  52. <el-form-item label="采集单位" prop="gatherUnit">
  53. <el-select v-model="formModel.gatherUnit" placeholder="请选择采集单位" style="width:100%">
  54. <el-option
  55. v-for="item in unitOpts"
  56. :key="item.unitSymbol"
  57. :label="item.unitSymbol"
  58. :value="item.unitSymbol"
  59. />
  60. </el-select>
  61. </el-form-item>
  62. </el-col>
  63. <el-col :sm="24" :md="12">
  64. <el-form-item label="工程最大">
  65. <el-input-number v-model="formModel.maxVal" autocomplete="off" placeholder="选填" :controls="false" style="width:100%"/>
  66. </el-form-item>
  67. </el-col>
  68. <el-col :sm="24" :md="12">
  69. <el-form-item label="标定系数A">
  70. <el-input-number v-model="formModel.calibrateA" autocomplete="off" placeholder="请输入标定系数A" :controls="false" style="width:100%" />
  71. </el-form-item>
  72. </el-col>
  73. <el-col :sm="24" :md="12">
  74. <el-form-item label="工程最小">
  75. <el-input-number v-model="formModel.minVal" autocomplete="off" placeholder="选填" :controls="false" style="width:100%" />
  76. </el-form-item>
  77. </el-col>
  78. <el-col :sm="24" :md="12">
  79. <el-form-item label="标定系数B">
  80. <el-input-number v-model="formModel.calibrateB" autocomplete="off" placeholder="请输入标定系数B" :controls="false" style="width:100%" />
  81. </el-form-item>
  82. </el-col>
  83. <el-col :sm="24" :md="12">
  84. <el-form-item label="参考值">
  85. <el-input-number v-model="formModel.referData" autocomplete="off" placeholder="选填" :controls="false" style="width:100%"/>
  86. </el-form-item>
  87. </el-col>
  88. <el-col :sm="24" :md="12">
  89. <el-form-item label="标定系数C">
  90. <el-input-number v-model="formModel.calibrateC" autocomplete="off" placeholder="请输入标定系数C" :controls="false" style="width:100%" />
  91. </el-form-item>
  92. </el-col>
  93. <el-col :sm="24" :md="12">
  94. <el-form-item label="异常值调节模式" >
  95. <el-select v-model="formModel.adjustMode" placeholder="选填" style="width:100%">
  96. <el-option label="固定为参考值" value="usFixedVal"></el-option>
  97. <el-option label="为0取前或停井" value="zeroUsPreElsStop"></el-option>
  98. <el-option label="为0取前或连续3次" value="zeroUsPreElsSerial3"></el-option>
  99. <el-option label="为0取前或参考插值" value="zeroUsPreOrRandRef"></el-option>
  100. </el-select>
  101. </el-form-item>
  102. </el-col>
  103. <el-col :sm="24" :md="12">
  104. <el-form-item label="显示序号">
  105. <el-input-number v-model="formModel.displayNum" :min="1" :max="10000" style="width:100%"/>
  106. </el-form-item>
  107. </el-col>
  108. </el-row>
  109. <el-row :gutter="50" v-show="showParam2">
  110. <el-col :sm="24" :md="24">
  111. <el-divider content-position="left"><label style="font-weight: bold;">位移参数配置(多值参数才需要)</label></el-divider>
  112. </el-col>
  113. <el-col :sm="24" :md="12">
  114. <el-form-item label="显示单位">
  115. <el-select v-model="formModel.displayUnit2" placeholder="请选择显示单位" style="width:100%">
  116. <el-option
  117. v-for="item in unitOpts"
  118. :key="item.unitSymbol"
  119. :label="item.unitSymbol"
  120. :value="item.unitSymbol"
  121. />
  122. </el-select>
  123. </el-form-item>
  124. </el-col>
  125. <el-col :sm="24" :md="12">
  126. <el-form-item label="显示格式" >
  127. <el-input v-model="formModel.displayFormat2" autocomplete="off" placeholder="请输入显示格式" clearable/>
  128. </el-form-item>
  129. </el-col>
  130. <el-col :sm="24" :md="12">
  131. <el-form-item label="入库单位">
  132. <el-select v-model="formModel.insertUnit2" placeholder="请选择入库单位" style="width:100%">
  133. <el-option
  134. v-for="item in unitOpts"
  135. :key="item.unitSymbol"
  136. :label="item.unitSymbol"
  137. :value="item.unitSymbol"
  138. />
  139. </el-select>
  140. </el-form-item>
  141. </el-col>
  142. <el-col :sm="24" :md="12">
  143. <el-form-item label="采集单位">
  144. <el-select v-model="formModel.gatherUnit2" placeholder="请选择采集单位" style="width:100%">
  145. <el-option
  146. v-for="item in unitOpts"
  147. :key="item.unitSymbol"
  148. :label="item.unitSymbol"
  149. :value="item.unitSymbol"
  150. />
  151. </el-select>
  152. </el-form-item>
  153. </el-col>
  154. <el-col :sm="24" :md="12">
  155. <el-form-item label="标定系数A">
  156. <el-input-number v-model="formModel.calibrateA2" autocomplete="off" placeholder="请输入标定系数A" :controls="false" style="width:100%" />
  157. </el-form-item>
  158. </el-col>
  159. <el-col :sm="24" :md="12">
  160. <el-form-item label="标定系数B">
  161. <el-input-number v-model="formModel.calibrateB2" autocomplete="off" placeholder="请输入标定系数B" :controls="false" style="width:100%" />
  162. </el-form-item>
  163. </el-col>
  164. <el-col :sm="24" :md="12">
  165. <el-form-item label="标定系数C">
  166. <el-input-number v-model="formModel.calibrateC2" autocomplete="off" placeholder="请输入标定系数C" :controls="false" style="width:100%" />
  167. </el-form-item>
  168. </el-col>
  169. <el-col :sm="24" :md="12">
  170. <el-form-item label="序列名">
  171. <el-input v-model="formModel.serialName" autocomplete="off" placeholder="请输入序列名" clearable />
  172. </el-form-item>
  173. </el-col>
  174. <el-col :sm="24" :md="12">
  175. <el-form-item label="序列名(位移)">
  176. <el-input v-model="formModel.serialName2" autocomplete="off" placeholder="请输入序列名" clearable />
  177. </el-form-item>
  178. </el-col>
  179. </el-row>
  180. </el-form>
  181. </div>
  182. </template>
  183. <script setup>
  184. import {reactive,ref,toRaw,onMounted} from 'vue'
  185. import wellParamAPI from "../../api/wellParam.js"
  186. import paramMgrAPI from "../../api/paramMgr.js"
  187. import {ElMessageBox,ElMessage} from 'element-plus'
  188. const formModel = reactive({
  189. paramId:null,
  190. wellId:null,
  191. paramName: null,
  192. paramCode:null,
  193. displayUnit:null,
  194. displayFormat:null,
  195. insertUnit:null,
  196. gatherUnit:null,
  197. calibrateA:null,
  198. calibrateB:null,
  199. calibrateC:null,
  200. displayNum:1,
  201. displayUnit2:null,
  202. displayFormat2:null,
  203. insertUnit2:null,
  204. gatherUnit2:null,
  205. calibrateA2:null,
  206. calibrateB2:null,
  207. calibrateC2:null,
  208. serialName:null,
  209. serialName2:null,
  210. maxVal:null,
  211. minVal:null,
  212. referData:null,
  213. adjustMode:null
  214. })
  215. const showParam2=ref(false)
  216. const props=defineProps({
  217. record:Object
  218. })
  219. const formcomp = ref(null);
  220. const rules =reactive({
  221. paramName:[
  222. {required:true,message:'参数名还未填写',trigger:'blur'},
  223. { min: 1, max: 20, message: '参数名长度应该为1-20', trigger: 'blur' }
  224. ],
  225. paramCode:[
  226. {required:true,message:'参数编码还未选择',trigger:'blur'},
  227. ],
  228. displayUnit:[
  229. {required:true,message:'显示单位还未填写',trigger:'blur'}
  230. ],
  231. insertUnit:[
  232. {required:true,message:'入库单位还未填写',trigger:'blur'}
  233. ],
  234. gatherUnit:[
  235. {required:true,message:'采集单位还未填写',trigger:'blur'}
  236. ],
  237. })
  238. onMounted(async ()=>{
  239. try{
  240. await initForm()
  241. if(props.record){
  242. let {paramId,wellId,paramCode,paramName,displayUnit,displayFormat,insertUnit,gatherUnit,calibrateA,calibrateB,calibrateC,displayNum,maxVal,minVal,referData,adjustMode}=props.record
  243. Object.assign(formModel,{paramId,wellId,paramCode,paramName,displayUnit,displayFormat,insertUnit,gatherUnit,calibrateA,calibrateB,calibrateC,displayNum,maxVal,minVal,referData,adjustMode})
  244. let {displayUnit2,insertUnit2,gatherUnit2,displayFormat2,calibrateA2,calibrateB2,calibrateC2,serialName,serialName2}=props.record
  245. Object.assign(formModel,{displayUnit2,insertUnit2,gatherUnit2,displayFormat2,calibrateA2,calibrateB2,calibrateC2,serialName,serialName2})
  246. changeParamHandle(paramCode)
  247. }
  248. }
  249. catch(err){
  250. console.log('init form error')
  251. }
  252. })
  253. const changeParamHandle=(selVal)=>{
  254. showParam2.value=selVal.indexOf('diagram_')>=0
  255. }
  256. let initFormDone=false
  257. const paramCodeOpts=ref([])
  258. const unitOpts=ref([])
  259. const initForm=async ()=>{
  260. try{
  261. let resp=await paramMgrAPI.loadAll()
  262. if(resp.code==0){
  263. paramCodeOpts.value=resp.data
  264. }
  265. resp=await wellParamAPI.loadUnitOpts()
  266. if(resp.code==0){
  267. unitOpts.value=resp.data
  268. }
  269. initFormDone=true
  270. return Promise.resolve('ok')
  271. }
  272. catch(err){
  273. return Promise.reject('err')
  274. }
  275. }
  276. const submitForm=async ()=>{
  277. let validateRst=false
  278. try{
  279. validateRst = await formcomp.value.validate()
  280. }
  281. catch(err){
  282. ElMessage.error("请按要求填写数据");
  283. console.log(err)
  284. return Promise.reject('invalidate')
  285. }
  286. if(validateRst){ //验证通过,准备提交数据
  287. try{
  288. let resp =await wellParamAPI.save(toRaw(formModel))
  289. if(resp.code!=0){
  290. ElMessage.error(resp.msg)
  291. return Promise.reject(resp.msg)
  292. }
  293. ElMessage.success('操作成功')
  294. return Promise.resolve('ok')
  295. }
  296. catch (e) {
  297. ElMessage.error(e||'操作失败')
  298. return Promise.reject('操作失败')
  299. }
  300. }
  301. }
  302. defineExpose({
  303. submitForm
  304. })
  305. </script>
  306. <style scoped>
  307. .el-col{
  308. height:60px;
  309. }
  310. </style>