streetXfsssbpczl.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490
  1. <template>
  2. <view class="uni-container">
  3. <view class="example container" :style="'height: ' + (screenHeight - wheight - 75) + 'px'">
  4. <u--form ref="customForm" :model="formData" labelPosition="left" labelWidth="100%" labelAlign="left">
  5. <view class="julis-bottom">
  6. <uni-card class="xf-title">
  7. <view class="main-showdow-streetXf">
  8. 市政消火栓 (个)
  9. </view>
  10. <uni-row class="demo-uni-row">
  11. <uni-col :span="11" style="margin-right:40rpx">
  12. <u-form-item label="原有:" prop="szxhsXz">
  13. <u-input v-model="formData.szxhsXz" :disabled="isview" />
  14. </u-form-item>
  15. </uni-col>
  16. <uni-col :span="11">
  17. <u-form-item label="新增:" prop="szxhsYy">
  18. <u-input v-model="formData.szxhsYy" :disabled="isview" />
  19. </u-form-item>
  20. </uni-col>
  21. </uni-row>
  22. </uni-card>
  23. <uni-card class="xf-title">
  24. <view class="main-showdow-streetXf">
  25. 建筑室外消火栓 (个)
  26. </view>
  27. <uni-row class="demo-uni-row">
  28. <uni-col :span="11" style="margin-right:40rpx">
  29. <u-form-item label="新增:" prop="jzswxhsXz">
  30. <u-input v-model="formData.jzswxhsXz" :disabled="isview" />
  31. </u-form-item>
  32. </uni-col>
  33. <uni-col :span="11">
  34. <u-form-item label="维护:" prop="jzswxhsYy">
  35. <u-input v-model="formData.jzswxhsYy" :disabled="isview" />
  36. </u-form-item>
  37. </uni-col>
  38. </uni-row>
  39. </uni-card>
  40. <uni-card class="xf-title">
  41. <view class="main-showdow-streetXf">
  42. 消防水池 (个)
  43. </view>
  44. <uni-row class="demo-uni-row">
  45. <uni-col :span="11" style="margin-right:40rpx">
  46. <u-form-item label="原有:" prop="xfscYy">
  47. <u-input v-model="formData.xfscYy" :disabled="isview" />
  48. </u-form-item>
  49. </uni-col>
  50. <uni-col :span="11">
  51. <u-form-item label="新增:" prop="xfscXz">
  52. <u-input v-model="formData.xfscXz" :disabled="isview" />
  53. </u-form-item>
  54. </uni-col>
  55. </uni-row>
  56. </uni-card>
  57. <uni-card class="xf-title">
  58. <view class="main-showdow-streetXf">
  59. 灭火器 (个)
  60. </view>
  61. <uni-row class="demo-uni-row">
  62. <uni-col :span="10" style="margin-right:40rpx">
  63. <u-form-item label="新增:" prop="mhqYy">
  64. <u-input v-model="formData.mhqYy" :disabled="isview" />
  65. </u-form-item>
  66. </uni-col>
  67. <uni-col :span="12">
  68. <u-form-item label="更换维护:" prop="mhqGhwh">
  69. <u-input v-model="formData.mhqGhwh" :disabled="isview" />
  70. </u-form-item>
  71. </uni-col>
  72. </uni-row>
  73. </uni-card>
  74. <uni-card class="xf-title">
  75. <view class="main-showdow-streetXf">
  76. 应急照明灯具 (个)
  77. </view>
  78. <uni-row class="demo-uni-row">
  79. <uni-col :span="10" style="margin-right:40rpx">
  80. <u-form-item label="新增:" prop="yjzmdYy">
  81. <u-input v-model="formData.yjzmdYy" :disabled="isview" />
  82. </u-form-item>
  83. </uni-col>
  84. <uni-col :span="12">
  85. <u-form-item label="更换维护:" prop="yjzmdGhwh">
  86. <u-input v-model="formData.yjzmdGhwh" :disabled="isview" />
  87. </u-form-item>
  88. </uni-col>
  89. </uni-row>
  90. </uni-card>
  91. <uni-card class="xf-title">
  92. <view class="main-showdow-streetXf">
  93. 疏散指示标志 (个)
  94. </view>
  95. <uni-row class="demo-uni-row">
  96. <uni-col :span="10" style="margin-right:40rpx">
  97. <u-form-item label="新增:" prop="sszsbzYy">
  98. <u-input v-model="formData.sszsbzYy" :disabled="isview" />
  99. </u-form-item>
  100. </uni-col>
  101. <uni-col :span="12">
  102. <u-form-item label="更换维护:" prop="sszsbzGhwh">
  103. <u-input v-model="formData.sszsbzGhwh" :disabled="isview" />
  104. </u-form-item>
  105. </uni-col>
  106. </uni-row>
  107. </uni-card>
  108. <uni-card class="xf-title">
  109. <view class="main-showdow-streetXf">
  110. 微型消防站 (个)
  111. </view>
  112. <uni-row class="demo-uni-row">
  113. <uni-col :span="11" style="margin-right:40rpx">
  114. <u-form-item label="原有:" prop="wxxfzYy">
  115. <u-input v-model="formData.wxxfzYy" :disabled="isview" />
  116. </u-form-item>
  117. </uni-col>
  118. <uni-col :span="11">
  119. <u-form-item label="新增:" prop="wxxfzXz">
  120. <u-input v-model="formData.wxxfzXz" :disabled="isview" />
  121. </u-form-item>
  122. </uni-col>
  123. </uni-row>
  124. </uni-card>
  125. <uni-card class="xf-title">
  126. <view class="main-showdow-streetXf">
  127. 消防车辆 (台)
  128. </view>
  129. <uni-row class="demo-uni-row">
  130. <uni-col :span="10" style="margin-right:40rpx">
  131. <u-form-item label="原有:" prop="xfclYy">
  132. <u-input v-model="formData.xfclYy" :disabled="isview" />
  133. </u-form-item>
  134. </uni-col>
  135. <uni-col :span="12">
  136. <u-form-item label="新增:" prop="xfclXz">
  137. <u-input v-model="formData.xfclXz" :disabled="isview" />
  138. </u-form-item>
  139. </uni-col>
  140. </uni-row>
  141. </uni-card>
  142. <uni-card class="xf-title">
  143. <view class="main-showdow-streetXf">
  144. 自动灭火设施(自动报警、自动喷淋、防排烟等) (套)
  145. </view>
  146. <uni-row class="demo-uni-row">
  147. <uni-col :span="10" style="margin-right:40rpx">
  148. <u-form-item label="新增:" prop="zdmhssYy">
  149. <u-input v-model="formData.zdmhssYy" :disabled="isview" />
  150. </u-form-item>
  151. </uni-col>
  152. <uni-col :span="12">
  153. <u-form-item label="更换维护:" prop="zdmhssGhwh">
  154. <u-input v-model="formData.zdmhssGhwh" :disabled="isview" />
  155. </u-form-item>
  156. </uni-col>
  157. </uni-row>
  158. </uni-card>
  159. <uni-card class="xf-title">
  160. <view class="main-showdow-streetXf">
  161. 其他(如手抬消防泵等)
  162. </view>
  163. <uni-row class="demo-uni-row">
  164. <uni-col :span="10" style="margin-right:40rpx">
  165. <u-form-item label="新增:" prop="qtXz">
  166. <u-input v-model="formData.qtXz" :disabled="isview" />
  167. </u-form-item>
  168. </uni-col>
  169. </uni-row>
  170. </uni-card>
  171. <picker mode="date" :value="dateTime" @change="bindDateChange" :disabled="isview">
  172. <view class="datatime-street">
  173. <u-form-item label="填报日期" prop="reporttime" :required="true">
  174. <u-input v-model="formData.reporttime" placeholder="选择日期" class="add-date"
  175. :disabled="isview" />
  176. </u-form-item>
  177. </view>
  178. </picker>
  179. <u-form-item label="填报描述:" prop="descr" class="beizhu">
  180. <u-textarea v-model="formData.descr" placeholder="请输入内容" :disabled="isview" :maxlength="500"
  181. height="150">
  182. </u-textarea>
  183. </u-form-item>
  184. <view>
  185. <view class="paizhao" style="color:#383838 !important">现场照片</view>
  186. <view class="paizhao-posit" v-if="!isview">
  187. <image :src="photograph" @click="photoUpload" class="tiantupian-photo"></image>
  188. <view class="">
  189. 拍照上传
  190. </view>
  191. <uni-load-more v-show="loading" status="loading" :content-text="contentText" />
  192. </view>
  193. </view>
  194. <view v-if="formData.streetRepPicsDOList" class="show-photo">
  195. <view v-for="(items,indexs) in formData.streetRepPicsDOList" :key="indexs">
  196. <view class="show-photo-main">
  197. <view class="show-photo-main-img">
  198. <image :src="items.url" class="show-photo-main-img-item">
  199. <u-icon name="close" color="#4CB2B6" size="19" @click="closeImage(items,indexs)"
  200. v-if="!isview">
  201. </u-icon>
  202. </view>
  203. <view class="">
  204. <view>
  205. 图片名称
  206. </view>
  207. <view class="img-name">
  208. <u-input v-model="items.feildname" placeholder="请输入图片名称" :disabled="isview" />
  209. </view>
  210. </view>
  211. </view>
  212. </view>
  213. </view>
  214. </view>
  215. </u--form>
  216. </view>
  217. <view class="sub-botn heigthButton">
  218. <u-button v-if="isedit" @click="submit('customForm')" type="primary" shape="circle" size="large"
  219. color="#4CB2B6" text="确认修改" style="width:200px">
  220. </u-button>
  221. <u-button v-else-if="!formData.id" @click="submit('customForm')" type="primary" shape="circle" size="large"
  222. color="#4CB2B6" text="确认新增" style="width:200px">
  223. </u-button>
  224. <u-button v-else-if="isview" @click="submit('customForm')" type="primary" shape="circle" size="large"
  225. color="#4CB2B6" text="返回" style="width:200px">
  226. </u-button>
  227. </view>
  228. </view>
  229. </template>
  230. <script>
  231. import {
  232. createXfsssbpczl,
  233. getIdXfsssbpczl,
  234. updateXfsssbpczl
  235. }
  236. from '@/api/fire_inspetItem/index';
  237. import {
  238. takePhotos,
  239. NumericRule
  240. } from '@/utils/common.js';
  241. import config from '@/config'
  242. const baseUrlImg = config.baseUrlImg
  243. export default {
  244. data() {
  245. return {
  246. remark: '',
  247. contentText: {
  248. contentrefresh: '上传照片中',
  249. },
  250. screenHeight: this.$screenHeight,
  251. wheight: '',
  252. photograph: `${baseUrlImg}/checkActive/photograph.png`,
  253. dateTime: '',
  254. formData: {
  255. szxhsXz: '',
  256. szxhsYy: '',
  257. jzswxhsXz: '',
  258. jzswxhsYy: '',
  259. xfscYy: '',
  260. xfscXz: '',
  261. mhqYy: '',
  262. mhqGhwh: '',
  263. yjzmdYy: '',
  264. yjzmdGhwh: '',
  265. sszsbzYy: '',
  266. sszsbzGhwh: '',
  267. wxxfzYy: '',
  268. wxxfzXz: '',
  269. xfclYy: '',
  270. xfclXz: '',
  271. zdmhssYy: '',
  272. zdmhssGhwh: '',
  273. qtXz: '',
  274. reporttime: '',
  275. streetRepPicsDOList: [],
  276. descr:''
  277. },
  278. rules: {
  279. szxhsXz: NumericRule(),
  280. szxhsYy: NumericRule(),
  281. jzswxhsXz: NumericRule(),
  282. jzswxhsYy: NumericRule(),
  283. xfscYy: NumericRule(),
  284. xfscXz: NumericRule(),
  285. mhqYy: NumericRule(),
  286. mhqGhwh: NumericRule(),
  287. yjzmdYy: NumericRule(),
  288. yjzmdGhwh: NumericRule(),
  289. sszsbzYy: NumericRule(),
  290. sszsbzGhwh: NumericRule(),
  291. wxxfzYy: NumericRule(),
  292. wxxfzXz: NumericRule(),
  293. xfclYy: NumericRule(),
  294. xfclXz: NumericRule(),
  295. zdmhssYy: NumericRule(),
  296. zdmhssGhwh: NumericRule(),
  297. qtXz: NumericRule(),
  298. reporttime: [{
  299. required: true,
  300. message: '请输入日期',
  301. trigger: ['change', 'blur'],
  302. }],
  303. },
  304. isedit: false, //编辑
  305. isview: false, //查看
  306. loading: false
  307. }
  308. },
  309. onReady() {
  310. this.$refs.customForm.setRules(this.rules);
  311. },
  312. mounted() {
  313. uni.createSelectorQuery().in(this).select('.heigthButton').boundingClientRect(data => {
  314. this.wheight = data.height
  315. }).exec()
  316. },
  317. onLoad(option) {
  318. if (option.editData) {
  319. this.isedit = true
  320. this.parentId = option.editData
  321. this.getIdData()
  322. // this.formData = JSON.parse(option.editData)
  323. } else if (option.viewData) {
  324. this.isview = true
  325. this.parentId = option.viewData
  326. this.getIdData()
  327. // this.formData = JSON.parse(option.viewData)
  328. }
  329. },
  330. methods: {
  331. getIdData() {
  332. getIdXfsssbpczl({
  333. id: this.parentId
  334. }).then(response => {
  335. this.formData = response.data
  336. })
  337. },
  338. //拍照
  339. closeImage(val, index) {
  340. this.formData.streetRepPicsDOList.splice(index, 1)
  341. },
  342. photoUpload() {
  343. takePhotos(this)
  344. },
  345. bindDateChange(e) {
  346. this.dateTime = e.detail.value
  347. this.formData.reporttime = e.detail.value
  348. },
  349. submit(ref) {
  350. this.$refs[ref].validate().then(res => {
  351. const formList = this.formData
  352. Object.keys(formList).forEach(key => {
  353. formList[key] = formList[key] === '' ? 0 : formList[key];
  354. });
  355. formList.streetRepPicsDOList.forEach((item) => {
  356. // 删除除了feildname和url以外的多余字段
  357. Object.keys(item).forEach((key) => {
  358. if (key !== 'feildname' && key !== 'url' && key !== 'repid') {
  359. delete item[key];
  360. }
  361. });
  362. // 如果feildname为空,赋值为默认名称
  363. if (!item.feildname) {
  364. item.feildname = '默认名称';
  365. }
  366. if (this.isedit && !item.repid) {
  367. item.repid = this.parentId
  368. }
  369. });
  370. if (this.isedit) {
  371. updateXfsssbpczl(JSON.stringify(this.formData)).then(res => {
  372. this.$modal.msg('修改成功')
  373. this.isedit = false
  374. setTimeout(() => {
  375. uni.navigateBack()
  376. }, 400)
  377. })
  378. } else if (this.isview) {
  379. this.isview = false
  380. uni.navigateBack()
  381. } else {
  382. createXfsssbpczl(JSON.stringify(this.formData)).then(res => {
  383. this.$modal.msg('新增成功')
  384. setTimeout(() => {
  385. uni.navigateBack()
  386. }, 400)
  387. })
  388. }
  389. }).catch(err => {})
  390. }
  391. }
  392. }
  393. </script>
  394. <style lang="scss" scoped>
  395. body {
  396. background-color: #f5f7f9;
  397. }
  398. page {
  399. background-color: #f5f7f9 !important;
  400. }
  401. .uni-container {
  402. height: 100vh;
  403. background-color: #f5f7f9 !important;
  404. }
  405. /deep/.uni-card {
  406. position: relative;
  407. box-shadow: 0px 0px 3px 0px rgba(86, 165, 168, 0.15);
  408. border-radius: 30rpx;
  409. }
  410. /deep/ .uni-row {
  411. margin-top: 70rpx;
  412. }
  413. /deep/ .u-form-item__body__left {
  414. width: auto !important
  415. }
  416. .demo-uni-row {
  417. // margin-top: 70rpx;
  418. // /deep/.u-form-item {
  419. // display: flex;
  420. // }
  421. /deep/.u-form-item__body {
  422. flex-direction: row !important;
  423. }
  424. /deep/ .u-form-item__body__right {
  425. width: 230rpx !important;
  426. }
  427. // /deep/.u-border {
  428. // border: none !important;
  429. // border-bottom: 1px solid #E5E5E5 !important;
  430. // }
  431. // /deep/ .u-form-item__body__right__message {
  432. // margin-left: 20rpx !important
  433. // }
  434. }
  435. .julis-bottom {
  436. padding-bottom: 100px;
  437. /deep/ .u-form-item__body__left__content__label {
  438. color: #383838 !important;
  439. }
  440. /deep/ .u-form-item__body__right__message {
  441. margin-left: 20rpx !important
  442. }
  443. }
  444. .xf-title {
  445. /deep/ .u-form-item__body__left.data-v-5e7216f1 {
  446. width: auto !important
  447. }
  448. /deep/.u-border {
  449. border: none !important;
  450. border-bottom: 1px solid #E5E5E5 !important;
  451. }
  452. }
  453. .example {
  454. overflow-y: auto;
  455. }
  456. .beizhu{
  457. /deep/.u-form-item__body{
  458. flex-direction: column !important;
  459. }
  460. /deep/.u-form-item__body__left__content__label{
  461. margin-bottom: 10px
  462. }
  463. }
  464. </style>