Переглянути джерело

数据填报信息校验规则调整,增加长度和类型限制

yf_zhb 3 роки тому
батько
коміт
470c815afb

+ 1 - 1
minggao/config/index.js

@@ -60,7 +60,7 @@ module.exports = {
      * Source Maps
      */
 
-    productionSourceMap: true,
+    productionSourceMap: false,
     // https://webpack.js.org/configuration/devtool/#production
     devtool: '#source-map',
 

+ 14 - 2
minggao/src/page/recordForm/components/userSelect.vue

@@ -1,4 +1,3 @@
-<!-- 会员卡类型 -->
 <template>
   <!-- <el-select
     v-model="id"
@@ -29,6 +28,7 @@
     :show-all-levels="true"
     filterable
     size="mini"
+    v-model="id"
     @change="handleChange"
   ></el-cascader>
 </template>
@@ -43,7 +43,7 @@ import _, {
   uniqBy,
   flatMap,
   assign,
-  debounce,
+  first,
   omit,
   last
 } from 'lodash-es';
@@ -190,6 +190,18 @@ export default {
 
           this.userList = this.currentUserList = this.data =
             res.data.data.page_list || [];
+
+          if (!this.id) {
+            console.log('this.id not found');
+            const firstUserInfo = first(this.userList);
+            this.id = (firstUserInfo && firstUserInfo.user_id) || '';
+            const org_id =
+              (first(firstUserInfo.org_list) &&
+                first(firstUserInfo.org_list).org_id) ||
+              '';
+
+            this.handleChange([org_id, this.id]);
+          }
           return res.data.data.page_list;
         })
         .finally(() => {

+ 130 - 20
minggao/src/page/recordForm/fieldSurveys.vue

@@ -146,7 +146,7 @@
     <el-dialog
       title="表2:踏查记录表"
       :visible.sync="dialogVisible"
-      width="800px"
+      width="1000px"
       :close-on-click-modal="false"
       :close-on-press-escape="false"
     >
@@ -169,7 +169,42 @@
         <el-form-item label="踏查点名称:" prop="inspect_name">
           <el-input v-model="baseForm.inspect_name"></el-input>
         </el-form-item>
-        <el-form-item label="地理坐标:">
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="经度:" prop="lng">
+              <!-- <el-input v-model="baseForm.lng"></el-input> -->
+              <el-input-number
+                v-model="baseForm.lng"
+                :precision="2"
+                :step="0.1"
+                :min="0.1"
+              ></el-input-number>
+            </el-form-item>
+          </el-col>
+          <el-col :span="7">
+            <el-form-item label="纬度:" prop="lat">
+              <!-- <el-input v-model="baseForm.lat"></el-input> -->
+              <el-input-number
+                v-model="baseForm.lat"
+                :precision="2"
+                :step="0.1"
+                :min="0.1"
+              ></el-input-number>
+            </el-form-item>
+          </el-col>
+          <el-col :span="9">
+            <el-form-item label="海拔(米):" prop="height">
+              <!-- <el-input v-model="baseForm.height"></el-input> -->
+              <el-input-number
+                v-model="baseForm.height"
+                :precision="2"
+                :step="0.1"
+                :min="0.1"
+              ></el-input-number>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <!-- <el-form-item label="地理坐标:">
           <el-row type="flex" align="center">
             <el-form-item class="mr10" style="min-width: 180px" prop="lng">
               <el-input v-model="baseForm.lng"
@@ -187,11 +222,17 @@
               </el-input>
             </el-form-item>
           </el-row>
-        </el-form-item>
-        <el-form-item label="踏查点面积:" prop="inspect_area">
-          <el-input v-model="baseForm.inspect_area"
+        </el-form-item> -->
+        <el-form-item label="踏查点面积(亩):" prop="inspect_area">
+          <!-- <el-input v-model="baseForm.inspect_area"
             ><template slot="append">亩</template></el-input
-          >
+          > -->
+          <el-input-number
+            v-model="baseForm.inspect_area"
+            :precision="2"
+            :step="0.1"
+            :min="0.1"
+          ></el-input-number>
         </el-form-item>
         <el-form-item label="发生生境:" prop="occurs_list">
           <el-checkbox-group v-model="baseForm.occurs_list" :max="1">
@@ -228,9 +269,15 @@
           <el-input v-model="baseForm.harm_obj"></el-input>
         </el-form-item>
         <el-form-item label="发生面积:" prop="occurs_area">
-          <el-input v-model="baseForm.occurs_area"
+          <!-- <el-input v-model="baseForm.occurs_area"
             ><template slot="append">亩</template></el-input
-          >
+          > -->
+          <el-input-number
+            v-model="baseForm.occurs_area"
+            :precision="2"
+            :step="0.1"
+            :min="0.1"
+          ></el-input-number>
         </el-form-item>
         <el-form-item label="是否设置标准样地:" prop="is_std">
           <el-radio-group v-model="baseForm.is_std">
@@ -241,18 +288,26 @@
         <el-row :gutter="20">
           <el-col :span="10">
             <el-form-item label="调查株数:" prop="check_num">
-              <el-input
+              <!-- <el-input
                 v-model="baseForm.check_num"
                 onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)));"
