lchao 11 miesięcy temu
rodzic
commit
d0edd6b332

+ 247 - 0
zhsq_qk-ui/src/api/system/rules.js

@@ -0,0 +1,247 @@
+/**
+ * 验证非负整数(包含0及正整数)
+ * @param {*} rule
+ * @param {*} value
+ * @param {*} callback
+ */
+export function checkNonnegativeInteger(rule, value, callback) {
+  if (value) {
+    value += ''
+    if(/(^(0|[1-9][0-9]*)$)/.test(value)) {
+      callback()
+    } else {
+      callback(new Error('只能输入数字,数值不能为负,且不能为小数'))
+    }
+  } else {
+    callback()
+  }
+}
+
+/**
+ * 验证正整数(不包含0的正整数)
+ * @param {*} rule
+ * @param {*} value
+ * @param {*} callback
+ */
+export function checkPositiveInteger(rule, value, callback) {
+  if (value) {
+    value += ''
+    if(/(^[1-9]\d*$)/.test(value)) {
+      callback()
+    } else {
+      callback(new Error('只能输入数字,数值不能为负数或0,且不能为小数'))
+    }
+  } else {
+    callback()
+  }
+}
+
+/**
+ * 验证正数,且小数可2位(包含0及正整数)
+ * @param {*} rule
+ * @param {*} value
+ * @param {*} callback
+ */
+export function checkPositiveDecimal(rule, value, callback) {
+  if (value) {
+    value += ''
+    // if(/(^[1-9]([0-9]+)?(\.[0-9]{1,4})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(value)) {
+    // if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(value)) {
+    if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]{1,2}$)/.test(value)) {
+      callback()
+    } else {
+      callback(new Error('只能输入数字,且数值不能为负,小数限2位'))
+    }
+  } else {
+    callback()
+  }
+}
+/**
+ * 验证正数,且小数可4位(包含0及正整数)
+ * @param {*} rule
+ * @param {*} value
+ * @param {*} callback
+ */
+export function checkPositiveDecimal4(rule, value, callback) {
+  if (value) {
+    value += ''
+    // if(/(^[1-9]([0-9]+)?(\.[0-9]{1,4})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9]){0,3}$)/.test(value)) {
+    if(/(^[1-9]([0-9]+)?(\.[0-9]{1,4})?$)|(^(0){1}$)|(^[0-9]\.[0-9]{1,4}$)/.test(value)) {
+      callback()
+    } else {
+      callback(new Error('只能输入数字,且数值不能为负,小数限4位'))
+    }
+  } else {
+    callback()
+  }
+}
+/**
+ * 验证手机号,座机号
+ * @param {*} rule
+ * @param {*} value
+ * @param {*} callback
+ */
+export function validPhoneMobile(rule, value, callback){
+  if (value){
+    if (value === '') {
+      callback(new Error('请输入11位手机号'));
+    } else {
+      let regPone = null;
+      let mobile = /^1(3|4|5|6|7|8|9)\d{9}$/; //最新16手机正则
+      let tel = /^(0\d{2,3}-){0,1}\d{7,8}$/; //座机
+      if (value.charAt(0) == 0) {    // charAt查找第一个字符方法,用来判断输入的是座机还是手机号
+        regPone = tel;
+      } else {
+        regPone = mobile;
+      }
+      if (!regPone.test(value)) {
+        callback(new Error("请填写11位手机号或座机号(座机格式为 区号-座机号码)"))
+      }
+      callback();
+    }
+  }else {
+    callback();
+  }
+}
+
+/**
+ * 验证经度输入范围在-180-180之间,且小数可15位
+ * @param {*} rule
+ * @param {*} value
+ * @param {*} callback
+ */
+export function checkLon(rule, value, callback) {
+  if (value) {
+    value += ''
+    if (value.match(/^(\-|\+)?(((\d|[1-9]\d|1[0-7]\d|0{1,3})\.\d{0,15})|(\d|[1-9]\d|1[0-7]\d|0{1,3})|180\.0{0,6}|180)$/)) {
+      callback()
+    } else {
+      callback(new Error('经度为-180~180,小数限15位'))
+    }
+  } else {
+    callback()
+  }
+}
+/**
+ * 验证纬度输入范围在-90~90之间,且小数可15位
+ * @param {*} rule
+ * @param {*} value
+ * @param {*} callback
+ */
+export function checkLat(rule, value, callback) {
+  if (value) {
+    value += ''
+    if (value.match(/^(\-|\+)?([0-8]?\d{1}\.\d{0,15}|90\.0{0,6}|[0-8]?\d{1}|90)$/)) {
+      callback()
+    } else {
+      callback(new Error('纬度为-90~90,小数限15位'))
+    }
+  } else {
+    callback()
+  }
+}
+
+/**
+ * 温度校验
+ * @param rule
+ * @param value
+ * @param callback
+ */
+export function checkTemperature(rule, value, callback) {
+  if (value !== '') {
+    // 判断温度是否为数字
+    if (!/^-?\d+(\.\d+)?$/.test(value)) {
+      callback(new Error('温度值必须为数字'))
+    } else {
+      // 将温度转换为数字类型,方便后续比较大小
+      const num = Number(value)
+
+      // 判断温度的范围是否在 -50 到 50 之间
+      if (num < -50 || num > 50) {
+        callback(new Error('温度范围必须在-50℃ ~ 50℃之间'))
+      } else {
+        // 判断小数部分是否超过一位
+        const reg = /(?:\.)(\d+)/
+        let match = value.match(reg)
+        if (match && match[1].length > 1) {
+          callback(new Error('小数部分只能保留一位'))
+        }
+        // 判断整数部分是否超过两位,且第一位是否为0
+        match = value.match(/^-?(\d+)/)
+        if (match && (match[1].length > 2 || (match[1].length === 2 && match[1][0] === '0'))) {
+          callback(new Error('整数部分长度不能超过2位,且第一位不能是0'))
+        } else {
+          callback()
+        }
+      }
+    }
+  } else {
+    callback(new Error('温度值不能为空'))
+  }
+}
+
+/**
+ * 车牌号校验(含新能源)
+ * @param rule
+ * @param value
+ * @param callback
+ */
+export function carPhoneValid (rule, value, callback) {
+  const plateNumber = /^([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}([A-HJ-NP-Z0-9挂学警港澳]{1}|[应急]{2}))$/
+  if (plateNumber.test(value)) {
+    callback()
+  } else {
+    callback(new Error('请输入正确的车牌号'))
+  }
+}
+
+/**
+ * 英文和数字校验
+ * @param rule
+ * @param value
+ * @param callback
+ */
+export function englishAndNumValid(rule, value, callback) {
+  if (value) {
+    value += ''
+    if (value.match(/^[A-Za-z0-9]{4,40}$/)) {
+      callback()
+    } else {
+      callback(new Error('只能输入英文和数字'))
+    }
+  } else {
+    callback()
+  }
+}
+/**
+ * 英文和数字校验18位
+ * @param rule
+ * @param value
+ * @param callback
+ */
+export function englishAndshibaNumValid(rule, value, callback) {
+  if (value) {
+    value += ''
+    if (value.match(/^[A-Za-z0-9]{0,18}$/)) {
+      callback()
+    } else {
+      callback(new Error('只能输入0~18位英文和数字'))
+    }
+  } else {
+    callback()
+  }
+}
+
+export function englishOnly(rule, value, callback) {
+  if (value) {
+    value += ''
+    if (value.match(/^[a-zA-Z]{2,40}$/)) {
+      callback()
+    } else {
+      callback(new Error('请输入英文,且至少两个字符'))
+    }
+  } else {
+    callback()
+  }
+}
+

