index.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834
  1. <template>
  2. <div class="siteManage-main basic-info-page">
  3. <el-form
  4. :model="ruleForm"
  5. :rules="rules"
  6. ref="formInfo"
  7. label-width="110px"
  8. class="demo-ruleForm"
  9. >
  10. <el-row style="min-width: 1100px">
  11. <el-col :span="8" :gutter="20">
  12. <div class="grid-content bg-purple">
  13. <el-form-item label="站点名称:" prop="siteName">
  14. <el-input v-model="ruleForm.siteName"></el-input>
  15. </el-form-item>
  16. <!-- <el-form-item label="站点类型:" prop="siteType">
  17. <el-input v-model="ruleForm.siteType"></el-input>
  18. </el-form-item> -->
  19. <el-form-item label="用户公司:" prop="userCompany">
  20. <el-input v-model="ruleForm.userCompany"></el-input>
  21. </el-form-item>
  22. <el-form-item
  23. label="投运时间:"
  24. prop="operationTime"
  25. style="margin-top: 0px"
  26. >
  27. <el-date-picker
  28. v-model="ruleForm.operationTime"
  29. style="width: 100%"
  30. type="date"
  31. placeholder="选择日期时间"
  32. @change="comPareTime(1)"
  33. ></el-date-picker>
  34. </el-form-item>
  35. <el-form-item label="服务截止:" prop="serviceDeadline">
  36. <el-date-picker
  37. v-model="ruleForm.serviceDeadline"
  38. type="date"
  39. placeholder="选择日期时间"
  40. @change="comPareTime(2)"
  41. ></el-date-picker>
  42. </el-form-item>
  43. <el-form-item label="装机容量:" prop="installedCapacity">
  44. <el-input v-model="ruleForm.installedCapacity"></el-input>
  45. </el-form-item>
  46. <el-form-item label="供电类型:" prop="powerSupplyType">
  47. <el-radio-group v-model="ruleForm.powerSupplyType">
  48. <el-radio label="1" value="1">单路</el-radio>
  49. <el-radio label="2" value="2">双路</el-radio>
  50. </el-radio-group>
  51. </el-form-item>
  52. <el-form-item label="电压等级:" prop="voltageLevel">
  53. <el-input v-model="ruleForm.voltageLevel"></el-input>
  54. </el-form-item>
  55. <el-form-item label="站点地址:" prop="siteAddress">
  56. <el-input v-model="ruleForm.siteAddress"></el-input>
  57. </el-form-item>
  58. <el-form-item label="所属区域:" prop="region">
  59. <el-radio-group v-model="ruleForm.region">
  60. <el-radio label="1">宝山</el-radio>
  61. <el-radio label="2">嘉定</el-radio>
  62. </el-radio-group>
  63. </el-form-item>
  64. <el-form-item label="所属台区:" prop="stationAreaId">
  65. <el-select v-model="ruleForm.stationAreaId" placeholder="请选择">
  66. <el-option
  67. v-for="(item, index) in platFormData"
  68. :key="index"
  69. :label="item.platformAreaName"
  70. :value="item.id"
  71. ></el-option>
  72. </el-select>
  73. </el-form-item>
  74. <el-form-item label="站点坐标:" prop="longitude">
  75. <el-input v-model="ruleForm.longitude" placeholder="请输入经度">
  76. <i
  77. :default-slot="suffix"
  78. class="el-input__icon el-icon-location-outline"
  79. ></i>
  80. </el-input>
  81. </el-form-item>
  82. <el-form-item label="" prop="latitude">
  83. <el-input v-model="ruleForm.latitude" placeholder="请输入纬度">
  84. <i
  85. :default-slot="suffix"
  86. class="el-input__icon el-icon-location-outline"
  87. ></i>
  88. </el-input>
  89. </el-form-item>
  90. </div>
  91. </el-col>
  92. <el-col :span="8" :gutter="20">
  93. <!-- <el-form-item label="监察:" prop="region">
  94. <el-select v-model="ruleForm.region" placeholder="请选择">
  95. <el-option label="监察1" value="1"></el-option>
  96. <el-option label="监察2" value="2"></el-option>
  97. </el-select>
  98. </el-form-item> -->
  99. <el-form-item label="折标准煤:" prop="demolitionStandardCoal1">
  100. <el-input v-model="ruleForm.demolitionStandardCoal1"></el-input>
  101. </el-form-item>
  102. <el-form-item label="折标准煤:" prop="demolitionStandardCoal">
  103. <el-radio-group v-model="ruleForm.demolitionStandardCoal">
  104. <el-radio label="1">电力(等价)</el-radio>
  105. <el-radio label="2">电力(当量)</el-radio>
  106. </el-radio-group>
  107. <div style="opacity: 0.45">0.000404吨标准煤/千瓦时</div>
  108. </el-form-item>
  109. <el-form-item label="流变变比" prop="rheologicalChange">
  110. <el-input v-model="ruleForm.rheologicalChange"></el-input>
  111. </el-form-item>
  112. <el-form-item label="所属线路" prop="routeId">
  113. <el-select v-model="ruleForm.routeId" placeholder="请选择">
  114. <el-option
  115. v-for="(item, index) in routeDropData"
  116. :key="index"
  117. :label="item.routeName"
  118. :value="item.id"
  119. ></el-option>
  120. </el-select>
  121. </el-form-item>
  122. <a class="goArchive">现场档案</a>
  123. <div class="blockTitle mt-60 mb-20">动态属性</div>
  124. <el-form-item label="故障动态:" prop="faultStatus">
  125. <el-select v-model="ruleForm.faultStatus" placeholder="请选择">
  126. <el-option
  127. v-for="(item, index) in dropData2"
  128. :key="index"
  129. :label="item.variableName"
  130. :value="item.variableCoding"
  131. ></el-option>
  132. </el-select>
  133. </el-form-item>
  134. <el-form-item label="实时负荷:" prop="realTimeLoad">
  135. <el-select v-model="ruleForm.realTimeLoad" placeholder="请选择">
  136. <el-option
  137. v-for="(item, index) in dropData"
  138. :key="index"
  139. :label="item.variableName"
  140. :value="item.variableCoding"
  141. ></el-option>
  142. </el-select>
  143. </el-form-item>
  144. <el-form-item label="总用电量:" prop="totalElectricity">
  145. <el-select v-model="ruleForm.totalElectricity" placeholder="请选择">
  146. <el-option
  147. v-for="(item, index) in dropData"
  148. :key="index"
  149. :label="item.variableName"
  150. :value="item.variableCoding"
  151. ></el-option>
  152. </el-select>
  153. </el-form-item>
  154. <el-form-item label="功率因数:" prop="powerFactor">
  155. <el-select v-model="ruleForm.powerFactor" placeholder="请选择">
  156. <el-option
  157. v-for="(item, index) in dropData"
  158. :key="index"
  159. :label="item.variableName"
  160. :value="item.variableCoding"
  161. ></el-option>
  162. </el-select>
  163. </el-form-item>
  164. </el-col>
  165. <el-col :span="8" :gutter="20">
  166. <div class="grid-content bg-purple">
  167. <div class="grid-content bg-purple-light">
  168. <!-- 站点照片start -->
  169. <div class="blockTitle mb-20">站点照片</div>
  170. <!-- <img v-if="ruleForm.value.sitePictureOne" :src="ruleForm.value.sitePictureOne" alt=""> -->
  171. <el-form-item label="选择文件:" prop="delivery">
  172. <el-upload
  173. :action="uploadUrl"
  174. :on-success="handleUpAvatar"
  175. :on-remove="handleRemove"
  176. :show-file-list="true"
  177. list-type="picture-card"
  178. :limit="3"
  179. :file-list="fileListImages"
  180. :on-preview="handlePictureCardPreview"
  181. :headers="{ accessToken: [accessToken] }"
  182. :on-exceed="overLength"
  183. >
  184. <i class="el-icon-plus"></i>
  185. </el-upload>
  186. <el-dialog v-model="dialogVisible" width="400px">
  187. <img style="width: 100%" :src="dialogImageUrl" alt="" />
  188. </el-dialog>
  189. </el-form-item>
  190. <!-- 站点照片end -->
  191. <el-form-item label="联系人:" prop="userName">
  192. <el-input v-model="ruleForm.userName"></el-input>
  193. </el-form-item>
  194. <el-form-item label="联系方式:" prop="phone">
  195. <el-input v-model="ruleForm.phone"></el-input>
  196. </el-form-item>
  197. <el-form-item label="联系人2:" prop="spareUserName">
  198. <el-input v-model="ruleForm.spareUserName"></el-input>
  199. </el-form-item>
  200. <el-form-item label="联系方式2:" prop="sparePhone">
  201. <el-input v-model="ruleForm.sparePhone"></el-input>
  202. </el-form-item>
  203. </div>
  204. <br />
  205. <el-form-item>
  206. <el-button
  207. type="primary"
  208. @click="submitForm('formInfo')"
  209. :disabled="isDisable||store.state.authorities.indexOf('修改')==-1"
  210. >
  211. 保存
  212. </el-button>
  213. <!-- <el-button @click="resetForm('formInfo')">取消</el-button> -->
  214. </el-form-item>
  215. </div>
  216. </el-col>
  217. </el-row>
  218. </el-form>
  219. </div>
  220. </template>
  221. <script>
  222. import { defineComponent, ref, onMounted, reactive, toRefs, watch } from 'vue'
  223. import * as api from '@/api/siteManage/basicInfo'
  224. import { ElMessage } from 'element-plus'
  225. import { useStore } from 'vuex'
  226. import { parseTime, validatorPhone,isNumber,isLatitude,isLongitude} from '@/utils'
  227. // import { isNumber } from '@/utils/validate.js'
  228. export default defineComponent({
  229. name: 'BasicInfo',
  230. props: {
  231. siteId: Number,
  232. siteName: String,
  233. groupingId: Number,
  234. activeName: String,
  235. },
  236. setup(props, context) {
  237. const fileImages = ref(process.env.VUE_APP_IMAGES)
  238. const store = useStore()
  239. const isDisable = ref(false)
  240. const routeDropData = ref([])
  241. const formInfo = ref(null)
  242. const formStatus = ref('')
  243. const dialogImageUrl = ref('')
  244. const dialogVisible = ref(false)
  245. const disabled = ref(false)
  246. const accessToken = ref(store.state.user.accessToken)
  247. const dropData = ref([])
  248. const fileListImages = ref([])
  249. const dropData2 = ref([])
  250. const platFormData = ref([])
  251. const ruleForm = ref({})
  252. const newArray = ref([])
  253. const dataSetRe = ref([])
  254. function handlePictureCardPreview(file) {
  255. dialogImageUrl.value = file.url
  256. dialogVisible.value = true
  257. }
  258. const dataSet = reactive({
  259. uploadUrl:
  260. process.env.VUE_APP_BASE_URL +
  261. '/patrolInspectionDevice/pictureUpload',
  262. // uploadUrl:'https://wx.ewoogi.com/USKYOF/USKYOF.php/Home/MonitoringReporting/setUpload',
  263. fileList: [],
  264. })
  265. //图片个数限制
  266. function overLength() {
  267. ElMessage({
  268. message: '最多只能上传3张图片!',
  269. type: 'warning',
  270. })
  271. }
  272. // function uniqueArr(arr) {
  273. // for (var i = 0; i < arr.length; i++) {
  274. // for (var j = i + 1; j < arr.length; j++) {
  275. // if (arr[i].name == arr[j].name) {
  276. // alert('不支持同名文件上传')
  277. // arr.splice(j, 1)
  278. // j--
  279. // }
  280. // }
  281. // }
  282. // return arr
  283. // }
  284. //上传成功的回调
  285. function handleUpAvatar(res) {
  286. // console.log(newArray.value.indexOf(res.data))
  287. // if(newArray.value.indexOf(res.data)!=-1){
  288. // alert('上传重复')
  289. // return
  290. // };
  291. dataSetRe.value = []
  292. dataSet.fileList = []
  293. newArray.value = []
  294. dataSet.fileList.push(res.data)
  295. dataSet.fileList.forEach(function (item) {
  296. dataSetRe.value.push({ url: fileImages.value + item })
  297. })
  298. if (fileListImages.value) {
  299. fileListImages.value = fileListImages.value.concat(dataSetRe.value)
  300. } else {
  301. fileListImages.value = dataSetRe.value
  302. }
  303. fileListImages.value.forEach(function (item) {
  304. newArray.value.push(item.url.substring(27))
  305. })
  306. }
  307. //删除照片
  308. function handleRemove(res) {
  309. newArray.value = []
  310. Array.prototype.indexOf = function (val) {
  311. for (var i = 0; i < this.length; i++) {
  312. if (this[i] == val) return i
  313. }
  314. return -1
  315. }
  316. Array.prototype.remove = function (val) {
  317. var index = this.indexOf(val)
  318. if (index > -1) {
  319. this.splice(index, 1)
  320. }
  321. }
  322. fileListImages.value = fileListImages.value.filter(
  323. (v) => v.url !== res.url
  324. )
  325. fileListImages.value.forEach(function (item) {
  326. newArray.value.push(item.url.substring(27))
  327. })
  328. }
  329. function resetForm() {
  330. formInfo.value.clearValidate()
  331. }
  332. function comPareTime(type){
  333. console.log(type)
  334. var start=ruleForm.value.operationTime;
  335. var end=ruleForm.value.serviceDeadline;
  336. console.log(new Date(start).getTime())
  337. console.log(new Date(end).getTime())
  338. if(new Date(start).getTime()>new Date(end).getTime()){
  339. if(type==1){
  340. ElMessage.warning('运投时间不能大于服务截止,请重新选择!')
  341. ruleForm.value.operationTime=''
  342. }else{
  343. ElMessage.warning('服务截止不能小于运投时间,请重新选择!')
  344. ruleForm.value.serviceDeadline=''
  345. }
  346. }
  347. }
  348. // 动态属性下拉请求
  349. function dynamicPropertiesDroplist(dataArea) {
  350. api
  351. .dynamicPropertiesDroplist({ dataArea: dataArea, siteId: props.siteId })
  352. .then((requset) => {
  353. if (requset.status === 'SUCCESS') {
  354. if (dataArea == 1) {
  355. //模拟量
  356. dropData.value = requset.data
  357. } else {
  358. //状态量
  359. dropData2.value = requset.data
  360. }
  361. } else {
  362. ElMessage.error(requset.msg)
  363. }
  364. })
  365. }
  366. //台区下拉请求
  367. function platformList() {
  368. api.platformList({ size: 0 }).then((requset) => {
  369. if (requset.status === 'SUCCESS') {
  370. platFormData.value = requset.data.records
  371. } else {
  372. ElMessage.error(requset.msg)
  373. }
  374. })
  375. }
  376. //所属线路下拉
  377. function routeDroplist() {
  378. api.routeDroplist().then((requset) => {
  379. if (requset.status === 'SUCCESS') {
  380. routeDropData.value = requset.data
  381. } else {
  382. ElMessage.error(requset.msg)
  383. }
  384. })
  385. }
  386. //站点详情请求
  387. function getSite() {
  388. fileListImages.value = []
  389. api.getSite({ id: props.siteId }).then((requset) => {
  390. if (requset.status === 'SUCCESS') {
  391. // console.log(requset.data[0])
  392. ruleForm.value = requset.data[0]
  393. ruleForm.value.region
  394. ? (ruleForm.value.region = requset.data[0].region.toString())
  395. : ''
  396. ruleForm.value.powerSupplyType = ruleForm.value.powerSupplyType
  397. ? requset.data[0].powerSupplyType.toString()
  398. : ''
  399. ruleForm.value.demolitionStandardCoal
  400. ? (ruleForm.value.demolitionStandardCoal =
  401. requset.data[0].demolitionStandardCoal.toString())
  402. : ''
  403. if (requset.data[0].sitePictureOne) {
  404. fileListImages.value.push({
  405. url: fileImages.value + requset.data[0].sitePictureOne,
  406. })
  407. }
  408. if (requset.data[0].sitePictureTwo) {
  409. fileListImages.value.push({
  410. url: fileImages.value + requset.data[0].sitePictureTwo,
  411. })
  412. }
  413. if (requset.data[0].sitePictureThree) {
  414. fileListImages.value.push({
  415. url: fileImages.value + requset.data[0].sitePictureThree,
  416. })
  417. }
  418. if (store.state.basicInfoSiteName && props.siteId) {
  419. ruleForm.value.siteName = store.state.basicInfoSiteName //站点名称重新赋值
  420. }
  421. } else {
  422. ElMessage.error(requset.msg)
  423. }
  424. })
  425. }
  426. //表单提交
  427. function submitForm() {
  428. ruleForm.value.sitePictureOne = newArray.value[0] ? newArray.value[0] : ''
  429. ruleForm.value.sitePictureTwo = newArray.value[1] ? newArray.value[1] : ''
  430. ruleForm.value.sitePictureThree = newArray.value[2]
  431. ? newArray.value[2]
  432. : ''
  433. ruleForm.value.operationTime
  434. ? (ruleForm.value.operationTime = parseTime(
  435. ruleForm.value.operationTime
  436. ).substring(0, 10))
  437. : ''
  438. ruleForm.value.serviceDeadline
  439. ? (ruleForm.value.serviceDeadline = parseTime(
  440. ruleForm.value.serviceDeadline
  441. ).substring(0, 10))
  442. : ''
  443. formInfo.value.validate((valid) => {
  444. // alert(formStatus.value)
  445. if (valid) {
  446. isDisable.value = true
  447. store
  448. // store.commit('TimeAll_function')
  449. // const time = store.state.Time_Data
  450. // ruleForm.value.operationTime = time[0]
  451. // ruleForm.value.serviceDeadline = time[1]
  452. var params = {
  453. site: {
  454. id: props.siteId,
  455. siteName: ruleForm.value.siteName,
  456. installedCapacity: ruleForm.value.installedCapacity,
  457. siteAddress: ruleForm.value.siteAddress,
  458. region: ruleForm.value.region,
  459. stationAreaId: ruleForm.value.stationAreaId,
  460. longitude: ruleForm.value.longitude,
  461. latitude: ruleForm.value.latitude,
  462. userName: ruleForm.value.userName,
  463. phone: ruleForm.value.phone,
  464. spareUserName: ruleForm.value.spareUserName,
  465. sparePhone: ruleForm.value.sparePhone,
  466. rheologicalChange: ruleForm.value.rheologicalChange,
  467. routeId: ruleForm.value.routeId,
  468. groupingId: props.groupingId,
  469. },
  470. siteDynamicProperties: {
  471. id: ruleForm.value.siteDynamicPropertiesId,
  472. siteType: ruleForm.value.siteType,
  473. userCompany: ruleForm.value.userCompany,
  474. operationTime: ruleForm.value.operationTime,
  475. serviceDeadline: ruleForm.value.serviceDeadline,
  476. powerSupplyType: ruleForm.value.powerSupplyType,
  477. voltageLevel: ruleForm.value.voltageLevel,
  478. demolitionStandardCoal: ruleForm.value.demolitionStandardCoal,
  479. demolitionStandardCoal1: ruleForm.value.demolitionStandardCoal1,
  480. faultStatus: ruleForm.value.faultStatus,
  481. realTimeLoad: ruleForm.value.realTimeLoad,
  482. totalElectricity: ruleForm.value.totalElectricity,
  483. powerFactor: ruleForm.value.powerFactor,
  484. sitePictureOne: ruleForm.value.sitePictureOne,
  485. sitePictureTwo: ruleForm.value.sitePictureTwo,
  486. sitePictureThree: ruleForm.value.sitePictureThree,
  487. },
  488. id: formStatus.value == '修改' ? 1 : 0,
  489. }
  490. if (formStatus.value == '新增') {
  491. params.site.groupingId = props.groupingId
  492. }
  493. api.siteAdd(params).then((requset) => {
  494. if (requset.status === 'SUCCESS') {
  495. ElMessage.success({
  496. message: '保存成功',
  497. type: 'success',
  498. })
  499. store.state.basicInfoSiteName = '' //新增成功后存储的站点名称设为空
  500. setTimeout(() => {
  501. isDisable.value = false //点击一次时隔2秒后才能再次点击
  502. }, 5000)
  503. formStatus.value = '修改'
  504. context.emit('func',params.id)
  505. } else {
  506. ElMessage.error(requset.msg)
  507. }
  508. })
  509. } else {
  510. console.log('error submit!!')
  511. return false
  512. }
  513. })
  514. }
  515. //监听变化
  516. watch(
  517. () => props.siteId,
  518. (newVal) => {
  519. isDisable.value=false
  520. newVal
  521. if (props.activeName == 'first') {
  522. dataSet.fileList = []
  523. newArray.value = []
  524. resetForm()
  525. if(props.siteId ){
  526. getSite()
  527. }
  528. dynamicPropertiesDroplist(2)
  529. dynamicPropertiesDroplist(1)
  530. }
  531. }
  532. )
  533. watch(
  534. () => props.activeName,
  535. (newVal) => {
  536. if (newVal == 'first') {
  537. dataSet.fileList = []
  538. newArray.value = []
  539. resetForm()
  540. if(props.siteId ){
  541. getSite()
  542. }
  543. dynamicPropertiesDroplist(2)
  544. dynamicPropertiesDroplist(1)
  545. }
  546. }
  547. )
  548. watch(
  549. () => store.state.basicInfoSiteName,
  550. (newVal) => {
  551. if (newVal == '') {
  552. formStatus.value = '修改'
  553. resetForm()
  554. // getSite()
  555. // dynamicPropertiesDroplist(2)
  556. // dynamicPropertiesDroplist(1)
  557. }
  558. }
  559. )
  560. onMounted(() => {
  561. if (store.state.basicInfoSiteName && !props.siteId) {
  562. // alert('新增站点不带模板')
  563. formStatus.value = '新增'
  564. }
  565. if (store.state.basicInfoSiteName && props.siteId) {
  566. // alert('新增站点带模板')
  567. formStatus.value = '新增'
  568. getSite()
  569. }
  570. if (store.state.basicInfoSiteName == '') {
  571. // alert('修改')
  572. formStatus.value = '修改'
  573. getSite()
  574. }
  575. if (props.activeName == 'first') {
  576. if (store.state.basicInfoSiteName) {
  577. ruleForm.value.siteName = store.state.basicInfoSiteName
  578. }
  579. platformList()
  580. routeDroplist()
  581. dynamicPropertiesDroplist(2)
  582. dynamicPropertiesDroplist(1)
  583. }
  584. })
  585. return {
  586. ...toRefs(dataSet),
  587. formInfo,
  588. dialogImageUrl,
  589. dialogVisible,
  590. disabled,
  591. dropData,
  592. dropData2,
  593. platFormData,
  594. fileListImages,
  595. overLength,
  596. comPareTime,
  597. accessToken,
  598. ruleForm,
  599. resetForm,
  600. rules: {
  601. siteName: [
  602. { required: true, message: '请输入站点名称', trigger: 'blur' },
  603. {
  604. min: 1,
  605. max: 30,
  606. message: '长度在 1 到 30 个字符',
  607. trigger: 'blur',
  608. },
  609. ],
  610. siteType: [
  611. { required: true, message: '请输入站点类型', trigger: 'blur' },
  612. { pattern: /^[1-9][\d]*$/ , message: '请输入正整数' }
  613. ],
  614. userCompany: [
  615. { required: true, message: '请输入用户公司', trigger: 'blur' },
  616. {
  617. min: 1,
  618. max: 11,
  619. message: '长度在 1 到 11 个字符',
  620. trigger: 'blur',
  621. },
  622. ],
  623. operationTime: [
  624. { required: true, message: '请选择运投时间', trigger: 'change' },
  625. ],
  626. serviceDeadline: [
  627. { required: true, message: '请选择服务截止时间', trigger: 'change' },
  628. ],
  629. installedCapacity: [
  630. { required: true, message: '请输入装机容量', trigger: 'blur' },
  631. {
  632. validator: isNumber,
  633. message: '请输入数字',
  634. trigger: 'blur',
  635. },
  636. ],
  637. voltageLevel: [
  638. { required: true, message: '请输入电压等级', trigger: 'blur' },
  639. {
  640. validator: isNumber,
  641. message: '请输入数字',
  642. trigger: 'blur',
  643. },
  644. ],
  645. siteAddress: [
  646. { required: true, message: '请输入站点地址', trigger: 'blur' },
  647. {
  648. min: 1,
  649. max: 20,
  650. message: '长度在 1 到 20 个字符',
  651. trigger: 'blur',
  652. },
  653. ],
  654. stationAreaId: [
  655. { required: true, message: '请选择所属台区', trigger: 'change' },
  656. ],
  657. longitude: [
  658. { required: true, message: '请输入经度', trigger: 'blur' },
  659. {
  660. validator: isLongitude,
  661. message: '请输入正确经度(-180~180,且1到5位小数)',
  662. trigger: 'blur',
  663. },
  664. ],
  665. latitude: [{ required: true, message: '请输入纬度', trigger: 'blur' },
  666. {
  667. validator: isLatitude,
  668. message: '请输入正确纬度(-90~90,且1到5位小数)',
  669. trigger: 'blur',
  670. },],
  671. demolitionStandardCoal1: [
  672. { required: true, message: '请输入折标准煤', trigger: 'blur' },
  673. { pattern:/^\d+(\.\d{1,7})?$/ , message: '请输入数字,可保留7位小数' }
  674. ],
  675. routeId: [
  676. { required: true, message: '选择所属线路', trigger: 'change' },
  677. ],
  678. rheologicalChange: [
  679. { required: true, message: '请输入流变变比', trigger: 'blur' },
  680. {
  681. validator: isNumber,
  682. message: '请输入数字',
  683. trigger: 'blur',
  684. },
  685. ],
  686. userName: [
  687. { required: true, message: '请输入联系人1', trigger: 'blur' },
  688. {
  689. min: 1,
  690. max: 11,
  691. message: '长度在 1 到 11 个字符',
  692. trigger: 'blur',
  693. },
  694. ],
  695. phone: [
  696. {
  697. required: true,
  698. message: '请输入联系方式1',
  699. trigger: 'blur',
  700. },
  701. {
  702. validator: validatorPhone,
  703. message: '输入的电话号码不正确',
  704. trigger: 'blur',
  705. },
  706. ],
  707. spareUserName: [
  708. { required: true, message: '请输入联系人2', trigger: 'blur' },
  709. {
  710. min: 1,
  711. max: 11,
  712. message: '长度在 1 到 11 个字符',
  713. trigger: 'blur',
  714. },
  715. ],
  716. sparePhone: [
  717. { required: true, message: '请输入联系方式2', trigger: 'blur' },
  718. {
  719. validator: validatorPhone,
  720. message: '输入的电话号码不正确',
  721. trigger: 'blur',
  722. },
  723. ],
  724. },
  725. handleRemove,
  726. handlePictureCardPreview,
  727. submitForm,
  728. routeDropData,
  729. handleUpAvatar,
  730. fileImages,
  731. getSite,
  732. isDisable,
  733. // uniqueArr,
  734. newArray,
  735. dataSetRe,
  736. store
  737. }
  738. },
  739. })
  740. </script>
  741. <style lang="scss">
  742. .basic-info-page {
  743. .el-date-editor.el-input,
  744. .el-date-editor.el-input__inner {
  745. width: 100% !important;
  746. }
  747. // .el-icon-zoom-in {
  748. // display: none;
  749. // }
  750. // .el-upload-list--picture-card .el-upload-list__item-actions span + span {
  751. // margin-left: 0;
  752. // }
  753. }
  754. </style>