-              ></el-input>
+              ></el-input> -->
+              <el-input-number
+                v-model="baseForm.check_num"
+                :min="1"
+              ></el-input-number>
             </el-form-item>
           </el-col>
           <el-col :span="10">
             <el-form-item label="危害株数:" prop="harm_num">
-              <el-input
+              <!-- <el-input
                 v-model="baseForm.harm_num"
                 onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)));"
-              ></el-input>
+              ></el-input> -->
+              <el-input-number
+                v-model="baseForm.harm_num"
+                :min="1"
+              ></el-input-number>
             </el-form-item>
           </el-col>
         </el-row>
@@ -260,7 +315,14 @@
           <el-input v-model="baseForm.harm_place"></el-input>
         </el-form-item>
         <el-form-item label="危害率:" prop="harm_rate">
-          <el-input v-model="baseForm.harm_rate"></el-input>
+          <!-- <el-input v-model="baseForm.harm_rate"></el-input> -->
+          <el-input-number
+            v-model="baseForm.harm_rate"
+            :precision="2"
+            :step="0.1"
+            :min="0.1"
+            :max="100"
+          ></el-input-number>
         </el-form-item>
         <!-- <el-form-item label="是否采集样本:" prop="desc">
           <el-radio-group v-model="baseForm.isSet">
