| @@ -12,7 +12,7 @@ module.exports = { | |||||
| proxyTable: { | proxyTable: { | ||||
| "/api": { | "/api": { | ||||
| // 请求的目标主机 | // 请求的目标主机 | ||||
| // target: 'http://218.59.175.44:8082/nsgk_test/', // 公网测试环境 | |||||
| //target: 'http://218.59.175.44:8082/nsgk_test/', // 公网测试环境 | |||||
| // target: `http://192.168.0.116:8091/nsgk_api/`, // 内网测试环境 | // target: `http://192.168.0.116:8091/nsgk_api/`, // 内网测试环境 | ||||
| target: 'http://localhost:8080/', | target: 'http://localhost:8080/', | ||||
| //target: 'http://192.168.0.106:8080/', | //target: 'http://192.168.0.106:8080/', | ||||
| @@ -7,6 +7,7 @@ | |||||
| <!--<el-button :id=this.drawingPolygonMap style="background-color:#D0EEFF;color:#1E88C7" @click="" type="primary">画图</el-button>--> | <!--<el-button :id=this.drawingPolygonMap style="background-color:#D0EEFF;color:#1E88C7" @click="" type="primary">画图</el-button>--> | ||||
| <!--<input id="drawRemove" type="button" class="ant-btn ant-btn-red" value="取消"/> --> | <!--<input id="drawRemove" type="button" class="ant-btn ant-btn-red" value="取消"/> --> | ||||
| <!--<el-button :id=this.drawingPolygonMap style="background-color:#D0EEFF;color:#1E88C7" type="primary">重置图层</el-button>--> | <!--<el-button :id=this.drawingPolygonMap style="background-color:#D0EEFF;color:#1E88C7" type="primary">重置图层</el-button>--> | ||||
| <input :id="locationMap" type="button" class="ant-btn ant-btn-red" value="定位"/> | |||||
| <input :id="this.drawingPolygonMap" class="ant-btn ant-btn-red" type="button" value="画图"/> | <input :id="this.drawingPolygonMap" class="ant-btn ant-btn-red" type="button" value="画图"/> | ||||
| <input :id="this.drawingResetMap" type="button" class="ant-btn ant-btn-red" value="重置图层"/> | <input :id="this.drawingResetMap" type="button" class="ant-btn ant-btn-red" value="重置图层"/> | ||||
| </div> | </div> | ||||
| @@ -31,6 +32,7 @@ export default { | |||||
| uuidMap: this.guidProduct(), | uuidMap: this.guidProduct(), | ||||
| drawingPolygonMap: this.guidProduct(), | drawingPolygonMap: this.guidProduct(), | ||||
| drawingResetMap: this.guidProduct(), | drawingResetMap: this.guidProduct(), | ||||
| locationMap: this.guidProduct(), | |||||
| mapGeoServerUrl: "", // geoserver地址 | mapGeoServerUrl: "", // geoserver地址 | ||||
| villageBorderLayerName: "", // 乡镇边界图层名称 | villageBorderLayerName: "", // 乡镇边界图层名称 | ||||
| }; | }; | ||||
| @@ -72,6 +74,56 @@ export default { | |||||
| return v.toString(16); | return v.toString(16); | ||||
| }); | }); | ||||
| }, | }, | ||||
| getCurrentLocation(callback) { | |||||
| // 1. 首先尝试Android宿主端 | |||||
| if(window._Native_object) // Android层注入全局对象 | |||||
| { | |||||
| console.log('使用Native获取定位'); | |||||
| let coord = window._Native_object.GetLocation(null); | |||||
| console.log('Native坐标: ' + coord); | |||||
| if(coord) | |||||
| { | |||||
| let arr = coord.split(','); | |||||
| let res = { | |||||
| code: 200, | |||||
| data: { | |||||
| lng: arr[0], | |||||
| lat: arr[1], | |||||
| }, | |||||
| }; | |||||
| callback(res); | |||||
| return; | |||||
| } | |||||
| } | |||||
| // 2. 再尝试浏览器 | |||||
| if (navigator.geolocation) { | |||||
| console.log('使用浏览器获取定位'); | |||||
| navigator.geolocation.getCurrentPosition( | |||||
| (position) => { | |||||
| const { latitude, longitude } = position.coords; | |||||
| let res = { | |||||
| code: 200, | |||||
| data: { | |||||
| lng: longitude, | |||||
| lat: latitude, | |||||
| }, | |||||
| }; | |||||
| callback(res); | |||||
| }, | |||||
| (error) => { | |||||
| console.log('定位失败: ' + error.message); | |||||
| getQueryLand().then(callback); | |||||
| }, | |||||
| { enableHighAccuracy: true, timeout: 10000 } | |||||
| ); | |||||
| return; | |||||
| } | |||||
| // 最后使用地区坐标 | |||||
| console.log('使用地区坐标定位'); | |||||
| getQueryLand().then(callback); | |||||
| }, | |||||
| //地图查看 | //地图查看 | ||||
| drawingPaceCountryLine() { | drawingPaceCountryLine() { | ||||
| //加载地图编辑 | //加载地图编辑 | ||||
| @@ -297,6 +349,26 @@ export default { | |||||
| that.formSubmit(); | that.formSubmit(); | ||||
| } | } | ||||
| }); | }); | ||||
| $("#" + this.locationMap).click(function () { | |||||
| that.getCurrentLocation(res => { | |||||
| if (res.code == 200) { | |||||
| let lat = res.data.lat; | |||||
| let lng = res.data.lng; | |||||
| if(lat && lng){ | |||||
| Zb = [lng,lat]; | |||||
| }else { | |||||
| Zb =[115.452752, 31.789033]; | |||||
| } | |||||
| map.getView().animate({ | |||||
| // 只设置需要的属性即可 | |||||
| center: ol.proj.fromLonLat(Zb), // 中心点 | |||||
| zoom: 18, // 缩放级别 | |||||
| rotation: undefined, // 缩放完成view视图旋转弧度 | |||||
| duration: 1000, // 缩放持续时间,默认不需要设置 | |||||
| }); | |||||
| } | |||||
| }); | |||||
| }); | |||||
| } else{ | } else{ | ||||
| //this.closeMoule = null; | //this.closeMoule = null; | ||||
| document.getElementById(that.uuidMap).innerHTML = ''; | document.getElementById(that.uuidMap).innerHTML = ''; | ||||
| @@ -326,7 +398,7 @@ export default { | |||||
| }); | }); | ||||
| //获取坐标是否存在 | //获取坐标是否存在 | ||||
| var Zb; | var Zb; | ||||
| getQueryLand().then((response) => { | |||||
| this.getCurrentLocation((response) => { | |||||
| if (response.code == 200) { | if (response.code == 200) { | ||||
| let InsertCode = response.data; | let InsertCode = response.data; | ||||
| if (InsertCode != null) { | if (InsertCode != null) { | ||||
| @@ -442,6 +514,26 @@ export default { | |||||
| //that.closeMoule = null; | //that.closeMoule = null; | ||||
| that.formSubmit(); | that.formSubmit(); | ||||
| }); | }); | ||||
| $("#" + this.locationMap).click(function () { | |||||
| that.getCurrentLocation(res => { | |||||
| if (res.code == 200) { | |||||
| let lat = res.data.lat; | |||||
| let lng = res.data.lng; | |||||
| if(lat && lng){ | |||||
| Zb = [lng,lat]; | |||||
| }else { | |||||
| Zb =[115.452752, 31.789033]; | |||||
| } | |||||
| map.getView().animate({ | |||||
| // 只设置需要的属性即可 | |||||
| center: ol.proj.fromLonLat(Zb), // 中心点 | |||||
| zoom: 18, // 缩放级别 | |||||
| rotation: undefined, // 缩放完成view视图旋转弧度 | |||||
| duration: 1000, // 缩放持续时间,默认不需要设置 | |||||
| }); | |||||
| } | |||||
| }); | |||||
| }); | |||||
| } | } | ||||
| }, | }, | ||||
| }, | }, | ||||
| @@ -3,6 +3,7 @@ | |||||
| <div id="full-screen-acceptance" style="width: 100%;height:71vh;"> | <div id="full-screen-acceptance" style="width: 100%;height:71vh;"> | ||||
| <div :id=this.uuidMap style="width: 100%;height: 100%"></div> | <div :id=this.uuidMap style="width: 100%;height: 100%"></div> | ||||
| <div id='land-btn-wrap' v-show="showBtn"> | <div id='land-btn-wrap' v-show="showBtn"> | ||||
| <input :id="locationMap" type="button" class="ant-btn ant-btn-red" value="定位"/> | |||||
| <input :id="this.drawPolygonMap" class="ant-btn ant-btn-red" type="button" value="标记"/> | <input :id="this.drawPolygonMap" class="ant-btn ant-btn-red" type="button" value="标记"/> | ||||
| <!--<input id="drawRemove" type="button" class="ant-btn ant-btn-red" value="取消"/> --> | <!--<input id="drawRemove" type="button" class="ant-btn ant-btn-red" value="取消"/> --> | ||||
| <input :id="this.drawResetMap" type="button" class="ant-btn ant-btn-red" value="重置标记"/> | <input :id="this.drawResetMap" type="button" class="ant-btn ant-btn-red" value="重置标记"/> | ||||
| @@ -27,6 +28,7 @@ | |||||
| uuidMap: this.guidProduct(), | uuidMap: this.guidProduct(), | ||||
| drawPolygonMap: this.guidProduct(), | drawPolygonMap: this.guidProduct(), | ||||
| drawResetMap: this.guidProduct(), | drawResetMap: this.guidProduct(), | ||||
| locationMap: this.guidProduct(), | |||||
| mapGeoServerUrl: "", // geoserver地址 | mapGeoServerUrl: "", // geoserver地址 | ||||
| villageBorderLayerName: "", // 乡镇边界图层名称 | villageBorderLayerName: "", // 乡镇边界图层名称 | ||||
| }; | }; | ||||
| @@ -68,6 +70,56 @@ | |||||
| return v.toString(16); | return v.toString(16); | ||||
| }); | }); | ||||
| }, | }, | ||||
| getCurrentLocation(callback) { | |||||
| // 1. 首先尝试Android宿主端 | |||||
| if(window._Native_object) // Android层注入全局对象 | |||||
| { | |||||
| console.log('使用Native获取定位'); | |||||
| let coord = window._Native_object.GetLocation(null); | |||||
| console.log('Native坐标: ' + coord); | |||||
| if(coord) | |||||
| { | |||||
| let arr = coord.split(','); | |||||
| let res = { | |||||
| code: 200, | |||||
| data: { | |||||
| lng: arr[0], | |||||
| lat: arr[1], | |||||
| }, | |||||
| }; | |||||
| callback(res); | |||||
| return; | |||||
| } | |||||
| } | |||||
| // 2. 再尝试浏览器 | |||||
| if (navigator.geolocation) { | |||||
| console.log('使用浏览器获取定位'); | |||||
| navigator.geolocation.getCurrentPosition( | |||||
| (position) => { | |||||
| const { latitude, longitude } = position.coords; | |||||
| let res = { | |||||
| code: 200, | |||||
| data: { | |||||
| lng: longitude, | |||||
| lat: latitude, | |||||
| }, | |||||
| }; | |||||
| callback(res); | |||||
| }, | |||||
| (error) => { | |||||
| console.log('定位失败: ' + error.message); | |||||
| getQueryLand().then(callback); | |||||
| }, | |||||
| { enableHighAccuracy: true, timeout: 10000 } | |||||
| ); | |||||
| return; | |||||
| } | |||||
| // 最后使用地区坐标 | |||||
| console.log('使用地区坐标定位'); | |||||
| getQueryLand().then(callback); | |||||
| }, | |||||
| //地图查看 | //地图查看 | ||||
| pointPaceCountryDarw() { | pointPaceCountryDarw() { | ||||
| //加载地图编辑 | //加载地图编辑 | ||||
| @@ -337,6 +389,26 @@ | |||||
| that.formSubmit(); | that.formSubmit(); | ||||
| } | } | ||||
| }); | }); | ||||
| $("#" + this.locationMap).click(function () { | |||||
| that.getCurrentLocation(res => { | |||||
| if (res.code == 200) { | |||||
| let lat = res.data.lat; | |||||
| let lng = res.data.lng; | |||||
| if(lat && lng){ | |||||
| Zb = [lng,lat]; | |||||
| }else { | |||||
| Zb =[115.452752, 31.789033]; | |||||
| } | |||||
| map.getView().animate({ | |||||
| // 只设置需要的属性即可 | |||||
| center: ol.proj.fromLonLat(Zb), // 中心点 | |||||
| zoom: 18, // 缩放级别 | |||||
| rotation: undefined, // 缩放完成view视图旋转弧度 | |||||
| duration: 1000, // 缩放持续时间,默认不需要设置 | |||||
| }); | |||||
| } | |||||
| }); | |||||
| }); | |||||
| } | } | ||||
| else{ | else{ | ||||
| this.closeMoule = null; | this.closeMoule = null; | ||||
| @@ -368,7 +440,7 @@ | |||||
| //获取坐标是否存在 | //获取坐标是否存在 | ||||
| var Zb; | var Zb; | ||||
| //开始定位当前位置 | //开始定位当前位置 | ||||
| getQueryLand().then(res => { | |||||
| this.getCurrentLocation(res => { | |||||
| if (res.code == 200) { | if (res.code == 200) { | ||||
| let lat = res.data.lat; | let lat = res.data.lat; | ||||
| let lng = res.data.lng; | let lng = res.data.lng; | ||||
| @@ -519,6 +591,26 @@ | |||||
| that.closeMoule = null; | that.closeMoule = null; | ||||
| that.formSubmit(); | that.formSubmit(); | ||||
| }); | }); | ||||
| $("#" + this.locationMap).click(function () { | |||||
| that.getCurrentLocation(res => { | |||||
| if (res.code == 200) { | |||||
| let lat = res.data.lat; | |||||
| let lng = res.data.lng; | |||||
| if(lat && lng){ | |||||
| Zb = [lng,lat]; | |||||
| }else { | |||||
| Zb =[115.452752, 31.789033]; | |||||
| } | |||||
| map.getView().animate({ | |||||
| // 只设置需要的属性即可 | |||||
| center: ol.proj.fromLonLat(Zb), // 中心点 | |||||
| zoom: 18, // 缩放级别 | |||||
| rotation: undefined, // 缩放完成view视图旋转弧度 | |||||
| duration: 1000, // 缩放持续时间,默认不需要设置 | |||||
| }); | |||||
| } | |||||
| }); | |||||
| }); | |||||
| } | } | ||||
| }, | }, | ||||
| }, | }, | ||||
| @@ -0,0 +1,219 @@ | |||||
| <!-- 下拉列表组件 zhao --> | |||||
| <template> | |||||
| <div> | |||||
| <slot/> | |||||
| <van-popup v-model="popupVisible" position="bottom"> | |||||
| <van-picker | |||||
| ref="picker" | |||||
| :title="label" | |||||
| show-toolbar | |||||
| :columns="options" | |||||
| :readonly="readonly" | |||||
| :value-key="labelKey" | |||||
| :loading="loading" | |||||
| @confirm="onConfirm" | |||||
| @cancel="onCancel" | |||||
| @change="onChanged" | |||||
| /> | |||||
| </van-popup> | |||||
| </div> | |||||
| </template> | |||||
| <script> | |||||
| import request from "@/utils/request"; | |||||
| export default { | |||||
| name: "Selector", | |||||
| props: { | |||||
| value: { | |||||
| default: null, | |||||
| }, | |||||
| readonly: { | |||||
| type: Boolean, | |||||
| default: false, | |||||
| }, | |||||
| label: { | |||||
| type: String, | |||||
| default: '', | |||||
| }, | |||||
| columns: { // 列表数据 Array | |||||
| type: Array, | |||||
| default: () => [], | |||||
| }, | |||||
| labelKey: { // 名称键名 String | |||||
| type: String, | |||||
| default: 'label', | |||||
| }, | |||||
| valueKey: { // 值键名 String | |||||
| type: String, | |||||
| default: 'value', | |||||
| }, | |||||
| remoteUrl: { // 远程列表加载地址 String, 函数, 或 Promise | |||||
| type: [String, Function, Object], | |||||
| default: null, | |||||
| }, | |||||
| onRemoteResponse: { // 远程获取到结果的处理回调 String|Function 如果是函数需返回数组, 如果是字符串支持.分割 | |||||
| type: [String, Function], | |||||
| default: null, | |||||
| }, | |||||
| clear: { // 点击取消时清空绑定值 | |||||
| type: Boolean, | |||||
| default: false, | |||||
| }, | |||||
| visible: { // 打开状态 | |||||
| type: Boolean, | |||||
| default: false, | |||||
| }, | |||||
| }, | |||||
| watch: { | |||||
| value: function (newVal, oldVal) { | |||||
| this.internalValue = newVal; | |||||
| this.visibleValue = newVal; | |||||
| this.syncIndex(); | |||||
| }, | |||||
| columns: function (newVal, oldVal) { | |||||
| this.syncIndex(); | |||||
| }, | |||||
| remoteUrl: function (newVal, oldVal) { | |||||
| this.requestRemote(); | |||||
| }, | |||||
| onRemoteResponse: function (newVal, oldVal) { | |||||
| this.parseRemote(); | |||||
| }, | |||||
| visible: function (newVal, oldVal) { | |||||
| if(newVal != this.popupVisible) | |||||
| this.popupVisible = newVal; | |||||
| }, | |||||
| popupVisible: function (newVal, oldVal) { | |||||
| if(newVal != this.visible) | |||||
| this.$emit('update:visible', newVal); | |||||
| } | |||||
| }, | |||||
| created() { | |||||
| if(this.remoteUrl) | |||||
| this.requestRemote(); | |||||
| }, | |||||
| data() { | |||||
| return { | |||||
| popupVisible: false, | |||||
| internalValue: this.value, | |||||
| visibleValue: '', | |||||
| defaultIndex: 0, | |||||
| remoteColumns: null, | |||||
| loading: false, | |||||
| remoteResponse: null, | |||||
| }; | |||||
| }, | |||||
| methods: { | |||||
| openPopup() { | |||||
| if(!this.readonly) | |||||
| { | |||||
| this.popupVisible = true; | |||||
| this.$nextTick(() => { | |||||
| this.$refs.picker.setIndexes([this.defaultIndex]); | |||||
| }) | |||||
| } | |||||
| }, | |||||
| closePopup() { | |||||
| this.popupVisible = false; | |||||
| }, | |||||
| onChanged(data) { | |||||
| this.$emit('change', data); | |||||
| }, | |||||
| onConfirm(data) { | |||||
| this.syncValue(data); | |||||
| this.$emit('input', this.internalValue); | |||||
| this.$emit('confirm', this.internalValue); | |||||
| this.closePopup(); | |||||
| }, | |||||
| onCancel() { | |||||
| this.closePopup(); | |||||
| if(this.clear) | |||||
| { | |||||
| this.visibleValue = ''; | |||||
| this.internalValue = null; | |||||
| this.$emit('input', this.internalValue); | |||||
| } | |||||
| this.$emit('cancel'); | |||||
| }, | |||||
| getValue(data) { | |||||
| return typeof(data) === 'object' && this.valueKey ? data[this.valueKey] : data; | |||||
| }, | |||||
| getLabel(data) { | |||||
| return typeof(data) === 'object' && this.labelKey ? data[this.labelKey] : data; | |||||
| }, | |||||
| syncValue(data) { | |||||
| this.internalValue = this.getValue(data); | |||||
| this.visibleValue = this.getLabel(data); | |||||
| }, | |||||
| syncIndex() { | |||||
| let columns = this.getColumns(); | |||||
| if(!columns) | |||||
| return -1; | |||||
| for(let i in columns) | |||||
| { | |||||
| if(this.getValue(columns[i]) == this.internalValue) { | |||||
| this.defaultIndex = i; | |||||
| this.visibleValue = this.getLabel(columns[i]); | |||||
| this.onChanged(columns[i]); | |||||
| return i; | |||||
| } | |||||
| } | |||||
| if(1) // 不存在 | |||||
| { | |||||
| this.defaultIndex = -1; | |||||
| this.visibleValue = this.internalValue; | |||||
| this.onChanged(null); | |||||
| } | |||||
| return -1; | |||||
| }, | |||||
| getColumns() { | |||||
| return this.columns ? this.columns : this.remoteColumns; | |||||
| }, | |||||
| requestRemote() { | |||||
| if(!this.remoteUrl) | |||||
| return; | |||||
| this.loading = true; | |||||
| this.remoteColumns = []; | |||||
| let promise = typeof(this.remoteUrl) === 'function' ? this.remoteUrl() : (this.remoteUrl instanceof Promise ? this.remoteUrl : request(this.remoteUrl)); | |||||
| promise.then((resp) => { | |||||
| this.remoteResponse = resp; | |||||
| this.parseRemote(); | |||||
| this.syncIndex(); | |||||
| }).catch((e) => { | |||||
| console.error(e); | |||||
| }).finally(() => { | |||||
| this.loading = false; | |||||
| }) | |||||
| }, | |||||
| parseRemote() { | |||||
| if(!this.remoteResponse) | |||||
| return; | |||||
| let type = typeof(this.onRemoteResponse); | |||||
| if(type === 'function') | |||||
| this.remoteColumns = this.onRemoteResponse(this.remoteResponse); | |||||
| else if(type === 'string') | |||||
| { | |||||
| let arr = this.onRemoteResponse.split('.'); | |||||
| let ptr = this.remoteResponse; | |||||
| for(let i in arr) | |||||
| { | |||||
| ptr = this.remoteResponse[arr[i]]; | |||||
| } | |||||
| this.remoteColumns = ptr; | |||||
| } | |||||
| else | |||||
| this.remoteColumns = this.remoteResponse; | |||||
| }, | |||||
| }, | |||||
| computed: { | |||||
| options() { | |||||
| return this.columns ? this.columns : (this.remoteColumns || []); | |||||
| } | |||||
| } | |||||
| } | |||||
| </script> | |||||
| <style scoped> | |||||
| </style> | |||||
| @@ -8,8 +8,12 @@ | |||||
| <div class="search_info"> | <div class="search_info"> | ||||
| <div class="search_block"> | <div class="search_block"> | ||||
| <i class="icon"></i> | <i class="icon"></i> | ||||
| <input type="text" class="ipt" v-model="queryParams.name" placeholder="搜索" @input="getSearchList"> | |||||
| <!-- --> | |||||
| <input type="text" class="ipt" v-model="queryParams.name" :placeholder="searchPlaceholder" @input="getSearchList"> | |||||
| <selector :visible.sync="typeVisible" v-model="queryParams.operationType" :columns="operation_type" clear value-key="dictValue" label-key="dictLabel" @confirm="refresh" @cancel="refresh"> | |||||
| <template> | |||||
| <van-icon name="filter-o" color="#1989fa" class="filter-icon" @click="openAssetType" /> | |||||
| </template> | |||||
| </selector> | |||||
| </div> | </div> | ||||
| <div class="total">共{{listLength}}个资产</div> | <div class="total">共{{listLength}}个资产</div> | ||||
| </div> | </div> | ||||
| @@ -85,9 +89,11 @@ | |||||
| } from "@/api/sunVillage_info/fixedAssets"; | } from "@/api/sunVillage_info/fixedAssets"; | ||||
| import request from '@/utils/request' | import request from '@/utils/request' | ||||
| import MapGisTag from "@/components/Map/MapGisTagDTGCopy"; | import MapGisTag from "@/components/Map/MapGisTagDTGCopy"; | ||||
| import Selector from "@/components/common/Selector.vue"; | |||||
| export default { | export default { | ||||
| name: "certificateList", | name: "certificateList", | ||||
| components: { | components: { | ||||
| Selector, | |||||
| MapGisTag | MapGisTag | ||||
| }, | }, | ||||
| data() { | data() { | ||||
| @@ -107,6 +113,7 @@ | |||||
| orderByColumn:'createTime', | orderByColumn:'createTime', | ||||
| isAsc:'desc', | isAsc:'desc', | ||||
| name:'', | name:'', | ||||
| operationType: null, | |||||
| }, | }, | ||||
| uploadFiles1:[], | uploadFiles1:[], | ||||
| projectId:'', | projectId:'', | ||||
| @@ -117,6 +124,8 @@ | |||||
| listMap:0, | listMap:0, | ||||
| permanentId: null, // 固定资产ID | permanentId: null, // 固定资产ID | ||||
| permanents: [], // 固定资产列表,存储本账套下所有的固定资产信息 | permanents: [], // 固定资产列表,存储本账套下所有的固定资产信息 | ||||
| typeVisible: false, | |||||
| operation_type: [], | |||||
| }; | }; | ||||
| }, | }, | ||||
| created() { | created() { | ||||
| @@ -129,6 +138,9 @@ | |||||
| this.houseGetDicts("use_type").then((response) => { | this.houseGetDicts("use_type").then((response) => { | ||||
| this.useTypeOptions = response.data; | this.useTypeOptions = response.data; | ||||
| }); | }); | ||||
| this.houseGetDicts("operation_type").then((response) => { | |||||
| this.operation_type = response.data; | |||||
| }); | |||||
| }, | }, | ||||
| methods: { | methods: { | ||||
| openMap(id, theGeom,index){ | openMap(id, theGeom,index){ | ||||
| @@ -288,7 +300,23 @@ | |||||
| goAdd(){ | goAdd(){ | ||||
| this.$router.push('/sunVillage_info/fixedAssetsAdd') | this.$router.push('/sunVillage_info/fixedAssetsAdd') | ||||
| }, | }, | ||||
| openAssetType() { | |||||
| this.typeVisible = true; | |||||
| }, | |||||
| refresh() { | |||||
| this.queryParams.pageNum = 1; | |||||
| this.listLength = 0; | |||||
| this.applicationList = []; | |||||
| this.finished = false; | |||||
| this.getList(); | |||||
| }, | |||||
| }, | }, | ||||
| computed: { | |||||
| searchPlaceholder() { | |||||
| let typeName = this.operation_type.find((x) => x.dictValue == this.queryParams.operationType); | |||||
| return '搜索' + (typeName ? `${typeName.dictLabel}资产` : ''); | |||||
| }, | |||||
| } | |||||
| } | } | ||||
| </script> | </script> | ||||
| <style scoped lang="scss"> | <style scoped lang="scss"> | ||||
| @@ -340,23 +368,38 @@ | |||||
| background: #fff; | background: #fff; | ||||
| display: flex; | display: flex; | ||||
| border:2px solid #3494ff; | border:2px solid #3494ff; | ||||
| padding-right: 35px; | |||||
| padding-right: 20px; | |||||
| align-items: center; | align-items: center; | ||||
| position: relative; | |||||
| .icon{ | .icon{ | ||||
| width: 30px; | width: 30px; | ||||
| height: 30px; | height: 30px; | ||||
| background: url('../../assets/images/sunVillage_info/fixedAssets_icon_1.png') no-repeat; | background: url('../../assets/images/sunVillage_info/fixedAssets_icon_1.png') no-repeat; | ||||
| background-size: 100% 100%; | background-size: 100% 100%; | ||||
| display: block; | |||||
| display: inline-block; | |||||
| margin:0 8px 0 26px; | margin:0 8px 0 26px; | ||||
| } | |||||
| .ipt{ | |||||
| flex: 1; | |||||
| font-size: 26px; | |||||
| background: none; | |||||
| border:0 none; | |||||
| line-height: 59px; | |||||
| } | |||||
| position: absolute; | |||||
| left: 0; | |||||
| bottom: 0.15rem; | |||||
| } | |||||
| .ipt{ | |||||
| flex: 1; | |||||
| font-size: 26px; | |||||
| background: none; | |||||
| border:0 none; | |||||
| line-height: 59px; | |||||
| display: inline-block; | |||||
| margin-left: 64px; | |||||
| } | |||||
| .filter-icon { | |||||
| font-weight: bold; | |||||
| font-size: .4rem; | |||||
| width: .6rem; | |||||
| text-align: center; | |||||
| position: absolute; | |||||
| right: 0.2rem; | |||||
| bottom: 0.15rem; | |||||
| } | |||||
| } | } | ||||
| .total{ | .total{ | ||||
| flex: 1; | flex: 1; | ||||
| @@ -209,7 +209,7 @@ | |||||
| <van-field label="净残值(元)" input-align="right" :border="false"> | <van-field label="净残值(元)" input-align="right" :border="false"> | ||||
| <template #input> | <template #input> | ||||
| <van-stepper v-model="form.netSalvage" input-width="100" min="0.00" :decimal-length="2" @change="changeNetSalvage" /> | |||||
| <van-stepper v-model="form.netSalvage" input-width="100" min="0.00" :decimal-length="2" @changexxx="changeNetSalvage" /> | |||||
| </template> | </template> | ||||
| </van-field> | </van-field> | ||||
| @@ -262,7 +262,12 @@ | |||||
| <van-stepper v-model="form.depreciationYears" input-width="100" min="0" @change="changeDepreciationYears" /> | <van-stepper v-model="form.depreciationYears" input-width="100" min="0" @change="changeDepreciationYears" /> | ||||
| </template> | </template> | ||||
| </van-field> | </van-field> | ||||
| <van-field readonly v-model="form.depreciationValue" label="累计折旧(元)" placeholder="0" input-align="right" :border="false" @change="changeDepreciationValue" /> | |||||
| <van-field v-model="form.depreciationValue" label="累计折旧(元)" placeholder="0" input-align="right" :border="false" @change="changeDepreciationValue" | |||||
| > | |||||
| <template #button> | |||||
| <van-button size="small" type="primary" round @click="calcDepreciationValue" native-type="button">重新计算</van-button> | |||||
| </template> | |||||
| </van-field> | |||||
| </div> | </div> | ||||
| <div style="margin: 16px auto;width: 50%;"> | <div style="margin: 16px auto;width: 50%;"> | ||||
| @@ -282,7 +287,6 @@ | |||||
| minDate:new Date(1900,1,1), | minDate:new Date(1900,1,1), | ||||
| applicationList:[], | applicationList:[], | ||||
| applicationListSecond:[], | applicationListSecond:[], | ||||
| assetStatusOptions:[], | |||||
| form:{ | form:{ | ||||
| assetType:'151001', | assetType:'151001', | ||||
| operationType:'1', | operationType:'1', | ||||
| @@ -433,18 +437,42 @@ | |||||
| }, | }, | ||||
| // 累计折旧变动监听 | // 累计折旧变动监听 | ||||
| changeDepreciationValue(val) { | changeDepreciationValue(val) { | ||||
| if (this.form.originalValue != null) { | |||||
| // 净值 = 原值-累计折旧 | |||||
| this.form.netValue = this.form.originalValue - val; | |||||
| } | |||||
| if (val == null) | |||||
| return; | |||||
| // 每期折旧额 = (原值-净残值)/ 预计使用期数 | |||||
| let depreciation = this.form.originalValue - this.form.netSalvage; | |||||
| depreciation -= val; | |||||
| let periods = this.form.expectedYears - (this.form.depreciationYears || 0); | |||||
| if(periods > 0 && depreciation > 0) | |||||
| this.form.perYearDepreciationValue = (depreciation / periods).toFixed(2); | |||||
| else | |||||
| this.form.perYearDepreciationValue = 0; | |||||
| // 净值 = 原值-累计折旧 | |||||
| this.form.netValue = (this.form.originalValue || 0) - val; | |||||
| }, | }, | ||||
| // 残值率变动监听 | // 残值率变动监听 | ||||
| changeResidualsRate(val) { | changeResidualsRate(val) { | ||||
| if (this.form.originalValue != null) { | |||||
| // 净残值 = 原值*残值率 | |||||
| this.form.netSalvage = (this.form.originalValue * val) / 100; | |||||
| if (val == null) | |||||
| return; | |||||
| // 净残值 = 原值*残值率 | |||||
| this.form.netSalvage = val > 0 ? ((this.form.originalValue * val) / 100).toFixed(2) : 0; | |||||
| if (this.form.expectedYears > 0) { | |||||
| // 每期折旧额 = (原值-净残值)/ 预计使用期数 | |||||
| let depreciation = this.form.originalValue - (this.form.netSalvage || 0); | |||||
| depreciation -= (this.form.depreciationValue || 0); | |||||
| let periods = this.form.expectedYears - (this.form.depreciationYears || 0); | |||||
| if(periods > 0 && depreciation > 0) | |||||
| this.form.perYearDepreciationValue = (depreciation / periods).toFixed(2); | |||||
| else | |||||
| this.form.perYearDepreciationValue = 0; | |||||
| } | } | ||||
| else | |||||
| this.form.perYearDepreciationValue = 0; | |||||
| }, | }, | ||||
| // 净残值变动监听 | // 净残值变动监听 | ||||
| @@ -458,18 +486,36 @@ | |||||
| // 预计使用年数变动监听 | // 预计使用年数变动监听 | ||||
| changeExpectedYears(val) { | changeExpectedYears(val) { | ||||
| if (this.form.originalValue != null && this.form.netSalvage != null) { | |||||
| // 每年折旧额:(原值-净残值)/ 预计使用年数 | |||||
| this.form.perYearDepreciationValue = | |||||
| (this.form.originalValue - this.form.netSalvage) / val; | |||||
| } | |||||
| if (val == null) | |||||
| return; | |||||
| // 每期折旧额 = (原值-净残值)/ 预计使用期数 | |||||
| let depreciation = this.form.originalValue - this.form.netSalvage; | |||||
| depreciation -= this.form.depreciationValue; | |||||
| let periods = val - (this.form.depreciationYears || 0); | |||||
| if(periods > 0 && depreciation > 0) | |||||
| this.form.perYearDepreciationValue = (depreciation / periods).toFixed(2); | |||||
| else | |||||
| this.form.perYearDepreciationValue = 0; | |||||
| }, | }, | ||||
| // 已折旧年数变动监听 | // 已折旧年数变动监听 | ||||
| changeDepreciationYears(val) { | changeDepreciationYears(val) { | ||||
| if (this.form.perYearDepreciationValue != null) { | |||||
| this.form.depreciationValue = val * this.form.perYearDepreciationValue; | |||||
| if (val == null) | |||||
| return; | |||||
| //if(!this.form.depreciationValueManual) | |||||
| { | |||||
| if (this.form.perYearDepreciationValue > 0) { | |||||
| // 累计折旧 = 已折旧期数 * 每期折旧额 | |||||
| this.form.depreciationValue = val * this.form.perYearDepreciationValue; | |||||
| } | |||||
| else | |||||
| this.form.depreciationValue = 0; | |||||
| } | } | ||||
| // 净值 = 原值-累计折旧 | |||||
| this.form.netValue = (this.form.originalValue || 0) - (this.form.depreciationValue || 0); | |||||
| }, | }, | ||||
| onSubmit(){ | onSubmit(){ | ||||
| addPermanent(this.form).then((response) => { | addPermanent(this.form).then((response) => { | ||||
| @@ -480,7 +526,15 @@ | |||||
| },2000) | },2000) | ||||
| } | } | ||||
| }); | }); | ||||
| } | |||||
| }, | |||||
| calcDepreciationValue() { | |||||
| this.form.depreciationValue = 0; | |||||
| const depreciationYears = this.form.depreciationYears; | |||||
| this.form.depreciationYears = 0; | |||||
| this.changeOriginalValue(this.form.originalValue); | |||||
| this.form.depreciationYears = depreciationYears; | |||||
| this.changeDepreciationYears(depreciationYears); | |||||
| }, | |||||
| }, | }, | ||||
| } | } | ||||
| </script> | </script> | ||||
| @@ -143,7 +143,7 @@ | |||||
| let seconds = 3600; | let seconds = 3600; | ||||
| let expires = new Date(new Date() * 1 + seconds * 1000); | let expires = new Date(new Date() * 1 + seconds * 1000); | ||||
| getFamilyMemberList({idcard:this.formData.idcard,familyStatus:"02"}).then(res => { | |||||
| getFamilyMemberList({idcard:this.formData.idcard/*,familyStatus:"02"*/}).then(res => { | |||||
| const farmerCode = res.rows[0].farmerCode; | const farmerCode = res.rows[0].farmerCode; | ||||
| Cookies.set("farmerCode",farmerCode, { expires: 30 }); | Cookies.set("farmerCode",farmerCode, { expires: 30 }); | ||||
| Cookies.set("user", response.data, { expires: expires }); | Cookies.set("user", response.data, { expires: expires }); | ||||
| @@ -44,13 +44,9 @@ | |||||
| </template> | </template> | ||||
| <script> | <script> | ||||
| import { getCodeImg, getSmsCode } from "@/api/login"; | |||||
| import { checkFarmer, allowFaceVerify } from "@/api/sunVillage_info/fixedAssets"; | |||||
| import { getFamilyMemberList } from "@/api/sunVillage_info/homestead/familyMember"; | |||||
| import { allowFaceVerify } from "@/api/sunVillage_info/fixedAssets"; | |||||
| import Cookies from "js-cookie"; | import Cookies from "js-cookie"; | ||||
| import { encrypt, decrypt } from "../../utils/jsencrypt"; | |||||
| //引用wx sdk | //引用wx sdk | ||||
| import wx from "weixin-js-sdk"; | |||||
| import {farmerLogin} from "@/api/register"; | import {farmerLogin} from "@/api/register"; | ||||
| export default { | export default { | ||||
| name: "loginFarmer", | name: "loginFarmer", | ||||
| @@ -8,10 +8,14 @@ | |||||
| <div class="search_info"> | <div class="search_info"> | ||||
| <div class="search_block"> | <div class="search_block"> | ||||
| <i class="icon"></i> | <i class="icon"></i> | ||||
| <input type="text" class="ipt" v-model="queryParams.name" placeholder="搜索" @input="getSearchList"> | |||||
| <!-- --> | |||||
| <input type="text" class="ipt" v-model="queryParams.name" :placeholder="searchPlaceholder" @input="getSearchList"> | |||||
| <selector :visible.sync="typeVisible" v-model="queryParams.resourceType" :columns="resource_type" clear value-key="dictValue" label-key="dictLabel" @confirm="refresh" @cancel="refresh"> | |||||
| <template> | |||||
| <van-icon name="filter-o" color="#1989fa" class="filter-icon" @click="openResourceType" /> | |||||
| </template> | |||||
| </selector> | |||||
| </div> | </div> | ||||
| <div class="total">共{{listLength}}个资产</div> | |||||
| <div class="total">共{{listLength}}个资源</div> | |||||
| </div> | </div> | ||||
| <div class="list_main"> | <div class="list_main"> | ||||
| <van-list | <van-list | ||||
| @@ -80,9 +84,10 @@ | |||||
| } from "@/api/sunVillage_info/fixedAssets"; | } from "@/api/sunVillage_info/fixedAssets"; | ||||
| import request from '@/utils/request' | import request from '@/utils/request' | ||||
| import MapGisLine from "@/components/Map/MapGisLine"; | import MapGisLine from "@/components/Map/MapGisLine"; | ||||
| import Selector from "@/components/common/Selector.vue"; | |||||
| export default { | export default { | ||||
| name: "certificateList", | name: "certificateList", | ||||
| components: { MapGisLine,}, | |||||
| components: {Selector, MapGisLine,}, | |||||
| data() { | data() { | ||||
| return { | return { | ||||
| theGeom:'', | theGeom:'', | ||||
| @@ -103,7 +108,8 @@ | |||||
| orderByColumn:'createTime', | orderByColumn:'createTime', | ||||
| isAsc:'desc', | isAsc:'desc', | ||||
| translate_dict:1, | translate_dict:1, | ||||
| name:'' | |||||
| name:'', | |||||
| resourceType: null, | |||||
| }, | }, | ||||
| uploadFiles1:[], | uploadFiles1:[], | ||||
| projectId:'', | projectId:'', | ||||
| @@ -111,7 +117,9 @@ | |||||
| showBtn:true, | showBtn:true, | ||||
| listMap: 0, | listMap: 0, | ||||
| resourceId: null, // 资源ID,记录当前资源的ID | resourceId: null, // 资源ID,记录当前资源的ID | ||||
| resourceList: [] // 资源列表,存储本账套下所有的资源信息 | |||||
| resourceList: [], // 资源列表,存储本账套下所有的资源信息 | |||||
| typeVisible: false, | |||||
| resource_type: [], | |||||
| }; | }; | ||||
| }, | }, | ||||
| created() { | created() { | ||||
| @@ -124,6 +132,9 @@ | |||||
| this.houseGetDicts("use_type").then((response) => { | this.houseGetDicts("use_type").then((response) => { | ||||
| this.useTypeOptions = response.data; | this.useTypeOptions = response.data; | ||||
| }); | }); | ||||
| this.houseGetDicts("resource_type").then((response) => { | |||||
| this.resource_type = response.data; | |||||
| }); | |||||
| }, | }, | ||||
| methods: { | methods: { | ||||
| saveGeom(){ | saveGeom(){ | ||||
| @@ -276,7 +287,23 @@ | |||||
| goAdd(){ | goAdd(){ | ||||
| this.$router.push('/sunVillage_info/resourceAdd') | this.$router.push('/sunVillage_info/resourceAdd') | ||||
| }, | }, | ||||
| openResourceType() { | |||||
| this.typeVisible = true; | |||||
| }, | |||||
| refresh() { | |||||
| this.queryParams.pageNum = 1; | |||||
| this.listLength = 0; | |||||
| this.applicationList = []; | |||||
| this.finished = false; | |||||
| this.getList(); | |||||
| }, | |||||
| }, | }, | ||||
| computed: { | |||||
| searchPlaceholder() { | |||||
| let typeName = this.resource_type.find((x) => x.dictValue == this.queryParams.resourceType); | |||||
| return '搜索' + (typeName ? typeName.dictLabel : ''); | |||||
| }, | |||||
| } | |||||
| } | } | ||||
| </script> | </script> | ||||
| <style scoped lang="scss"> | <style scoped lang="scss"> | ||||
| @@ -328,23 +355,38 @@ | |||||
| background: #fff; | background: #fff; | ||||
| display: flex; | display: flex; | ||||
| border:2px solid #3494ff; | border:2px solid #3494ff; | ||||
| padding-right: 35px; | |||||
| padding-right: 20px; | |||||
| align-items: center; | align-items: center; | ||||
| position: relative; | |||||
| .icon{ | .icon{ | ||||
| width: 30px; | width: 30px; | ||||
| height: 30px; | height: 30px; | ||||
| background: url('../../assets/images/sunVillage_info/fixedAssets_icon_1.png') no-repeat; | background: url('../../assets/images/sunVillage_info/fixedAssets_icon_1.png') no-repeat; | ||||
| background-size: 100% 100%; | background-size: 100% 100%; | ||||
| display: block; | |||||
| display: inline-block; | |||||
| margin:0 8px 0 26px; | margin:0 8px 0 26px; | ||||
| position: absolute; | |||||
| left: 0; | |||||
| bottom: 0.15rem; | |||||
| } | } | ||||
| .ipt{ | |||||
| flex: 1; | |||||
| font-size: 26px; | |||||
| background: none; | |||||
| border:0 none; | |||||
| line-height: 59px; | |||||
| } | |||||
| .ipt{ | |||||
| flex: 1; | |||||
| font-size: 26px; | |||||
| background: none; | |||||
| border:0 none; | |||||
| line-height: 59px; | |||||
| display: inline-block; | |||||
| margin-left: 64px; | |||||
| } | |||||
| .filter-icon { | |||||
| font-weight: bold; | |||||
| font-size: .4rem; | |||||
| width: .6rem; | |||||
| text-align: center; | |||||
| position: absolute; | |||||
| right: 0.2rem; | |||||
| bottom: 0.15rem; | |||||
| } | |||||
| } | } | ||||
| .total{ | .total{ | ||||
| flex: 1; | flex: 1; | ||||