فهرست منبع

Merge branch 'master' of http://106.55.241.82:3000/lzf/zhbsq-vue-web into master

gks 1 سال پیش
والد
کامیت
ef7b3f3f8b

+ 10 - 1
src/api/portal/GATHER/GATHER.js

@@ -92,7 +92,7 @@ export function download(id) {
 }
 
 
-// 导入
+// 导入(历史数据)
 export function upload(data) {
   return request({
     url: '/gather/upload/',
@@ -100,3 +100,12 @@ export function upload(data) {
     data:data
   })
 }
+
+// 导入
+export function uploadnew(data) {
+  return request({
+    url: '/gather/uploadnew',
+    method: 'post',
+    data:data
+  })
+}

+ 53 - 0
src/api/rank/RANK.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询广西保税区排名列表
+export function listRANK(query) {
+  return request({
+    url: '/rank/RANK/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询广西保税区排名所有列表
+export function listAllRANK(query) {
+  return request({
+    url: '/rank/RANK/listAll',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询广西保税区排名详细
+export function getRANK(id) {
+  return request({
+    url: '/rank/RANK/getInfo/' + id,
+    method: 'get'
+  })
+}
+
+// 新增广西保税区排名
+export function addRANK(data) {
+  return request({
+    url: '/rank/RANK/add',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改广西保税区排名
+export function updateRANK(data) {
+  return request({
+    url: '/rank/RANK/edit',
+    method: 'post',
+    data: data
+  })
+}
+
+// 删除广西保税区排名
+export function delRANK(id) {
+  return request({
+    url: '/rank/RANK/remove/' + id,
+    method: 'get'
+  })
+}

+ 53 - 0
src/api/totexp/TOTEXP.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询保税区进出口总值数据列表
+export function listTOTEXP(query) {
+  return request({
+    url: '/totexp/TOTEXP/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询保税区进出口总值数据所有列表
+export function listAllTOTEXP(query) {
+  return request({
+    url: '/totexp/TOTEXP/listAll',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询保税区进出口总值数据详细
+export function getTOTEXP(id) {
+  return request({
+    url: '/totexp/TOTEXP/getInfo/' + id,
+    method: 'get'
+  })
+}
+
+// 新增保税区进出口总值数据
+export function addTOTEXP(data) {
+  return request({
+    url: '/totexp/TOTEXP/add',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改保税区进出口总值数据
+export function updateTOTEXP(data) {
+  return request({
+    url: '/totexp/TOTEXP/edit',
+    method: 'post',
+    data: data
+  })
+}
+
+// 删除保税区进出口总值数据
+export function delTOTEXP(id) {
+  return request({
+    url: '/totexp/TOTEXP/remove/' + id,
+    method: 'get'
+  })
+}

+ 8 - 3
src/components/cropper.vue

@@ -8,8 +8,8 @@
       :fit="'contain'"
       style="width: 20%;margin-top: 10px;border-radius: 5px;margin-bottom: -15px;"
       :z-index="50000"
-      :src="baseUrl + value"
-      :preview-src-list="[baseUrl + value]"
+      :src="imgSrc"
+      :preview-src-list="[imgSrc]"
     ></el-image>
     <el-dialog title="图片剪裁" :visible.sync="open" :close-on-click-modal="false" @close="close" append-to-body>
       <div style="height:400px">
@@ -81,7 +81,8 @@ export default {
         full: true, //是否输出原图比例的截图
         fixedBox: false, //固定截图框大小 不允许改变
         centerBox: true //截图框是否被限制在图片里面
-      }
+      },
+      imgSrc: '',
     };
   },
   methods: {
@@ -133,6 +134,10 @@ export default {
           .then(response => {
             if (response.code === 200) {
               this.$emit('input', response.fileName);
+              this.$nextTick(() => {
+                this.imgSrc = `${this.baseUrl}${this.value}?t=${new Date().getTime()}`;
+              })
+              
               this.$modal.msgSuccess('上传成功');
               this.open = false;
             }

+ 2 - 0
src/views/APICONFIG/index.vue

@@ -455,12 +455,14 @@ export default {
         ],
         apiCode: [
           { required: true, message: "接口编号不能为空", trigger: "blur" },
+               { pattern: /^[1-9a-zA-Z]{1,}$/, message: '接口编号只能输入数字和字母', trigger: 'blur' }
         ],
         apiName: [
           { required: true, message: "接口名称不能为空", trigger: "blur" },
         ],
         apiUrl: [
           { required: true, message: "接口url不能为空", trigger: "blur" },
+          {pattern: /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\*\+,;=.]+$/, message: '请输入正确的url链接', trigger: 'blur' }
         ],
         request: [
           { required: true, message: "请求参数示例不能为空", trigger: "blur" },

+ 1 - 0
src/views/BONDED/index.vue

@@ -211,6 +211,7 @@ export default {
         ],
         yardNumber: [
           { required: true, message: "场站编号不能为空", trigger: "blur" },
+          { pattern: /^[1-9a-zA-Z]{1,}$/, message: '场站编号只能输入数字和字母', trigger: 'blur' }
         ],
         establishedTime: [
           { required: true, message: "成立时间不能为空", trigger: "blur" },

+ 29 - 3
src/views/CONTACTUS/index.vue

@@ -78,7 +78,7 @@
         <el-form-item label="单位名称" prop="title">
           <el-input v-model="form.depName" placeholder="请输入单位名称"></el-input>
         </el-form-item>
-        <el-form-item label="联系电话" prop="title">
+        <el-form-item label="联系电话" prop="telphone">
           <el-input v-model="form.telphone" placeholder="请输入联系电话"></el-input>
         </el-form-item>
         <el-form-item label="邮箱" prop="email">
@@ -98,11 +98,13 @@
 
 <script>
 import { listCONTACTUS, getCONTACTUS, delCONTACTUS, addCONTACTUS, updateCONTACTUS } from '@/api/portal/CONTACTUS/CONTACTUS.js';
+import { validEmail } from "@/utils/validate.js"
 
 export default {
   name: 'CONTACTUS',
   data() {
     return {
+      validEmail,
       // 根路径
       baseURL: process.env.VUE_APP_BASE_API,
       // 遮罩层
@@ -147,9 +149,12 @@ export default {
         delFlag: [{ required: true, message: '删除标志不能为空', trigger: 'blur' }],
         deptId: [{ required: true, message: '部门ID不能为空', trigger: 'blur' }],
         depName: [{ required: true, message: '单位名称不能为空', trigger: 'blur' }],
-        telphone: [{ required: true, message: '联系电话不能为空', trigger: 'blur' }],
+        telphone: [{ required: true, message: '联系电话不能为空', trigger: 'blur' },
+                { validator: this.validateMobile, trigger: 'blur' }],
         location: [{ required: true, message: '位置不能为空', trigger: 'blur' }],
-        email: [{ required: true, message: '邮箱不能为空', trigger: 'blur' }]
+        email: [{ required: true, message: '邮箱不能为空', trigger: 'blur' },
+                { validator: this.validEmailFun, trigger: 'blur' }
+      ]
       }
     };
   },
@@ -157,6 +162,27 @@ export default {
     this.getList();
   },
   methods: {
+    validEmailFun(rule, value, callback) {
+       if(this.validEmail(value)) {
+        callback()
+       }else {
+        callback(new Error('邮件格式不正确!'));
+       }
+    },
+    validateMobile(rule, value, callback) {
+      let reg1 = /^1[3|4|5|7|8][0-9]\d{8}$/;//11位手机号
+      let reg2 = /^(\d{3,4}-)?\d{6,8}$/;//座机和传真格式是一样的:区号-号码
+      if(!value && value!=='0'){
+        callback()
+      }else{
+        if (reg1.test(value) || reg2.test(value)) {
+          callback()
+        } else {
+          callback(new Error('请输入正确手机号!'));
+        }
+      }
+      
+    },
     /** 查询联系我们列表 */
     getList() {
       this.loading = true;

+ 1 - 1
src/views/COUNSELINGMESSAGE/task/index.vue

@@ -49,7 +49,7 @@
 <!--            <editor v-model="taskList.formobj.content" :min-height="192" :readOnly="true" />-->
 <!--          </el-form-item>-->
           <el-form-item label="内容" prop="content">
-            <editor v-model="taskList.formobj.content"/>
+            <div v-html="taskList.formobj.content" style="padding: 10px;box-shadow: 0 0px 12px 0 rgba(0, 0, 0, 0.1);border-radius: 10px;"></div>
           </el-form-item>
         </el-form>
 

+ 3 - 1
src/views/FRIENDLYLINKS/index.vue

@@ -117,7 +117,9 @@ export default {
         delFlag: [{ required: true, message: '删除标记不能为空', trigger: 'blur' }],
         deptId: [{ required: true, message: '部门id不能为空', trigger: 'blur' }],
         linkName: [{ required: true, message: '友情链接名称不能为空', trigger: 'blur' }],
-        linkUrl: [{ required: true, message: '友情链接url不能为空', trigger: 'blur' }]
+        linkUrl: [{ required: true, message: '友情链接url不能为空', trigger: 'blur' },
+                 {pattern: /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\*\+,;=.]+$/, message: '请输入正确的url链接', trigger: 'blur' }
+           ]
       }
     };
   },

+ 36 - 13
src/views/GATHER/index.vue

@@ -35,7 +35,10 @@
 
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
-        <el-button type="success" @click="openUpload = true">导入</el-button>
+        <el-button type="success" @click="onOpenDialog('old')">历史数据导入</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button type="success" v-hasPermi="['gather:GATHER:upload']" @click="onOpenDialog('new')">导入</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button @click="handleDownload()" :title="radio === '' ? '请先选择下面对应的单位模板' : ''" :disabled="radio === '' ? true : false">下载导入模板</el-button>
@@ -45,7 +48,7 @@
           type="danger"
           plain
           @click="importFile({type: '0', mark: '1'})"
-          v-hasPermi="['business:GARDENTRADEDATA:add']"
+          v-hasPermi="['gather:GATHER:upload']"
         >海关一般数据导入</el-button>
       </el-col>
       <el-col :span="1.5">
@@ -53,7 +56,7 @@
           type="danger"
           plain
           @click="importFile({type: '0', mark: '2'})"
-          v-hasPermi="['business:GARDENTRADEDATA:add']"
+          v-hasPermi="['gather:GATHER:upload']"
         >海关特殊数据导入</el-button>
       </el-col>
 
@@ -86,7 +89,7 @@
       </el-table-column>
       <el-table-column label="月份" align="center" prop="month">
         <template slot-scope="scope">
-          {{ scope.row.month }}
+          {{ '01-' + scope.row.month }}
         </template>
       </el-table-column>
       <el-table-column label="采集状态" align="center" prop="collStatus">
@@ -139,7 +142,7 @@
 
     <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
 
-    <!-- 上传文件对话框 -->
+    <!-- 上传文件对话框  历史数据导入 -->
     <el-dialog center title="导入" :visible.sync="openUpload" width="50%" append-to-body>
       <el-form ref="uploadForm" :model="uploadForm" :rules="rules" label-width="120px">
         <el-form-item label="数据类型" prop="type">
@@ -163,6 +166,7 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+
     <!-- 录入数据采集对话框 -->
     <el-dialog center :title="title" :visible.sync="open" width="50%" append-to-body>
       <el-tabs v-if="this.form.type == 0" v-model="activeName" type="border-card" @tab-click="handleClick">
@@ -258,7 +262,7 @@
 </template>
 
 <script>
-import { listGATHER, getGATHER, delGATHER, addGATHER, updateGATHER, getInfoByColl, approve, report, download, upload } from '@/api/portal/GATHER/GATHER.js';
+import { listGATHER, getGATHER, delGATHER, addGATHER, updateGATHER, getInfoByColl, approve, report, download, upload, uploadnew } from '@/api/portal/GATHER/GATHER.js';
 import importFile from "./importFile.vue";
 import { saveAs } from 'file-saver';
 import { getToken } from '@/utils/auth';
@@ -351,7 +355,8 @@ export default {
       rowData: {},
       fileList: [],
       uploadForm: {},
-      openUpload: false
+      openUpload: false,
+      uploadFileType: 'old', // old、new
     };
   },
   created() {
@@ -455,17 +460,35 @@ export default {
       this.radio = this.GATHERList.indexOf(row);
       this.rowData = row;
     },
+    /**
+     * 打开上传弹窗
+     * @params string type  old/new
+     */
+    onOpenDialog(type) {
+      this.uploadFileType = type;
+      this.openUpload = true;
+    },
     //导入
     uploadFile(file) {
       let formData = new FormData();
       formData.append('file', file);
       formData.append('type', this.uploadForm.type);
-      upload(formData).then(res => {
-        this.$modal.msgSuccess('上传采集附件成功!');
-        this.getList();
-        this.cancel();
-        this.openUpload = false;
-      });
+      if(this.uploadFileType === 'old') {
+        upload(formData).then(res => {
+          this.$modal.msgSuccess('上传采集附件成功!');
+          this.getList();
+          this.cancel();
+          this.openUpload = false;
+        });
+      } else {
+        uploadnew(formData).then(res => {
+          this.$modal.msgSuccess('上传采集附件成功!');
+          this.getList();
+          this.cancel();
+          this.openUpload = false;
+        });
+      }
+      
     },
     //下载模板
     handleDownload() {

+ 7 - 1
src/views/GATHERWARNING/index.vue

@@ -71,6 +71,11 @@
           <span v-else-if="scope.row.type == 1">月报表数据</span>
         </template>
       </el-table-column>
+      <el-table-column label="异常数据名称" align="center" prop="gatherFeeName">
+        <template slot-scope="scope">
+          {{ scope.row.gatherFeeName }}
+        </template>
+      </el-table-column>
       <el-table-column label="异常详细数据值" align="center" prop="errValue">
         <template slot-scope="scope">
           {{ scope.row.errValue }}
@@ -113,7 +118,8 @@
         align="center"
         class-name="small-padding fixed-width"
       >
-        <template slot-scope="scope">
+        <!-- 状态是“已解除”时不显示 -->
+        <template slot-scope="scope" v-if="scope.row.status != '1'">
           <el-popconfirm title="确定处理吗?" @confirm="handleDeal(scope.row)">
             <el-button
               size="mini"

+ 30 - 3
src/views/ONLINE/index.vue

@@ -76,11 +76,13 @@
 
 <script>
 import { listONLINE, getONLINE, delONLINE, addONLINE, updateONLINE } from '@/api/portal/ONLINE/ONLINE';
+import { validEmail } from "@/utils/validate.js"
 
 export default {
   name: 'ONLINE',
   data() {
     return {
+      validEmail,
       // 根路径
       baseURL: process.env.VUE_APP_BASE_API,
       // 遮罩层
@@ -123,11 +125,15 @@ export default {
       rules: {
         id: [{ required: true, message: '主键不能为空', trigger: 'blur' }],
         delFlag: [{ required: true, message: '删除标志不能为空', trigger: 'blur' }],
-        deptId: [{ required: true, message: '部门id不能为空', trigger: 'blur' }],
+        deptId: [{ required: true, message: '单位编码不能为空', trigger: 'blur' },
+                 { pattern: /^[1-9a-zA-Z]{1,}$/, message: '单位编码只能输入数字和字母', trigger: 'blur' }
+                ],
         depName: [{ required: true, message: '单位名称不能为空', trigger: 'blur' }],
-        telphone: [{ required: true, message: '单位电话不能为空', trigger: 'blur' }],
+        telphone: [{ required: true, message: '单位电话不能为空', trigger: 'blur' },
+                  {validator: this.validateMobile, trigger: "blur"}],
         location: [{ required: true, message: '单位地址不能为空', trigger: 'blur' }],
-        email: [{ required: true, message: '单位邮箱不能为空', trigger: 'blur' }],
+        email: [{ required: true, message: '单位邮箱不能为空', trigger: 'blur' },
+                { validator: this.validEmailFun, trigger: 'blur' }],
         introduction:[{ required: true, message: '简介不能为空', trigger: 'blur' }]
       }
     };
@@ -136,6 +142,27 @@ export default {
     this.getList();
   },
   methods: {
+    validEmailFun(rule, value, callback) {
+       if(this.validEmail(value)) {
+        callback()
+       }else {
+        callback(new Error('邮件格式不正确!'));
+       }
+    },
+    validateMobile(rule, value, callback) {
+      let reg1 = /^1[3|4|5|7|8][0-9]\d{8}$/;//11位手机号
+      let reg2 = /^(\d{3,4}-)?\d{6,8}$/;//座机和传真格式是一样的:区号-号码
+      if(!value && value!=='0'){
+        callback()
+      }else{
+        if (reg1.test(value) || reg2.test(value)) {
+          callback()
+        } else {
+          callback(new Error('请输入正确手机号!'));
+        }
+      }
+      
+    },
     /** 查询网上办事列表 */
     getList() {
       this.loading = true;

+ 342 - 0
src/views/RANK/index.vue

@@ -0,0 +1,342 @@
+<template>
+  <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="type" label-width="110">
+        <el-select v-model="queryParams.deptId" placeholder="请选择保税区" clearable filterable class="se">
+          <el-option v-for="item in deptList" :key="item.id" :label="item.deptName" :value="item.deptId" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="年份" prop="type" label-width="110">
+        <el-select v-model="queryParams.year" placeholder="请选择年份" clearable filterable class="se">
+          <el-option v-for="item in nearYearList" :key="item" :label="item" :value="item" />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <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-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['rank:RANK:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['rank:RANK:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['rank:RANK:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['rank:RANK:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="RANKList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="保税区" align="center" prop="deptName">
+        <template slot-scope="scope">
+          {{scope.row.deptName}}
+        </template>
+      </el-table-column>
+      <el-table-column label="年份" align="center" prop="year">
+        <template slot-scope="scope">
+          {{scope.row.year}}
+        </template>
+      </el-table-column>
+      <el-table-column label="排名" align="center" prop="ranking">
+        <template slot-scope="scope">
+          {{scope.row.ranking}}
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['rank:RANK:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['rank:RANK:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      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-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item prop="deptId"  label-width="100px" label="保税区名称">
+          <el-select v-model="form.deptId" filterable default-first-option clearable placeholder="请选择保税区">
+            <el-option
+              v-for="item in deptList"
+              :key="item.deptId"
+              :label="item.deptName"
+              :value="item.deptId">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="year" label-width="100px" label="年份">
+          <el-select v-model="form.year" filterable default-first-option clearable placeholder="请选择年份">
+            <el-option
+              v-for="item in nearYearList"
+              :label="item"
+              :value="item">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="ranking" label-width="100px" label="出入口总值">
+          <el-input  v-model="form.ranking" placeholder="请输入出入口总值" ></el-input>
+        </el-form-item>
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listRANK, getRANK, delRANK, addRANK, updateRANK } from "@/api/rank/RANK";
+import { listDept } from '@/api/system/dept'
+
+export default {
+  name: "RANK",
+  data() {
+    return {
+      // 根路径
+      baseURL: process.env.VUE_APP_BASE_API,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 广西保税区排名表格数据
+      RANKList: [],
+      // 保税区列表
+      deptList: [],
+      // 近年年份列表
+      nearYearList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        id: null,
+        deptId: null,
+        year: null,
+        ranking: null,
+        createTime: null,
+        createBy: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        deptId: [
+          { required: true, message: "保税区ID不能为空", trigger: "blur" }
+        ],
+        year: [
+          { required: true, message: "年份不能为空", trigger: "blur" },
+          { trigger: 'blur', validator: this.validatorFloatNum }
+        ],
+        ranking: [
+          { required: true, message: "排名不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+
+  },
+  methods: {
+    /** 查询广西保税区排名列表 */
+    getList() {
+      this.loading = true;
+      listRANK(this.queryParams).then(response => {
+        this.RANKList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+      this.getDeptList();
+      this.getNearYear();
+    },
+    // 获取保税区列表
+    getDeptList() {
+      this.loading = true;
+      listDept({parentId: '100'}).then(response => {
+        this.deptList = response.data
+        this.loading = false;
+      });
+    },
+    // 获取近年年份
+    getNearYear() {
+      let currentDate = new Date();
+      let curYear = currentDate.getFullYear();
+
+      // 获取近三年
+      let nearYearArr = [];
+      for (let i = 1; i <= 4; i++) {
+        nearYearArr.push(curYear - i + '');
+      }
+
+      this.nearYearList = nearYearArr
+
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        deptId: null,
+        year: null,
+        ranking: 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();
+      this.open = true;
+      this.title = "添加广西保税区排名";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getRANK(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) {
+            updateRANK(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addRANK(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 delRANK(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('rank/RANK/export', {
+        ...this.queryParams
+      }, `RANK_${new Date().getTime()}.xlsx`)
+    },
+    // 校验参数
+    validatorFloatNum(rule, value, callback) {
+      let reg = /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g;
+      if (!reg.test(value)) {
+        callback(new Error('请输入数字和正确格式的数字'));
+      } else if (value.split('.').length > 2) {
+        callback(new Error('请输入正确格式的数字')); //防止输入多个小数点
+      } else if (value.indexOf('.') != -1 && value.split('.')[1].length > 2) {
+        callback(new Error('最多只能输入两位小数')); //小数点后两位
+      } else {
+        callback();
+      }
+    },
+  }
+};
+</script>

+ 187 - 0
src/views/REGISTERTASK/index.vue

@@ -0,0 +1,187 @@
+<template>
+  <div>
+    <el-tabs v-model="activeName">
+      <el-tab-pane label="详细信息" name="详细信息">
+        <el-descriptions border>
+          <el-descriptions-item label="活动名称">{{ taskList.acname }}</el-descriptions-item>
+          <el-descriptions-item label="任务启动时间">
+            {{ taskList.beginTime ? taskList.beginTime.substr(0, 10) : '无' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="业务备注">{{ taskList.fromKeyword }}</el-descriptions-item>
+          <el-descriptions-item label="流程名称">{{ taskList.proname }}</el-descriptions-item>
+          <el-descriptions-item label="审核状态">
+            <el-tag v-if="taskList.status == 1" type="success">同意</el-tag>
+            <el-tag v-else-if="taskList.status == 2" type="danger">驳回</el-tag>
+            <el-tag v-else-if="taskList.status == 3" type="info">退回</el-tag>
+            <el-tag v-else-if="taskList.status == 0">待审核</el-tag>
+          </el-descriptions-item>
+          <el-descriptions-item label="审核意见">{{ taskList.comments ? taskList.comments : '无' }}</el-descriptions-item>
+        </el-descriptions>
+
+        <el-form ref="form" :model="taskList" label-width="auto" style="margin-top: 20px">
+          <el-row>
+            <el-col :span="12">
+              <el-col :span="12">
+                <el-form-item label="姓名:">{{ taskList.formobj.nickName }}</el-form-item>
+              </el-col>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="头像:">
+                <el-image
+                  :fit="'contain'"
+                  style="
+                  width: 100px;
+                  margin-top: 10px;
+                  border-radius: 5px;
+                  margin-bottom: -15px;"
+                  :z-index="50000"
+                  :src="baseUrl + taskList.formobj.userAvatar"
+                  @click="showImagePreview(taskList.formobj.userAvatar)"
+                ></el-image>
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="类型:">
+                <span v-if="taskList.formobj.type == 2">专家</span>
+                <span v-else>其它</span>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="民族:">{{ taskList.formobj.nation }}</el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="用户名:">{{ taskList.formobj.userName }}</el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="学历:">{{ taskList.formobj.education }}</el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="服务方向:">{{ taskList.formobj.servicesAvailable }}</el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="工作经验:">{{ taskList.formobj.experience }}</el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="专业领域:">{{ taskList.formobj.field }}</el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="研究方向:">{{ taskList.formobj.research }}</el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="学位证书:">
+                <el-image
+                  :fit="'contain'"
+                  style="
+                  width: 30%;
+                  margin-top: 10px;
+                  border-radius: 5px;
+                  margin-bottom: -15px;"
+                  :z-index="50000"
+                  :src="baseUrl + taskList.formobj.diploma"
+                  @click="showImagePreview(taskList.formobj.diploma)"
+                ></el-image>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="资格证书:">
+                <el-image
+                  :fit="'contain'"
+                  style="
+                width: 20%;
+                margin-top: 10px;
+                border-radius: 5px;
+                margin-bottom: -15px;
+              "
+                  :z-index="50000"
+                  :src="baseUrl + taskList.formobj.credentials"
+                  @click="showImagePreview(taskList.formobj.credentials)"
+                ></el-image>
+               </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <el-dialog :visible="BigImgVisible" fullscreen append-to-body @close="BigImgVisible = false">
+          <img width="100%" :src="taskList.formobj.fileUrl" alt="" />
+        </el-dialog>
+      </el-tab-pane>
+      <el-tab-pane label="审批记录" name="审批记录">
+        <el-timeline>
+          <el-timeline-item v-for="(item, index) in taskList.taskHisAction" :timestamp="item.createTime" placement="top" :key="index + 'taskHisAction'">
+            <el-card>
+              <p>{{ item.execId }} {{ item.acname }} 于 {{ item.createTime }}</p>
+            </el-card>
+          </el-timeline-item>
+        </el-timeline>
+      </el-tab-pane>
+      <!-- 图片预览弹出框 -->
+      <el-dialog
+        :visible.sync="imagePreviewVisible"
+        width="50%"
+        title="预览图片"
+        :close-on-click-modal="true"
+      >
+        <img
+          :src="previewImageUrl"
+          style="width: 100%; height: auto;"
+          alt="预览图片"
+        />
+      </el-dialog>
+    </el-tabs>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      baseURL: process.env.VUE_APP_BASE_API,
+      activeName: '详细信息',
+      fileList: [],
+      BigImgVisible: false,
+      imagePreviewVisible: false, // 控制图片预览弹出框的显示与隐藏
+      previewImageUrl: '', // 预览图片的URL
+    };
+  },
+  props: ['taskList'],
+  created() {
+    if (this.taskList.formobj.fileUrl) {
+      this.fileList.push({
+        url: this.baseURL + this.taskList.formobj.fileUrl,
+        name: "xxx",
+      });
+    }
+  },
+  watch: {
+    taskList(curVal, oldVal) {
+      if (curVal) {
+        curVal.formobj.content = curVal.formobj.content.replace(new RegExp('/profile/upload/', 'g'), this.baseUrl + '/profile/upload/');
+        this.fileList.pop();
+        this.fileList.push({ url: this.baseUrl + curVal.formobj.fileUrl, name: "xxx", });
+      }
+    },
+  },
+  methods: {
+    handlePictureCardPreview(file) {
+      this.taskList.formobj.fileUrl = file.url;
+      this.BigImgVisible = true;
+    },
+    showImagePreview(url) {
+      this.previewImageUrl = this.baseURL + url;
+      this.imagePreviewVisible = true;
+    },
+  }
+};
+</script>
+
+<style></style>

+ 356 - 0
src/views/TOTEXP/index.vue

@@ -0,0 +1,356 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item>
+        <el-form-item label="保税区名称" prop="type" label-width="110">
+          <el-select v-model="queryParams.deptId" placeholder="请选择保税区" clearable filterable class="se">
+            <el-option v-for="item in deptList" :key="item.id" :label="item.deptName" :value="item.deptId" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="年份" prop="type" label-width="110">
+          <el-select v-model="queryParams.year" placeholder="请选择年份" clearable filterable class="se">
+            <el-option v-for="item in nearYearList" :key="item" :label="item" :value="item" />
+          </el-select>
+        </el-form-item>
+        <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-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['totexp:TOTEXP:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['totexp:TOTEXP:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['totexp:TOTEXP:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['totexp:TOTEXP:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="TOTEXPList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+<!--      <el-table-column label="主键" align="center" prop="id">-->
+<!--        <template slot-scope="scope">-->
+<!--          {{scope.row.id}}-->
+<!--        </template>-->
+<!--      </el-table-column>-->
+      <el-table-column label="保税区" align="center" prop="deptName">
+        <template slot-scope="scope">
+          {{scope.row.deptName}}
+        </template>
+      </el-table-column>
+      <el-table-column label="进出口值" align="center" prop="imExport">
+        <template slot-scope="scope">
+          {{scope.row.imExport}}
+        </template>
+      </el-table-column>
+<!--      <el-table-column label="创建时间" align="center" prop="createTime">-->
+<!--        <template slot-scope="scope">-->
+<!--          {{scope.row.deptId}}-->
+<!--        </template>-->
+<!--      </el-table-column>-->
+<!--      <el-table-column label="录入人" align="center" prop="createBy">-->
+<!--        <template slot-scope="scope">-->
+<!--          {{scope.row.deptId}}-->
+<!--        </template>-->
+<!--      </el-table-column>-->
+      <el-table-column label="年份" align="center" prop="year">
+        <template slot-scope="scope">
+          {{scope.row.year}}
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['totexp:TOTEXP:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['totexp:TOTEXP:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      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-form :ref="'form'" :model="form" :rules="rules" label-width="80px">
+        <el-form-item prop="deptId"  label-width="100px" label="保税区名称">
+          <el-select v-model="form.deptId" filterable default-first-option clearable placeholder="请选择保税区">
+            <el-option
+              v-for="item in deptList"
+              :key="item.deptId"
+              :label="item.deptName"
+              :value="item.deptId">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="year" label-width="100px" label="年份">
+          <el-select v-model="form.year" filterable default-first-option clearable placeholder="请选择年份">
+            <el-option
+              v-for="item in nearYearList"
+              :label="item"
+              :value="item">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="imExport" label-width="100px" label="出入口总值">
+          <el-input  v-model="form.imExport" placeholder="请输入出入口总值" ></el-input>
+        </el-form-item>
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listTOTEXP, getTOTEXP, delTOTEXP, addTOTEXP, updateTOTEXP } from "@/api/totexp/TOTEXP";
+import { listDept } from '@/api/system/dept'
+
+export default {
+  name: "TOTEXP",
+  data() {
+    return {
+      // 根路径
+      baseURL: process.env.VUE_APP_BASE_API,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 保税区进出口总值数据表格数据
+      TOTEXPList: [],
+      // 保税区列表
+      deptList: [],
+      // 近年年份列表
+      nearYearList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        id: null,
+        deptId: null,
+        imExport: null,
+        createTime: null,
+        createBy: null,
+        year: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        deptId: [
+          { required: true, message: "保税区不能为空", trigger: "blur" }
+        ],
+        imExport: [
+          { required: true, message: "进出口值不能为空", trigger: "blur" },
+          { trigger: 'blur', validator: this.validatorFloatNum }
+        ],
+        year: [
+          { required: true, message: "年份不能为空", trigger: "blur" }
+        ]
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getNearYear();
+  },
+  methods: {
+    /** 查询保税区进出口总值数据列表 */
+    getList() {
+      this.loading = true;
+      listTOTEXP(this.queryParams).then(response => {
+        this.TOTEXPList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+      this.getDeptList()
+    },
+    // 获取保税区列表
+    getDeptList() {
+      this.loading = true;
+      listDept({parentId: '100'}).then(response => {
+        this.deptList = response.data
+        this.loading = false;
+      });
+    },
+    // 获取近年年份
+    getNearYear() {
+      let currentDate = new Date();
+      let curYear = currentDate.getFullYear();
+
+      // 获取近三年
+      let nearYearArr = [];
+      for (let i = 1; i <= 4; i++) {
+        nearYearArr.push(curYear - i + '');
+      }
+
+      this.nearYearList = nearYearArr
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        deptId: null,
+        imExport: null,
+        year: 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();
+      this.open = true;
+      this.title = "添加保税区进出口总值数据";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getTOTEXP(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改保税区进出口总值数据";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        console.log(valid)
+        if (valid) {
+          if (this.form.id != null) {
+            updateTOTEXP(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addTOTEXP(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 delTOTEXP(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('totexp/TOTEXP/export', {
+        ...this.queryParams
+      }, `TOTEXP_${new Date().getTime()}.xlsx`)
+    },
+    // 校验参数
+    validatorFloatNum(rule, value, callback) {
+      let reg = /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g;
+      if (!reg.test(value)) {
+        callback(new Error('请输入数字和正确格式的数字'));
+      } else if (value.split('.').length > 2) {
+        callback(new Error('请输入正确格式的数字')); //防止输入多个小数点
+      } else if (value.indexOf('.') != -1 && value.split('.')[1].length > 2) {
+        callback(new Error('最多只能输入两位小数')); //小数点后两位
+      } else {
+        callback();
+      }
+    },
+  }
+};
+</script>

+ 3 - 3
src/views/dashboard/PieChart.vue

@@ -77,7 +77,7 @@ export default {
           trigger: 'item',
           formatter: '{b} : {d}%'
         },
-        color: ['#76a1ff', '#1d8ae5', '#1665c2', '#8ecbfa', '#a9cffe'],
+        color: ['#fddb78', '#2561ef', '#3ed59f', '#fa746b', '#666ee8'],
         legend: {
           orient: 'vertical',
           top: '18%',
@@ -87,7 +87,7 @@ export default {
           icon: 'circle',
           textStyle: {
             color: '#545555',
-            fontSize: 14
+            fontSize: 12
           },
           formatter: function (name) {
             let total = 0;
@@ -105,7 +105,7 @@ export default {
         series: [
           {
             type: 'pie',
-            radius: ['40%', '57%'],
+            radius: ['20%', '40%'],
             center: ['70%', '45%'],
             data: data,
             show: true,

+ 6 - 6
src/views/index.vue

@@ -81,9 +81,9 @@
         <BarChart :chartData="chartData.bar" tag="(亿元)" style="width: 100%"></BarChart>
       </div>
     </div>
-    <div class="row" style="width: 25%; float: left;margin-top: 15px">
+    <div class="row" style="width: 25%; float: left; margin-top: 15px">
       <div class="cbox">
-        <div class="lable">各综合保税区进出口总值占比(%)</div>
+        <div class="lable omit">各综合保税区进出口总值占比(%)</div>
         <PieChart
           :chartData="[
             { name: '凭祥', value: 716.33 },
@@ -95,9 +95,9 @@
         ></PieChart>
       </div>
     </div>
-    <div class="row" style="width: 25%; float: left;padding-left: 15px; margin-top: 15px">
+    <div class="row" style="width: 25%; float: left; padding-left: 15px; margin-top: 15px">
       <div class="cbox">
-        <div class="lable">各综合保税区加工贸易进出口值占比(%)</div>
+        <div class="lable omit">各综合保税区加工贸易进出口值占比(%)</div>
         <PieChart
           :chartData="[
             { name: '南宁', value: 140.09 },
@@ -112,7 +112,7 @@
     </div>
     <div class="row" style="width: 25%; float: left; padding-left: 15px; margin-top: 15px">
       <div class="cbox">
-        <div class="lable">各综合保税区物流货物进出口值占比(%)</div>
+        <div class="lable omit">各综合保税区物流货物进出口值占比(%)</div>
         <PieChart
           :chartData="[
             { name: '南宁', value: 28.82 },
@@ -126,7 +126,7 @@
     </div>
     <div class="row" style="width: 25%; float: left; padding-left: 15px; margin-top: 15px">
       <div class="cbox">
-        <div class="lable">各综合保税区一般贸易进出口值占比(%)</div>
+        <div class="lable omit">各综合保税区一般贸易进出口值占比(%)</div>
         <PieChart
           :chartData="[
             { name: '南宁', value: 46.55 },

+ 10 - 5
src/views/norm/dataSubmission.vue

@@ -195,15 +195,20 @@ export default {
         fvalue: [{ required: true, message: '指标参数不能为空', trigger: 'blur' }],
         fname: [{ required: true, message: '报送参数名称不能为空', trigger: 'blur' }],
         funit: [{ required: true, message: '计量单位不能为空', trigger: 'blur' }],
-        normRatio: [{ required: true, message: '分类占比不能为空', trigger: 'blur' }],
-        fnumber: [{ required: true, message: '权数不能为空', trigger: 'blur' }],
+        normRatio: [{ required: true, message: '分类占比不能为空', trigger: 'blur' },
+               { pattern: /^[1-9]{1,}$/, message: '分类占比只能输入整数数字', trigger: 'blur' }],
+        fnumber: [{ required: true, message: '权数不能为空', trigger: 'blur' },
+               { pattern: /^[1-9]{1,}$/, message: '权数只能输入整数数字', trigger: 'blur' }],
         status: [{ required: true, message: '是否启用(1=启用,0不启用)不能为空', trigger: 'blur' }],
         startTime: [{ required: true, message: '启用时间不能为空', trigger: 'blur' }],
         stopTime: [{ required: true, message: '停用时间不能为空', trigger: 'blur' }],
         remark: [{ required: true, message: '备注不能为空', trigger: 'blur' }],
-        collValue: [{ required: true, message: '采集参考值不能为空', trigger: 'blur' }],
-        meritsValue: [{ required: true, message: '绩效参考值不能为空', trigger: 'blur' }],
-        dfRetio: [{ required: true, message: '上下公差占比不能为空', trigger: 'blur' }],
+        collValue: [{ required: true, message: '采集参考值不能为空', trigger: 'blur' },
+               { pattern: /^[1-9]{1,}$/, message: '采集参考值只能输入整数数字', trigger: 'blur' }],
+        meritsValue: [{ required: true, message: '绩效参考值不能为空', trigger: 'blur' },
+               { pattern: /^[1-9]{1,}$/, message: '绩效参考值只能输入整数数字', trigger: 'blur' }],
+        dfRetio: [{ required: true, message: '上下公差占比不能为空', trigger: 'blur' },
+               { pattern: /^[1-9]{1,}$/, message: '上下公差占比只能输入整数数字', trigger: 'blur' }],
         type: [{ required: true, message: '明细类型(1=绩效,2=采集)不能为空', trigger: 'change' }]
       },
       unitSel: null

+ 11 - 7
src/views/norm/index.vue

@@ -53,19 +53,19 @@
     <!-- 添加或修改指标分类对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" :close-on-click-modal="false"  append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label-width="100px" label="指标分类编号">
+        <el-form-item label-width="120px" prop="code" label="指标分类编号">
           <el-input v-model="form.code"></el-input>
         </el-form-item>
-        <el-form-item label-width="100px" label="指标排序">
+        <el-form-item label-width="120px" prop="sort" label="指标排序">
           <el-input v-model="form.sort"></el-input>
         </el-form-item>
-        <el-form-item label-width="100px" label="指标分类名称">
+        <el-form-item label-width="120px" prop="name" label="指标分类名称">
           <el-input v-model="form.name"></el-input>
         </el-form-item>
-        <el-form-item label-width="100px" label="备注">
+        <el-form-item label-width="120px" prop="remark" label="备注">
           <el-input type="textarea" v-model="form.remark" rows="5"></el-input>
         </el-form-item>
-        <el-form-item label-width="100px" prop="status" label="状态">
+        <el-form-item label-width="120px" prop="status" label="状态">
           <el-radio-group v-model="form.status">
             <el-radio label="1">启用</el-radio>
             <el-radio label="0">不启用</el-radio>
@@ -145,11 +145,15 @@ export default {
       // 表单校验
       rules: {
         id: [{ required: true, message: 'id不能为空', trigger: 'blur' }],
-        sort: [{ required: true, message: '排序为数值', trigger: 'blur' }],
+        sort: [{ required: true, message: '排序为数值', trigger: 'blur' },
+               { pattern: /^[1-9]{1,}$/, message: '排序只能输入数字', trigger: 'blur' }
+              ],
         delFlag: [{ required: true, message: '删除标识不能为空', trigger: 'blur' }],
         deptId: [{ required: true, message: '部门id不能为空', trigger: 'blur' }],
         name: [{ required: true, message: '指标分类名称不能为空', trigger: 'blur' }],
-        code: [{ required: true, message: '指标分类编号不能为空', trigger: 'blur' }],
+        code: [{ required: true, message: '指标分类编号不能为空', trigger: 'blur' },
+               { pattern: /^[1-9a-zA-Z]{1,}$/, message: '指标分类编号只能输入数字和字母', trigger: 'blur' }
+              ],
         status: [
           {
             required: true,

+ 2 - 1
src/views/system/post/index.vue

@@ -198,7 +198,8 @@ export default {
           { required: true, message: "岗位名称不能为空", trigger: "blur" }
         ],
         postCode: [
-          { required: true, message: "岗位编码不能为空", trigger: "blur" }
+          { required: true, message: "岗位编码不能为空", trigger: "blur" },
+          { pattern: /^[1-9a-zA-Z]{1,}$/, message: '岗位编码只能输入数字和字母', trigger: 'blur' }
         ],
         postSort: [
           { required: true, message: "岗位顺序不能为空", trigger: "blur" }

+ 2 - 1
src/views/system/user/index.vue

@@ -438,7 +438,8 @@ export default {
         ],
         password: [
           { required: true, message: "登陆密码不能为空", trigger: "blur" },
-          { min: 5, max: 20, message: '登陆密码长度必须介于 5 和 20 之间', trigger: 'blur' }
+          { min: 5, max: 20, message: '登陆密码长度必须介于 5 和 20 之间', trigger: 'blur' },
+          { pattern: /^[1-9a-zA-Z]{5,20}$/, message: '密码只能输入数字和字母', trigger: 'blur' }
         ],
         email: [
           {

+ 10 - 1
src/views/task/index.vue

@@ -83,7 +83,12 @@
         class-name="small-padding fixed-width"
       >
         <template slot-scope="scope">
-          <el-button v-if="scope.row.status == '0'" size="mini" type="text" @click="handleExamine(scope.row)" v-hasPermi="['business:INSTACTIONTASK:task']">详情</el-button>
+          <el-button
+            v-if="scope.row.status == '0'"
+            size="mini" type="text"
+            @click="handleExamine(scope.row)"
+            v-hasPermi="['business:INSTACTIONTASK:task']"
+          >详情</el-button>
 
           <el-button
             v-if="scope.row.status == '0'"
@@ -178,6 +183,7 @@
 //导入审核页面的组件
 import newsTask from "@/views/news/task/index.vue";
 import couTask from "@/views/COUNSELINGMESSAGE/task/index.vue";
+import ModifyCompanyUserService from "@/views/REGISTERTASK/index.vue";
 import questionService from "@/views/QUESTION/questionService.vue";
 import articleTask from "@/views/ARTICLE/task/index.vue";
 
@@ -198,6 +204,7 @@ export default {
   components: {
     newsTask,
     couTask,
+    ModifyCompanyUserService,
     questionService,
     articleTask,
   },
@@ -403,6 +410,7 @@ export default {
     handleExamine(row) {
       // this.taskList = []
       getINSTACTIONTASK(row.id).then((res) => {
+        console.log('111111',res);
         this.taskList = res.data;
         this.componentUrl = res.data.infoUrl;
         this.dialogVisible = true;
@@ -411,6 +419,7 @@ export default {
     //点击查看详细
     handleDetail(row) {
       getINSTACTIONTASK(row.id).then((res) => {
+        console.log('666',res);
         this.taskList = res.data;
         this.componentUrl = res.data.infoUrl;
         downloadpic(this.taskList.formobj.picture).then((res) => {