From f5d88e4f31bec1d77721c0795afde3f3a571e9aa Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Wed, 11 Aug 2021 15:55:13 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.105:10010/r/zhba_enterprises

---
 src/views/securityEquipment/car.vue             |   77 +++
 src/views/securityEquipment/equipments.js       |    8 
 src/views/securityGuard/securityGuardDetail.vue |   22 
 src/api/system/user.js                          |    4 
 src/views/securityUnit/index.vue                |   67 +++
 vue.config.js                                   |    6 
 src/router/views/index.js                       |   16 
 src/views/securityGuard/securityGuard.vue       |   81 +++
 src/views/securityEquipment/gun.js              |    6 
 src/views/securityEquipment/gun.vue             |    8 
 src/views/people/expression.vue                 |   39 +
 src/api/talk/talk.js                            |   50 ++
 src/views/dispatch/dispatchChildoperable.vue    |   28 
 src/views/securityEquipment/equipments.vue      |   77 +++
 src/views/securityEquipment/car.js              |   18 
 src/views/dispatch/dispatchChildoperableSee.vue |   31 
 src/views/resource/uploadNotice.vue             |    8 
 src/api/performance/performance.js              |   27 
 src/views/securityUnitChild/index.vue           |  246 ++++++++++--
 src/views/talk/talk.vue                         |  266 ++++++++++++++
 src/views/securityUnitChild/data.js             |    2 
 src/views/people/job.vue                        |    8 
 22 files changed, 937 insertions(+), 158 deletions(-)

diff --git a/src/api/performance/performance.js b/src/api/performance/performance.js
index accb99b..1082fb3 100644
--- a/src/api/performance/performance.js
+++ b/src/api/performance/performance.js
@@ -11,16 +11,25 @@
         }
     })
 }
+// export const getPerformanceInfo = (securityid) => {
+//     return request({
+//         url: '/api/performance/page',
+//         method: 'get',
+//         params: {
+//             securityid
+//         }
+//     })
+// }
 
-export const getPerformanceInfo = (id) => {
-    return request({
-        url: '/api/performance/detail',
-        method: 'get',
-        params: {
-            id
-        }
-    })
-}
+// export const getPerformanceInfo = (securityid) => {
+//     return request({
+//         url: '/api/performance/detail',
+//         method: 'get',
+//         params: {
+//             securityid
+//         }
+//     })
+// }
 
 export const add = (row) => {
     return request({
diff --git a/src/api/system/user.js b/src/api/system/user.js
index 7cb2d0f..147dd73 100644
--- a/src/api/system/user.js
+++ b/src/api/system/user.js
@@ -80,12 +80,12 @@
     })
 }
 
-export const getUserPractitionersInfo = (cardid) => {
+export const getUserPractitionersInfo = (securityid) => {
     return request({
         url: '/api/experience/selectExperienceInfo',
         method: 'get',
         params: {
-            cardid,
+            securityid,
         }
     })
 }
diff --git a/src/api/talk/talk.js b/src/api/talk/talk.js
new file mode 100644
index 0000000..58088fb
--- /dev/null
+++ b/src/api/talk/talk.js
@@ -0,0 +1,50 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/blade-talk/talk/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/blade-talk/talk/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/blade-talk/talk/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/blade-talk/talk/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/blade-talk/talk/submit',
+    method: 'post',
+    data: row
+  })
+}
+
diff --git a/src/router/views/index.js b/src/router/views/index.js
index b3e3304..583156f 100644
--- a/src/router/views/index.js
+++ b/src/router/views/index.js
@@ -236,6 +236,20 @@
                 import ( /* webpackChunkName: "views" */ '@/views/desk/notice')
         }]
     },
+  {
+    path: '/talk',
+    component: Layout,
+    redirect: '/talk/talk',
+    children: [{
+      path: 'index',
+      name: '心里咨询',
+      meta: {
+        i18n: 'dict'
+      },
+      component: () =>
+        import( /* webpackChunkName: "views" */ '@/views/talk/talk')
+    }]
+  },
     {
         path: '/workreport',
         component: Layout,
@@ -854,4 +868,4 @@
                 import ( /* webpackChunkName: "views" */ '@/views/exam/papers')
         }]
     }
-]
\ No newline at end of file
+]
diff --git a/src/views/dispatch/dispatchChildoperable.vue b/src/views/dispatch/dispatchChildoperable.vue
index 6b1bb8a..cf1bf5f 100644
--- a/src/views/dispatch/dispatchChildoperable.vue
+++ b/src/views/dispatch/dispatchChildoperable.vue
@@ -200,8 +200,8 @@
           {
             label: "派遣单位",
             prop: "dispatcherCompany",
-            addDisplay: false,
-            editDisplay: false,
+            // addDisplay: false,
+            // editDisplay: false,
           },
           // {
           //   label: "派遣单位",
@@ -229,13 +229,9 @@
           {
             label: "保安公司",
             prop: "deptId",
-            labelWidth: 120,
             search: true,
-            overHidden: true,
-            type: "tree",
-            searchSpan: 4,
-            cascaderItem: ["name"],
-            // cascaderItem: ["city", "area"],
+            type: "select",
+            cascaderItem: ["securityName"],
             props: {
               label: "title",
               value: "id",
@@ -250,19 +246,17 @@
             ],
           },
           {
-            width: 120,
             label: "保安员",
-            prop: "name",
-            labelWidth: 120,
-            type: "tree",
+            prop: "securityName",
+            type: "select",
             search: true,
-            searchSpan: 4,
-            cell: true,
+            // cell: true,
+            // hide: true,
             props: {
               label: "realName",
               value: "id",
             },
-            dicUrl: `/api/blade-user/page-security-unit?deptId={{deptId}}`,
+            dicUrl: `/api/blade-user/page-security-units?deptId={{key}}`,
             rules: [
               {
                 required: true,
@@ -271,6 +265,7 @@
               },
             ],
           },