+ 207 - 201
zhsq_qk-ui/src/views/system/business/index.vue

@@ -1,22 +1,24 @@
 <template>
 <template>
   <div class="app-container">
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-                  <el-form-item label="月份" prop="month">
-                    <el-input
-                        v-model="queryParams.month"
-                        placeholder="请输入月份"
-                        clearable
-                        @keyup.enter.native="handleQuery"
-                    />
-                  </el-form-item>
-                  <el-form-item label="新办企业数" prop="newEnterprises">
-                    <el-input
-                        v-model="queryParams.newEnterprises"
-                        placeholder="请输入新办企业数"
-                        clearable
-                        @keyup.enter.native="handleQuery"
-                    />
-                  </el-form-item>
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="88px">
+      <el-form-item label="月份" prop="month">
+        <el-input
+          v-model="queryParams.month"
+          placeholder="请输入月份"
+          clearable
+          maxlength="15"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="新办企业数" prop="newEnterprises">
+        <el-input
+          v-model="queryParams.newEnterprises"
+          placeholder="请输入新办企业数"
+          clearable
+          maxlength="15"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
       <el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -26,74 +28,74 @@
     <el-row :gutter="10" class="mb8">
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
       <el-col :span="1.5">
         <el-button
         <el-button
-            type="primary"
-            plain
-            icon="el-icon-plus"
-            size="mini"
-            @click="handleAdd"
-            v-hasPermi="['system:business:add']"
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:business:add']"
         >新增
         >新增
         </el-button>
         </el-button>
       </el-col>
       </el-col>
       <el-col :span="1.5">
       <el-col :span="1.5">
         <el-button
         <el-button
-            type="success"
-            plain
-            icon="el-icon-edit"
-            size="mini"
-            :disabled="single"
-            @click="handleUpdate"
-            v-hasPermi="['system:business:edit']"
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:business:edit']"
         >修改
         >修改
         </el-button>
         </el-button>
       </el-col>
       </el-col>
       <el-col :span="1.5">
       <el-col :span="1.5">
         <el-button
         <el-button
-            type="danger"
-            plain
-            icon="el-icon-delete"
-            size="mini"
-            :disabled="multiple"
-            @click="handleDelete"
-            v-hasPermi="['system:business:remove']"
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:business:remove']"
         >删除
         >删除
         </el-button>
         </el-button>
       </el-col>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-            type="warning"
-            plain
-            icon="el-icon-download"
-            size="mini"
-            @click="handleExport"
-            v-hasPermi="['system:business:export']"
-        >导出
-        </el-button>
-      </el-col>
+<!--      <el-col :span="1.5">-->
+<!--        <el-button-->
+<!--          type="warning"-->
+<!--          plain-->
+<!--          icon="el-icon-download"-->
+<!--          size="mini"-->
+<!--          @click="handleExport"-->
+<!--          v-hasPermi="['system:business:export']"-->
+<!--        >导出-->
+<!--        </el-button>-->
+<!--      </el-col>-->
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
     </el-row>
 
 
     <el-table v-loading="loading" :data="businessList" @selection-change="handleSelectionChange">
     <el-table v-loading="loading" :data="businessList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center"/>
       <el-table-column type="selection" width="55" align="center"/>
-              <el-table-column label="主键id" align="center" prop="id"/>
-              <el-table-column label="月份" align="center" prop="month"/>
-              <el-table-column label="新办企业数" align="center" prop="newEnterprises"/>
+<!--      <el-table-column label="主键id" align="center" prop="id"/>-->
+      <el-table-column label="月份" align="center" prop="month"/>
+      <el-table-column label="新办企业数" align="center" prop="newEnterprises"/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
         <template slot-scope="scope">
           <el-button
           <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-edit"
-              @click="handleUpdate(scope.row)"
-              v-hasPermi="['system:business:edit']"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:business:edit']"
           >修改
           >修改
           </el-button>
           </el-button>
           <el-button
           <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-delete"
-              @click="handleDelete(scope.row)"
-              v-hasPermi="['system:business:remove']"
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:business:remove']"
           >删除
           >删除
           </el-button>
           </el-button>
         </template>
         </template>
@@ -101,22 +103,22 @@
     </el-table>
     </el-table>
 
 
     <pagination
     <pagination
-        v-show="total>0"
-        :total="total"
-        :page.sync="queryParams.pageNum"
-        :limit.sync="queryParams.pageSize"
-        @pagination="getList"
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
     />
     />
 
 
     <!-- 添加或修改新办企业对话框 -->
     <!-- 添加或修改新办企业对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-                        <el-form-item label="月份" prop="month">
-                          <el-input v-model="form.month" placeholder="请输入月份"/>
-                        </el-form-item>
-                        <el-form-item label="新办企业数" prop="newEnterprises">
-                          <el-input v-model="form.newEnterprises" placeholder="请输入新办企业数"/>
-                        </el-form-item>
+        <el-form-item label="月份" prop="month">
+          <el-input v-model="form.month" placeholder="请输入月份" maxlength="10"/>
+        </el-form-item>
+        <el-form-item label="新办企业数" prop="newEnterprises">
+          <el-input v-model="form.newEnterprises" placeholder="请输入新办企业数" maxlength="10"/>
+        </el-form-item>
       </el-form>
       </el-form>
       <div slot="footer" class="dialog-footer">
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -128,141 +130,145 @@
 
 
 <script>
 <script>
 import {addBusiness, delBusiness, getBusiness, listBusiness, updateBusiness} from "@/api/system/business";
 import {addBusiness, delBusiness, getBusiness, listBusiness, updateBusiness} from "@/api/system/business";
