Bladeren bron

合并dev到002

凉纪 2 jaren geleden
bovenliggende
commit
fbe7ca126b

+ 1 - 0
package.json

@@ -21,6 +21,7 @@
     "v-calendar": "^2.4.1",
     "vant": "^2.12.54",
     "vue": "^2.7.14",
+    "vue-easytable": "^2.27.1",
     "vue-esign": "^1.1.4",
     "vue-router": "^3.6.5",
     "vuex": "^3.6.2"

+ 57 - 0
src/components/table/index.vue

@@ -0,0 +1,57 @@
+<template>
+  <div class="table">
+    <ve-table
+      :border-x="true"
+      :border-y="true"
+      :border-around="true"
+      :columns="columns"
+      :table-data="dataList" />
+  </div>
+</template>
+
+<script>
+
+export default {
+  props:{
+    data:{
+      type: Array,
+      default: ()=>[],
+    }
+  },
+  data(){
+    return {
+      columns:[
+        {
+          field: "index",
+          key: "index",
+          title: "序号",
+          width: 50,
+          align: "center",
+          fixed: "left",
+          renderBodyCell: ({ row, column, rowIndex }, h) => {
+            return ++rowIndex;
+          },
+        },
+        {field:'orgName',key:'2',title:'单位名称',align: "center" },
+        {field:'finish',key:'3',title:'应培训数',align: "center" },
+        {field:'shouldFinish',key:'4',title:'已培训数',align: "center" },
+        {field:'finishRate',key:'5',title:'完成率',align: "center" },
+      ],
+      dataList:[],
+    }
+  },
+  watch:{
+    data:{
+      handler(val){
+        console.log(val,'val')
+        this.dataList = this.data;
+      },
+      immediate:true,
+      deep:true
+    }
+  },
+  methods:{
+
+  }
+}
+</script>

+ 2 - 2
src/config/env.development.js

