originDetail.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  1. <template> 
  2. <el-card class="form-container" shadow="never">
  3. <el-form :model="origin" :rules="rules" ref="originFrom" label-width="150px">
  4. <el-form-item label="生产地名称" prop="originName">
  5. <el-input v-model="origin.originName"></el-input>
  6. </el-form-item>
  7. <el-form-item label="生产地面积(亩)">
  8. <el-input v-model="origin.originArea"></el-input>
  9. </el-form-item>
  10. <el-form-item label="生产地图片">
  11. <multi-upload v-model="selectOriginPics"></multi-upload>
  12. </el-form-item>
  13. <el-form-item label="生产地宣传视频">
  14. <el-input v-model="origin.videoUrl"></el-input>
  15. </el-form-item>
  16. <el-form-item label="生产地vr">
  17. <el-input v-model="origin.vrUrl"></el-input>
  18. </el-form-item>
  19. <el-form-item label="实时监控视频">
  20. <el-input v-model="origin.cameraUrl"></el-input>
  21. </el-form-item>
  22. <el-form-item label="人员数">
  23. <el-input v-model="origin.peopleNum"></el-input>
  24. </el-form-item>
  25. <el-form-item label="建立日期(年)">
  26. <el-input v-model="origin.foundDate"></el-input>
  27. </el-form-item>
  28. <el-form-item label="联系人">
  29. <el-input v-model="origin.linkUser"></el-input>
  30. </el-form-item>
  31. <el-form-item label="联系方式">
  32. <el-input v-model="origin.linkPhone"></el-input>
  33. </el-form-item>
  34. <el-form-item label="简介">
  35. <el-input
  36. placeholder="请输入内容"
  37. type="textarea"
  38. v-model="origin.summary"
  39. :autosize="true"></el-input>
  40. </el-form-item>
  41. <el-form-item label="产出物">
  42. <el-input v-model="origin.isCert"></el-input>
  43. </el-form-item>
  44. <el-form-item label="产出物种植面积(亩)">
  45. <el-input v-model="origin.originArea"></el-input>
  46. </el-form-item>
  47. <el-form-item label="产出物总产量(吨)">
  48. <el-input v-model="origin.compManageLicenseNum"></el-input>
  49. </el-form-item>
  50. <el-form-item label="产出物亩产值(万元)">
  51. <el-input v-model="origin.compSocialCode"></el-input>
  52. </el-form-item>
  53. <el-form-item label="所在省">
  54. <el-input v-model="origin.provinceId"></el-input>
  55. </el-form-item>
  56. <el-form-item label="所在市">
  57. <el-input v-model="origin.cityId"></el-input>
  58. </el-form-item>
  59. <el-form-item label="所在县">
  60. <el-input v-model="origin.countyId"></el-input>
  61. </el-form-item>
  62. <el-form-item label="详细地址">
  63. <el-input v-model="origin.detailAddress"></el-input>
  64. </el-form-item>
  65. <el-form-item label="经度(°)">
  66. <el-input v-model="origin.longitude"></el-input>
  67. </el-form-item>
  68. <el-form-item label="维度(°)">
  69. <el-input v-model="origin.latitude"></el-input>
  70. </el-form-item>
  71. <el-form-item>
  72. <baidu-map class="map" :center="center" :zoom="zoom" @ready="handlermap"
  73. :scroll-wheel-zoom="true"
  74. @click="clickEvent"
  75. ak="33B192o1jPaqOHASGGAIkoMuwi8W76j3">
  76. <!-- 地图控件位置 -->
  77. <bm-navigation anchor="BMAP_ANCHOR_TOP_RIGHT"></bm-navigation>
  78. <!-- 获取城市列表 -->
  79. <bm-city-list anchor="BMAP_ANCHOR_TOP_LEFT"></bm-city-list>
  80. <!-- 定位当前位置 -->
  81. <bm-geolocation anchor="BMAP_ANCHOR_BOTTOM_RIGHT" :showAddressBar="true" :autoLocation="true" @locationSuccess="getLoctionSuccess" ></bm-geolocation>
  82. <!-- 地图容器 -->
  83. <bm-view :style="{width:'100%',height: '500px'}"></bm-view>
  84. </baidu-map>
  85. </el-form-item>
  86. <el-form-item label="供应商名称" >
  87. <el-input v-model="origin.compName"></el-input>
  88. </el-form-item>
  89. <el-form-item>
  90. <el-button type="primary" @click="onSubmit('originFrom')">提交</el-button>
  91. <el-button v-if="!isEdit" @click="resetForm('originFrom')">重置</el-button>
  92. </el-form-item>
  93. </el-form>
  94. </el-card>
  95. </template>
  96. <script>
  97. import {createOrigin, getOrigin, updateOrigin} from '@/api/origin'
  98. import SingleUpload from '@/components/Upload/singleUpload'
  99. import MultiUpload from '@/components/Upload/multiUpload'
  100. import {BaiduMap,BmNavigation,BmView,BmGeolocation,BmCityList} from 'vue-baidu-map'
  101. const defaultorigin={
  102. altitude: null,
  103. cameraUrl: null,
  104. cityName: null,
  105. compId: null,
  106. compName: "",
  107. countyName: null,
  108. createId: null,
  109. createTime: "",
  110. detailAddress: null,
  111. foundDate: null,
  112. id: null,
  113. imgUrl: null,
  114. latitude: null,
  115. linkPhone: null,
  116. linkUser: null,
  117. longitude: null,
  118. originArea: null,
  119. originName: "",
  120. pageNum: 1,
  121. pageSize: 10,
  122. peopleNum: null,
  123. productlist: [],
  124. provinceName: null,
  125. remark: null,
  126. state: 0,
  127. summary: null,
  128. updateId: null,
  129. updateTime: null,
  130. videoUrl: null,
  131. vrUrl: null,
  132. };
  133. export default {
  134. name: 'originDetail',
  135. components:{
  136. SingleUpload,
  137. MultiUpload,
  138. BaiduMap,
  139. BmNavigation,
  140. BmView,
  141. BmGeolocation,
  142. BmCityList,
  143. },
  144. props: {
  145. isEdit: {
  146. type: Boolean,
  147. default: false
  148. }
  149. },
  150. data() {
  151. return {
  152. origin:Object.assign({}, defaultorigin),
  153. rules: {
  154. originName: [
  155. {required: true, message: '请输入品牌名称', trigger: 'blur'},
  156. {min: 2, max: 140, message: '长度在 2 到 140 个字符', trigger: 'blur'}
  157. ],
  158. logo: [
  159. {required: true, message: '请输入品牌logo', trigger: 'blur'}
  160. ],
  161. sort: [
  162. {type: 'number', message: '排序必须为数字'}
  163. ],
  164. },
  165. center: {lng: 106.632713, lat: 26.653157},
  166. zoom: 12,
  167. mapVisible:false,
  168. clientHeight:document.documentElement.clientHeight-90, // 设置屏幕高度
  169. }
  170. },
  171. computed: {
  172. //生产地图片
  173. selectOriginPics:{
  174. get:function () {
  175. let pics=[];
  176. // if(this.origin.pic===undefined||this.origin.pic==null||this.origin.pic===''){
  177. // return pics;
  178. // }
  179. // pics.push(this.origin.pic);
  180. if(this.origin.imgUrl===undefined||this.origin.imgUrl==null||this.origin.imgUrl===''){
  181. return pics;
  182. }
  183. let albumPics = this.origin.imgUrl.split(',');
  184. for(let i=0;i<albumPics.length;i++){
  185. pics.push(albumPics[i]);
  186. }
  187. return pics;
  188. },
  189. set:function (newValue) {
  190. console.log('newValue',newValue);
  191. if (newValue == null || newValue.length === 0) {
  192. // this.origin.pic = null;
  193. this.origin.imgUrl = null;
  194. } else {
  195. // this.origin.pic = newValue[0];
  196. this.origin.imgUrl = '1';
  197. if (newValue.length > 1) {
  198. for (let i = 1; i < newValue.length; i++) {
  199. this.origin.imgUrl += newValue[i];
  200. if (i !== newValue.length - 1) {
  201. this.origin.imgUrl += ',';
  202. }
  203. }
  204. }
  205. }
  206. console.log(' this.origin.imgUrl', this.origin.imgUrl);
  207. }
  208. }
  209. },
  210. created() {
  211. if (this.isEdit) {
  212. getOrigin(this.$route.query.id).then(response => {
  213. this.origin = response.data;
  214. });
  215. }else{
  216. this.origin = Object.assign({},defaultorigin);
  217. }
  218. },
  219. methods: {
  220. onSubmit(formName) {
  221. // console.log('this.origin',JSON.parse(JSON.stringify(this.origin)))
  222. // return false;
  223. this.$refs[formName].validate((valid) => {
  224. if (valid) {
  225. this.$confirm('是否提交数据', '提示', {
  226. confirmButtonText: '确定',
  227. cancelButtonText: '取消',
  228. type: 'warning'
  229. }).then(() => {
  230. if (this.isEdit) {
  231. updateOrigin(this.$route.query.id, this.origin).then(response => {
  232. this.$refs[formName].resetFields();
  233. this.$message({
  234. message: '修改成功',
  235. type: 'success',
  236. duration:1000
  237. });
  238. setTimeout(() =>{
  239. this.$router.back();
  240. },1000);
  241. });
  242. } else {
  243. createOrigin(this.origin).then(response => {
  244. this.$refs[formName].resetFields();
  245. this.origin = Object.assign({},defaultorigin);
  246. this.$message({
  247. message: '提交成功',
  248. type: 'success',
  249. duration:1000
  250. });
  251. setTimeout(() =>{
  252. this.$router.back();
  253. },1000);
  254. });
  255. }
  256. });
  257. } else {
  258. this.$message({
  259. message: '验证失败',
  260. type: 'error',
  261. duration:1000
  262. });
  263. return false;
  264. }
  265. });
  266. },
  267. resetForm(formName) {
  268. this.$refs[formName].resetFields();
  269. this.origin = Object.assign({},defaultorigin);
  270. },
  271. handlermap ({BMap, map}) {
  272. let _this = this; // 设置一个临时变量指向vue实例;
  273. var geolocation = new BMap.Geolocation();
  274. geolocation.getCurrentPosition(function(r){
  275. // console.log(r);
  276. _this.center = {lng: r.longitude, lat: r.latitude}; // 设置center属性值
  277. _this.autoLocationPoint = {lng: r.longitude, lat: r.latitude}; // 自定义覆盖物
  278. _this.initLocation = true;
  279. },{enableHighAccuracy: true})
  280. window.map = map;
  281. },
  282. //点击地图监听
  283. clickEvent(e){
  284. map.clearOverlays();
  285. let Icon_0 = new BMap.Icon("static/zuobiao.gif", new BMap.Size(64, 64), {anchor: new BMap.Size(18, 32),imageSize: new BMap.Size(36, 36)});
  286. var myMarker = new BMap.Marker(new BMap.Point(e.point.lng, e.point.lat),{icon: Icon_0});
  287. map.addOverlay(myMarker);
  288. //用所定位的经纬度查找所在地省市街道等信息
  289. var point = new BMap.Point(e.point.lng, e.point.lat);
  290. var gc = new BMap.Geocoder();
  291. let _this = this;
  292. gc.getLocation(point, function (rs) {
  293. var addComp = rs.addressComponents;
  294. // console.log(rs);//地址信息
  295. _this.origin.provinceId = rs.addressComponents.province;
  296. _this.origin.cityId = rs.addressComponents.city;
  297. _this.origin.countyId = rs.addressComponents.district;
  298. _this.origin.detailAddress = rs.address;
  299. });
  300. this.origin.longitude = e.point.lng;
  301. this.origin.latitude = e.point.lat;
  302. },
  303. //定位成功回调
  304. getLoctionSuccess(point, AddressComponent, marker){
  305. map.clearOverlays();
  306. let Icon_0 = new BMap.Icon("/static/zuobiao.gif", new BMap.Size(64, 64), {anchor: new BMap.Size(18, 32),imageSize: new BMap.Size(36, 36)});
  307. var myMarker = new BMap.Marker(new BMap.Point(point.point.lng, point.point.lat),{icon: Icon_0});
  308. map.addOverlay(myMarker);
  309. this.company.longitude = point.point.lng;
  310. this.company.latitude = point.point.lat;
  311. },
  312. findlocation(){
  313. this.$emit("findlocdata",this.company)
  314. this.mapVisible = false
  315. },
  316. mapShow(){
  317. this.mapVisible = true
  318. },
  319. }
  320. }
  321. </script>
  322. <style>
  323. </style>