@@ -295,9 +357,10 @@ export default {
   data() {
     //这里存放数据
     return {
+      firstLoad: true,
       queryInfo: {
         page: 1,
-        select_time: '', //
+        select_time: this.formatTime(Date.now(), 'yyyy-MM-dd'), //
         // org_name: '', //
         user_id: '' //
       },
@@ -343,7 +406,8 @@ export default {
       },
       rules: {
         inspect_name: [
-          { required: true, message: '请输入踏查点名称', trigger: 'blur' }
+          { required: true, message: '请输入踏查点名称', trigger: 'blur' },
+          { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
         ],
         // lng: [{ required: true, message: '请输入经度', trigger: 'blur' }],
         // lat: [{ required: true, message: '请输入纬度', trigger: 'blur' }],
@@ -352,10 +416,22 @@ export default {
           { required: true, message: '请输入踏查点面积', trigger: 'blur' }
         ],
         pest_name: [
-          { required: true, message: '请输入物种名称', trigger: 'blur' }
+          { required: true, message: '请输入物种名称', trigger: 'blur' },
+          { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
         ],
         harm_obj: [
-          { required: true, message: '请输入危害对象', trigger: 'blur' }
+          { required: true, message: '请输入危害对象', trigger: 'blur' },
+          { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
+        ],
+        harm_place: [
+          { required: true, message: '请输入危害部位', trigger: 'blur' },
+          { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
+        ],
+        harm_rate: [
+          { required: true, message: '请输入危害率', trigger: 'blur' }
+        ],
+        sample_num: [
+          { max: 50, message: '长度在 最多 50 个字符', trigger: 'blur' }
         ],
         occurs_area: [
           { required: true, message: '请输入发生面积', trigger: 'blur' }
@@ -439,7 +515,15 @@ export default {
   //监听属性 类似于data概念
   computed: {},
   //监控data中的数据变化
-  watch: {},
+  watch: {
+    'queryInfo.user_id'(val) {
+      console.log('queryInfo.user_id', val);
+      if (val && this.firstLoad) {
+        this.firstLoad = false;
+        this.getDataList();
+      }
+    }
+  },
   //方法集合
   methods: {
     // 导出
@@ -533,6 +617,8 @@ export default {
       this.getDataList();
     },
     handleEdit(row) {
+      this.resetFormData();
+
       if (row.inspect_id) {
         this.baseForm = assign({}, row, {
           occurs_list: row.occurs ? [row.occurs] : []
@@ -611,8 +697,32 @@ export default {
     },
     resetForm(formName) {
       this.$refs[formName].resetFields();
+      this.resetFormData();
       this.dialogVisible = false;
     },
+    resetFormData() {
+      this.baseForm = {
+        inspect_id: '', //id
+        inspect_name: '', // 踏查点名称
+        lng: '', // 经度,
+        lat: '', // 纬度,
+        height: '', // 海拔
+        inspect_area: '', //踏查点面积
+        occurs: '', // 发生境
+        occurs_name: '', // 发生境名称
+        pest_name: '', //物种名称
+        harm_obj: '', //危害对象
+        occurs_area: '', // 发生面积
+        is_std: '是', // 是否设置标准样地   是/否
+        check_num: '', // 调查株数
+        harm_num: '', // 危害株数
+        harm_rate: '', // 危害率
+        harm_place: '', // 危害部位
+        // is_gather:'',// 是否采集样本
+        sample_num: '', // 样本编号
+        occurs_list: []
+      };
+    },
     getOrganizationList() {
       this.$axios({
         method: 'POST',
@@ -629,8 +739,8 @@ export default {
   beforeMount() {}, //生命周期 - 挂载之前
   //生命周期 - 挂载完成(可以访问DOM元素)
   mounted() {
-    this.getOrganizationList();
-    this.getDataList();
+    // this.getOrganizationList();
+    // this.getDataList();
   },
   beforeUpdate() {}, //生命周期 - 更新之前
   updated() {}, //生命周期 - 更新之后

+ 111 - 18
minggao/src/page/recordForm/sampleAppraisal.vue

@@ -118,25 +118,59 @@
           <el-input v-model="baseForm.tag"></el-input>
         </el-form-item>
         <el-form-item label="数量:" prop="num">
-          <el-input
+          <!-- <el-input
             v-model="baseForm.num"
             onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)));"
-          ></el-input>
+          ></el-input> -->
+          <el-input-number
+            v-model="baseForm.num"
+            :min="1"
+            label="数量"
+          ></el-input-number>
         </el-form-item>
         <el-form-item label="检测项目与方法:" prop="check_1">
-          <el-input type="textarea" v-model="baseForm.check_1"></el-input>
+          <el-input
+            type="textarea"
+            v-model="baseForm.check_1"
+            show-word-limit
+            maxlength="200"
+            :rows="4"
+          ></el-input>
         </el-form-item>
         <el-form-item label="形态学鉴定:" prop="check_2">
-          <el-input type="textarea" v-model="baseForm.check_2"></el-input>
+          <el-input
+            type="textarea"
+            v-model="baseForm.check_2"
+            show-word-limit
+            maxlength="200"
+          ></el-input>
         </el-form-item>
         <el-form-item label="分子生物学鉴定:" prop="check_3">
-          <el-input type="textarea" v-model="baseForm.check_3"></el-input>
+          <el-input
+            type="textarea"
+            v-model="baseForm.check_3"
+            show-word-limit
+            maxlength="200"
+            :rows="4"
+          ></el-input>
         </el-form-item>
         <el-form-item label="鉴定结果:" prop="result">
-          <el-input type="textarea" v-model="baseForm.result"></el-input>
+          <el-input
+            type="textarea"
+            v-model="baseForm.result"
+            show-word-limit
+            maxlength="200"
+            :rows="4"
+          ></el-input>
         </el-form-item>
         <el-form-item label="备注:" prop="remarks">
-          <el-input type="textarea" v-model="baseForm.remarks"></el-input>
+          <el-input
+            type="textarea"
+            v-model="baseForm.remarks"
+            show-word-limit
+            maxlength="200"
+            :rows="4"
+          ></el-input>
         </el-form-item>
 
         <!-- end -->
@@ -169,7 +203,7 @@ export default {
     return {
       queryInfo: {
         page: 1,
-        select_time: ''
+        select_time: this.formatTime(Date.now(), 'yyyy-MM-dd') //
       },
       tableData: [],
       total: 10,
@@ -191,27 +225,69 @@ export default {
       },
       rules: {
         sample_name: [
-          { required: true, message: '请填写样本名称', trigger: 'blur' }
-          // { min: 3, max: 20, message: '长度在 3 到 20 个字符', trigger: 'blur' }
+          { required: true, message: '请填写样本名称', trigger: 'blur' },
+          { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
         ],
         sample_num: [
-          { required: true, message: '请填写样本编号', trigger: 'change' }
+          { required: true, message: '请填写样本编号', trigger: 'change' },
+          { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
+        ],
+        num: [
+          {
+            required: true,
+            message: '请填写数量,且为整数',
+            trigger: 'blur'
+          }
+        ],
+        tag: [
+          { required: true, message: '请填写标识', trigger: 'blur' },
+          { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
         ],
-        num: [{ required: true, message: '请填写数量', trigger: 'blur' }],
-        tag: [{ required: true, message: '请填写标识', trigger: 'blur' }],
         check_1: [
-          { required: true, message: '请填写检测项目与方法', trigger: 'blur' }
+          { required: true, message: '请填写检测项目与方法', trigger: 'blur' },
+          {
+            min: 1,
+            max: 200,
+            message: '长度在 1 到 200 个字符',
+            trigger: 'blur'
+          }
         ],
         check_2: [
-          { required: true, message: '请填写形态学鉴定', trigger: 'blur' }
+          { required: true, message: '请填写形态学鉴定', trigger: 'blur' },
+          {
+            min: 1,
+            max: 200,
+            message: '长度在 1 到 200 个字符',
+            trigger: 'blur'
+          }
         ],
         check_3: [
-          { required: true, message: '请填写分子生物学鉴定', trigger: 'blur' }
+          { required: true, message: '请填写分子生物学鉴定', trigger: 'blur' },
+          {
+            min: 1,
+            max: 200,
+            message: '长度在 1 到 200 个字符',
+            trigger: 'blur'
+          }
         ],
         result: [
-          { required: true, message: '请填写鉴定结果', trigger: 'blur' }
+          { required: true, message: '请填写鉴定结果', trigger: 'blur' },
+          {
+            min: 1,
+            max: 200,
+            message: '长度在 1 到 200 个字符',
+            trigger: 'blur'
+          }
         ],
-        remarks: [{ required: true, message: '请填写备注', trigger: 'blur' }]
+        remarks: [
+          { required: true, message: '请填写备注', trigger: 'blur' },
+          {
+            min: 1,
+            max: 200,
+            message: '长度在 1 到 200 个字符',
+            trigger: 'blur'
+          }
+        ]
       },
       exportLoading: false
     };
@@ -299,6 +375,8 @@ export default {
       this.getDataList();
     },
     handleEdit(row) {
+      this.resetFormData();
+
       if (row.sample_id) {
         this.baseForm = assign({}, row);
       }
@@ -361,7 +439,22 @@ export default {
     },
     resetForm(formName) {
       this.$refs[formName].resetFields();
+      this.resetFormData();
       this.dialogVisible = false;
+    },
+    resetFormData() {
+      this.baseForm = {
+        sample_id: '',
+        sample_name: '',
+        sample_num: '',
+        num: '',
+        tag: '',
+        check_1: '',
+        check_2: '',
+        check_3: '',
+        result: '',
+        remarks: ''
+      };
     }
   },
   beforeCreate() {}, //生命周期 - 创建之前

+ 172 - 108
minggao/src/page/recordForm/samplePlot.vue

@@ -4,7 +4,7 @@
     <div class="form-page__search">
       <el-row type="flex" justify="space-between" :gutter="20">
         <el-col :span="18">
-          <el-select
+          <!-- <el-select
             v-model="queryInfo.org_name"
             placeholder="请选择隶属组织"
             size="mini"
@@ -19,7 +19,7 @@
               :value="item.org_name"
             >
             </el-option>
-          </el-select>
+          </el-select> -->
           <UserIDSelectComponent v-model="queryInfo.user_id" />
           <el-date-picker
             v-model="queryInfo.select_time"
@@ -136,7 +136,7 @@
         :model="baseForm"
         :rules="rules"
         ref="baseForm"
-        label-width="140px"
+        label-width="150px"
       >
         <el-form-item label-width="20px" v-if="baseForm.as_id">
           <el-descriptions>
@@ -156,31 +156,55 @@
               <el-input v-model="baseForm.sample_addr"></el-input>
             </el-form-item>
           </el-col>
-          <el-col :span="8">
+          <el-col :span="7">
             <el-form-item label="标准样地编号:" prop="sample_num">
               <el-input v-model="baseForm.sample_num"></el-input>
             </el-form-item>
           </el-col>
-          <el-col :span="8">
-            <el-form-item label="标准样地面积:" prop="sample_area">
-              <el-input v-model="baseForm.sample_area"></el-input>
+          <el-col :span="9">
+            <el-form-item label="标准样地面积(亩):" prop="sample_area">
+              <!-- <el-input v-model="baseForm.sample_area"></el-input> -->
+              <el-input-number
+                v-model="baseForm.sample_area"
+                :precision="2"
+                :step="0.1"
+                :min="0.1"
+              ></el-input-number>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row :gutter="20">
           <el-col :span="8">
             <el-form-item label="经度:" prop="lng">
-              <el-input v-model="baseForm.lng"></el-input>
+              <!-- <el-input v-model="baseForm.lng"></el-input> -->
+              <el-input-number
+                v-model="baseForm.lng"
+                :precision="2"
+                :step="0.1"
+                :min="0.1"
+              ></el-input-number>
             </el-form-item>
           </el-col>
-          <el-col :span="8">
+          <el-col :span="7">
             <el-form-item label="纬度:" prop="lat">
-              <el-input v-model="baseForm.lat"></el-input>
+              <!-- <el-input v-model="baseForm.lat"></el-input> -->
+              <el-input-number
+                v-model="baseForm.lat"
+                :precision="2"
+                :step="0.1"
+                :min="0.1"
+              ></el-input-number>
             </el-form-item>
           </el-col>
-          <el-col :span="8">
-            <el-form-item label="海拔:" prop="height">
-              <el-input v-model="baseForm.height"></el-input>
+          <el-col :span="9">
+            <el-form-item label="海拔(米):" prop="height">
+              <!-- <el-input v-model="baseForm.height"></el-input> -->
+              <el-input-number
+                v-model="baseForm.height"
+                :precision="2"
+                :step="0.1"
+                :min="0.1"
+              ></el-input-number>
             </el-form-item>
           </el-col>
         </el-row>
@@ -230,7 +254,11 @@
         <el-row :gutter="20">
           <el-col :span="8">
             <el-form-item label="是否需要辅助调查:" prop="is_check">
-              <el-input v-model="baseForm.is_check"></el-input>
+              <!-- <el-input v-model="baseForm.is_check"></el-input> -->
+              <el-radio-group v-model="baseForm.is_check">
+                <el-radio label="是">是</el-radio>
+                <el-radio label="否">否</el-radio>
+              </el-radio-group>
             </el-form-item>
           </el-col>
           <el-col :span="16">
@@ -370,14 +398,18 @@
         <el-row :gutter="20">
           <el-col :span="8">
             <el-form-item label="是否采集标本:" prop="is_gather">
-              <el-switch
+              <!-- <el-switch
                 v-model="baseForm.is_gather"
                 active-color="#13ce66"
                 inactive-color="#ff4949"
                 active-value="是"
                 inactive-value="否"
               >
-              </el-switch>
+              </el-switch> -->
+              <el-radio-group v-model="baseForm.is_gather">
+                <el-radio label="是">是</el-radio>
+                <el-radio label="否">否</el-radio>
+              </el-radio-group>
             </el-form-item>
           </el-col>
         </el-row>
@@ -401,14 +433,100 @@ import { assign, omit, map, forEach } from 'lodash-es';
 import UserIDSelectComponent from './components/userSelect.vue';
 import { downFile } from '@/util/downloadFile.js';
 
+const defaultForm = {
+  as_id: '', //id
+  sample_addr: '', // 标准样地地点
+  sample_num: '', // 标准样地编号
+  lng: '', // 经度,
+  lat: '', // 纬度,
+  height: '', // 海拔
+  sample_area: '', //标准样地面积
+  occurs: '', // 发生境
+  occurs_list: [],
+  pest_name: '', //物种名称
+  pest_name_2: '', //拉丁学名
+  pest_name_3: '', //当地俗名
+  is_check: '是', // 是否需要辅助调查    是/否
+  harm_obj: '农作物', //危害对象
+  harm_crop: '', //危害植物
+  sample_no_1: '1', // 样方/样线编号1
+  check_num_1: '', // 调查株数/样线长度
+  harm_num_1: '', // 受害株数
+  harm_rate_1: '', // 危害率
+  sample_no_2: '2', // 样方/样线编号2
+  check_num_2: '', // 调查株数/样线长度
+  harm_num_2: '', // 受害株数
+  harm_rate_2: '', // 危害率
+  sample_no_3: '3', // 样方/样线编号3
+  check_num_3: '', // 调查株数/样线长度
+  harm_num_3: '', // 受害株数
+  harm_rate_3: '', // 危害率
+  sample_no_4: '4', // 样方/样线编号4
+  check_num_4: '', // 调查株数/样线长度
+  harm_num_4: '', // 受害株数
+  harm_rate_4: '', // 危害率
+  sample_no_5: '5', // 样方/样线编号5
+  check_num_5: '', // 调查株数/样线长度
+  harm_num_5: '', // 受害株数
+  harm_rate_5: '', // 危害率
+  sample_no_6: '6', // 样方/样线编号 平均值
+  check_num_6: '', // 调查株数/样线长度
+  harm_num_6: '', // 受害株数
+  harm_rate_6: '', // 危害率
+  harm_place: '根', // 危害部位
+  is_gather: '是', //  是否采集标本 是/否
+  tableList: [
+    // {
+    //    row_key: 'sample_no',
+    //   sample_no_1: '',
+    //   sample_no_2: '',
+    //   sample_no_3: '',
+    //   sample_no_4: '',
+    //   sample_no_5: '',
+    //   sample_no_6: '',
+    // },
+    {
+      row_name: '调查株数/样线长度',
+      row_key: 'check_num',
+      num_1: '',
+      num_2: '',
+      num_3: '',
+      num_4: '',
+      num_5: '',
+      num_6: ''
+    },
+    {
+      row_name: '受害株数/受害病株所垮长度',
+      row_key: 'harm_num',
+      num_1: '',
+      num_2: '',
+      num_3: '',
+      num_4: '',
+      num_5: '',
+      num_6: ''
+    },
+    {
+      row_name: '危害率(%)',
+      row_key: 'harm_rate',
+      num_1: '',
+      num_2: '',
+      num_3: '',
+      num_4: '',
+      num_5: '',
+      num_6: ''
+    }
+  ]
+};
+
 export default {
   components: { UserIDSelectComponent },
   data() {
     //这里存放数据
     return {
+      firstLoad: true,
       queryInfo: {
         page: 1,
-        select_time: '', //
+        select_time: this.formatTime(Date.now(), 'yyyy-MM-dd'), //
         org_name: '', //
         user_id: '' //
       },
@@ -431,99 +549,31 @@ export default {
         addressList: [],
         tableList: []
       },
-      baseForm: {
-        as_id: '', //id
-        sample_addr: '', // 标准样地地点
-        sample_num: '', // 标准样地编号
-        lng: '', // 经度,
-        lat: '', // 纬度,
-        height: '', // 海拔
-        sample_area: '', //标准样地面积
-        occurs: '', // 发生境
-        occurs_list: [],
-        pest_name: '', //物种名称
-        pest_name_2: '', //拉丁学名
-        pest_name_3: '', //当地俗名
-        is_check: '是', // 是否需要辅助调查    是/否
-        harm_obj: '', //危害对象
-        harm_crop: '', //危害植物
-        sample_no_1: '1', // 样方/样线编号1
-        check_num_1: '', // 调查株数/样线长度
-        harm_num_1: '', // 受害株数
-        harm_rate_1: '', // 危害率
-        sample_no_2: '2', // 样方/样线编号2
-        check_num_2: '', // 调查株数/样线长度
-        harm_num_2: '', // 受害株数
-        harm_rate_2: '', // 危害率
-        sample_no_3: '3', // 样方/样线编号3
-        check_num_3: '', // 调查株数/样线长度
-        harm_num_3: '', // 受害株数
-        harm_rate_3: '', // 危害率
-        sample_no_4: '4', // 样方/样线编号4
-        check_num_4: '', // 调查株数/样线长度
-        harm_num_4: '', // 受害株数
-        harm_rate_4: '', // 危害率
-        sample_no_5: '5', // 样方/样线编号5
-        check_num_5: '', // 调查株数/样线长度
-        harm_num_5: '', // 受害株数
-        harm_rate_5: '', // 危害率
-        sample_no_6: '6', // 样方/样线编号 平均值
-        check_num_6: '', // 调查株数/样线长度
-        harm_num_6: '', // 受害株数
-        harm_rate_6: '', // 危害率
-        harm_place: '', // 危害部位
-        is_gather: '是', //  是否采集标本 是/否
-        tableList: [
-          // {
-          //    row_key: 'sample_no',
-          //   sample_no_1: '',
-          //   sample_no_2: '',
-          //   sample_no_3: '',
-          //   sample_no_4: '',
-          //   sample_no_5: '',
-          //   sample_no_6: '',
-          // },
-          {
-            row_name: '调查株数/样线长度',
-            row_key: 'check_num',
-            num_1: '',
-            num_2: '',
-            num_3: '',
-            num_4: '',
-            num_5: '',
-            num_6: ''
-          },
-          {
-            row_name: '受害株数/受害病株所垮长度',
-            row_key: 'harm_num',
-            num_1: '',
-            num_2: '',
-            num_3: '',
-            num_4: '',
-            num_5: '',
-            num_6: ''
-          },
-          {
-            row_name: '危害率(%)',
-            row_key: 'harm_rate',
-            num_1: '',
-            num_2: '',
-            num_3: '',
-            num_4: '',
-            num_5: '',
-            num_6: ''
-          }
-        ]
-      },
+      baseForm: assign({}, defaultForm),
       rules: {
         sample_addr: [
-          { required: true, message: '请输入标准样地地点', trigger: 'blur' }
+          { required: true, message: '请输入标准样地地点', trigger: 'blur' },
+          { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
         ],
         sample_num: [
-          { required: true, message: '请输入标准样地编号', trigger: 'blur' }
+          { required: true, message: '请输入标准样地编号', trigger: 'blur' },
+          { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
         ],
         sample_area: [
           { required: true, message: '请输入标准样地面积', trigger: 'blur' }
+        ],
+        pest_name: [
+          { required: true, message: '请输入物种名称', trigger: 'blur' },
+          { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
+        ],
+        pest_name_2: [
+          { max: 50, message: '长度在 最多 50 个字符', trigger: 'blur' }
+        ],
+        pest_name_3: [
+          { max: 50, message: '长度在 最多 50 个字符', trigger: 'blur' }
+        ],
+        harm_crop: [
+          { max: 50, message: '长度在 最多 50 个字符', trigger: 'blur' }
         ]
       },
       habitatList: [
@@ -636,7 +686,15 @@ export default {
   //监听属性 类似于data概念
   computed: {},
   //监控data中的数据变化
-  watch: {},
+  watch: {
+    'queryInfo.user_id'(val) {
+      console.log('queryInfo.user_id', val);
+      if (val && this.firstLoad) {
+        this.firstLoad = false;
+        this.getDataList();
+      }
+    }
+  },
   //方法集合
   methods: {
     // 导出
@@ -689,8 +747,8 @@ export default {
           page_item: 20,
           page: this.queryInfo.page,
           user_id: this.queryInfo.user_id, //
-          select_time: this.queryInfo.select_time, //
-          org_name: this.queryInfo.org_name //
+          select_time: this.queryInfo.select_time //
+          // org_name: this.queryInfo.org_name //
         })
       }).then(res => {
         this.loading = false;
@@ -736,6 +794,8 @@ export default {
       row.num_6 = (total / 5).toFixed(2);
     },
     handleEdit(row) {
+      this.resetFormData();
+
       if (row.as_id) {
         this.baseForm = assign({}, row, {
           occurs_list: row.occurs ? [row.occurs] : []
@@ -855,6 +915,10 @@ export default {
     resetForm(formName) {
       this.$refs[formName].resetFields();
       this.dialogVisible = false;
+      this.resetFormData();
+    },
+    resetFormData() {
+      this.baseForm = assign({}, defaultForm);
     },
     getOrganizationList() {
       this.$axios({
@@ -884,8 +948,8 @@ export default {
   beforeMount() {}, //生命周期 - 挂载之前
   //生命周期 - 挂载完成(可以访问DOM元素)
   mounted() {
-    this.getOrganizationList();
-    this.getDataList();
+    // this.getOrganizationList();
+    // this.getDataList();
   },
   beforeUpdate() {}, //生命周期 - 更新之前
   updated() {}, //生命周期 - 更新之后

+ 104 - 18
minggao/src/page/recordForm/trapRecord.vue

@@ -160,25 +160,47 @@
               </el-form-item>
             </el-col>
             <el-col :span="8">
-              <el-form-item label="样地面积:" prop="sample_area">
-                <el-input v-model="baseForm.sample_area"></el-input>
+              <el-form-item label="样地面积(亩):" prop="sample_area">
+                <!-- <el-input v-model="baseForm.sample_area"></el-input> -->
+                <el-input-number
+                  v-model="baseForm.sample_area"
+                  :precision="2"
+                  :step="0.1"
+                  :min="0.1"
+                ></el-input-number>
               </el-form-item>
             </el-col>
           </el-row>
           <el-row :gutter="20">
             <el-col :span="8">
               <el-form-item label="经度:" prop="lng">
-                <el-input v-model="baseForm.lng"></el-input>
+                <!-- <el-input v-model="baseForm.lng"></el-input> -->
+                <el-input-number
+                  v-model="baseForm.lng"
+                  :precision="2"
+                  :step="0.1"
+                  :min="0.1"
+                ></el-input-number>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="纬度:" prop="lat">
-                <el-input v-model="baseForm.lat"></el-input>
+                <el-input-number
+                  v-model="baseForm.lat"
+                  :precision="2"
+                  :step="0.1"
+                  :min="0.1"
+                ></el-input-number>
               </el-form-item>
             </el-col>
             <el-col :span="8">
-              <el-form-item label="海拔:" prop="height">
-                <el-input v-model="baseForm.height"></el-input>
+              <el-form-item label="海拔(米):" prop="height">
+                <el-input-number
+                  v-model="baseForm.height"
+                  :precision="2"
+                  :step="0.1"
+                  :min="0.1"
+                ></el-input-number>
               </el-form-item>
             </el-col>
           </el-row>
@@ -237,13 +259,13 @@
                 </el-form-item>
               </template>
             </el-table-column>
-            <el-table-column label="危害作物" align="center" width="120">
+            <el-table-column label="危害作物" align="center" width="150">
               <template slot-scope="scope">
                 <el-form-item
                   :prop="'pest_list.' + scope.$index + '.harm_crop'"
                   label-width="0"
                   :rules="{
-                    validator: validateSingleInput,
+                    validator: validateSingleInputLen,
                     trigger: 'change'
                   }"
                 >
@@ -303,7 +325,7 @@
                   :prop="'pest_list.' + scope.$index + '.remarks'"
                   label-width="0"
                   :rules="{
-                    validator: validateSingleInput,
+                    validator: validateSingleInputArea,
                     trigger: 'change'
                   }"
                 >
@@ -349,9 +371,10 @@ export default {
   data() {
     //这里存放数据
     return {
+      firstLoad: true,
       queryInfo: {
         page: 1,
-        select_time: '', //
+        select_time: this.formatTime(Date.now(), 'yyyy-MM-dd'), //
         org_name: '', //
         user_id: '' //
       },
@@ -399,19 +422,23 @@ export default {
       },
       rules: {
         sample_addr: [
-          { required: true, message: '请输入标准样地地点', trigger: 'blur' }
+          { required: true, message: '请输入标准样地地点', trigger: 'blur' },
+          { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
         ],
         sample_num: [
-          { required: true, message: '请输入标准样地编号', trigger: 'blur' }
+          { required: true, message: '请输入标准样地编号', trigger: 'blur' },
+          { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
         ],
         sample_area: [
           { required: true, message: '请输入标准样地面积', trigger: 'blur' }
         ],
         trap_number: [
-          { required: true, message: '请输入诱捕器编号', trigger: 'blur' }
+          { required: true, message: '请输入诱捕器编号', trigger: 'blur' },
+          { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
         ],
         inducer_name: [
-          { required: true, message: '请输入诱剂名称', trigger: 'blur' }
+          { required: true, message: '请输入诱剂名称', trigger: 'blur' },
+          { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
         ]
       },
       habitatList: [
@@ -485,7 +512,15 @@ export default {
   //监听属性 类似于data概念
   computed: {},
   //监控data中的数据变化
-  watch: {},
+  watch: {
+    'queryInfo.user_id'(val) {
+      console.log('queryInfo.user_id', val);
+      if (val && this.firstLoad) {
+        this.firstLoad = false;
+        this.getDataList();
+      }
+    }
+  },
   //方法集合
   methods: {
     // 导出
@@ -545,7 +580,7 @@ export default {
       this.baseForm.pest_list.splice(index, 1);
     },
     handleInputChange(value, row) {
-      row.pest_total = Math.floor(row.male_num * 1 + row.female_num * 1);
+      row.pest_total = Math.floor(row.male_num * 1 + row.female_num * 1) || 0;
     },
     getPestList() {
       this.$axios({
@@ -604,6 +639,8 @@ export default {
       this.getDataList();
     },
     handleEdit(row) {
+      this.resetFormData();
+
       //tc_id
       if (row.tc_id) {
         this.baseForm = assign({}, row);
@@ -668,6 +705,33 @@ export default {
     resetForm(formName) {
       this.$refs[formName].resetFields();
       this.dialogVisible = false;
+
+      this.resetFormData();
+    },
+    resetFormData() {
+      this.baseForm = {
+        tc_id: '', //id
+        sample_addr: '', // 标准样地地点
+        sample_num: '', // 标准样地编号
+        sample_area: '', //标准样地面积
+        lng: '', // 经度,
+        lat: '', // 纬度,
+        height: '', // 海拔
+        trap_number: '', // 诱捕器编号
+        inducer_name: '', // 诱剂名称
+        pest_list: []
+        /**
+					 * {
+						 pest_id //害虫id
+						 pest_name // 害虫名称
+						 harm_crop // 危害农作物
+						 pest_total // 害虫总数
+						 male_num // 雄性数量
+						 female_num // 雌性数量
+						 remarks // 备注
+					 }
+					 */
+      };
     },
     getOrganizationList() {
       this.$axios({
@@ -696,6 +760,28 @@ export default {
       } else {
         callback();
       }
+    },
+    validateSingleInputLen(rule, value, callback) {
+      if (!value) {
+        callback(new Error('请输入/选择'));
+      } else {
+        if (value.length > 1 && value.length < 51) {
+          callback();
+        } else {
+          callback(new Error('长度为1-50之间'));
+        }
+      }
+    },
+    validateSingleInputArea(rule, value, callback) {
+      if (!value) {
+        callback(new Error('请输入/选择'));
+      } else {
+        if (value.length > 1 && value.length < 201) {
+          callback();
+        } else {
+          callback(new Error('长度为1-200之间'));
+        }
+      }
     }
   },
   beforeCreate() {}, //生命周期 - 创建之前
@@ -704,8 +790,8 @@ export default {
   beforeMount() {}, //生命周期 - 挂载之前
   //生命周期 - 挂载完成(可以访问DOM元素)
   mounted() {
-    this.getOrganizationList();
-    this.getDataList();
+    // this.getOrganizationList();
+    // this.getDataList();
     this.getPestList();
   },
   beforeUpdate() {}, //生命周期 - 更新之前

+ 2 - 2
minggao/src/util/server.js

@@ -28,8 +28,8 @@ if (location.origin.indexOf('https') !== -1) {
   wsUrl = 'wss' + origin.split('https')[1];
 } else {
   if (process.env.NODE_ENV === 'development') {
-    wsUrl = 'ws://192.168.1.52:12345';
-    // wsUrl = 'ws://114.115.147.140:12345';
+    // wsUrl = 'ws://192.168.1.52:12345';
+    wsUrl = 'ws://114.115.147.140:12345';
   } else {
     wsUrl = 'ws' + origin.split('http')[1];
   }