From 082613d446e29e4ec1c16bfaa52345106a498b23 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Tue, 08 Nov 2022 09:03:49 +0800
Subject: [PATCH] 农事操作隐藏后四个,地图模式2d改为3d
---
src/views/wel/land.vue | 488 ++++++++++++++++++++++++++++--------------------------
1 files changed, 252 insertions(+), 236 deletions(-)
diff --git a/src/views/wel/land.vue b/src/views/wel/land.vue
index 34994ea..a4e7aab 100644
--- a/src/views/wel/land.vue
+++ b/src/views/wel/land.vue
@@ -5,311 +5,307 @@
:append-to-body="true"
:close-on-click-modal="false"
width="60%"
+ top="10vh"
:visible.sync="visible"
>
<avue-form ref="form" v-model="form" :option="option" @submit="submit">
+ <!-- 地图插入 -->
+ <template slot-scope="{ type, disabled }" slot="line">
+ <!-- <getMapDataInThere
+ ref="getMapData"
+ id="getMapData"
+ @setMapData="setMapData"
+ ></getMapDataInThere> -->
+ </template>
</avue-form>
+
+ <div class="map">
+ <iframe :src="url" frameborder="0" width="100%" height="100%"></iframe>
+ </div>
</el-dialog>
</template>
<script>
-
-import { mapState } from "vuex";
+import { mapGetters } from "vuex";
import { getLandList } from "@/api/land/land";
-import { getUserList } from "@/api/system/user";
+import { getDetail } from "@/api/farm/farm";
import { getStrainList } from "@/api/farmplant/strain";
-import { save } from "@/api/farmplant/recovery";
+import { add } from "@/api/land/land";
+import getMapDataInThere from "./getMapDataInThere.vue";
+import { getFarmList } from "@/api/farm/farm";
export default {
+ components: {
+ getMapDataInThere,
+ },
data() {
return {
- title:"采收/捕捞",
+ title: "新增地块",
form: {},
option: {
emptyBtn: false,
submitText: "保存",
+ submitBtn: false,
gutter: 30,
column: [
{
- label: "采收品种",
- prop: "strainId",
- span: 12,
+ label: "地块名称",
+ prop: "landName",
+ maxlength:30,
+ rules: [
+ {
+ required: true,
+ message: "请输入地块名称",
+ trigger: ["blur","change"],
+ },
+ ],
+ },
+ {
+ label: "所属农场",
+ prop: "farmId",
type: "tree",
dicData: [],
props: {
- label: "strainName",
- value: "id"
- },
- labelWidth: 145,
- rules: [
- {
- required: true,
- message: "请输入采收品种",
- trigger: "blur",
- },
- ],
- disabled:true,
- },
- {
- label: "采收地块",
- span: 12,
- labelWidth: 145,
- width: 110,
- prop: "landId",
- type:"tree",
- dicData: [],
- props: {
- label: "landName",
- value: "id"
- },
- rules: [
- {
- required: true,
- message: "请选择采收地块",
- trigger: "click",
- },
- ],
- },
- {
- label: "采收重量",
- prop: "weight",
- tip: '公斤',
- span: 12,
- labelWidth: 145,
- width: 110,
- controls:false,
- type:'number',
- rules: [
- {
- required: true,
- message: "请输入采收重量 公斤",
- trigger: "click",
- },
- ],
- },
- {
- label: "作业方式",
- prop: "jobWay",
- span: 12,
- labelWidth: 145,
- width: 110,
- type: "select",
- value:"0",
- dicData:[
- {
- label:"人工",
- value:"0"
- },
- {
- label:"机械",
- value:"1"
- },
- ],
- rules: [
- {
- required: true,
- message: "请选择作业方式",
- trigger: "click",
- },
- ],
- },
- {
- label: "采收时间",
- prop: "time",
- span: 12,
- labelWidth: 145,
- width: 110,
- type: "datetime",
- format: "yyyy-MM-dd HH:mm",
- valueFormat: "yyyy-MM-dd HH:mm",
- rules: [
- {
- required: true,
- message: "请选择采收时间",
- trigger: "click",
- },
- ],
- },
- // {
- // label: "采收产品",
- // prop: "farmArea",
- // span: 12,
- // labelWidth: 145,
- // width: 110,
- // rules: [
- // {
- // required: true,
- // message: "请输入采收产品",
- // trigger: "click",
- // },
- // ],
- // },
- {
- label: "操作人",
- prop: "operator",
- type: "tree",
- dicData: [],
- props: {
- label: "realName",
+ label: "farmName",
value: "id",
},
- span: 12,
- labelWidth: 145,
- width: 110,
+ disabled: true,
+ slot: true,
rules: [
{
required: true,
- message: "请输入操作人",
+ message: "请选择所属农场",
trigger: "click",
},
],
},
{
- label: "产品等级",
- prop: "leaves",
- span: 12,
- labelWidth: 145,
- width: 110,
- value:"0",
+ label: "地块类型",
type: "select",
- dicData:[
- {
- label:"一等品",
- value:"0"
- },
- {
- label:"二等品",
- value:"1"
- },
- {
- label:"三等品",
- value:"2"
- },
- {
- label:"四等品",
- value:"3"
- },
- {
- label:"五等品",
- value:"4"
- },
- ],
+ prop: "landType",
+ dicUrl: "/api/blade-system/dict-biz/dictionary?code=land",
+ props: {
+ label: "dictValue",
+ value: "dictKey",
+ },
+ dataType: "number",
rules: [
{
required: true,
- message: "请输入产品等级",
- trigger: "click",
+ message: "请选择地块类型",
+ trigger: ["blur","change"],
},
],
},
{
- label: "备注",
- prop: "remark",
- span: 24,
- type:"textarea",
- labelWidth: 145,
- width: 110,
+ label: "面积",
+ prop: "landArea",
rules: [
{
- required: false,
- message: "请输入备注",
- trigger: "click",
+ required: true,
+ message: "请输入面积",
+ trigger: ["blur","change"],
},
],
+ span: 6,
+ type: "number",
+ controls: false,
},
+ {
+ label: "面积单位",
+ prop: "landUnit",
+ type: "select",
+ value: "0",
+ dicUrl: "/api/blade-system/dict-biz/dictionary?code=landunit",
+ props: {
+ label: "dictValue",
+ value: "dictKey",
+ },
+ rules: [
+ {
+ required: true,
+ message: "请选择面积单位",
+ trigger: ["blur","change"],
+ },
+ ],
+ dataType: "number",
+ span: 6,
+ },
+ // {
+ // label: "地块展示",
+ // labelWidth: "0",
+ // prop: "line",
+ // className: "mapClass",
+ // span: 24,
+ // formslot: true,
+ // }
],
},
+ url: "",
+ landUrl: "",
+ polygon: [],
+ area: "",
visible: false,
};
},
+ created() {
+ this.url =
+ this.drawMapUrlBase + "/base?type=1&lng=112&lat=24&status=manage";
+ },
+ watch: {
+ landUrl: {
+ handler(newVal, oldVal) {
+ if (newVal) {
+ this.$refs.form.submit();
+ }
+ },
+ },
+ "form.landName": {
+ handler(newVal, oldVal) {
+ this.landUrl = "";
+ },
+ },
+ "form.landType": {
+ handler(newVal, oldVal) {
+ this.landUrl = "";
+ },
+ },
+ "form.landArea": {
+ handler(newVal, oldVal) {
+ this.landUrl = "";
+ },
+ },
+ "form.landUnit": {
+ handler(newVal, oldVal) {
+ this.landUrl = "";
+ },
+ },
+ },
computed: {
- ...mapState({
- userInfo: (state) => state.user.userInfo,
- }),
+ ...mapGetters([
+ "userInfo",
+ "permission",
+ "polygons",
+ "$farmId",
+ "drawMapUrlBase",
+ ]),
+ },
+ mounted() {
+ this.initData(this.userInfo.tenant_id);
+ window.addEventListener("message", this.handleMessage);
},
methods: {
- //计算当前时间
- getNowTime(){
- var date = new Date();
- //年 getFullYear():四位数字返回年份
- var year = date.getFullYear(); //getFullYear()代替getYear()
- //月 getMonth():0 ~ 11
- var month = date.getMonth() + 1;
- //日 getDate():(1 ~ 31)
- var day = date.getDate();
- //时 getHours():(0 ~ 23)
- var hour = date.getHours();
- //分 getMinutes(): (0 ~ 59)
- var minute = date.getMinutes();
- //秒 getSeconds():(0 ~ 59)
- var second = date.getSeconds();
- //赋值
- this.form['time'] = year + '-'
- + this.addZero(month) + '-'
- + this.addZero(day) + ' '
- + this.addZero(hour) + ':'
- + this.addZero(minute);
+ handleMessage(event) {
+ if (Number.isFinite(event.data)) {
+ this.form.landArea = (event.data * 0.0015).toFixed(2);
+ }
+
+ if (Object.prototype.toString.call(event.data) === "[object Object]") {
+ var obj = event.data;
+ this.polygon = obj.polygons;
+ this.landUrl = obj.url;
+ }
},
- //小于10的拼接上0字符串
- addZero(s) {
- return s < 10 ? ('0' + s) : s;
+ initData(tenantId) {
+ const data = {
+ deptId: this.userInfo.dept_id,
+ };
+ getFarmList(data).then((res) => {
+ const column = this.findObject(this.option.column, "farmId");
+ column.dicData = res.data.data;
+ });
},
//初始化
- init(data) {
- this.form = {
- farmPlantId:data.id,
- strainId:data.strainId,
- landId:data.landId,
- weight:data.weight,
- leaves:'0',
- jobWay:data.jobWay,
- operator:data.operator,
- remark:''
- };
- this.form['operator'] = this.userInfo.user_id;
+ init() {
//计算当前时间
- this.getNowTime();
+ this.form.landArea = 0
this.visible = true;
- var that = this;
- //获取农地数据
- getLandList(this.userInfo.user_id).then((res) => {
- if (res.data.code == 200) {
- var landIdcolumn = that.findObject(that.option.column, "landId");
- that.landList = res.data.data;
- landIdcolumn.dicData = res.data.data;
- }
- });
-
- //获取操作人
- const user = {
- tenantId: this.userInfo.tenant_id,
- };
- getUserList(user).then((res) => {
- if (res.data.code == 200) {
- var operatorcolumn = that.findObject(that.option.column, "operator");
- operatorcolumn.dicData = res.data.data;
- }
- });
- //获取农产品数据
- getStrainList(0).then((res)=>{
- if(res.data.code==200){
- var strainId = that.findObject(that.option.column,"strainId");
- strainId.dicData = res.data.data;
- }
+ this.$nextTick(()=>{
+ this.$refs.form.clearValidate()
+ })
+ this.form.farmId = this.$farmId;
+ this.form.landName = ""
+ this.form.landType = ""
+ getDetail(this.form.farmId).then(res=>{
+ this.farmInfo = res.data.data
+ this.url = this.drawMapUrlBase + "/base?type=1&lng=112&lat=24&status=manage&longitude="+this.farmInfo.longitude+"&latitude="+this.farmInfo.latitude;
})
},
// 表单提交
- submit(row,loading,done) {
+ submit(row, done) {
var that = this;
- row.time = row.time + ":00";
- save(row).then(
+
+ // if (this.polygons.length == 0) {
+ // //没有面的数据
+ // this.$refs.getMapData.isCheck = true;
+ // done();
+ // } else {
+ // //如果有值,空间坐标转换
+ // let pol = this.polygons;
+ // let polLength = this.polygons.length - 1;
+ // let usePolygons = "";
+ // for (let k in pol) {
+ // usePolygons += pol[k].lng + "," + pol[k].lat;
+ // if (k != polLength) {
+ // usePolygons += ";";
+ // }
+ // }
+ // //设置坐标点
+ // row.userId = this.userInfo.user_id;
+ // row.landRange = usePolygons;
+ // }
+ var poly = [];
+ if (this.polygon.length != 0) {
+ this.polygon.forEach((e) => {
+ poly.push({
+ lng: e[0],
+ lat: e[1],
+ });
+ });
+ this.polygon = poly;
+ }
+
+ if (this.polygon.length == 0) {
+ //没有面的数据
+ // this.$refs.getMapData.isCheck = true
+ // loading()
+ } else {
+ //如果有值,空间坐标转换
+ let pol = this.polygon;
+ let polLength = this.polygon.length - 1;
+ let usePolygons = "";
+ for (let k in pol) {
+ usePolygons += pol[k].lng + "," + pol[k].lat;
+ if (k != polLength) {
+ usePolygons += ";";
+ }
+ }
+ //设置坐标点
+ row.userId = this.userInfo.user_id;
+ row.landRange = usePolygons;
+ }
+
+ row["tenantId"] = this.userInfo.tenant_id;
+ row["deptId"] = this.userInfo.dept_id;
+ row["url"] = this.landUrl;
+ // row['landArea'] = this.area
+
+ if (row.landArea < 0) {
+ this.$message.warning("地块面积不能为负数");
+ done();
+ return;
+ }
+
+ add(row).then(
() => {
- this.$refs.form.resetFields();
+ that.$refs.form.resetFields();
+ this.form.landUnit = "0";
that.visible = false;
this.$message({
type: "success",
message: "操作成功!",
});
- done();
+ this.$emit("refreshOnLoad");
+ done();
},
(error) => {
done();
@@ -317,6 +313,26 @@
}
);
},
+ setMapData(val) {
+ this.LineData = val[0];
+ this.PointData = val[1];
+ },
},
};
</script>
+<style lang="scss" scoped>
+.mapClass div label {
+ display: none;
+}
+
+#getMapData {
+ width: 90%;
+ position: relative;
+ height: 400px;
+ top: 10px;
+ left: 90px;
+}
+.map {
+ height: 450px;
+}
+</style>
--
Gitblit v1.9.3