@@ -1,8 +1,8 @@
 /** 本地开发环境*/
 module.exports = {
   title: 'soc-app-dev',
-  baseUrl: 'http://localhost:9018', // 项目地址
-  baseApi: '/luowei', // 本地api请求地址,注意:如果你使用了代理,请设置成'/'
+  baseUrl: 'http://10.87.10.55:8080', // 项目地址
+  baseApi: '/dev', // 本地api请求地址,注意:如果你使用了代理,请设置成'/'
   APPID: 'xxx',
   APPSECRET: 'xxx',
   $cdn: 'https://www.sunniejs.cn/static'  //静态资源

+ 3 - 0
src/main.js

@@ -10,6 +10,8 @@ import 'vant/lib/index.css';
 import router from './router'
 import store from './store'
 import dayjs from "dayjs";
+import "vue-easytable/libs/theme-default/index.css";
+import VueEasytable from "vue-easytable";
 import {imgUrl} from "@/utils";
 // 设置 js中可以访问 $cdn
 import config, { $cdn } from '@/config'
@@ -26,6 +28,7 @@ Vue.config.productionTip = false
 import VCalendar from 'v-calendar';
 import globals from "@/utils/global.js"//全局混入
 Vue.use(Vant);
+Vue.use(VueEasytable);
 Vue.use(globals);
 Vue.use(VCalendar,{
   componentPrefix: 'vc',  // Use <vc-calendar /> instead of <v-calendar />

+ 1 - 1
src/router/router.config.js

@@ -102,7 +102,7 @@ export let routers = [
         path: '/nfc',
         name: 'nfc',
         component: () => import('@/views/menu/NFCmanage/index'),
-        meta: { title: '履职登记', keepAlive: false }
+        meta: { title: 'NFC管理', keepAlive: false }
       },
       {
         path: '/lvzhi',

+ 2 - 2
src/views/home/menu.vue

@@ -3,9 +3,9 @@
     <top-bar></top-bar>
     <div class="menu-list">
       <div class="menu-list-item" v-for="(v,i) in menuList" :key="i">
-        <p @click="onclick">{{v.meta.title}}</p>
+        <p @click="onclick">{{v.meta?.title}}</p>
         <van-grid border :column-num="3">
-          <van-grid-item v-for="(item,index) in v.children" :key="index" :icon="item.meta.icon" :text="item.meta.title" :to="item.path" />
+          <van-grid-item v-for="item in v.children" :key="item.path" :icon="item.meta.icon" :text="item.meta.title" :to="item.path" />
         </van-grid>
 <!--          <li v-for="(item,index) in v.list" :key="index">-->
 <!--            <div></div>-->

+ 10 - 5
src/views/menu/LZRegister/edit.vue

@@ -12,16 +12,16 @@
               <van-cell title="NFC:"  >
                 <template #extra>
                   <p class="flex-box">
-                    <span >已扫 {{taskInfo.areaScanY}}</span>
-                    <span >未扫 {{taskInfo.areaScanN}}</span>
+                    <span style="color: #969799;">已扫 <span style="color: #1989fa;">{{taskInfo.areaScanY}}</span> </span>
+                    <span style="color: #969799;">未扫 <span style="color: orange;">{{taskInfo.areaScanN}}</span> </span>
                   </p>
                 </template>
               </van-cell>
               <van-cell title="检查区域:">
                 <template #extra>
                   <p class="flex-box">
-                    <span >已查 {{taskInfo.nfcScanY}}</span>
-                    <span >未查 {{taskInfo.nfcScanN}}</span>
+                    <span style="color: #969799;">已查 <span style="color: #1989fa;">{{taskInfo.nfcScanY}}</span> </span>
+                    <span style="color: #969799;">未查 <span style="color: orange;">{{taskInfo.nfcScanN}}</span> </span>
                   </p>
                 </template>
               </van-cell>
@@ -111,6 +111,10 @@
                       active-color="orange"
                       @change="switchChange(item)"
                       size="20" />
+                    <div v-else>
+                      <span v-if="item.resvalue" style="color: orange">异常</span>
+                      <span v-else style="color: #88ef4b;">正常</span>
+                    </div>
                   </template>
                 </van-cell>
                 <van-cell-group v-show="item.resvalue">
@@ -418,7 +422,7 @@ export default {
     justify-content: space-between;
     align-items: center;
     >span{
-      margin: 0 20px;
+      margin-left: 40px;
     }
   }
   .card{
@@ -461,5 +465,6 @@ export default {
   .nfc-img{
     width: 160px;
     height: 160px;
+    border:1px solid #f1f1f1;
   }
 </style>

+ 1 - 1
src/views/menu/LZRegister/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="lvzhi" ref="container">
-    <nav-bar></nav-bar>
+    <nav-bar/>
     <van-sticky :container="container">
       <DatePicker ref="DatePicker" @change="changeDate"></DatePicker>
     </van-sticky>

+ 68 - 25
src/views/menu/educationStatistics/index.vue

@@ -3,27 +3,36 @@
     <NavBar />
     <div class="statistics-container">
       <org-tree v-model="query.orgId" @change="getDataList"></org-tree>
-      <select-cell title="教育计划名称" v-model="query.planId" :dataList="planList" :prop="prop" @change="getDataList"/>
-      <date-cell title="统计月份"  v-model="query.date" date-type="year-month" @change="getDataList"/>
+      <div class="search-flex-box">
+        <select-cell title="教育计划名称" v-model="query.planId" :dataList="planList" :prop="prop" @change="getDataList"/>
+        <date-cell title="统计月份"  v-model="query.date" date-type="year-month" @change="getDataList"/>
+      </div>
       <div class="card-list">
         <van-empty description="暂无数据" v-if="!dataList || dataList.length === 0" />
-        <template v-else>
-          <van-cell-group  v-for="(v,i) in dataList">
-            <van-cell :title="v.orgName" >
-              <template #extra>
-                <div class="card-num">
-                  {{v.finishRate}}
-                </div>
-              </template>
-              <template #label>
-                <div class="flex-box">
-                  <div>应培训数:{{v.shouldFinish}}</div>
-                  <div>已培训数:{{v.finish}}</div>
-                </div>
-              </template>
-            </van-cell>
-          </van-cell-group>
-        </template>
+<!--          <van-cell-group  v-for="(v,i) in dataList" :key="i">-->
+<!--            <van-cell :title="v.orgName" >-->
+<!--              <template #extra>-->
+<!--                <div class="card-num">-->
+<!--                  {{v.finishRate}}-->
+<!--                </div>-->
+<!--              </template>-->
+<!--              <template #label>-->
+<!--                <div class="flex-box">-->
+<!--                  <div>应培训数:{{v.shouldFinish}}</div>-->
+<!--                  <div>已培训数:{{v.finish}}</div>-->
+<!--                </div>-->
+<!--              </template>-->
+<!--            </van-cell>-->
+<!--          </van-cell-group>-->
+          <ve-table
+            v-else
+            :border-x="true"
+            :border-y="true"
+            :border-around="true"
+            :columns="columns"
+            :fixed-header="true"
+            maxHeight="calc(100vh - 240px)"
+            :table-data="dataList" />
       </div>
     </div>
   </div>
@@ -31,8 +40,9 @@
 <script>
 import NavBar from '@/components/NavBar'
 import OrgTree from '@/components/orgTree'
-import dateCell from '@/components/dateCell'
-import selectCell from '@/components/selectCell'
+import DateCell from '@/components/dateCell'
+import SelectCell from '@/components/selectCell'
+import Tables from '@/components/table'
 import {dataList,planList} from './api'
 import {mapGetters} from "vuex";
 import {formatDate} from "@/filters/filter";
@@ -40,8 +50,9 @@ export default {
   components: {
     NavBar,
     OrgTree,
-    dateCell,
-    selectCell
+    DateCell,
+    SelectCell,
+    Tables
   },
   data() {
     return {
@@ -56,7 +67,24 @@ export default {
         value:'id',
       },
       loading:false,
-      dataList:[]
+      columns:[
+        {
+          field: "index",
+          key: "index",
+          title: "序号",
+          width: 50,
+          align: "center",
+          fixed: "left",
+          renderBodyCell: ({ row, column, rowIndex }, h) => {
+            return ++rowIndex;
+          },
+        },
+        {field:'orgName',key:'2',title:'单位名称',align: "center" },
+        {field:'finish',key:'3',title:'应培训数',align: "center" },
+        {field:'shouldFinish',key:'4',title:'已培训数',align: "center" },
+        {field:'finishRate',key:'5',title:'完成率',align: "center" },
+      ],
+      dataList:[],
     }
   },
   mounted() {
@@ -99,6 +127,12 @@ export default {
 .van-cell-group:last-child{
   margin-bottom: 0;
 }
+.vue-table-root{
+  tr,th,td{
+    font-size: 25px!important;
+    color:#666!important;
+  }
+}
 </style>
 <style lang="scss" scoped>
   .educationStatistics{
@@ -107,9 +141,18 @@ export default {
   .statistics-container{
 
   }
+  .search-flex-box{
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    >div{
+      width: 50%;
+      border-right: 1px solid #eaeaea ;
+    }
+  }
   .card-list{
     padding: 20px;
-    height: calc(100vh - 550px);
+    -height: calc(100vh - 410px);
     overflow: auto;
   }
   .card-num{

+ 1 - 1
vue.config.js

@@ -42,7 +42,7 @@ module.exports = defineConfig({
   outputDir: 'app', //  生产环境构建文件的目录
   assetsDir: 'static', //  outputDir的静态资源(js、css、img、fonts)目录
   lintOnSave: !IS_PROD,
-  productionSourceMap: false, // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
+  productionSourceMap: true, // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
   devServer: {
     port: 8181, // 端口
     open: false, // 启动后打开浏览器

+ 29 - 1
yarn.lock

@@ -2839,6 +2839,11 @@ dayjs@^1.11.9:
   resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.9.tgz#9ca491933fadd0a60a2c19f6c237c03517d71d1a"
   integrity sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==
 
+de-indent@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
+  integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==
+
 debug@2.6.9:
   version "2.6.9"
   resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@@ -5091,6 +5096,11 @@ requires-port@^1.0.0:
   resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
   integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
 
+resize-observer-polyfill@^1.5.1:
+  version "1.5.1"
+  resolved "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
+  integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
+
 resolve-from@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
@@ -5794,6 +5804,16 @@ vary@~1.1.2:
   resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
   integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
 
+vue-easytable@^2.27.1:
+  version "2.27.1"
+  resolved "https://registry.npmmirror.com/vue-easytable/-/vue-easytable-2.27.1.tgz#dbf4a3f0fe925bf5d7ce6d5cc90b0d3585afaed0"
+  integrity sha512-Rs2cqaPYamH8zXQo/f90AyM/ROGMsB5Njb74GpooWacAKEXbHU0wXYvEjSBZ7CcS6TVqliA/ZbgVqOoA/o9bHQ==
+  dependencies:
+    lodash "^4.17.20"
+    resize-observer-polyfill "^1.5.1"
+    vue "^2.6.12"
+    vue-template-compiler "^2.6.11"
+
 vue-esign@^1.1.4:
   version "1.1.4"
   resolved "https://registry.npmmirror.com/vue-esign/-/vue-esign-1.1.4.tgz#3e0cc2b72c3ef5914822929193f6a9ddeb775b3a"
@@ -5833,12 +5853,20 @@ vue-style-loader@^4.1.0, vue-style-loader@^4.1.3:
     hash-sum "^1.0.2"
     loader-utils "^1.0.2"
 
+vue-template-compiler@^2.6.11:
+  version "2.7.14"
+  resolved "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz#4545b7dfb88090744c1577ae5ac3f964e61634b1"
+  integrity sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==
+  dependencies:
+    de-indent "^1.0.2"
+    he "^1.2.0"
+
 vue-template-es2015-compiler@^1.9.0:
   version "1.9.1"
   resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
   integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
 
-vue@^2.5.11, vue@^2.7.14:
+vue@^2.5.11, vue@^2.6.12, vue@^2.7.14:
   version "2.7.14"
   resolved "https://registry.npmmirror.com/vue/-/vue-2.7.14.tgz#3743dcd248fd3a34d421ae456b864a0246bafb17"
   integrity sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==