+import {checkNonnegativeInteger} from "@/api/system/rules";
 
 
-  export default {
-    name: "Business",
-    data() {
-      return {
-        // 遮罩层
-        loading: true,
-        // 选中数组
-        ids: [],
-        // 非单个禁用
-        single: true,
-        // 非多个禁用
-        multiple: true,
-        // 显示搜索条件
-        showSearch: true,
-        // 总条数
-        total: 0,
-        // 新办企业表格数据
-              businessList: [],
-        // 弹出层标题
-        title: "",
-        // 是否显示弹出层
-        open: false,
-        // 查询参数
-        queryParams: {
-          pageNum: 1,
-          pageSize: 10,
-                        month: null,
-                        newEnterprises: null
-        },
-        // 表单参数
-        form: {},
-        // 表单校验
-        rules: {
-        }
+export default {
+  name: "Business",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 新办企业表格数据
+      businessList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        month: null,
+        newEnterprises: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        newEnterprises: [
+          { required: true, message: "新办企业数不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询新办企业列表 */
+    getList() {
+      this.loading = true;
+      listBusiness(this.queryParams).then(response => {
+        this.businessList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        month: null,
+        newEnterprises: null
       };
       };
+      this.resetForm("form");
     },
     },
-    created() {
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
       this.getList();
       this.getList();
     },
     },
-    methods: {
-      /** 查询新办企业列表 */
-      getList() {
-        this.loading = true;
-        listBusiness(this.queryParams).then(response => {
-          this.businessList = response.rows;
-          this.total = response.total;
-          this.loading = false;
-        });
-      },
-      // 取消按钮
-      cancel() {
-        this.open = false;
-        this.reset();
-      },
-      // 表单重置
-      reset() {
-        this.form = {
-                        id: null,
-                        month: null,
-                        newEnterprises: null
-        };
-        this.resetForm("form");
-      },
-      /** 搜索按钮操作 */
-      handleQuery() {
-        this.queryParams.pageNum = 1;
-        this.getList();
-      },
-      /** 重置按钮操作 */
-      resetQuery() {
-        this.resetForm("queryForm");
-        this.handleQuery();
-      },
-      // 多选框选中数据
-      handleSelectionChange(selection) {
-        this.ids = selection.map(item => item.id)
-        this.single = selection.length !== 1
-        this.multiple = !selection.length
-      },
-      /** 新增按钮操作 */
-      handleAdd() {
-        this.reset();
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length !== 1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加新办企业";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getBusiness(id).then(response => {
+        this.form = response.data;
         this.open = true;
         this.open = true;
-        this.title = "添加新办企业";
-      },
-      /** 修改按钮操作 */
-      handleUpdate(row) {
-        this.reset();
-        const id = row.id || this.ids
-        getBusiness(id).then(response => {
-          this.form = response.data;
-          this.open = true;
-          this.title = "修改新办企业";
-        });
-      },
-      /** 提交按钮 */
-      submitForm() {
-        this.$refs["form"].validate(valid => {
-          if (valid) {
-            if (this.form.id !=null){
-              updateBusiness(this.form).then(response => {
-                this.$modal.msgSuccess("修改成功");
-                this.open = false;
-                this.getList();
-              });
-            }else{
-              addBusiness(this.form).then(response => {
-                this.$modal.msgSuccess("新增成功");
-                this.open = false;
-                this.getList();
-              });
-            }
+        this.title = "修改新办企业";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateBusiness(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addBusiness(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
           }
           }
-        });
-      },
-      /** 删除按钮操作 */
-      handleDelete(row) {
-        const ids = row.id || this.ids;
-        this.$modal.confirm('是否确认删除好差评编号为"' + ids + '"的数据项?').then(function () {
-          return delBusiness(ids);
-        }).then(() => {
-          this.getList();
-          this.$modal.msgSuccess("删除成功");
-        }).catch(() => {
-        });
-      },
-  /** 导出按钮操作 */
-  handleExport()
-  {
-    this.download('system/business/export', {
-      ...this.queryParams
-    }, `business_${new Date().getTime()}.xlsx`)
-  }
-  }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除好差评编号为"' + ids + '"的数据项?').then(function () {
+        return delBusiness(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/business/export', {
+        ...this.queryParams
+      }, `business_${new Date().getTime()}.xlsx`)
+    }
   }
   }
-  ;
+}
+;
 </script>
 </script>

+ 33 - 16
zhsq_qk-ui/src/views/system/documents/index.vue

@@ -6,6 +6,7 @@
           v-model="queryParams.instantProcessingQuantity"
           v-model="queryParams.instantProcessingQuantity"
           placeholder="请输入即办件数"
           placeholder="请输入即办件数"
           clearable
           clearable
+          maxlength="15"
           @keyup.enter.native="handleQuery"
           @keyup.enter.native="handleQuery"
         />
         />
       </el-form-item>
       </el-form-item>
@@ -14,6 +15,7 @@
           v-model="queryParams.promisedQuantity"
           v-model="queryParams.promisedQuantity"
           placeholder="请输入承诺件数"
           placeholder="请输入承诺件数"
           clearable
           clearable
+          maxlength="15"
           @keyup.enter.native="handleQuery"
           @keyup.enter.native="handleQuery"
         />
         />
       </el-form-item>
       </el-form-item>
@@ -22,6 +24,7 @@
           v-model="queryParams.immediateRate"
           v-model="queryParams.immediateRate"
           placeholder="请输入即办率"
           placeholder="请输入即办率"
           clearable
           clearable
+          maxlength="15"
           @keyup.enter.native="handleQuery"
           @keyup.enter.native="handleQuery"
         />
         />
       </el-form-item>
       </el-form-item>
@@ -67,23 +70,23 @@
         >删除
         >删除
         </el-button>
         </el-button>
       </el-col>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['system:documents:export']"
