@@ -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; | ||||