index.vue 26 KB

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