-        >导出
-        </el-button>
-      </el-col>
+<!--      <el-col :span="1.5">-->
+<!--        <el-button-->
+<!--          type="warning"-->
+<!--          plain-->
+<!--          icon="el-icon-download"-->
+<!--          size="mini"-->
+<!--          @click="handleExport"-->
+<!--          v-hasPermi="['system:documents:export']"-->
+<!--        >导出-->
+<!--        </el-button>-->
+<!--      </el-col>-->
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
     </el-row>
 
 
     <el-table v-loading="loading" :data="documentsList" @selection-change="handleSelectionChange">
     <el-table v-loading="loading" :data="documentsList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center"/>
       <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="主键id" align="center" prop="id"/>
+<!--      <el-table-column label="主键id" align="center" prop="id"/>-->
       <el-table-column label="即办件数" align="center" prop="instantProcessingQuantity"/>
       <el-table-column label="即办件数" align="center" prop="instantProcessingQuantity"/>
       <el-table-column label="承诺件数" align="center" prop="promisedQuantity"/>
       <el-table-column label="承诺件数" align="center" prop="promisedQuantity"/>
       <el-table-column label="即办率" align="center" prop="immediateRate"/>
       <el-table-column label="即办率" align="center" prop="immediateRate"/>
@@ -121,13 +124,13 @@
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="即办件数" prop="instantProcessingQuantity">
         <el-form-item label="即办件数" prop="instantProcessingQuantity">
-          <el-input v-model="form.instantProcessingQuantity" placeholder="请输入即办件数"/>
+          <el-input v-model="form.instantProcessingQuantity" placeholder="请输入即办件数" maxlength="10"/>
         </el-form-item>
         </el-form-item>
         <el-form-item label="承诺件数" prop="promisedQuantity">
         <el-form-item label="承诺件数" prop="promisedQuantity">
-          <el-input v-model="form.promisedQuantity" placeholder="请输入承诺件数"/>
+          <el-input v-model="form.promisedQuantity" placeholder="请输入承诺件数" maxlength="10"/>
         </el-form-item>
         </el-form-item>
         <el-form-item label="即办率" prop="immediateRate">
         <el-form-item label="即办率" prop="immediateRate">
-          <el-input v-model="form.immediateRate" placeholder="请输入即办率"/>
+          <el-input v-model="form.immediateRate" placeholder="请输入即办率" maxlength="10"/>
         </el-form-item>
         </el-form-item>
       </el-form>
       </el-form>
       <div slot="footer" class="dialog-footer">
       <div slot="footer" class="dialog-footer">
@@ -140,6 +143,7 @@
 
 
 <script>
 <script>
 import {addDocuments, delDocuments, updateDocuments, getDocuments, listDocuments} from "@/api/system/documents";
 import {addDocuments, delDocuments, updateDocuments, getDocuments, listDocuments} from "@/api/system/documents";