+
           // {
           //   width: 120,
           //   label: "保安人名称",
@@ -767,8 +762,9 @@
         const data = res.data.data;
         this.page1.total = data.total;
         this.data1 = data.records;
-        console.log(this.data1, 1);
+        console.log(this.data1, 1111111111111111111111111);
         this.loading1 = false;
+        this.$nextTick(() => this.$refs.crudrec1.dicInit("cascader"));
       });
     },
     //派遣记录
diff --git a/src/views/dispatch/dispatchChildoperableSee.vue b/src/views/dispatch/dispatchChildoperableSee.vue
index 77bb38a..d7ff409 100644
--- a/src/views/dispatch/dispatchChildoperableSee.vue
+++ b/src/views/dispatch/dispatchChildoperableSee.vue
@@ -743,21 +743,22 @@
       // console.log(page);
       console.log(this.userInfo, "userInfo");
       var values;
-      const { releaseTimeRange } = this.query1;
-      if (releaseTimeRange) {
-        values = {
-          ...params,
-          beginTime: releaseTimeRange[0],
-          overTime: releaseTimeRange[1],
-          ...this.query,
-        };
-        values.releaseTimeRange = null;
-      } else {
-        values = {
-          ...params,
-          ...this.query,
-        };
-      }
+      // const { releaseTimeRange } = this.query1;
+      // if (releaseTimeRange) {
+      values = {
+        ...params,
+        // beginTime: releaseTimeRange[0],
+        // overTime: releaseTimeRange[1],
+        userIds: this.userInfo.user_id,
+        ...this.query,
+      };
+      // values.releaseTimeRange = null;
+      // } else {
+      //   values = {
+      //     ...params,
+      //     ...this.query,
+      //   };
+      // }
 
       //   values
 
diff --git a/src/views/people/expression.vue b/src/views/people/expression.vue
index 0b173bc..dc6c443 100644
--- a/src/views/people/expression.vue
+++ b/src/views/people/expression.vue
@@ -79,8 +79,8 @@
   trackRecordColumn,
 } from "./data";
 import { getUserPractitionersInfo } from "@/api/system/user";
-import { add, update, page, remove } from "@/api/performance/performance";
 import { mapGetters } from "vuex";
+import { add, update, page, remove } from "@/api/performance/performance";
 export default {
   data() {
     let baseUrl = "https://cli.avuejs.com/api/area";
@@ -461,7 +461,7 @@
       return "";
     },
     //
-    onLoad1(page, params = {}) {
+    onLoad1(page1, params = {}) {
       this.loading1 = true;
       // params["cardid"] = this.cardid;
       // params["name"] = this.name;
@@ -486,20 +486,31 @@
       //   };
       // }
       var cardid = this.userInfo.user_id;
-      console.log(this.userInfo, "111111111111");
-      getPerformancePageInfo(cardid).then((res) => {
-        //   // page.currentPage,
-        //   // page.pageSize,
-        //   // Object.assign(params, this.query)
-        //   // values
-        console.log(res);
-        //   const data = res.data.data;
-        //   this.page1.total = data.total;
-        //   this.data1 = data.records;
-        //   console.log(this.data1, 1);
-        //   this.loading1 = false;
+      // console.log(this.userInfo, "111111111111");
+      // getPerformancePageInfo(cardid).then((res) => {
+      //   //   // page.currentPage,
+      //   //   // page.pageSize,
+      //   //   // Object.assign(params, this.query)
+      //   //   // values
+      //   // const data = res.data.data;
+      //   //   this.page1.total = data.total;
+      //   // this.data1 = data;
+      //   console.log(res, 1231131);
+      //   //   console.log(this.data1, 1);
+      //   //   this.loading1 = false;
+      // });
+      var param = {
+        securityid: cardid,
+      };
+      page(this.current, this.size, param).then((res2) => {
+        const data = res2.data.data;
+        this.page1.total = data.total;
+        this.data1 = data.records;
+        console.log(this.data1, 1);
+        this.loading1 = false;
       });
     },
+
     //派遣记录
     // saveLock(name, val) {
     //   localStorage.setItem(name, val);
diff --git a/src/views/people/job.vue b/src/views/people/job.vue
index 1d777d1..b432bd9 100644
--- a/src/views/people/job.vue
+++ b/src/views/people/job.vue
@@ -491,11 +491,11 @@
         //   // Object.assign(params, this.query)
         //   // values
         console.log(res);
-        //   const data = res.data.data;
+        const data = res.data.data;
         //   this.page1.total = data.total;
-        //   this.data1 = data.records;
-        //   console.log(this.data1, 1);
-        //   this.loading1 = false;
+        this.data1 = data;
+        console.log(this.data1, 1);
+        this.loading1 = false;
       });
     },
     //派遣记录
diff --git a/src/views/resource/uploadNotice.vue b/src/views/resource/uploadNotice.vue
index 89f1d96..bbebdbd 100644
--- a/src/views/resource/uploadNotice.vue
+++ b/src/views/resource/uploadNotice.vue
@@ -97,6 +97,7 @@
         searchMenuSpan: 6,
         border: false,
         index: true,
+        // align: center,
         stripe: true,
         viewBtn: true,
         selection: true,
@@ -148,6 +149,12 @@
                 trigger: "blur",
               },
             ],
