index.vue 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <template>
  2. <view class="nocheckBox">
  3. <navigation-bar :isBack="true" @toBack="toBackHandle"></navigation-bar>
  4. <view class="container">
  5. <view class="warningBox">
  6. <text class="title">基本信息</text>
  7. <view class="content">
  8. <view class="item">
  9. <text class="title">地块编号</text>
  10. <text class="val">{{ objs.dkbh || '' }}</text>
  11. </view>
  12. <view class="item">
  13. <text class="title">面积(亩)</text>
  14. <text class="val">{{ objs.mj || ''}}</text>
  15. </view>
  16. <view class="item">
  17. <text class="title">地块位置</text>
  18. <text class="val">{{ objs.dkwz || ''}}</text>
  19. </view>
  20. <view class="item">
  21. <text class="title">地块现状</text>
  22. <text class="val">{{ objs.dkxz || ''}}</text>
  23. </view>
  24. <view class="item">
  25. <text class="title">管地单位</text>
  26. <text class="val">{{ objs.gddw || '' }}</text>
  27. </view>
  28. <view class="item">
  29. <text class="title">联系人</text>
  30. <text class="val">{{ objs.lxr || '' }}</text>
  31. </view>
  32. <view class="item">
  33. <text class="title">联系电话</text>
  34. <text class="val">{{ objs.lxdh || '' }}</text>
  35. </view>
  36. <view class="item szfw">
  37. <text class="title">四至范围</text>
  38. <text class="val">
  39. <text>{{ objs.szfw || '' }}</text>
  40. </text>
  41. </view>
  42. </view>
  43. </view>
  44. <view class="checkResultBox">
  45. <view class="titleBox">
  46. <text class="title">巡查记录</text>
  47. <button v-if="source == 'map'" class="btn" @click="toXcDetail">新增巡查</button>
  48. </view>
  49. <view class="content">
  50. <uni-collapse
  51. accordion
  52. v-model="accordionVal"
  53. @change="collapseChange"
  54. >
  55. <uni-collapse-item
  56. titleBorder="none"
  57. v-for="(item, index) in collapseList"
  58. :key="index"
  59. >
  60. <template v-slot:title>
  61. <view class="cooapseHeader">巡查时间:{{ item.xcsj }}</view>
  62. </template>
  63. <view class="collapse-content">
  64. <view class="li">
  65. <view class="x1">
  66. <text>巡查人员</text>
  67. </view>
  68. <view class="x2">
  69. <text>{{ item.xcryName }}</text>
  70. </view>
  71. </view>
  72. <view class="li">
  73. <view class="x1">
  74. <text>联系电话</text>
  75. </view>
  76. <view class="x2">
  77. <text>{{ item.xcryMobile }}</text>
  78. </view>
  79. </view>
  80. <view class="li xcms">
  81. <view class="x1">
  82. <text>现场描述</text>
  83. </view>
  84. <view class="x2">
  85. <text>{{ item.xzms }}</text>
  86. </view>
  87. </view>
  88. <view class="li xczp">
  89. <view class="x1">
  90. <text>现场照片</text>
  91. </view>
  92. <view class="x2">
  93. <image
  94. @click="previewImg(l.fileurl, index)"
  95. v-for="(l, i) in item.imgList"
  96. :key="i"
  97. :src="l.fileurl"
  98. alt=""
  99. >
  100. </image>
  101. </view>
  102. </view>
  103. </view>
  104. </uni-collapse-item>
  105. </uni-collapse>
  106. </view>
  107. </view>
  108. </view>
  109. </view>
  110. </template>
  111. <script>
  112. import navigationBar from '../../components/navigationBar/navigationBar.vue';
  113. import httpAjax from '@/utils/https.js';
  114. import CustomMixins from '@/mixins/CustomMixins.js';
  115. import config from '@/utils/config';
  116. const FormData = require('@/utils/formData/formData.js');
  117. export default {
  118. mixins: [CustomMixins],
  119. components: {
  120. navigationBar,
  121. },
  122. data() {
  123. return {
  124. objs: {},
  125. collapseList: [],
  126. accordionVal: '',
  127. warningId: '',
  128. source: '',
  129. };
  130. },
  131. onReady() {
  132. uni.showTabBar();
  133. },
  134. onLoad(option) {
  135. const objs = JSON.parse(option['obj']);
  136. this.source = option['source'];
  137. this.objs = objs;
  138. this.initList();
  139. },
  140. beforeDestroy() {},
  141. methods: {
  142. toXcDetail(){
  143. wx.navigateTo({
  144. url: `/pages/nocheckDetail/index?obj=${JSON.stringify(this.objs)}`,
  145. });
  146. },
  147. previewImg(current, index) {
  148. const urls = this.collapseList[index].imgList.map((item) => {
  149. return item.fileurl;
  150. });
  151. uni.previewImage({
  152. current,
  153. urls,
  154. });
  155. },
  156. initList() {
  157. const sendData = {
  158. dksyh: this.objs.dksyh,
  159. };
  160. httpAjax({
  161. url: 'app/xc/getXcjlListByDksyh',
  162. method: 'GET',
  163. data: sendData,
  164. })
  165. .then((result) => {
  166. if (result.data) {
  167. this.initImgs(result.data);
  168. }
  169. })
  170. .catch((err) => {
  171. console.error('');
  172. });
  173. },
  174. initImgs(data) {
  175. let that = this;
  176. let fileList = JSON.parse(JSON.stringify(data));
  177. fileList.forEach((item) => {
  178. item.imgList.forEach((l) => {
  179. that.getOSSFileById(l.fileId).then((res) => {
  180. let s = new Uint8Array(res[1].data);
  181. let sd = uni.arrayBufferToBase64(s);
  182. l.fileurl = 'data:image/png;base64,' + sd;
  183. });
  184. });
  185. });
  186. this.collapseList = fileList;
  187. },
  188. getOSSFileById(fileId) {
  189. return uni.request({
  190. url: config.baseUrl + 'api/oss/download?id' + '=' + fileId,
  191. responseType: 'arraybuffer',
  192. });
  193. },
  194. collapseChange() {},
  195. toBackHandle() {
  196. uni.navigateBack();
  197. },
  198. },
  199. };
  200. </script>
  201. <style lang="scss">
  202. @import './index.scss';
  203. </style>