+import {checkNonnegativeInteger} from "@/api/system/rules";
 
 
 export default {
 export default {
   name: "Documents",
   name: "Documents",
@@ -174,7 +178,20 @@ export default {
       // 表单参数
       // 表单参数
       form: {},
       form: {},
       // 表单校验
       // 表单校验
-      rules: {}
+      rules: {
+        instantProcessingQuantity: [
+          { required: true, message: "即办件数不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+        promisedQuantity: [
+          { required: true, message: "承诺件数不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+        immediateRate: [
+          { required: true, message: "即办率不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+      }
     };
     };
   },
   },
   created() {
   created() {

+ 62 - 22
zhsq_qk-ui/src/views/system/handling/index.vue

@@ -6,6 +6,7 @@
           v-model="queryParams.buildLandUse"
           v-model="queryParams.buildLandUse"
           placeholder="请输入建设用地"
           placeholder="请输入建设用地"
           clearable
           clearable
+          maxlength="15"
           @keyup.enter.native="handleQuery"
           @keyup.enter.native="handleQuery"
         />
         />
       </el-form-item>
       </el-form-item>
@@ -14,6 +15,7 @@
           v-model="queryParams.architecturalEngineering"
           v-model="queryParams.architecturalEngineering"
           placeholder="请输入建设工程"
           placeholder="请输入建设工程"
           clearable
           clearable
+          maxlength="15"
           @keyup.enter.native="handleQuery"
           @keyup.enter.native="handleQuery"
         />
         />
       </el-form-item>
       </el-form-item>
@@ -59,23 +61,23 @@
         >删除
         >删除
         </el-button>
         </el-button>
       </el-col>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['system:handling:export']"
-        >导出
-        </el-button>
-      </el-col>
+<!--      <el-col :span="1.5">-->
+<!--        <el-button-->
+<!--          type="warning"-->
+<!--          plain-->
+<!--          icon="el-icon-download"-->
+<!--          size="mini"-->
+<!--          @click="handleExport"-->
+<!--          v-hasPermi="['system:handling:export']"-->
+<!--        >导出-->
+<!--        </el-button>-->
+<!--      </el-col>-->
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
     </el-row>
 
 
     <el-table v-loading="loading" :data="handlingList" @selection-change="handleSelectionChange">
     <el-table v-loading="loading" :data="handlingList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center"/>
       <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="主键id" align="center" prop="id"/>
+<!--      <el-table-column label="主键id" align="center" prop="id"/>-->
       <el-table-column label="建设用地" align="center" prop="buildLandUse"/>
       <el-table-column label="建设用地" align="center" prop="buildLandUse"/>
       <el-table-column label="建设工程" align="center" prop="architecturalEngineering"/>
       <el-table-column label="建设工程" align="center" prop="architecturalEngineering"/>
       <el-table-column label="建筑工程施工许可证" align="center" prop="architecturalLicence"/>
       <el-table-column label="建筑工程施工许可证" align="center" prop="architecturalLicence"/>
@@ -119,31 +121,31 @@
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="建设用地" prop="buildLandUse">
         <el-form-item label="建设用地" prop="buildLandUse">
-          <el-input v-model="form.buildLandUse" placeholder="请输入建设用地"/>
+          <el-input v-model="form.buildLandUse" placeholder="请输入建设用地" maxlength="10"/>
         </el-form-item>
         </el-form-item>
         <el-form-item label="建设工程" prop="architecturalEngineering">
         <el-form-item label="建设工程" prop="architecturalEngineering">
-          <el-input v-model="form.architecturalEngineering" placeholder="请输入建设工程"/>
+          <el-input v-model="form.architecturalEngineering" placeholder="请输入建设工程" maxlength="10"/>
         </el-form-item>
         </el-form-item>
         <el-form-item label="建筑工程施工许可证" prop="architecturalLicence">
         <el-form-item label="建筑工程施工许可证" prop="architecturalLicence">
-          <el-input v-model="form.architecturalLicence" placeholder="请输入建筑工程施工许可证"/>
+          <el-input v-model="form.architecturalLicence" placeholder="请输入建筑工程施工许可证" maxlength="10"/>
         </el-form-item>
         </el-form-item>
         <el-form-item label="项目用时" prop="projectTime">
         <el-form-item label="项目用时" prop="projectTime">
-          <el-input v-model="form.projectTime" placeholder="请输入项目用时"/>
+          <el-input v-model="form.projectTime" placeholder="请输入项目用时" maxlength="10"/>
         </el-form-item>
         </el-form-item>
         <el-form-item label="立项用地阶段" prop="projectApprovalStage">
         <el-form-item label="立项用地阶段" prop="projectApprovalStage">
-          <el-input v-model="form.projectApprovalStage" placeholder="请输入立项用地阶段"/>
+          <el-input v-model="form.projectApprovalStage" placeholder="请输入立项用地阶段" maxlength="10"/>
         </el-form-item>
         </el-form-item>
         <el-form-item label="工程规划阶段" prop="planStage">
         <el-form-item label="工程规划阶段" prop="planStage">
-          <el-input v-model="form.planStage" placeholder="请输入工程规划阶段"/>
+          <el-input v-model="form.planStage" placeholder="请输入工程规划阶段" maxlength="10"/>
         </el-form-item>
         </el-form-item>
         <el-form-item label="施工许可阶段" prop="permitStage">
         <el-form-item label="施工许可阶段" prop="permitStage">
-          <el-input v-model="form.permitStage" placeholder="请输入施工许可阶段"/>
+          <el-input v-model="form.permitStage" placeholder="请输入施工许可阶段" maxlength="10"/>
         </el-form-item>
         </el-form-item>
         <el-form-item label="竣工验收阶段" prop="acceptancePhase">
         <el-form-item label="竣工验收阶段" prop="acceptancePhase">
-          <el-input v-model="form.acceptancePhase" placeholder="请输入竣工验收阶段"/>
+          <el-input v-model="form.acceptancePhase" placeholder="请输入竣工验收阶段" maxlength="10"/>
         </el-form-item>
         </el-form-item>
         <el-form-item label="大厅办件总数" prop="hallTotal">
         <el-form-item label="大厅办件总数" prop="hallTotal">
-          <el-input v-model="form.hallTotal" placeholder="请输入大厅办件总数"/>
+          <el-input v-model="form.hallTotal" placeholder="请输入大厅办件总数" maxlength="10"/>
         </el-form-item>
         </el-form-item>
       </el-form>
       </el-form>
       <div slot="footer" class="dialog-footer">
       <div slot="footer" class="dialog-footer">
@@ -157,6 +159,7 @@
 <script>
 <script>
 
 
 import {addHandling, delHandling, updateHandling, getHandling, listHandling} from "@/api/system/handling";
 import {addHandling, delHandling, updateHandling, getHandling, listHandling} from "@/api/system/handling";
+import {checkNonnegativeInteger} from "@/api/system/rules";
 
 
 export default {
 export default {
   name: "Handling",
   name: "Handling",
@@ -197,7 +200,44 @@ export default {
       // 表单参数
       // 表单参数
       form: {},
       form: {},
       // 表单校验
       // 表单校验
-      rules: {}
+      rules: {
+        buildLandUse: [
+          { required: true, message: "建设用地不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+        architecturalEngineering: [
+          { required: true, message: "建设工程不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+        architecturalLicence: [
+          { required: true, message: "建筑工程施工许可证不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+        projectTime: [
+          { required: true, message: "项目用时不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+        projectApprovalStage: [
+          { required: true, message: "立项用地阶段不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+        planStage: [
+          { required: true, message: "工程规划阶段不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+        permitStage: [
+          { required: true, message: "施工许可阶段不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+        acceptancePhase: [
+          { required: true, message: "竣工验收阶段不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+        hallTotal: [
+          { required: true, message: "大厅办件总数不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+      }
     };
     };
   },
   },
   created() {
   created() {

+ 23 - 15
zhsq_qk-ui/src/views/system/matters/index.vue

@@ -6,6 +6,7 @@
           v-model="queryParams.eventName"
           v-model="queryParams.eventName"
           placeholder="请输入事项名称"
           placeholder="请输入事项名称"
           clearable
           clearable
+          maxlength="15"
           @keyup.enter.native="handleQuery"
           @keyup.enter.native="handleQuery"
         />
         />
       </el-form-item>
       </el-form-item>
@@ -14,6 +15,7 @@
           v-model="queryParams.eventCount"
           v-model="queryParams.eventCount"
           placeholder="请输入事项件数"
           placeholder="请输入事项件数"
           clearable
           clearable
+          maxlength="15"
           @keyup.enter.native="handleQuery"
           @keyup.enter.native="handleQuery"
         />
         />
       </el-form-item>
       </el-form-item>
@@ -59,23 +61,23 @@
         >删除
         >删除
         </el-button>
         </el-button>
       </el-col>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['system:matters:export']"
-        >导出
-        </el-button>
-      </el-col>
+<!--      <el-col :span="1.5">-->
+<!--        <el-button-->
+<!--          type="warning"-->
+<!--          plain-->
+<!--          icon="el-icon-download"-->
+<!--          size="mini"-->
+<!--          @click="handleExport"-->
+<!--          v-hasPermi="['system:matters:export']"-->
+<!--        >导出-->
+<!--        </el-button>-->
+<!--      </el-col>-->
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
     </el-row>
 
 
     <el-table v-loading="loading" :data="mattersList" @selection-change="handleSelectionChange">
     <el-table v-loading="loading" :data="mattersList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center"/>
       <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="主键id" align="center" prop="id"/>
+<!--      <el-table-column label="主键id" align="center" prop="id"/>-->
       <el-table-column label="事项名称" align="center" prop="eventName"/>
       <el-table-column label="事项名称" align="center" prop="eventName"/>
       <el-table-column label="事项件数" align="center" prop="eventCount"/>
       <el-table-column label="事项件数" align="center" prop="eventCount"/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@@ -112,10 +114,10 @@
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="事项名称" prop="eventName">
         <el-form-item label="事项名称" prop="eventName">
-          <el-input v-model="form.eventName" placeholder="请输入事项名称"/>
+          <el-input v-model="form.eventName" placeholder="请输入事项名称" maxlength="10"/>
         </el-form-item>
         </el-form-item>
         <el-form-item label="事项件数" prop="eventCount">
         <el-form-item label="事项件数" prop="eventCount">
-          <el-input v-model="form.eventCount" placeholder="请输入事项件数"/>
+          <el-input v-model="form.eventCount" placeholder="请输入事项件数" maxlength="10"/>
         </el-form-item>
         </el-form-item>
       </el-form>
       </el-form>
       <div slot="footer" class="dialog-footer">
       <div slot="footer" class="dialog-footer">
@@ -128,6 +130,7 @@
 
 
 <script>
 <script>
 import {addMatters, delMatters, updateMatters,getMatters, listMatters} from "@/api/system/matters";
 import {addMatters, delMatters, updateMatters,getMatters, listMatters} from "@/api/system/matters";
+import {checkNonnegativeInteger} from "@/api/system/rules";
 
 
 export default {
 export default {
   name: "Matters",
   name: "Matters",
@@ -161,7 +164,12 @@ export default {
       // 表单参数
       // 表单参数
       form: {},
       form: {},
       // 表单校验
       // 表单校验
-      rules: {}
+      rules: {
+        eventCount: [
+          { required: true, message: "事项件数不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+      }
     };
     };
   },
   },
   created() {
   created() {

+ 53 - 33
zhsq_qk-ui/src/views/system/pdocuments/index.vue

@@ -6,30 +6,32 @@
           v-model="queryParams.passport"
           v-model="queryParams.passport"
           placeholder="请输入护"
           placeholder="请输入护"
           clearable
           clearable
+          maxlength="15"
           @keyup.enter.native="handleQuery"
           @keyup.enter.native="handleQuery"
         />
         />
       </el-form-item>
       </el-form-item>
-      <el-form-item label="港" prop="hongKong">
-        <el-input
-          v-model="queryParams.hongKong"
-          placeholder="请输入港"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="台" prop="taiwan">
-        <el-input
-          v-model="queryParams.taiwan"
-          placeholder="请输入台"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
+<!--      <el-form-item label="港" prop="hongKong">-->
+<!--        <el-input-->
+<!--          v-model="queryParams.hongKong"-->
+<!--          placeholder="请输入港"-->
+<!--          clearable-->
+<!--          @keyup.enter.native="handleQuery"-->
+<!--        />-->
+<!--      </el-form-item>-->
+<!--      <el-form-item label="台" prop="taiwan">-->
+<!--        <el-input-->
+<!--          v-model="queryParams.taiwan"-->
+<!--          placeholder="请输入台"-->
+<!--          clearable-->
+<!--          @keyup.enter.native="handleQuery"-->
+<!--        />-->
+<!--      </el-form-item>-->
       <el-form-item label="外国人" prop="foreigners">
       <el-form-item label="外国人" prop="foreigners">
         <el-input
         <el-input
           v-model="queryParams.foreigners"
           v-model="queryParams.foreigners"
           placeholder="请输入外国人"
           placeholder="请输入外国人"
           clearable
           clearable
+          maxlength="15"
           @keyup.enter.native="handleQuery"
           @keyup.enter.native="handleQuery"
         />
         />
       </el-form-item>
       </el-form-item>
@@ -75,23 +77,23 @@
         >删除
         >删除
         </el-button>
         </el-button>
       </el-col>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['system:pdocuments:export']"
-        >导出
-        </el-button>
-      </el-col>
+<!--      <el-col :span="1.5">-->
+<!--        <el-button-->
+<!--          type="warning"-->
+<!--          plain-->
+<!--          icon="el-icon-download"-->
+<!--          size="mini"-->
+<!--          @click="handleExport"-->
+<!--          v-hasPermi="['system:pdocuments:export']"-->
+<!--        >导出-->
+<!--        </el-button>-->
+<!--      </el-col>-->
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
     </el-row>
 
 
     <el-table v-loading="loading" :data="pdocumentsList" @selection-change="handleSelectionChange">
     <el-table v-loading="loading" :data="pdocumentsList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center"/>
       <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="主键id" align="center" prop="id"/>
+<!--      <el-table-column label="主键id" align="center" prop="id"/>-->
       <el-table-column label="护" align="center" prop="passport"/>
       <el-table-column label="护" align="center" prop="passport"/>
       <el-table-column label="港" align="center" prop="hongKong"/>
       <el-table-column label="港" align="center" prop="hongKong"/>
       <el-table-column label="台" align="center" prop="taiwan"/>
       <el-table-column label="台" align="center" prop="taiwan"/>
@@ -130,16 +132,16 @@
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="护" prop="passport">
         <el-form-item label="护" prop="passport">
-          <el-input v-model="form.passport" placeholder="请输入护"/>
+          <el-input v-model="form.passport" placeholder="请输入护" maxlength="10"/>
         </el-form-item>
         </el-form-item>
         <el-form-item label="港" prop="hongKong">
         <el-form-item label="港" prop="hongKong">
-          <el-input v-model="form.hongKong" placeholder="请输入港"/>
+          <el-input v-model="form.hongKong" placeholder="请输入港" maxlength="10"/>
         </el-form-item>
         </el-form-item>
         <el-form-item label="台" prop="taiwan">
         <el-form-item label="台" prop="taiwan">
-          <el-input v-model="form.taiwan" placeholder="请输入台"/>
+          <el-input v-model="form.taiwan" placeholder="请输入台" maxlength="10"/>
         </el-form-item>
         </el-form-item>
         <el-form-item label="外国人" prop="foreigners">
         <el-form-item label="外国人" prop="foreigners">
-          <el-input v-model="form.foreigners" placeholder="请输入外国人"/>
+          <el-input v-model="form.foreigners" placeholder="请输入外国人" maxlength="10"/>
         </el-form-item>
         </el-form-item>
       </el-form>
       </el-form>
       <div slot="footer" class="dialog-footer">
       <div slot="footer" class="dialog-footer">
@@ -152,6 +154,7 @@
 
 
 <script>
 <script>
 import {addPdocuments, delPdocuments, updatePdocuments, getPdocuments, listPdocuments} from "@/api/system/pdocuments";
 import {addPdocuments, delPdocuments, updatePdocuments, getPdocuments, listPdocuments} from "@/api/system/pdocuments";
+import {checkNonnegativeInteger} from "@/api/system/rules";
 
 
 export default {
 export default {
   name: "Pdocuments",
   name: "Pdocuments",
@@ -187,7 +190,24 @@ export default {
       // 表单参数
       // 表单参数
       form: {},
       form: {},
       // 表单校验
       // 表单校验
-      rules: {}
+      rules: {
+        passport: [
+          { required: true, message: "护不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+        hongKong: [
+          { required: true, message: "港不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+        taiwan: [
+          { required: true, message: "台不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+        foreigners: [
+          { required: true, message: "外国人不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+      }
     };
     };
   },
   },
   created() {
   created() {

+ 37 - 20
zhsq_qk-ui/src/views/system/rate/index.vue

@@ -1,19 +1,21 @@
 <template>
 <template>
   <div class="app-container">
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="自然人办件数" prop="numberOfProcessedItems">
+      <el-form-item label="办件数" prop="numberOfProcessedItems">
         <el-input
         <el-input
           v-model="queryParams.numberOfProcessedItems"
           v-model="queryParams.numberOfProcessedItems"
-          placeholder="请输入自然人办件数"
+          placeholder="请输入办件数"
           clearable
           clearable
+          maxlength="15"
           @keyup.enter.native="handleQuery"
           @keyup.enter.native="handleQuery"
         />
         />
       </el-form-item>
       </el-form-item>
-      <el-form-item label="自然人办结数" prop="completedQuantity">
+      <el-form-item label="办结数" prop="completedQuantity">
         <el-input
         <el-input
           v-model="queryParams.completedQuantity"
           v-model="queryParams.completedQuantity"
-          placeholder="请输入自然人办结数"
+          placeholder="请输入办结数"
           clearable
           clearable
+          maxlength="15"
           @keyup.enter.native="handleQuery"
           @keyup.enter.native="handleQuery"
         />
         />
       </el-form-item>
       </el-form-item>
@@ -22,6 +24,7 @@
           v-model="queryParams.completionRate"
           v-model="queryParams.completionRate"
           placeholder="请输入办结率"
           placeholder="请输入办结率"
           clearable
           clearable
+          maxlength="15"
           @keyup.enter.native="handleQuery"
           @keyup.enter.native="handleQuery"
         />
         />
       </el-form-item>
       </el-form-item>
@@ -67,23 +70,23 @@
         >删除
         >删除
         </el-button>
         </el-button>
       </el-col>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['system:rate:export']"
-        >导出
-        </el-button>
-      </el-col>
+<!--      <el-col :span="1.5">-->
+<!--        <el-button-->
+<!--          type="warning"-->
+<!--          plain-->
+<!--          icon="el-icon-download"-->
+<!--          size="mini"-->
+<!--          @click="handleExport"-->
+<!--          v-hasPermi="['system:rate:export']"-->
+<!--        >导出-->
+<!--        </el-button>-->
+<!--      </el-col>-->
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
     </el-row>
 
 
     <el-table v-loading="loading" :data="rateList" @selection-change="handleSelectionChange">
     <el-table v-loading="loading" :data="rateList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center"/>
       <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="主键id" align="center" prop="id"/>
+<!--      <el-table-column label="主键id" align="center" prop="id"/>-->
       <el-table-column label="自然人办件数" align="center" prop="numberOfProcessedItems"/>
       <el-table-column label="自然人办件数" align="center" prop="numberOfProcessedItems"/>
       <el-table-column label="自然人办结数" align="center" prop="completedQuantity"/>
       <el-table-column label="自然人办结数" align="center" prop="completedQuantity"/>
       <el-table-column label="办结率" align="center" prop="completionRate"/>
       <el-table-column label="办结率" align="center" prop="completionRate"/>
@@ -121,13 +124,13 @@
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="自然人办件数" prop="numberOfProcessedItems">
         <el-form-item label="自然人办件数" prop="numberOfProcessedItems">
-          <el-input v-model="form.numberOfProcessedItems" placeholder="请输入自然人办件数"/>
+          <el-input v-model="form.numberOfProcessedItems" placeholder="请输入自然人办件数" maxlength="10"/>
         </el-form-item>
         </el-form-item>
         <el-form-item label="自然人办结数" prop="completedQuantity">
         <el-form-item label="自然人办结数" prop="completedQuantity">
-          <el-input v-model="form.completedQuantity" placeholder="请输入自然人办结数"/>
+          <el-input v-model="form.completedQuantity" placeholder="请输入自然人办结数" maxlength="10"/>
         </el-form-item>
         </el-form-item>
         <el-form-item label="办结率" prop="completionRate">
         <el-form-item label="办结率" prop="completionRate">
-          <el-input v-model="form.completionRate" placeholder="请输入办结率"/>
+          <el-input v-model="form.completionRate" placeholder="请输入办结率" maxlength="10"/>
         </el-form-item>
         </el-form-item>
       </el-form>
       </el-form>
       <div slot="footer" class="dialog-footer">
       <div slot="footer" class="dialog-footer">
@@ -140,6 +143,7 @@
 
 
 <script>
 <script>
 import {addRate, delRate, updateRate,getRate, listRate} from "@/api/system/rate";
 import {addRate, delRate, updateRate,getRate, listRate} from "@/api/system/rate";
+import {checkNonnegativeInteger} from "@/api/system/rules";
 
 
 export default {
 export default {
   name: "Rate",
   name: "Rate",
@@ -174,7 +178,20 @@ export default {
       // 表单参数
       // 表单参数
       form: {},
       form: {},
       // 表单校验
       // 表单校验
-      rules: {}
+      rules: {
+        numberOfProcessedItems: [
+          { required: true, message: "自然人办件数不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+        completedQuantity: [
+          { required: true, message: "自然人办结数不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+        completionRate: [
+          { required: true, message: "办结率不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+      }
     };
     };
   },
   },
   created() {
   created() {

+ 62 - 73
zhsq_qk-ui/src/views/system/review/index.vue

@@ -1,46 +1,46 @@
 <template>
 <template>
   <div class="app-container">
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="非常满意" prop="verySatisfied">
+      <el-form-item label="满意" prop="verySatisfied">
         <el-input
         <el-input
           v-model="queryParams.verySatisfied"
           v-model="queryParams.verySatisfied"
-          placeholder="请输入非常满意"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="满意" prop="satisfied">
-        <el-input
-          v-model="queryParams.satisfied"
-          placeholder="请输入满意"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="基本满意" prop="somewhatSatisfied">
-        <el-input
-          v-model="queryParams.somewhatSatisfied"
-          placeholder="请输入基本满意"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="不满意" prop="dissatisfied">
-        <el-input
-          v-model="queryParams.dissatisfied"
-          placeholder="请输入不满意"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="非常不满意" prop="veryDissatisfied">
-        <el-input
-          v-model="queryParams.veryDissatisfied"
-          placeholder="请输入非常不满意"
+          placeholder="请输入满意度"
           clearable
           clearable
           @keyup.enter.native="handleQuery"
           @keyup.enter.native="handleQuery"
         />
         />
       </el-form-item>
       </el-form-item>
+<!--      <el-form-item label="数量" prop="satisfied">-->
+<!--        <el-input-->
+<!--          v-model="queryParams.satisfiedNum"-->
+<!--          placeholder="请输入满意"-->
+<!--          clearable-->
+<!--          @keyup.enter.native="handleQuery"-->
+<!--        />-->
+<!--      </el-form-item>-->
+<!--      <el-form-item label="基本满意" prop="somewhatSatisfied">-->
+<!--        <el-input-->
+<!--          v-model="queryParams.somewhatSatisfied"-->
+<!--          placeholder="请输入基本满意"-->
+<!--          clearable-->
+<!--          @keyup.enter.native="handleQuery"-->
+<!--        />-->
+<!--      </el-form-item>-->
+<!--      <el-form-item label="不满意" prop="dissatisfied">-->
+<!--        <el-input-->
+<!--          v-model="queryParams.dissatisfied"-->
+<!--          placeholder="请输入不满意"-->
+<!--          clearable-->
+<!--          @keyup.enter.native="handleQuery"-->
+<!--        />-->
+<!--      </el-form-item>-->
+<!--      <el-form-item label="非常不满意" prop="veryDissatisfied">-->
+<!--        <el-input-->
+<!--          v-model="queryParams.veryDissatisfied"-->
+<!--          placeholder="请输入非常不满意"-->
+<!--          clearable-->
+<!--          @keyup.enter.native="handleQuery"-->
+<!--        />-->
+<!--      </el-form-item>-->
       <el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -83,28 +83,25 @@
         >删除
         >删除
         </el-button>
         </el-button>
       </el-col>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['system:review:export']"
-        >导出
-        </el-button>
-      </el-col>
+<!--      <el-col :span="1.5">-->
+<!--        <el-button-->
+<!--          type="warning"-->
+<!--          plain-->
+<!--          icon="el-icon-download"-->
+<!--          size="mini"-->
+<!--          @click="handleExport"-->
+<!--          v-hasPermi="['system:review:export']"-->
+<!--        >导出-->
+<!--        </el-button>-->
+<!--      </el-col>-->
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
     </el-row>
 
 
     <el-table v-loading="loading" :data="reviewList" @selection-change="handleSelectionChange">
     <el-table v-loading="loading" :data="reviewList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center"/>
       <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="主键id" align="center" prop="id"/>
-      <el-table-column label="非常满意" align="center" prop="verySatisfied"/>
-      <el-table-column label="满意" align="center" prop="satisfied"/>
-      <el-table-column label="基本满意" align="center" prop="somewhatSatisfied"/>
-      <el-table-column label="不满意" align="center" prop="dissatisfied"/>
-      <el-table-column label="非常不满意" align="center" prop="veryDissatisfied"/>
+<!--      <el-table-column label="主键id" align="center" prop="id"/>-->
+      <el-table-column label="满意度" align="center" prop="verySatisfied"/>
+      <el-table-column label="数量" align="center" prop="satisfiedNum"/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
         <template slot-scope="scope">
           <el-button
           <el-button
@@ -138,21 +135,13 @@
     <!-- 添加或修改好差评对话框 -->
     <!-- 添加或修改好差评对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="非常满意" prop="verySatisfied">
-          <el-input v-model="form.verySatisfied" placeholder="请输入非常满意"/>
-        </el-form-item>
-        <el-form-item label="满意" prop="satisfied">
-          <el-input v-model="form.satisfied" placeholder="请输入满意"/>
+        <el-form-item label="满意度" prop="verySatisfied">
+          <el-input v-model="form.verySatisfied" placeholder="请输入满意度" maxlength="10"/>
         </el-form-item>
         </el-form-item>
-        <el-form-item label="基本满意" prop="somewhatSatisfied">
-          <el-input v-model="form.somewhatSatisfied" placeholder="请输入基本满意"/>
-        </el-form-item>
-        <el-form-item label="不满意" prop="dissatisfied">
-          <el-input v-model="form.dissatisfied" placeholder="请输入不满意"/>
-        </el-form-item>
-        <el-form-item label="非常不满意" prop="veryDissatisfied">
-          <el-input v-model="form.veryDissatisfied" placeholder="请输入非常不满意"/>
+        <el-form-item label="数量" prop="satisfiedNum">
+          <el-input v-model="form.satisfiedNum" placeholder="请输入数量" maxlength="10"/>
         </el-form-item>
         </el-form-item>
+
       </el-form>
       </el-form>
       <div slot="footer" class="dialog-footer">
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -164,6 +153,7 @@
 
 
 <script>
 <script>
 import {addReview, delReview, updateReview,getReview, listReview} from "@/api/system/review";
 import {addReview, delReview, updateReview,getReview, listReview} from "@/api/system/review";
+import {checkNonnegativeInteger} from "@/api/system/rules";
 
 
 export default {
 export default {
   name: "Review",
   name: "Review",
@@ -192,15 +182,17 @@ export default {
         pageNum: 1,
         pageNum: 1,
         pageSize: 10,
         pageSize: 10,
         verySatisfied: null,
         verySatisfied: null,
-        satisfied: null,
-        somewhatSatisfied: null,
-        dissatisfied: null,
-        veryDissatisfied: null
+        satisfiedNum: null,
       },
       },
       // 表单参数
       // 表单参数
       form: {},
       form: {},
       // 表单校验
       // 表单校验
-      rules: {}
+      rules: {
+        satisfiedNum: [
+          { required: true, message: "数量不能为空", trigger: "change" },
+          {validator: checkNonnegativeInteger, trigger: 'blur'}
+        ],
+      }
     };
     };
   },
   },
   created() {
   created() {
@@ -226,10 +218,7 @@ export default {
       this.form = {
       this.form = {
         id: null,
         id: null,
         verySatisfied: null,
         verySatisfied: null,
-        satisfied: null,
-        somewhatSatisfied: null,
-        dissatisfied: null,
-        veryDissatisfied: null
+        satisfiedNum: null,
       };
       };
       this.resetForm("form");
       this.resetForm("form");
     },
     },