| @@ -12,7 +12,7 @@ module.exports = { | |||
| proxyTable: { | |||
| "/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://localhost: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>--> | |||
| <!--<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>--> | |||
| <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.drawingResetMap" type="button" class="ant-btn ant-btn-red" value="重置图层"/> | |||
| </div> | |||
| @@ -31,6 +32,7 @@ export default { | |||
| uuidMap: this.guidProduct(), | |||
| drawingPolygonMap: this.guidProduct(), | |||
| drawingResetMap: this.guidProduct(), | |||
| locationMap: this.guidProduct(), | |||
| mapGeoServerUrl: "", // geoserver地址 | |||
| villageBorderLayerName: "", // 乡镇边界图层名称 | |||
| }; | |||
| @@ -72,6 +74,56 @@ export default { | |||
| 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() { | |||
| //加载地图编辑 | |||
| @@ -297,6 +349,26 @@ export default { | |||
| 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{ | |||
| //this.closeMoule = null; | |||
| document.getElementById(that.uuidMap).innerHTML = ''; | |||
| @@ -326,7 +398,7 @@ export default { | |||
| }); | |||
| //获取坐标是否存在 | |||
| var Zb; | |||
| getQueryLand().then((response) => { | |||
| this.getCurrentLocation((response) => { | |||
| if (response.code == 200) { | |||
| let InsertCode = response.data; | |||
| if (InsertCode != null) { | |||
| @@ -442,6 +514,26 @@ export default { | |||
| //that.closeMoule = null; | |||
| 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=this.uuidMap style="width: 100%;height: 100%"></div> | |||
| <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="drawRemove" 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(), | |||
| drawPolygonMap: this.guidProduct(), | |||
| drawResetMap: this.guidProduct(), | |||
| locationMap: this.guidProduct(), | |||
| mapGeoServerUrl: "", // geoserver地址 | |||
| villageBorderLayerName: "", // 乡镇边界图层名称 | |||
| }; | |||
| @@ -68,6 +70,56 @@ | |||
| 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() { | |||
| //加载地图编辑 | |||
| @@ -337,6 +389,26 @@ | |||
| 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{ | |||
| this.closeMoule = null; | |||
| @@ -368,7 +440,7 @@ | |||
| //获取坐标是否存在 | |||
| var Zb; | |||
| //开始定位当前位置 | |||
| getQueryLand().then(res => { | |||
| this.getCurrentLocation(res => { | |||
| if (res.code == 200) { | |||
| let lat = res.data.lat; | |||
| let lng = res.data.lng; | |||
| @@ -519,6 +591,26 @@ | |||
| that.closeMoule = null; | |||
| 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_block"> | |||
| <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 class="total">共{{listLength}}个资产</div> | |||
| </div> | |||
| @@ -85,9 +89,11 @@ | |||
| } from "@/api/sunVillage_info/fixedAssets"; | |||
| import request from '@/utils/request' | |||
| import MapGisTag from "@/components/Map/MapGisTagDTGCopy"; | |||
| import Selector from "@/components/common/Selector.vue"; | |||
| export default { | |||
| name: "certificateList", | |||
| components: { | |||
| Selector, | |||
| MapGisTag | |||
| }, | |||
| data() { | |||
| @@ -107,6 +113,7 @@ | |||
| orderByColumn:'createTime', | |||
| isAsc:'desc', | |||
| name:'', | |||
| operationType: null, | |||
| }, | |||
| uploadFiles1:[], | |||
| projectId:'', | |||
| @@ -117,6 +124,8 @@ | |||
| listMap:0, | |||
| permanentId: null, // 固定资产ID | |||
| permanents: [], // 固定资产列表,存储本账套下所有的固定资产信息 | |||
| typeVisible: false, | |||
| operation_type: [], | |||
| }; | |||
| }, | |||
| created() { | |||
| @@ -129,6 +138,9 @@ | |||
| this.houseGetDicts("use_type").then((response) => { | |||
| this.useTypeOptions = response.data; | |||
| }); | |||
| this.houseGetDicts("operation_type").then((response) => { | |||
| this.operation_type = response.data; | |||
| }); | |||
| }, | |||
| methods: { | |||
| openMap(id, theGeom,index){ | |||
| @@ -288,7 +300,23 @@ | |||
| goAdd(){ | |||
| 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> | |||
| <style scoped lang="scss"> | |||
| @@ -340,23 +368,38 @@ | |||
| background: #fff; | |||
| display: flex; | |||
| border:2px solid #3494ff; | |||
| padding-right: 35px; | |||
| padding-right: 20px; | |||
| align-items: center; | |||
| position: relative; | |||
| .icon{ | |||
| width: 30px; | |||
| height: 30px; | |||
| background: url('../../assets/images/sunVillage_info/fixedAssets_icon_1.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| display: block; | |||
| display: inline-block; | |||
| 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{ | |||
| flex: 1; | |||
| @@ -209,7 +209,7 @@ | |||
| <van-field label="净残值(元)" input-align="right" :border="false"> | |||
| <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> | |||
| </van-field> | |||
| @@ -262,7 +262,12 @@ | |||
| <van-stepper v-model="form.depreciationYears" input-width="100" min="0" @change="changeDepreciationYears" /> | |||
| </template> | |||
| </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 style="margin: 16px auto;width: 50%;"> | |||
| @@ -282,7 +287,6 @@ | |||
| minDate:new Date(1900,1,1), | |||
| applicationList:[], | |||
| applicationListSecond:[], | |||
| assetStatusOptions:[], | |||
| form:{ | |||
| assetType:'151001', | |||
| operationType:'1', | |||
| @@ -433,18 +437,42 @@ | |||
| }, | |||
| // 累计折旧变动监听 | |||
| 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) { | |||
| 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) { | |||
| 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) { | |||
| 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(){ | |||
| addPermanent(this.form).then((response) => { | |||
| @@ -480,7 +526,15 @@ | |||
| },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> | |||
| @@ -143,7 +143,7 @@ | |||
| let seconds = 3600; | |||
| 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; | |||
| Cookies.set("farmerCode",farmerCode, { expires: 30 }); | |||
| Cookies.set("user", response.data, { expires: expires }); | |||
| @@ -44,13 +44,9 @@ | |||
| </template> | |||
| <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 { encrypt, decrypt } from "../../utils/jsencrypt"; | |||
| //引用wx sdk | |||
| import wx from "weixin-js-sdk"; | |||
| import {farmerLogin} from "@/api/register"; | |||
| export default { | |||
| name: "loginFarmer", | |||
| @@ -8,10 +8,14 @@ | |||
| <div class="search_info"> | |||
| <div class="search_block"> | |||
| <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 class="total">共{{listLength}}个资产</div> | |||
| <div class="total">共{{listLength}}个资源</div> | |||
| </div> | |||
| <div class="list_main"> | |||
| <van-list | |||
| @@ -80,9 +84,10 @@ | |||
| } from "@/api/sunVillage_info/fixedAssets"; | |||
| import request from '@/utils/request' | |||
| import MapGisLine from "@/components/Map/MapGisLine"; | |||
| import Selector from "@/components/common/Selector.vue"; | |||
| export default { | |||
| name: "certificateList", | |||
| components: { MapGisLine,}, | |||
| components: {Selector, MapGisLine,}, | |||
| data() { | |||
| return { | |||
| theGeom:'', | |||
| @@ -103,7 +108,8 @@ | |||
| orderByColumn:'createTime', | |||
| isAsc:'desc', | |||
| translate_dict:1, | |||
| name:'' | |||
| name:'', | |||
| resourceType: null, | |||
| }, | |||
| uploadFiles1:[], | |||
| projectId:'', | |||
| @@ -111,7 +117,9 @@ | |||
| showBtn:true, | |||
| listMap: 0, | |||
| resourceId: null, // 资源ID,记录当前资源的ID | |||
| resourceList: [] // 资源列表,存储本账套下所有的资源信息 | |||
| resourceList: [], // 资源列表,存储本账套下所有的资源信息 | |||
| typeVisible: false, | |||
| resource_type: [], | |||
| }; | |||
| }, | |||
| created() { | |||
| @@ -124,6 +132,9 @@ | |||
| this.houseGetDicts("use_type").then((response) => { | |||
| this.useTypeOptions = response.data; | |||
| }); | |||
| this.houseGetDicts("resource_type").then((response) => { | |||
| this.resource_type = response.data; | |||
| }); | |||
| }, | |||
| methods: { | |||
| saveGeom(){ | |||
| @@ -276,7 +287,23 @@ | |||
| goAdd(){ | |||
| 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> | |||
| <style scoped lang="scss"> | |||
| @@ -328,23 +355,38 @@ | |||
| background: #fff; | |||
| display: flex; | |||
| border:2px solid #3494ff; | |||
| padding-right: 35px; | |||
| padding-right: 20px; | |||
| align-items: center; | |||
| position: relative; | |||
| .icon{ | |||
| width: 30px; | |||
| height: 30px; | |||
| background: url('../../assets/images/sunVillage_info/fixedAssets_icon_1.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| display: block; | |||
| display: inline-block; | |||
| 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{ | |||
| flex: 1; | |||