+          },
+          {
+            label: "预览图",
+            prop: "link",
+            dataType: "string",
+            type: "img",
           },
           {
             label: "附件拓展名",
@@ -333,6 +340,7 @@
         const data = res.data.data;
         this.page.total = data.total;
         this.data = data.records;
+        console.log(this.data);
         this.loading = false;
         this.selectionClear();
       });
diff --git a/src/views/securityEquipment/car.js b/src/views/securityEquipment/car.js
index 5a25dc3..4807633 100644
--- a/src/views/securityEquipment/car.js
+++ b/src/views/securityEquipment/car.js
@@ -9,13 +9,13 @@
 ]
 
 export var column = [
-    {
-        label: "id",
-        prop: "id",
-        hide: true,
-        editDisplay: false,
-        addDisplay: false
-    },
+    // {
+    //     label: "id",
+    //     prop: "id",
+    //     hide: true,
+    //     editDisplay: false,
+    //     addDisplay: false
+    // },
     {
         label: "车牌号码",
         prop: "carNumber",
@@ -64,7 +64,7 @@
     },
     {
         label: "保安公司",
-        prop: "tenantName",
+        prop: "deptId",
         rules: [{
             required: true,
             message: "请输入保安公司",
@@ -117,7 +117,7 @@
         // search: true,
         type: "date",
         format: "yyyy-MM-dd",
-        valueFormat: "timestamp",
+        valueFormat: "yyyy-MM-dd",
         searchSpan: 4,
         overHidden: true,
         rules: [{
diff --git a/src/views/securityEquipment/car.vue b/src/views/securityEquipment/car.vue
index 9d99626..ebb96b4 100644
--- a/src/views/securityEquipment/car.vue
+++ b/src/views/securityEquipment/car.vue
@@ -18,6 +18,14 @@
       >
         <template slot="menuLeft">
           <el-button
+            type="success"
+            size="small"
+            plain
+            icon="el-icon-upload2"
+            @click="handleImport"
+            >批量导入
+          </el-button>
+          <el-button
             type="danger"
             size="small"
             plain
@@ -27,6 +35,24 @@
           </el-button>
         </template>
       </avue-crud>
+      <el-dialog
+        title="车辆导入"
+        append-to-body
+        :visible.sync="excelBox"
+        width="555px"
+      >
+        <avue-form
+          :option="excelOption"
+          v-model="excelForm"
+          :upload-after="uploadAfter"
+        >
+          <template slot="excelTemplate">
+            <el-button type="primary" @click="handleTemplate">
+              点击下载<i class="el-icon-download el-icon--right"></i>
+            </el-button>
+          </template>
+        </avue-form>
+      </el-dialog>
     </div>
   </basic-container>
 </template>
@@ -38,6 +64,34 @@
 export default {
   data() {
     return {
+      excelBox: false,
+      excelForm: {},
+      excelOption: {
+        submitBtn: false,
+        emptyBtn: false,
+        column: [
+          {
+            label: "文件上传",
+            prop: "excelFile",
+            type: "upload",
+            drag: true,
+            loadText: "文件上传中,请稍等",
+            span: 24,
+            propsHttp: {
+              res: "data",
+            },
+            tip: "请上传 .xls,.xlsx 标准格式文件",
+            action: "/api/car/import-examSubject",
+          },
+          {
+            label: "模板下载",
+            prop: "excelTemplate",
+            formslot: true,
+            span: 24,
+          },
+        ],
+      },
+
       loading: true,
       selectionList: [],
       page: {
@@ -71,6 +125,18 @@
     },
   },
   methods: {
+    handleImport() {
+      this.excelBox = true;
+    },
+    uploadAfter(res, done, loading, column) {
+      window.console.log(column);
+      this.excelBox = false;
+      this.refreshChange();
+      done();
+    },
+    handleTemplate() {
+      window.open(`/api/car/export-template`);
+    },
     sizeChange(val) {
       this.page1.currentPage = 1;
       this.page1.pageSize = val;
@@ -88,8 +154,9 @@
       //   delete form.id;
       //   for (var k = 0; k < 13; k++) {
       // console.log
-      form["deptId"] = form.tenantName;
-      delete form.tenantName;
+      // form["deptId"] = form.tenantName;
+      // delete form.tenantName;
+      // console.log(form);
       adddata(form).then(
         (res) => {
           this.onLoad(this.page);
@@ -117,9 +184,9 @@
       this.onLoad(this.page);
     },
     rowUpdate(row, index, done, loading) {
-      console.log(row);
-      row["deptId"] = row.tenantName;
-      delete row.tenantName;
+      // console.log(row);
+      // row["deptId"] = row.tenantName;
+      // delete row.tenantName;
       update(row).then(
         () => {
           this.onLoad(this.page);
diff --git a/src/views/securityEquipment/equipments.js b/src/views/securityEquipment/equipments.js
index cad65f0..d54209a 100644
--- a/src/views/securityEquipment/equipments.js
+++ b/src/views/securityEquipment/equipments.js
@@ -62,7 +62,7 @@
     },
     {
         label: "保安公司",
-        prop: "tenantName",
+        prop: "deptId",
         rules: [{
             required: true,
             message: "请输入组织机构",
@@ -112,11 +112,11 @@
     {
         label: "出厂日期",
         prop: "dateForProduction",
-        // search: true,
         type: "date",
-        format: "yyyy-MM-dd",
-        valueFormat: "timestamp",
+        format: 'yyyy-MM-dd',
         searchSpan: 4,
+        // span:8,
+        valueFormat: 'yyyy-MM-dd',
         overHidden: true,
         rules: [{
             required: true,
diff --git a/src/views/securityEquipment/equipments.vue b/src/views/securityEquipment/equipments.vue
index 2373581..399fed4 100644
--- a/src/views/securityEquipment/equipments.vue
+++ b/src/views/securityEquipment/equipments.vue
@@ -18,6 +18,14 @@
       >
         <template slot="menuLeft">
           <el-button
+            type="success"
+            size="small"
+            plain
+            icon="el-icon-upload2"
+            @click="handleImport"
+            >批量导入
+          </el-button>
+          <el-button
             type="danger"
             size="small"
             plain
@@ -27,6 +35,24 @@
           </el-button>
         </template>
       </avue-crud>
+      <el-dialog
+        title="题库导入"
+        append-to-body
+        :visible.sync="excelBox"
+        width="555px"
+      >
+        <avue-form
+          :option="excelOption"
+          v-model="excelForm"
+          :upload-after="uploadAfter"
+        >
+          <template slot="excelTemplate">
+            <el-button type="primary" @click="handleTemplate">
+              点击下载<i class="el-icon-download el-icon--right"></i>
+            </el-button>
+          </template>
+        </avue-form>
+      </el-dialog>
     </div>
   </basic-container>
 </template>
@@ -38,6 +64,34 @@
 export default {
   data() {
     return {
+      excelBox: false,
+      excelForm: {},
+      excelOption: {
+        submitBtn: false,
+        emptyBtn: false,
+        column: [
+          {
+            label: "文件上传",
+            prop: "excelFile",
+            type: "upload",
+            drag: true,
+            loadText: "文件上传中,请稍等",
+            span: 24,
+            propsHttp: {
+              res: "data",
+            },
+            tip: "请上传 .xls,.xlsx 标准格式文件",
+            action: "/api/examSubjectChoices/import-examSubject",
+          },
+          {
+            label: "模板下载",
+            prop: "excelTemplate",
+            formslot: true,
+            span: 24,
+          },
+        ],
+      },
+
       loading: true,
       selectionList: [],
       page: {
@@ -71,6 +125,18 @@
     },
   },
   methods: {
+    handleImport() {
+      this.excelBox = true;
+    },
+    uploadAfter(res, done, loading, column) {
+      window.console.log(column);
+      this.excelBox = false;
+      this.refreshChange();
+      done();
+    },
+    handleTemplate() {
+      window.open(`/api/examSubjectChoices/export-template`);
+    },
     sizeChange(val) {
       this.page1.currentPage = 1;
       this.page1.pageSize = val;
@@ -87,8 +153,9 @@
       //   var form = this.data[0];
       //   delete form.id;
       //   for (var k = 0; k < 13; k++) {
-      form["deptId"] = form.tenantName;
-      delete form.tenantName;
+      console.log(form, "12135");
+      // form["deptId"] = form.tenantName;
+      // delete form.tenantName;
       adddata(form).then(
         (res) => {
           this.onLoad(this.page);
@@ -116,9 +183,9 @@
       this.onLoad(this.page);
     },
     rowUpdate(row, index, done, loading) {
-      // console.log(row);
-      row["deptId"] = row.tenantName;
-      delete row.tenantName;
+      // row["deptId"] = row.tenantName;
+      // delete row.tenantName;
+      console.log(row.deptId);
       update(row).then(
         () => {
           this.onLoad(this.page);
diff --git a/src/views/securityEquipment/gun.js b/src/views/securityEquipment/gun.js
index 3ad2692..c3dceef 100644
--- a/src/views/securityEquipment/gun.js
+++ b/src/views/securityEquipment/gun.js
@@ -70,7 +70,7 @@
     },
     {
         label: "保安公司",
-        prop: "tenantName",
+        prop: "deptId",
         labelWidth: 160,
         rules: [{
             required: true,
@@ -112,7 +112,7 @@
         // search: true,
         type: "date",
         format: "yyyy-MM-dd",
-        valueFormat: "timestamp",
+        valueFormat: "yyyy-MM-dd",
         // width: 110,
         // overHidden: true,
         // search: true,
@@ -129,7 +129,7 @@
         // search: true,
         type: "date",
         format: "yyyy-MM-dd",
-        valueFormat: "timestamp",
+        valueFormat: "yyyy-MM-dd",
         searchSpan: 4,
         overHidden: true,
         rules: [{
diff --git a/src/views/securityEquipment/gun.vue b/src/views/securityEquipment/gun.vue
index 2eec3f4..85e30ab 100644
--- a/src/views/securityEquipment/gun.vue
+++ b/src/views/securityEquipment/gun.vue
@@ -87,8 +87,8 @@
       //   var form = this.data[0];
       //   delete form.id;
       //   for (var k = 0; k < 13; k++) {
-      form["deptId"] = form.tenantName;
-      delete form.tenantName;
+      // form["deptId"] = form.tenantName;
+      // delete form.tenantName;
       adddata(form).then(
         (res) => {
           this.onLoad(this.page);
@@ -117,8 +117,8 @@
     },
     rowUpdate(row, index, done, loading) {
       // console.log(row);
-      row["deptId"] = row.tenantName;
-      delete row.tenantName;
+      // row["deptId"] = row.tenantName;
+      // delete row.tenantName;
       update(row).then(
         () => {
           this.onLoad(this.page);
diff --git a/src/views/securityGuard/securityGuard.vue b/src/views/securityGuard/securityGuard.vue
index 5a1b00b..ed4b4c3 100644
--- a/src/views/securityGuard/securityGuard.vue
+++ b/src/views/securityGuard/securityGuard.vue
@@ -39,6 +39,14 @@
         >
           <template slot="menuLeft">
             <el-button
+              type="success"
+              size="small"
+              plain
+              icon="el-icon-upload2"
+              @click="handleImport1"
+              >批量导入
+            </el-button>
+            <el-button
               type="danger"
               style="display: none"
               size="small"
@@ -208,6 +216,24 @@
             </template>
           </avue-crud>
         </el-dialog>
+        <el-dialog
+          title="保安员导入"
+          append-to-body
+          :visible.sync="excelBox1"
+          width="555px"
+        >
+          <avue-form
+            :option="excelOption1"
+            v-model="excelForm1"
+            :upload-after="uploadAfter1"
+          >
+            <template slot="excelTemplate">
+              <el-button type="primary" @click="handleTemplate1">
+                点击下载<i class="el-icon-download el-icon--right"></i>
+              </el-button>
+            </template>
+          </avue-form>
+        </el-dialog>
       </basic-container>
     </el-col>
   </el-row>
@@ -254,6 +280,34 @@
       }
     };
     return {
+      excelBox1: false,
+      excelForm1: {},
+      excelOption1: {
+        submitBtn: false,
+        emptyBtn: false,
+        column: [
+          {
+            label: "文件上传",
+            prop: "excelFile",
+            type: "upload",
+            drag: true,
+            loadText: "文件上传中,请稍等",
+            span: 24,
+            propsHttp: {
+              res: "data",
+            },
+            tip: "请上传 .xls,.xlsx 标准格式文件",
+            action: "/api/examSubjectChoices/import-examSubject",
+          },
+          {
+            label: "模板下载",
+            prop: "excelTemplate",
+            formslot: true,
+            span: 24,
+          },
+        ],
+      },
+
       form: {},
       search: {},
       roleBox: false,
@@ -871,6 +925,19 @@
     }
   },
   methods: {
+    handleImport1() {
+      this.excelBox1 = true;
+    },
+    uploadAfter1(res, done, loading, column) {
+      window.console.log(column);
+      this.excelBox1 = false;
+      // this.refreshChange();
+      done();
+    },
+    handleTemplate1() {
+      window.open(`/api/examSubjectChoices/export-template`);
+    },
+
     //行点击事件
     rowClick(row) {
       this.$router.push({
@@ -929,18 +996,18 @@
             entryTime: item.entryTime,
             name: row.realName,
             leaving: item.leaving,
-            cardid: row.cardid,
+            securityid: row.id,
             post: item.post,
             responsibilities: item.responsibilities,
           };
           userPractitionersList.push(info);
         });
       }
-      var IdCardNo = row.cardid;
+      var IdCardNo = row.id;
       add(row).then(
         () => {
           const experience = {
-            cardid: IdCardNo,
+            securityid: IdCardNo,
             userPractitionersInfo: userPractitionersList,
           };
           //新增从业信息
@@ -979,20 +1046,20 @@
             entryTime: item.entryTime,
             name: row.realName,
             leaving: item.leaving,
-            cardid: row.cardid,
+            securityid: row.id,
             post: item.post,
             responsibilities: item.responsibilities,
           };
           userPractitionersList.push(info);
         });
       }
-      var IdCardNo = row.cardid;
+      var IdCardNo = row.id;
       //值替换,education 放在页面会卡死
       row.education = row.education1;
       update(row).then(
         () => {
           const experience = {
-            cardid: IdCardNo,
+            securityid: IdCardNo,
             userPractitionersInfo: userPractitionersList,
           };
           //更新从业信息
@@ -1167,7 +1234,7 @@
           }
           var userInfo = res.data.data;
           //获取用户从业信息
-          getUserPractitionersInfo(userInfo.cardid).then((res1) => {
+          getUserPractitionersInfo(userInfo.id).then((res1) => {
             that.form.UserPractitionersInfo = res1.data.data;
           });
         });
diff --git a/src/views/securityGuard/securityGuardDetail.vue b/src/views/securityGuard/securityGuardDetail.vue
index 398bdaa..aae9a3f 100644
--- a/src/views/securityGuard/securityGuardDetail.vue
+++ b/src/views/securityGuard/securityGuardDetail.vue
@@ -37,7 +37,13 @@
   trackRecordColumn,
 } from "./data";
 import { getUserPractitionersInfo } from "@/api/system/user";
-import { add, update, page, remove } from "@/api/performance/performance";
+import {
+  getPerformanceInfo,
+  add,
+  update,
+  page,
+  remove,
+} from "@/api/performance/performance";
 export default {
   data() {
     return {
@@ -154,16 +160,20 @@
     getPractitionersPageInfo() {
       var that = this;
       //获取用户从业信息
-      console.log(this.cardid, "cid");
-      getUserPractitionersInfo(this.cardid).then((res1) => {
+      console.log(this.id, "cid");
+      getUserPractitionersInfo(this.id).then((res1) => {
         that.data1 = res1.data.data;
       });
     },
     //查询当前保安员的现实表现记录信息
     getPerformancePageInfo() {
       //获取现实表现信息
+      // getPerformanceInfo(this.id).then((res) => {
+      //   that.data2 = res1.data.data;
+      //   console.log(that.data2, 1);
+      // });
       var param = {
-        cardid: this.cardid,
+        securityid: this.id,
       };
       page(this.current, this.size, param).then((res2) => {
         const data = res2.data.data;
@@ -174,7 +184,7 @@
       });
     },
     rowSave2(form, done, loading) {
-      form.cardid = this.cardid;
+      form.securityid = this.id;
       add(form).then(
         (res) => {
           this.getPerformancePageInfo(this.page2);
@@ -192,7 +202,7 @@
       // }
     },
     rowUpdate2(row, index, done, loading) {
-      row.cardid = this.cardid;
+      row.securityid = this.id;
       update(row).then(
         () => {
           this.getPerformancePageInfo(this.page2);
diff --git a/src/views/securityUnit/index.vue b/src/views/securityUnit/index.vue
index 5526813..11a1bd6 100644
--- a/src/views/securityUnit/index.vue
+++ b/src/views/securityUnit/index.vue
@@ -35,6 +35,14 @@
             @click.stop="rowSave"
             >新增</el-button
           >
+          <el-button
+            type="success"
+            size="small"
+            plain
+            icon="el-icon-upload2"
+            @click="handleImport1"
+            >批量导入
+          </el-button>
         </template>
         <template slot="menuLeft">
           <el-button
@@ -100,6 +108,24 @@
         </div>
       </div>
     </div>
+    <el-dialog
+      title="保安单位导入"
+      append-to-body
+      :visible.sync="excelBox1"
+      width="555px"
+    >
+      <avue-form
+        :option="excelOption1"
+        v-model="excelForm1"
+        :upload-after="uploadAfter1"
+      >
+        <template slot="excelTemplate">
+          <el-button type="primary" @click="handleTemplate1">
+            点击下载<i class="el-icon-download el-icon--right"></i>
+          </el-button>
+        </template>
+      </avue-form>
+    </el-dialog>
   </basic-container>
 </template> 
 
@@ -120,6 +146,34 @@
     var w = 160,
       s = 12;
     return {
+      excelBox1: false,
+      excelForm1: {},
+      excelOption1: {
+        submitBtn: false,
+        emptyBtn: false,
+        column: [
+          {
+            label: "文件上传",
+            prop: "excelFile",
+            type: "upload",
+            drag: true,
+            loadText: "文件上传中,请稍等",
+            span: 24,
+            propsHttp: {
+              res: "data",
+            },
+            tip: "请上传 .xls,.xlsx 标准格式文件",
+            action: "/api/examSubjectChoices/import-examSubject",
+          },
+          {
+            label: "模板下载",
+            prop: "excelTemplate",
+            formslot: true,
+            span: 24,
+          },
+        ],
+      },
+
       loading: true, //保安单位基本信息
       selectionList: [],
       page: {
@@ -266,6 +320,19 @@
     },
   },
   methods: {
+    handleImport1() {
+      this.excelBox1 = true;
+    },
+    uploadAfter1(res, done, loading, column) {
+      window.console.log(column);
+      this.excelBox1 = false;
+      // this.refreshChange();
+      done();
+    },
+    handleTemplate1() {
+      window.open(`/api/examSubjectChoices/export-template`);
+    },
+
     // handleChangeTABS(column) {
     //   this.typeTABS = column;
     //   // this.$message.success(JSON.stringify(column));
diff --git a/src/views/securityUnitChild/data.js b/src/views/securityUnitChild/data.js
index 7c4e691..bea710b 100644
--- a/src/views/securityUnitChild/data.js
+++ b/src/views/securityUnitChild/data.js
@@ -155,6 +155,7 @@
     }, {
         label: "股东",
         prop: "shareholder",
+        searchLabelWidth: 55,
         search: true,
         labelWidth: w,
         span: s,
@@ -224,6 +225,7 @@
         prop: "name",
         search: true,
         labelWidth: w,
+        searchLabelWidth: 55,
         span: s,
     }, {
         label: "职务",
diff --git a/src/views/securityUnitChild/index.vue b/src/views/securityUnitChild/index.vue
index accac2a..3a6ff7c 100644
--- a/src/views/securityUnitChild/index.vue
+++ b/src/views/securityUnitChild/index.vue
@@ -29,67 +29,127 @@
         </template>
       </avue-crud>-->
       <!-- 表单组件 -->
-      <avue-form ref="form" v-model="obj0" :option="option0">
-        <!-- <template slot-scope="scope" slot="menuForm">
+      <basic-container>
+        <avue-form ref="form" v-model="obj0" :option="option0">
+          <!-- <template slot-scope="scope" slot="menuForm">
           <el-button @click="tip">自定义按钮</el-button>
         </template> -->
-      </avue-form>
+        </avue-form>
+      </basic-container>
     </span>
     <span v-else-if="typeTABS.prop === 'tab2'">
       <!-- <span v-if="typeTABS.prop === 'tab2'"> -->
-      <avue-crud
-        :option="option1"
-        :data="data1"
-        :page.sync="page1"
-        ref="crudrec1"
-        :table-loading="loading1"
-        @row-save="rowSave1"
-        @search-change="searchChange1"
-        @search-reset="searchReset1"
-        @row-update="rowUpdate1"
-        @row-del="rowDel1"
-        @selection-change="selectionChange1"
-        @refresh-change="refreshChange1"
-      >
-        <template slot="menuLeft">
-          <el-button
-            type="danger"
-            size="small"
-            plain
-            icon="el-icon-delete"
-            @click="handleDelete1"
-            >删 除
-          </el-button>
-        </template>
-      </avue-crud>
+      <basic-container>
+        <avue-crud
+          :option="option1"
+          :data="data1"
+          :page.sync="page1"
+          ref="crudrec1"
+          :table-loading="loading1"
+          @row-save="rowSave1"
+          @search-change="searchChange1"
+          @search-reset="searchReset1"
+          @row-update="rowUpdate1"
+          @row-del="rowDel1"
+          @selection-change="selectionChange1"
+          @refresh-change="refreshChange1"
+        >
+          <template slot="menuLeft">
+            <el-button
+              type="success"
+              size="small"
+              plain
+              icon="el-icon-upload2"
+              @click="handleImport"
+              >批量导入
+            </el-button>
+            <el-button
+              type="danger"
+              size="small"
+              plain
+              icon="el-icon-delete"
+              @click="handleDelete1"
+              >删 除
+            </el-button>
+          </template>
+        </avue-crud>
+      </basic-container>
     </span>
     <span v-else-if="typeTABS.prop === 'tab3'">
-      <avue-crud
-        :option="option2"
-        :data="data2"
-        :page.sync="page2"
-        ref="crudrec2"
-        :table-loading="loading2"
-        @row-save="rowSave2"
-        @search-change="searchChange2"
-        @search-reset="searchReset2"
-        @row-update="rowUpdate2"
-        @row-del="rowDel2"
-        @selection-change="selectionChange2"
-        @refresh-change="refreshChange2"
+      <basic-container>
+        <avue-crud
+          :option="option2"
+          :data="data2"
+          :page.sync="page2"
+          ref="crudrec2"
+          :table-loading="loading2"
+          @row-save="rowSave2"
+          @search-change="searchChange2"
+          @search-reset="searchReset2"
+          @row-update="rowUpdate2"
+          @row-del="rowDel2"
+          @selection-change="selectionChange2"
+          @refresh-change="refreshChange2"
+        >
+          <template slot="menuLeft">
+            <el-button
+              type="success"
+              size="small"
+              plain
+              icon="el-icon-upload2"
+              @click="handleImport1"
+              >批量导入
+            </el-button>
+            <el-button
+              type="danger"
+              size="small"
+              plain
+              icon="el-icon-delete"
+              @click="handleDelete2"
+              >删 除
+            </el-button>
+          </template>
+        </avue-crud>
+      </basic-container>
+    </span>
+
+    <el-dialog
+      title="出资人导入"
+      append-to-body
+      :visible.sync="excelBox"
+      width="555px"
+    >
+      <avue-form
+        :option="excelOption"
+        v-model="excelForm"
+        :upload-after="uploadAfter"
       >
-        <template slot="menuLeft">
-          <el-button
-            type="danger"
-            size="small"
-            plain
-            icon="el-icon-delete"
-            @click="handleDelete2"
-            >删 除
+        <template slot="excelTemplate">
+          <el-button type="primary" @click="handleTemplate">
+            点击下载<i class="el-icon-download el-icon--right"></i>
           </el-button>
         </template>
-      </avue-crud>
-    </span>
+      </avue-form>
+    </el-dialog>
+
+    <el-dialog
+      title="管理人导入"
+      append-to-body
+      :visible.sync="excelBox1"
+      width="555px"
+    >
+      <avue-form
+        :option="excelOption1"
+        v-model="excelForm1"
+        :upload-after="uploadAfter1"
+      >
+        <template slot="excelTemplate">
+          <el-button type="primary" @click="handleTemplate1">
+            点击下载<i class="el-icon-download el-icon--right"></i>
+          </el-button>
+        </template>
+      </avue-form>
+    </el-dialog>
   </div>
 </template> 
 
@@ -137,6 +197,62 @@
       ],
     };
     return {
+      excelBox: false, //出资人
+      excelForm: {},
+      excelOption: {
+        submitBtn: false,
+        emptyBtn: false,
+        column: [
+          {
+            label: "文件上传",
+            prop: "excelFile",
+            type: "upload",
+            drag: true,
+            loadText: "文件上传中,请稍等",
+            span: 24,
+            propsHttp: {
+              res: "data",
+            },
+            tip: "请上传 .xls,.xlsx 标准格式文件",
+            action: "/api/car/import-examSubject",
+          },
+          {
+            label: "模板下载",
+            prop: "excelTemplate",
+            formslot: true,
+            span: 24,
+          },
+        ],
+      },
+
+      excelBox1: false, //管理人
+      excelForm1: {},
+      excelOption1: {
+        submitBtn: false,
+        emptyBtn: false,
+        column: [
+          {
+            label: "文件上传",
+            prop: "excelFile",
+            type: "upload",
+            drag: true,
+            loadText: "文件上传中,请稍等",
+            span: 24,
+            propsHttp: {
+              res: "data",
+            },
+            tip: "请上传 .xls,.xlsx 标准格式文件",
+            action: "/api/examSubjectChoices/import-examSubject",
+          },
+          {
+            label: "模板下载",
+            prop: "excelTemplate",
+            formslot: true,
+            span: 24,
+          },
+        ],
+      },
+
       typeTABS: {}, //标签页
       optionTABS: {
         column: [
@@ -262,6 +378,34 @@
     },
   },
   methods: {
+    handleImport() {
+      //出资人
+      this.excelBox = true;
+    },
+    uploadAfter(res, done, loading, column) {
+      window.console.log(column);
+      this.excelBox = false;
+      this.refreshChange();
+      done();
+    },
+    handleTemplate() {
+      window.open(`/api/car/export-template`);
+    },
+
+    handleImport1() {
+      //管理人
+      this.excelBox1 = true;
+    },
+    uploadAfter1(res, done, loading, column) {
+      window.console.log(column);
+      this.excelBox1 = false;
+      // this.refreshChange();
+      done();
+    },
+    handleTemplate1() {
+      window.open(`/api/examSubjectChoices/export-template`);
+    },
+
     handleChangeTABS(column) {
       this.typeTABS = column;
       // this.$message.success(JSON.stringify(column));
diff --git a/src/views/talk/talk.vue b/src/views/talk/talk.vue
new file mode 100644
index 0000000..5a14376
--- /dev/null
+++ b/src/views/talk/talk.vue
@@ -0,0 +1,266 @@
+<template>
+  <basic-container>
+    <avue-crud :option="option"
+               :table-loading="loading"
+               :data="data"
+               :page.sync="page"
+               :permission="permissionList"
+               :before-open="beforeOpen"
+               v-model="form"
+               ref="crud"
+               @row-update="rowUpdate"
+               @row-save="rowSave"
+               @row-del="rowDel"
+               @search-change="searchChange"
+               @search-reset="searchReset"
+               @selection-change="selectionChange"
+               @current-change="currentChange"
+               @size-change="sizeChange"
+               @refresh-change="refreshChange"
+               @on-load="onLoad">
+      <template slot="menuLeft">
+        <el-button type="danger"
+                   size="small"
+                   icon="el-icon-delete"
+                   plain
+                   v-if="permission.talk_delete"
+                   @click="handleDelete">删 除
+        </el-button>
+      </template>
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+  import {getList, getDetail, add, update, remove} from "@/api/talk/talk";
+  import {mapGetters} from "vuex";
+
+  export default {
+    data() {
+      return {
+        form: {},
+        query: {},
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        selectionList: [],
+        option: {
+          height:'auto',
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          viewBtn: true,
+          selection: true,
+          dialogClickModal: false,
+          column: [
+            {
+              label: "标题",
+              prop: "title",
+              search: true,
+              rules: [{
+                required: true,
+                message: "请输入标题",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "谈话对象",
+              search: true,
+              prop: "realName",
+              type: "tree",
+              props: {
+                label: "realName",
+                value: "id",
+              },
+              dicUrl: `/api/blade-user/selectInr?deptid=`+this.$store.getters.userInfo.dept_id,
+              rules: [{
+                required: true,
+                message: "请输入谈话对象",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "谈话内容",
+              prop: "talkcontent",
+              rules: [{
+                required: true,
+                message: "请输入谈话内容",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "谈话时间",
+              prop: "talktime",
+              type: "date",
+              format: "yyyy-MM-dd hh:mm:ss",
+              valueFormat: "yyyy-MM-dd hh:mm:ss",
+              rules: [{
+                required: true,
+                message: "请输入谈话时间",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "结论",
+              prop: "conclusion",
+              rules: [{
+                required: true,
+                message: "请输入结论",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "评价",
+              prop: "evaluate",
+              rules: [{
+                required: true,
+                message: "请输入评价",
+                trigger: "blur"
+              }]
+            },
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission", "userInfo"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.talk_add, false),
+          viewBtn: this.vaildData(this.permission.talk_view, false),
+          delBtn: this.vaildData(this.permission.talk_delete, false),
+          editBtn: this.vaildData(this.permission.talk_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+      rowSave(row, done, loading) {
+        add(row).then(() => {
+          row.deptid=this.$store.getters.userInfo.dept_id
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          window.console.log(error);
+        });
+      },
+      rowUpdate(row, index, done, loading) {
+        update(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          console.log(error);
+        });
+      },
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(row.id);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(this.ids);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$refs.crud.toggleSelection();
+          });
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          getDetail(this.form.id).then(res => {
+            this.form = res.data.data;
+          });
+        }
+        done();
+      },
+      searchReset() {
+        this.query = {};
+        this.onLoad(this.page);
+      },
+      searchChange(params, done) {
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done();
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      selectionClear() {
+        this.selectionList = [];
+        this.$refs.crud.toggleSelection();
+      },
+      currentChange(currentPage){
+        this.page.currentPage = currentPage;
+      },
+      sizeChange(pageSize){
+        this.page.pageSize = pageSize;
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query);
+      },
+      onLoad(page, params = {}) {
+        this.loading = true;
+        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>
diff --git a/vue.config.js b/vue.config.js
index f3063ef..2da0d17 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -28,10 +28,10 @@
       '/api': {
         //本地服务接口地址
         // target: 'http://localhost',
-        // target: 'http://192.168.0.114:81',//钟W
+        target: 'http://192.168.0.114:81',//钟W
         // target: 'http://localhost:81',//原W
-        target: 'http://192.168.0.108:81',//原W
-        // target: 'http://192.168.0.104:80',//唐N
+        // target: 'http://192.168.0.108:81',//原W
+        // target: 'http://192.168.0.109:81',//唐N
         //远程演示服务地址,可用于直接启动项目
         // target: 'https://saber.bladex.vip/api',
         ws: true,

--
Gitblit v1.9.3