chenpm 1 rok temu
rodzic
commit
029b290564
83 zmienionych plików z 6426 dodań i 7 usunięć
  1. 15 1
      src/router/index.js
  2. BIN
      src/static/images/editHistory.png
  3. BIN
      src/static/images/editTag.png
  4. 6 0
      src/static/images/high.svg
  5. BIN
      src/static/images/importantCompany.png
  6. BIN
      src/static/images/listingReserve.png
  7. 6 0
      src/static/images/low.svg
  8. 6 0
      src/static/images/mid.svg
  9. BIN
      src/static/template/demo.png
  10. BIN
      src/static/template/energy.png
  11. BIN
      src/static/template/subsidy.png
  12. BIN
      src/static/template/tag.png
  13. 2 2
      src/static/utils/constant.js
  14. 2 0
      src/static/utils/myBus.js
  15. 246 0
      src/views/components/UserSelect2ZT.vue
  16. 537 0
      src/views/components/uploadCost.vue
  17. 261 0
      src/views/components/userSelectCompon.vue
  18. 1 1
      src/views/dashpanel/myAudit.vue
  19. 2 1
      src/views/door/menu.vue
  20. 1 1
      src/views/life-line/monitor/points/devicemap-ranqi/index.vue
  21. 718 0
      src/views/prove/index.vue
  22. 574 0
      src/views/prove/indexCompanyShow.vue
  23. 439 0
      src/views/workbench/components/myAudit.vue
  24. 454 0
      src/views/workbench/components/myAudit_old.vue
  25. 224 0
      src/views/workbench/components/myBoard.vue
  26. 227 0
      src/views/workbench/components/myBug.vue
  27. 384 0
      src/views/workbench/components/myInfo.vue
  28. 458 0
      src/views/workbench/components/myKey.vue
  29. 484 0
      src/views/workbench/components/myKey_new.vue
  30. 714 0
      src/views/workbench/components/myMenu.vue
  31. 113 0
      src/views/workbench/components/tianqi.vue
  32. BIN
      src/views/workbench/image/Vector.png
  33. 5 0
      src/views/workbench/image/allpage.svg
  34. BIN
      src/views/workbench/image/arrow.png
  35. BIN
      src/views/workbench/image/backHome.png
  36. BIN
      src/views/workbench/image/banner.png
  37. BIN
      src/views/workbench/image/base.png
  38. BIN
      src/views/workbench/image/bg.png
  39. BIN
      src/views/workbench/image/bgc.png
  40. BIN
      src/views/workbench/image/close.png
  41. 5 0
      src/views/workbench/image/contact.svg
  42. BIN
      src/views/workbench/image/crowd1.png
  43. BIN
      src/views/workbench/image/crowd2.png
  44. BIN
      src/views/workbench/image/crowd3.png
  45. BIN
      src/views/workbench/image/default.png
  46. BIN
      src/views/workbench/image/foot.png
  47. BIN
      src/views/workbench/image/group.png
  48. BIN
      src/views/workbench/image/head.png
  49. BIN
      src/views/workbench/image/icon_address.png
  50. BIN
      src/views/workbench/image/icon_linkage1.png
  51. BIN
      src/views/workbench/image/icon_linkage2.png
  52. BIN
      src/views/workbench/image/icon_linkage3.png
  53. BIN
      src/views/workbench/image/icon_linkage4.png
  54. BIN
      src/views/workbench/image/icon_linkage5.png
  55. BIN
      src/views/workbench/image/icon_linkage6.png
  56. BIN
      src/views/workbench/image/icon_menu_1.png
  57. BIN
      src/views/workbench/image/icon_menu_10.png
  58. BIN
      src/views/workbench/image/icon_menu_11.png
  59. BIN
      src/views/workbench/image/icon_menu_2.png
  60. BIN
      src/views/workbench/image/icon_menu_3.png
  61. BIN
      src/views/workbench/image/icon_menu_4.png
  62. BIN
      src/views/workbench/image/icon_menu_5.png
  63. BIN
      src/views/workbench/image/icon_menu_6.png
  64. BIN
      src/views/workbench/image/icon_menu_7.png
  65. BIN
      src/views/workbench/image/icon_menu_8.png
  66. BIN
      src/views/workbench/image/icon_menu_9.png
  67. BIN
      src/views/workbench/image/icon_search.png
  68. BIN
      src/views/workbench/image/icon_search2.png
  69. BIN
      src/views/workbench/image/icon_time.png
  70. BIN
      src/views/workbench/image/ink-cloud.png
  71. BIN
      src/views/workbench/image/left.png
  72. BIN
      src/views/workbench/image/logo.png
  73. BIN
      src/views/workbench/image/logout.png
  74. BIN
      src/views/workbench/image/menu.png
  75. BIN
      src/views/workbench/image/menu_1.png
  76. BIN
      src/views/workbench/image/pic.png
  77. BIN
      src/views/workbench/image/pic2.png
  78. BIN
      src/views/workbench/image/right.png
  79. BIN
      src/views/workbench/image/setting.png
  80. BIN
      src/views/workbench/image/split.png
  81. BIN
      src/views/workbench/image/thingbg.png
  82. 541 0
      src/views/workbench/index.vue
  83. 1 1
      vue.config.js

+ 15 - 1
src/router/index.js

@@ -61,6 +61,11 @@ export const constantRoutes = [
         component: () => import('@/views/parkAssets/parkFloorDisc/index.vue'),
         hidden: true
     },
+    {
+        path: '/workbench',
+        component: () => import('@/views/workbench/index.vue'),
+        hidden: true
+    },
     {
         path: '/lifeLine',
         component: () => import('@/views/life-line/situational-awareness.vue'),
@@ -338,8 +343,17 @@ export const constantRoutes = [
         path: '/backstage',
         name: 'backstage',
         component: () => import('@/views/door/backstage'),
-        hidden: true
+        hidden: true,
+        children: [
+            {
+                path: '/workbench',
+                name: 'workbench',
+                component: () => import('@/views/workbench/index'),
+                hidden: true
+            },
+        ]
     },
+
     {
         path: '/train', // 培训学习二级页面
         component: () => import('@/views/detailPages/train'),

BIN
src/static/images/editHistory.png


BIN
src/static/images/editTag.png


Plik diff jest za duży
+ 6 - 0
src/static/images/high.svg


BIN
src/static/images/importantCompany.png


BIN
src/static/images/listingReserve.png


Plik diff jest za duży
+ 6 - 0
src/static/images/low.svg


+ 6 - 0
src/static/images/mid.svg

@@ -0,0 +1,6 @@
+<svg width="38" height="35" viewBox="0 0 38 35" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="&#231;&#187;&#132; 2191">
+<path id="&#229;&#135;&#143;&#229;&#142;&#187; 13" d="M0.00297928 35L37.303 0L0.00297928 0L0.00297928 35Z" fill="#F4A620"/>
+<path id="&#228;&#184;&#173;" d="M10.933 5.183H11.821V7.343H16.129V12.983H15.265V12.227H11.821V16.319H10.933V12.227H7.50095V12.983H6.63695V7.343H10.933V5.183ZM7.50095 11.387H10.933V8.183H7.50095V11.387ZM11.821 11.387H15.265V8.183H11.821V11.387Z" fill="white"/>
+</g>
+</svg>

BIN
src/static/template/demo.png


BIN
src/static/template/energy.png


BIN
src/static/template/subsidy.png


BIN
src/static/template/tag.png


+ 2 - 2
src/static/utils/constant.js

@@ -1,7 +1,7 @@
 // 服务端地址
 // const BASE_URI = process.env.VUE_APP_WEB // 利用环境变量
-// const BASE_URI = '/webServer' // 代理模式代理地址
-const BASE_URI = 'https://www.idea-co-sf.com/settleDownApi'
+const BASE_URI = '/webServer' // 代理模式代理地址
+// const BASE_URI = 'https://www.idea-co-sf.com/settleDownApi'
 
 const WEB_URL = 'https://2.21.138.147:8080/lifeline' // 正式
 

+ 2 - 0
src/static/utils/myBus.js

@@ -0,0 +1,2 @@
+import vue from "vue";
+export default new vue();

+ 246 - 0
src/views/components/UserSelect2ZT.vue

@@ -0,0 +1,246 @@
+<template>
+  <!--    在数组中选择人员-->
+  <el-popover
+    ref="reference"
+    placement="bottom-start"
+    :width="width?width:'400'"
+    trigger="click"
+    :disabled="disab"
+    @hide="popoverHide"
+  >
+    <el-tabs v-model="activeName" :width="width?width:'400'" type="card" @tab-click="handleClick">
+      <el-input v-model="checkLabel" size="mini" placeholder="请输入搜索内容">
+        <i slot="suffix" class="el-icon-edit el-input__icon" />
+      </el-input>
+      <el-tab-pane label="按组织" name="1" style="height: 300px; overflow-y:auto;">
+        <el-tree ref="tree_1" :default-expanded-keys="expandedKeys" :data="data_1" show-checkbox node-key="id" empty-text="没有数据了" :props="defaultProps" :filter-node-method="filterNode" @check="handleNodeChange" />
+      </el-tab-pane>
+      <el-tab-pane label="按岗位" name="2" style="height: 300px; overflow-y:auto;">
+        <el-tree ref="tree_2" :default-expanded-keys="expandedKeys" :data="data_2" show-checkbox node-key="id" empty-text="没有数据了" :props="defaultProps" :filter-node-method="filterNode" @check="handleNodeChange" />
+      </el-tab-pane>
+      <el-tab-pane label="我的下属" name="3" style="height: 300px; overflow-y:auto;">
+        <el-tree ref="tree_3" :default-expanded-keys="expandedKeys" :data="data_3" show-checkbox node-key="id" empty-text="没有数据了" :props="defaultProps" :filter-node-method="filterNode" @check="handleNodeChange" />
+      </el-tab-pane>
+      <el-tab-pane label="我的部门" name="4" style="height: 300px; overflow-y:auto;">
+        <el-tree ref="tree_4" :default-expanded-keys="expandedKeys" :data="data_4" show-checkbox node-key="id" empty-text="没有数据了" :props="defaultProps" :filter-node-method="filterNode" @check="handleNodeChange" />
+      </el-tab-pane>
+    </el-tabs>
+
+    <div slot="reference" data-v-51add840="" style="width: 100%;" class="col-input el-col el-col-20" @click="search">
+      <div data-v-51add840="" class="el-form-item">
+        <div class="el-form-item__content">
+          <div data-v-51add840="" class="el-select">
+            <div class="el-input el-input--suffix is-focus">
+              <input v-model="selectLabel" type="text" autocomplete="off" placeholder="请选择人员" class="el-input__inner">
+              <span class="el-input__suffix">
+                <span class="el-input__suffix-inner">
+                  <i :class="classType==1?class_up:class_dow" style="" />
+                </span>
+                <span class="el-input__suffix-inner" @click.stop="deleteAllSelect">
+                  <i class="el-icon-circle-close" style="" />
+                </span>
+              </span>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+
+  </el-popover>
+</template>
+
+<script>
+export default {
+    props: {
+        arrayId: String,
+        defaultSelect: Array,
+        width: String,
+        multiple: Boolean,
+        disab: Boolean,
+        groupId: String
+    },
+    data() {
+        return {
+            classType: 1,
+            checkLabel: '',
+            selectLabel: '',
+            selectValue: [],
+            labels: [],
+            selectTree: [],
+            expandedKeys: ['0'],
+            activeName: '1',
+            class_up: 'el-select__caret el-input__icon el-icon-arrow-up',
+            class_dow: 'el-select__caret el-input__icon el-icon-arrow-up is-reverse',
+
+            data_1: [],
+            data_2: [],
+            data_3: [],
+            data_4: [],
+            defaultProps: {
+                children: 'children',
+                label: 'label'
+            }
+        }
+    },
+    watch: {
+        defaultSelect: {
+            deep: true,
+            handler(val) {
+                this.labels = []
+                this.selectValue = []
+                this.getTreeDate()
+                this.$refs.tree_1.setCheckedKeys(val)
+                const _this = this
+                setTimeout(function() {
+                    _this.popoverHide()
+                }, 600)
+            }
+        },
+        checkLabel(val) {
+            this.$refs['tree_' + this.activeName].filter(val)
+        }
+    },
+    mounted() {
+        this.getTreeDate()
+        if (this.defaultSelect && this.defaultSelect.length) {
+            this.$refs.tree_1.setCheckedKeys(this.defaultSelect)
+        }
+        const _this = this
+        setTimeout(function() {
+            _this.popoverHide()
+        }, 1500)
+    },
+    methods: {
+        search: function() {
+            if (this.classType === 1) {
+                this.classType = 2
+            } else {
+                this.classType = 1
+            }
+        },
+
+        handleClick: function() {
+            this.getTreeDate()
+        },
+
+        handleNodeChange: function(data, checked, indeterminate) {
+            if (!this.multiple) {
+                if (checked) {
+                    this.$refs['tree_' + this.activeName].setCheckedKeys([])
+                    this.$refs['tree_' + this.activeName].setChecked(data, true)
+                    if (data.children == null) {
+                        this.selectValue = [data.id]
+                        this.labels = [data.label]
+                    }
+                }
+            } else {
+                if (this.selectValue.indexOf(data.id) > -1) {
+                    this.selectValue = this.selectValue.filter(item => item !== data.id)
+                    this.labels = this.labels.filter(item => item !== data.label)
+                }
+                if (data.children != null && data.children.length > 0) {
+                    this.deleteSelect(data.children)
+                }
+            }
+            this.popoverHide()
+        },
+        deleteSelect(data) {
+            data.forEach(it => {
+                if (it.children != null && it.children.length > 0) {
+                    this.deleteSelect(it.children)
+                }
+                this.selectValue = this.selectValue.filter(item => item !== it.id)
+                this.labels = this.labels.filter(item => item !== it.label)
+            })
+        },
+        deleteAllSelect() {
+            this.selectValue = []
+            this.labels = []
+            this.selectLabel = ''
+            this.$refs['tree_' + this.activeName].setCheckedKeys([])
+            this.$emit('selectValue2', this.selectValue)
+        },
+
+        popoverHide: function() {
+            const sectd = this.$refs['tree_' + this.activeName].getCheckedNodes()
+            const seachId = []
+            const seachVal = []
+            sectd.forEach(element => {
+                if (element.selectType && this.selectValue.indexOf(element.id) === -1) {
+                    seachId.push(element.id)
+                    seachVal.push(element.label)
+                }
+            })
+
+            if (seachVal.length > 0) {
+                seachVal.forEach(ii => {
+                    this.labels.push(ii)
+                })
+            }
+            this.selectLabel = this.labels.toString()
+            if (seachId.length > 0) {
+                seachId.forEach(ij => {
+                    this.selectValue.push(ij)
+                })
+            }
+            // if (!this.multiple && (sectd[0].children != null)) {
+            //     this.labels = []
+            //     this.selectLabel = ''
+            //     this.selectValue = ''
+            // }
+
+            // 这里很需要修改很重要张洮 zt:selectValue2和this.arrayId
+            this.$emit('selectValue2', this.selectValue, this.arrayId)
+        },
+
+        filterNode: function(value, data) {
+            if (!value) return true
+            return data.label.indexOf(value) !== -1
+        },
+
+        // 获取树级数据
+        getTreeDate: function() {
+            const postData = {
+                groupType: this.activeName,
+                groupId: this.groupId
+            }
+            this['data_' + this.activeName] = []
+            this.baseUserRequest('getUserListGroupType', postData).then((res) => {
+                if (res.data) {
+                    if (!this.multiple) {
+                        this.getData(res.data.data)
+                    }
+                    this['data_' + this.activeName] = res.data.data
+                    this.$refs['tree_' + this.activeName].setCheckedKeys(this.defaultSelect.length === 0 ? this.selectValue : this.defaultSelect)
+                }
+                this.loading = false
+            }).catch(() => {
+            })
+        },
+        getData(data) {
+            data.map(item => {
+                this.getLeadKeys(item)
+            })
+        },
+        getLeadKeys(node) {
+            if (node.children && node.children.length > 0) {
+                node.disabled = true
+                node.children.forEach(item => {
+                    this.getLeadKeys(item)
+                })
+            } else {
+                if (node.selectType) {
+                    node.disabled = false
+                } else {
+                    node.disabled = true
+                }
+            }
+        },
+
+        baseUserRequest(opUrl, postData) {
+            return this.$channel.globleRequest('FrameExclusiveUserController', opUrl, postData, 'project')
+        }
+
+    }
+}
+</script>

+ 537 - 0
src/views/components/uploadCost.vue

@@ -0,0 +1,537 @@
+<template>
+  <div class="uploadCost">
+    <el-dialog
+      v-loading="loading"
+      :before-close="closeUpload"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      :title="isImport?'导入结果':'批量导入'"
+      :visible.sync="dialogVisible"
+      width="50%"
+    >
+      <div v-if="!isImport">
+        <p v-for="(item, index) in uploadTitle" :key="index" class="uploadtitle">
+          {{ item }}
+        </p>
+        <el-card style="padding-top: 10px;padding-bottom: 10px">
+
+          <div style="width: 50%;float:left;">
+            <p class="uploadtitle txtcenter">1.下载模板按要求填写</p>
+            <img class="mtmb16 mgauto" src="@/assets/excelicon.png" width="50px">
+            <div style="width: 100%">
+              <el-button class="mtmb16 mgauto" size="small" type="primary" @click="downloadTemplate()">下载模板
+              </el-button>
+            </div>
+          </div>
+          <div style="width: 50%;float:left;">
+            <p class="uploadtitle txtcenter">2.上传填写好的文件</p>
+            <img class="mtmb16 mgauto" src="@/assets/excelicon.png" width="50px">
+            <div class="mgauto2">
+              <el-upload
+                :file-list="fileUrlList"
+                :http-request="uploadFile"
+                :limit="1"
+                accept=".xlsx"
+                action="#"
+              >
+                <el-button class="mtmb16" size="small" style="margin-top: 0;height: 33px" type="primary">上传文件</el-button>
+                <div slot="file" slot-scope="{file}">
+                  <a :href="file.url">{{ file.name }}</a>
+                  <span class="el-upload-list__item-actions">
+                    <i class="el-icon-delete" @click="handlePictureRemove(file,fileUrlList)" />
+                  </span>
+                </div>
+              </el-upload>
+            </div>
+          </div>
+
+        </el-card>
+      </div>
+      <!--      <div v-if="isImport" style="margin:10px">-->
+      <!--        <p>导入成功 <span>{{ successCount }} 条</span> ,失败 <span>{{ errorCount }}</span> 条 </p>-->
+      <!--        <p>您可以下载失败记录,修改后重新上传。以下标红为校验失败项</p>-->
+      <!--        <el-table-->
+      <!--          v-if="importType === 'mnpCompany'"-->
+      <!--          :data="tableData"-->
+      <!--          style="width: 100%;"-->
+      <!--        >-->
+      <!--          <el-table-column align="center" label="发生日期" prop="happenDate">-->
+      <!--            <template v-slot="scope">-->
+      <!--              <span v-if="scope.row.errorField === 'happenDate'" style="color: red">{{ scope.row.happenDate }}</span>-->
+      <!--              <span v-else>{{ scope.row.happenDate }}</span>-->
+      <!--            </template>-->
+      <!--          </el-table-column>-->
+      <!--          <el-table-column align="center" label="申请人" prop="applyUser">-->
+      <!--            <template v-slot="scope">-->
+      <!--              <span v-if="scope.row.errorField === 'applyUser'" style="color: red">{{ scope.row.applyUser }}</span>-->
+      <!--              <span v-else>{{ scope.row.applyUser }}</span>-->
+      <!--            </template>-->
+      <!--          </el-table-column>-->
+      <!--          <el-table-column align="center" label="费用类型" prop="expenseType">-->
+      <!--            <template v-slot="scope">-->
+      <!--              <span v-if="scope.row.errorField === 'expenseType'" style="color: red">{{ scope.row.expenseType }}</span>-->
+      <!--              <span v-else>{{ scope.row.expenseType }}</span>-->
+      <!--            </template>-->
+      <!--          </el-table-column>-->
+      <!--          <el-table-column align="center" label="金额(元)" prop="expenseAmount">-->
+      <!--            <template v-slot="scope">-->
+      <!--              <span v-if="scope.row.errorField === 'expenseAmount'" style="color: red">{{ scope.row.expenseAmount }}</span>-->
+      <!--              <span v-else>{{ scope.row.expenseAmount }}</span>-->
+      <!--            </template>-->
+      <!--          </el-table-column>-->
+      <!--          <el-table-column align="center" label="关联项目名称" prop="proName">-->
+      <!--            <template v-slot="scope">-->
+      <!--              <span v-if="scope.row.errorField === 'proName'" style="color: red">{{ scope.row.proName }}</span>-->
+      <!--              <span v-else>{{ scope.row.proName }}</span>-->
+      <!--            </template>-->
+      <!--          </el-table-column>-->
+      <!--        </el-table>-->
+      <!--      </div>-->
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="closeUpload()">取 消</el-button>
+        <el-button
+          v-if="!isImport"
+          :disabled="fileUrlList.length===0"
+          type="primary"
+          @click="importFile()"
+        >导入</el-button>
+        <!--        <el-button-->
+        <!--          v-if="isImport"-->
+        <!--          type="primary"-->
+        <!--          @click="exportError()"-->
+        <!--        >-->
+        <!--          下载失败记录-->
+        <!--        </el-button>-->
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+// import XLSX from 'xlsx'
+import * as XLSX from 'xlsx'
+
+import XLSXStyle from 'xlsx-style-fixedver'
+
+const defaultTitle = '批量导入'
+export default {
+    props: {
+        // 弹框状态
+        dialogVisible: { type: Boolean, default: false },
+        // 类型
+        importType: { type: String, default: '' },
+        // 上传说明
+        uploadTitle: { type: Array, default: () => ([]) }
+    },
+    data() {
+        return {
+            fileUrlList: [],
+            tableData: [],
+            title: defaultTitle.repeat(1),
+            loading: false,
+            isImport: false,
+            file: null,
+            successCount: 0,
+            errorCount: ''
+        }
+    },
+    methods: {
+        importFile() {
+            if (this.importType === 'mnpCompany') {
+                this.importCompany()
+            }
+        },
+        importCompany() {
+            this.loading = true
+            this.$axios({
+                headers: {
+                    'Content-Type': 'multipart/form-data'
+                },
+                method: 'post',
+                url: this.$constant.BASE_URI + '/MnpCompanyController/handleImport',
+                data: this.file
+            }).then((res) => {
+                this.loading = false
+                if (res.data.code === 200) {
+                    this.$message({
+                        message: '上传成功',
+                        type: 'success'
+                    })
+                    this.$emit('cancelUpload', true)
+                } else {
+                    this.$message({
+                        message: res.data.msg,
+                        type: 'error'
+                    })
+                }
+            }).catch((err, x) => {
+                console.log('biz user list error', err, x)
+            })
+        },
+        closeUpload() {
+            // 关闭弹窗
+            this.$emit('cancelUpload')
+        },
+        uploadFile(param) {
+            const formParam = new FormData()
+            formParam.append('file', param.file)
+            this.file = formParam
+            this.fileUrlList.push({ name: param.file.name })
+        },
+        handlePictureRemove(file, fileUrlList) {
+            const index = fileUrlList.indexOf(file)
+            fileUrlList.splice(index, 1)
+            this.file = null
+        },
+        exportError() {
+            if (this.importType === 'mnpCompany') {
+                this.exportErrorCompany()
+            }
+        },
+        exportErrorCompany() {
+            if (!this.tableData.length) {
+                this.$message.error('失败记录为空!')
+                return
+            }
+            const outData = []
+            outData.push([
+                '#导入须知#\n' +
+                '1.请不要增加、删除、修改表格列,否则系统将无法识别;\n' +
+                '2.红色列为必填项,黑色列为选填项;\n' +
+                '3.字段说明:\n' +
+                '1)入驻类型:包含”在园“、“迁出“,请严格按照此类型填写,否则系统将无法识别;'
+            ])
+            const title = []
+            title.push('企业名称')
+            title.push('统一社会信用代码')
+            title.push('入驻类型')
+            outData.push(title)
+            const errorFiled = []
+            this.tableData.forEach((item, index) => {
+                const jsonArray = []
+                // jsonArray.push(item.happenDate)
+                // jsonArray.push(item.applyUser)
+                // jsonArray.push(item.expenseType)
+                // jsonArray.push(item.expenseAmount)
+                // jsonArray.push(item.proName)
+                // switch (item.errorField) {
+                //     case 'happenDate':
+                //         errorFiled.push('A' + (index + 3))
+                //         break
+                //     case 'applyUser':
+                //         errorFiled.push('B' + (index + 3))
+                //         break
+                //     case 'expenseType':
+                //         errorFiled.push('C' + (index + 3))
+                //         break
+                //     case 'expenseAmount':
+                //         errorFiled.push('D' + (index + 3))
+                //         break
+                //     case 'proName':
+                //         errorFiled.push('E' + (index + 3))
+                //         break
+                // }
+                outData.push(jsonArray)
+            })
+            const outSize = []
+            title.forEach(item => {
+                if (item.length > 4) {
+                    outSize.push({
+                        wch: 30
+                    })
+                } else {
+                    outSize.push({
+                        wch: 15
+                    })
+                }
+            })
+            const outMerges = [
+                { s: { r: 0, c: 0 }, e: { r: 0, c: 23 }}
+            ]
+            const fileName = '失败记录导出 ' + new Date().Format('yyyy-MM-dd hh:mm')
+            const ws = XLSX.utils.aoa_to_sheet(outData)
+            ws['!merges'] = outMerges
+            ws['!cols'] = outSize
+            ws['!rows'] = [{ hch: 150 }]
+            if (errorFiled.length) {
+                errorFiled.forEach(item => {
+                    if (!ws[item]) {
+                        ws[item] = {
+                            v: '',
+                            t: 's',
+                            s: {
+                                fill: {
+                                    bgColor: { indexed: 64 }, fgColor: { rgb: 'FF0000' }
+                                },
+                                font: {
+                                    color: { rgb: 'FFFFFF' }
+                                }
+                            }
+                        }
+                    } else {
+                        ws[item].s = {
+                            fill: {
+                                bgColor: { indexed: 64 }, fgColor: { rgb: 'FF0000' }
+                            },
+                            font: {
+                                color: { rgb: 'FFFFFF' }
+                            }
+                        }
+                    }
+                })
+            }
+            ws['A1'].s = {
+                alignment: {
+                    wrapText: true
+                }
+            }
+            ws['A2'].s = {
+                font: {
+                    color: { rgb: 'FF0000' }
+                }
+            }
+            ws['B2'].s = {
+                font: {
+                    color: { rgb: 'FF0000' }
+                }
+            }
+            ws['C2'].s = {
+                font: {
+                    color: { rgb: 'FF0000' }
+                }
+            }
+            // ws['I2'].s = {
+            //     font: {
+            //         color: { rgb: 'FF0000' }
+            //     }
+            // }
+            // ws['J2'].s = {
+            //     font: {
+            //         color: { rgb: 'FF0000' }
+            //     }
+            // }
+            // ws['K2'].s = {
+            //     font: {
+            //         color: { rgb: 'FF0000' }
+            //     }
+            // }
+            // ws['L2'].s = {
+            //     font: {
+            //         color: { rgb: 'FF0000' }
+            //     }
+            // }
+            // ws['M2'].s = {
+            //     font: {
+            //         color: { rgb: 'FF0000' }
+            //     }
+            // }
+            // ws['X2'].s = {
+            //     font: {
+            //         color: { rgb: 'FF0000' }
+            //     }
+            // }
+            const wb = XLSX.utils.book_new()
+            XLSX.utils.book_append_sheet(wb, ws, fileName)
+            const tmpDown = new Blob([
+                this.s2ab(
+                    XLSXStyle.write(wb, {
+                        bookType: 'xlsx',
+                        bookSST: true,
+                        type: 'binary',
+                        cellStyles: true
+                    })
+                )
+            ])
+            const elink = document.createElement('a')
+            elink.download = decodeURIComponent(fileName + '.xlsx')
+            elink.style.display = 'none'
+            elink.href = URL.createObjectURL(tmpDown)
+            document.body.appendChild(elink)
+            elink.click()
+            URL.revokeObjectURL(elink.href) // 释放URL 对象
+            document.body.removeChild(elink)
+        },
+        s2ab(s) {
+            var cuf
+            var i
+            if (typeof ArrayBuffer !== 'undefined') {
+                cuf = new ArrayBuffer(s.length)
+                var view = new Uint8Array(cuf)
+                for (i = 0; i !== s.length; i++) {
+                    view[i] = s.charCodeAt(i) & 0xFF
+                }
+                return cuf
+            } else {
+                cuf = new Array(s.length)
+                for (i = 0; i !== s.length; ++i) {
+                    cuf[i] = s.charCodeAt(i) & 0xFF
+                }
+                return cuf
+            }
+        },
+        downloadTemplate() {
+            if (this.importType === 'mnpCompany') {
+                this.downloadCompanyTemplate()
+            }
+        },
+        downloadCompanyTemplate() {
+            const outData = []
+            outData.push([
+                '#导入须知#\n' +
+                '1.请不要增加、删除、修改表格列,否则系统将无法识别;\n' +
+                '2.红色列为必填项,黑色列为选填项;\n' +
+                '3.字段说明:\n' +
+                '1)入驻类型:包含”在园“、“迁出“,请严格按照此类型填写,否则系统将无法识别;'
+            ])
+            const title = []
+            title.push('企业名称')
+            title.push('统一社会信用代码')
+            title.push('入驻类型')
+            outData.push(title)
+            const outSize = []
+            title.forEach(item => {
+                if (item.length > 4) {
+                    outSize.push({
+                        wch: 30
+                    })
+                } else {
+                    outSize.push({
+                        wch: 15
+                    })
+                }
+            })
+            const outMerges = [
+                { s: { r: 0, c: 0 }, e: { r: 0, c: 23 }}
+            ]
+            const fileName = '修改企业信息模板'
+            const ws = XLSX.utils.aoa_to_sheet(outData)
+            ws['!merges'] = outMerges
+            ws['!cols'] = outSize
+            ws['!rows'] = [{ hch: 150 }]
+            ws['A1'].s = {
+                alignment: {
+                    wrapText: true
+                }
+            }
+            ws['A2'].s = {
+                font: {
+                    color: { rgb: 'FF0000' }
+                }
+            }
+            ws['C2'].s = {
+                font: {
+                    color: { rgb: 'FF0000' }
+                }
+            }
+            ws['B2'].s = {
+                font: {
+                    color: { rgb: 'FF0000' }
+                }
+            }
+            // ws['I2'].s = {
+            //     font: {
+            //         color: { rgb: 'FF0000' }
+            //     }
+            // }
+            // ws['J2'].s = {
+            //     font: {
+            //         color: { rgb: 'FF0000' }
+            //     }
+            // }
+            // ws['K2'].s = {
+            //     font: {
+            //         color: { rgb: 'FF0000' }
+            //     }
+            // }
+            // ws['L2'].s = {
+            //     font: {
+            //         color: { rgb: 'FF0000' }
+            //     }
+            // }
+            // ws['M2'].s = {
+            //     font: {
+            //         color: { rgb: 'FF0000' }
+            //     }
+            // }
+            // ws['X2'].s = {
+            //     font: {
+            //         color: { rgb: 'FF0000' }
+            //     }
+            // }
+            const wb = XLSX.utils.book_new()
+            XLSX.utils.book_append_sheet(wb, ws, fileName)
+            const tmpDown = new Blob([
+                this.s2ab(
+                    XLSXStyle.write(wb, {
+                        bookType: 'xlsx',
+                        bookSST: true,
+                        type: 'binary',
+                        cellStyles: true
+                    })
+                )
+            ])
+            const elink = document.createElement('a')
+            elink.download = decodeURIComponent(fileName + '.xlsx')
+            elink.style.display = 'none'
+            elink.href = URL.createObjectURL(tmpDown)
+            document.body.appendChild(elink)
+            elink.click()
+            URL.revokeObjectURL(elink.href) // 释放URL 对象
+            document.body.removeChild(elink)
+        },
+        handleClose() {
+            this.dialogVisible = false
+        }
+    }
+}
+</script>
+<style lang="scss">
+.uploadCost {
+  .el-card__body {
+    padding: 0 !important;
+  }
+
+  .uploadtitle {
+    //color: #C5C5C5;
+    color: #303133;
+  }
+
+  .el-dialog__body {
+    padding: 15px !important;
+    color: #606266 !important;
+    font-size: 14px !important;
+    word-break: break-all !important;
+  }
+    .el-upload {
+        //width: 100%;
+    }
+
+    .el-upload-list {
+        li {
+            text-align: center;
+        }
+    }
+
+    .mgauto {
+        display: block;
+        margin: 0 auto;
+    }
+
+    .mgauto2 {
+        display: flex;
+        justify-content: center;
+        margin: 0 auto;
+    }
+
+    .mtmb16 {
+        margin-top: 16px;
+        margin-bottom: 16px;
+    }
+
+    .txtcenter {
+        text-align: center;
+    }
+
+}
+
+</style>

+ 261 - 0
src/views/components/userSelectCompon.vue

@@ -0,0 +1,261 @@
+<template>
+<!-- @hide="popoverHide" -->
+    <el-popover
+        ref="reference"
+        placement="bottom-start"
+        :width="width?width:'400'"
+        trigger="click"
+        :disabled="disab"
+    >
+        <el-tabs v-model="activeName" :width="width?width:'400'" type="card" @tab-click="handleClick">
+            <el-input v-model="checkLabel" size="mini" placeholder="请输入搜索内容" :disabled="disab">
+                <i slot="suffix" class="el-icon-edit el-input__icon" />
+            </el-input>
+            <el-tab-pane label="按组织" name="1" style="height: 300px; overflow-y:auto;">
+                <el-tree v-loading="loading" ref="tree_1" :default-expanded-keys="expandedKeys" :default-checked-keys="selectValue" :data="data_1" show-checkbox node-key="id" empty-text="没有数据了" :props="defaultProps" :filter-node-method="filterNode" @check="handleNodeChange" />
+            </el-tab-pane>
+            <el-tab-pane label="按岗位" name="2" style="height: 300px; overflow-y:auto;">
+                <el-tree v-loading="loading" ref="tree_2" :default-expanded-keys="expandedKeys" :default-checked-keys="selectValue" :data="data_2" show-checkbox node-key="id" empty-text="没有数据了" :props="defaultProps" :filter-node-method="filterNode" @check="handleNodeChange" />
+            </el-tab-pane>
+            <el-tab-pane label="我的下属" name="3" style="height: 300px; overflow-y:auto;">
+                <el-tree v-loading="loading" ref="tree_3" :default-expanded-keys="expandedKeys" :default-checked-keys="selectValue" :data="data_3" show-checkbox node-key="id" empty-text="没有数据了" :props="defaultProps" :filter-node-method="filterNode" @check="handleNodeChange" />
+            </el-tab-pane>
+            <el-tab-pane label="我的部门" name="4" style="height: 300px; overflow-y:auto;">
+                <el-tree v-loading="loading" ref="tree_4" :default-expanded-keys="expandedKeys" :default-checked-keys="selectValue" :data="data_4" show-checkbox node-key="id" empty-text="没有数据了" :props="defaultProps" :filter-node-method="filterNode" @check="handleNodeChange" />
+            </el-tab-pane>
+        </el-tabs>
+
+        <div slot="reference" data-v-51add840="" style="width: 100%;" class="col-input el-col el-col-20" @click="search">
+            <div data-v-51add840="" class="el-form-item">
+                <div class="el-form-item__content">
+                    <div data-v-51add840="" class="el-select">
+                        <div class="el-input el-input--suffix is-focus">
+                            <input v-model="selectLabel" type="text" autocomplete="off" placeholder="请选择人员" readonly class="el-input__inner">
+                            <span class="el-input__suffix">
+                                <span class="el-input__suffix-inner">
+                                <i :class="classType==1?class_up:class_dow" style="" />
+                                </span>
+                            </span>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+    </el-popover>
+</template>
+
+<script>
+export default {
+    props: {
+        defaultSelect: Array,
+        width: String,
+        multiple: Boolean,
+
+        disab: Boolean,
+        groupId: String,
+        parentData: String
+    },
+    data() {
+        return {
+            loading: false,
+            classType: 1,
+            checkLabel: '',
+            selectLabel: '',
+            selectValue: [],
+            labels: [],
+            selectTree: [],
+            expandedKeys: ['0'],
+            activeName: '1',
+            class_up: 'el-select__caret el-input__icon el-icon-arrow-up',
+            class_dow: 'el-select__caret el-input__icon el-icon-arrow-up is-reverse',
+
+            data_1: [],
+            data_2: [],
+            data_3: [],
+            data_4: [],
+            defaultProps: {
+                children: 'children',
+                label: 'label'
+            }
+        }
+    },
+    watch: {
+        checkLabel(val) {
+            this.$refs['tree_' + this.activeName].filter(val)
+        }
+    },
+    mounted() {
+        this.selectValue = this.defaultSelect;
+        this.initData();
+    },
+    methods: {
+        initData: function(){
+            // this.getTreeDate();
+            this.initTreeDate();
+        },
+        search: function() {
+            if (this.classType === 1) {
+                this.classType = 2
+            } else {
+                this.classType = 1
+            }
+        },
+
+        handleClick: function() {
+            this.getTreeDate()
+        },
+
+        handleNodeChange: function(data, checked, indeterminate) {
+            if (!this.multiple) {
+                if (checked) {
+                    this.$refs['tree_' + this.activeName].setCheckedKeys([])
+                    this.$refs['tree_' + this.activeName].setChecked(data, true)
+                    if (data.children == null) {
+                        this.selectValue = [data.id]
+                        this.labels = [data.label]
+                    }
+                }
+            } else {
+                if (this.selectValue.indexOf(data.id) > -1) {
+                    this.selectValue = this.selectValue.filter(item => item !== data.id)
+                    this.labels = this.labels.filter(item => item !== data.label)
+                }
+                if (data.children != null && data.children.length > 0) {
+                    this.deleteSelect(data.children)
+                }
+            }
+            this.popoverHide()
+        },
+        deleteSelect(data) {
+            data.forEach(it => {
+                if (it.children != null && it.children.length > 0) {
+                    this.deleteSelect(it.children)
+                }
+                this.selectValue = this.selectValue.filter(item => item !== it.id)
+                this.labels = this.labels.filter(item => item !== it.label)
+            })
+        },
+
+        popoverHide: function() {
+            const sectd = this.$refs['tree_' + this.activeName].getCheckedNodes()
+            const seachId = []
+            const seachVal = []
+            sectd.forEach(element => {
+                if (element.selectType && this.selectValue.indexOf(element.id) === -1) {
+                    seachId.push(element.id)
+                    seachVal.push(element.label)
+                }
+            })
+            if (seachVal.length > 0) {
+                seachVal.forEach(ii => {
+                    this.labels.push(ii)
+                })
+            }
+            this.selectLabel = this.labels.toString()
+            if (seachId.length > 0) {
+                seachId.forEach(ij => {
+                    this.selectValue.push(ij)
+                })
+            }
+            if (this.parentData) {
+                const parent = {
+                    selectValue: this.selectValue,
+                    parentData: this.parentData
+                }
+                this.$emit('selectValue', parent)
+            } else {
+                this.$emit('selectValue', this.selectValue)
+            }
+        },
+
+        // 数据回显
+        popoverShow: function() {
+            const sectd = this.$refs['tree_' + this.activeName].getCheckedNodes()
+            const seachVal = []
+            sectd.forEach(element => {
+                if (element.selectType) {
+                    seachVal.push(element.label)
+                }
+            })
+            if (seachVal.length > 0) {
+                seachVal.forEach(ii => {
+                    this.labels.push(ii)
+                })
+            }
+            this.selectLabel = this.labels.toString();
+        },
+
+        filterNode: function(value, data) {
+            if (!value) return true
+            return data.label.indexOf(value) !== -1
+        },
+
+        // 获取树级数据
+        getTreeDate: function() {
+            this.loading = true;
+            const postData = {
+                groupType: this.activeName,
+                groupId: this.groupId
+            }
+            this['data_' + this.activeName] = []
+            const _this = this;
+            this.baseUserRequest('getUserListGroupType', postData).then((res) => {
+                if (res.data) {
+                    _this['data_' + this.activeName] = res.data.data
+                }
+                _this.loading = false
+                 this.$nextTick(() => {
+                    this.popoverHide()
+                })
+            }).catch(() => {
+            })
+        },
+
+        initTreeDate: function() {
+            this.loading = true;
+            const postData = {
+                groupType: this.activeName,
+                groupId: this.groupId
+            }
+            this['data_' + this.activeName] = []
+            const _this = this;
+            this.baseUserRequest('getUserListGroupType', postData).then((res) => {
+                if (res.data) {
+                    _this['data_' + this.activeName] = res.data.data
+                }
+                _this.loading = false
+                this.$nextTick(() => {
+                    this.popoverShow();
+                })
+            }).catch(() => {
+            })
+        },
+
+        // getData(data) {
+        //     data.map(item => {
+        //         this.getLeadKeys(item)
+        //     })
+        // },
+        // getLeadKeys(node) {
+        //     if (node.children && node.children.length > 0) {
+        //         node.disabled = true
+        //         node.children.forEach(item => {
+        //             this.getLeadKeys(item)
+        //         })
+        //     } else {
+        //         if (node.selectType) {
+        //             node.disabled = false
+        //         } else {
+        //             node.disabled = true
+        //         }
+        //     }
+        // },
+
+        baseUserRequest(opUrl, postData) {
+            return this.$channel.globleRequest('FrameExclusiveUserController', opUrl, postData, 'project')
+        }
+
+    }
+}
+</script>

+ 1 - 1
src/views/dashpanel/myAudit.vue

@@ -1011,7 +1011,7 @@ import BasePanel from '../base/baseListPanel'
 // import channel from '@/static/utils/channel'
 import Base from '@/views/base/base'
 import BaseData from '@/views/base/baseData'
-
+import Constant from '@/static/utils/constant'
 export default {
     name: 'PendingAudit',
     components: {

+ 2 - 1
src/views/door/menu.vue

@@ -1,6 +1,7 @@
 <template>
   <div class="door_menu">
     <div class="menu">
+      <div :class="$router.path=='/workbench'?'active item':'item'" @click="$router.push('/workbench')">工作台</div>
       <div v-for="menu in menusShow" :key="menu.id" :class="currMenuId===menu.id?'active item':'item'" @click="menuSelect(menu)">{{ menu.name }}</div>
     </div>
     <el-popover
@@ -13,7 +14,7 @@
       @show="popoverImg=true"
     >
       <div class="list">
-        <div v-for="menu in menusPop" :key="menu.id" :class="currMenuId===menu.id?'active item':'item'" @click="menuSelect(menu)" @mouseover="menuMouseOver(menu)">{{ menu.name }}</div>
+        <div v-for="menu in menusPop" :key="menu.id" :class="currMenuId===menu.id?'active item':'item'" @mouseover="menuMouseOver(menu)">{{ menu.name }}</div>
       </div>
       <img
         slot="reference"

+ 1 - 1
src/views/life-line/monitor/points/devicemap-ranqi/index.vue

@@ -633,7 +633,7 @@
 </template>
 
 <script>
-// import sheshiDialog from './compnent/dialog.vue'
+// import sheshiDialog from './components/dialog.vue'
 // import CustomTable from './CustomTable/index.vue'
 import BoxPanelComponent from '../../components/BoxPanelComponent.vue'
 import TreeSelectComponent from '../../components/TreeSelectComponent.vue'

+ 718 - 0
src/views/prove/index.vue

@@ -0,0 +1,718 @@
+<template>
+    <div>
+        <el-row class="handle-box" style="margin-bottom: 10px">
+            <el-col :span="24">
+                <el-select
+                    v-model="search.isSava"
+                    size="small"
+                    filterable
+                    clearable
+                    placeholder="审核结果"
+                    @change="handleSearch"
+                >
+                    <el-option value="0" label="待审核"></el-option>
+                    <el-option value="1" label="审核通过"></el-option>
+                    <el-option value="2" label="审核未通过"></el-option>
+                    <!--              <el-option v-for="item in dc_data.STU_GENDER" :key="item.value" :label="item.label"-->
+                    <!--                         :value="item.value"-->
+                    <!--              />-->
+                </el-select>
+                <el-input v-model="search.enterpriseName" size="small" placeholder="企业名称" class="ch-input-size"
+                          @keyup.enter.native="handleSearch()"
+                />
+                <el-input v-model="search.groupName" size="small" placeholder="园区名称" class="ch-input-size"
+                          @keyup.enter.native="handleSearch()"
+                />
+                <!-- <el-select size="small" class="ch-input-size" v-model="queryParam.lotId" filterable placeholder="请选择园区">
+                        <el-option
+                        v-for="item in parkLotList"
+                        :key="item.id"
+                        :label="item.lotName"
+                        :value="item.id">
+                        </el-option>
+                    </el-select> -->
+                <span>认证日期:</span>
+                <el-date-picker v-model="search.payTime" size="small" value-format="yyyy-MM-dd" type="daterange"
+                                range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
+                />
+                <!-- <el-select size="small" class="ch-input-size" v-model="search.payType" filterable placeholder="请选择支付类型">
+                        <el-option
+                        v-for="item in dc_data.payType"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value">
+                        </el-option>
+                    </el-select> -->
+            </el-col>
+            <el-col :span="24">
+                <el-button size="small" class="ch-button-export"
+                           style="float: right; margin-top: 4px; margin-right: 10px;" @click="confirmOutput()"
+                ><i class="el-icon-download"/>&nbsp;导出
+                </el-button>
+                <el-button size="small" class="ch-button" style="float: right; margin-top: 4px;"
+                           @click="handleSearch()"
+                ><i class="el-icon-search"/>&nbsp;搜索
+                </el-button>
+                <el-button size="small" class="ch-button-warning" style="float: right; margin-top: 4px;"
+                           @click="handleReset()"
+                ><i class="el-icon-search"/>&nbsp;重置
+                </el-button>
+            </el-col>
+        </el-row>
+        <el-row class="handle-box">
+            <el-col :span="24">
+                <el-table v-loading="loading" :data="AllData" stripe row-class-name="g_table_row">
+                    <el-table-column type="index" width="60"/>
+                    <el-table-column label="类型" prop="proveTypeString"/>
+                    <el-table-column label="企业名称" prop="enterpriseName"/>
+                    <el-table-column label="统一社会信用代码" prop="socialCreditCode" width="150"/>
+                    <!--          <el-table-column label="注册资金(万元)" prop="registerAmount" />-->
+                    <!--          <el-table-column label="法定代表人" prop="legalUser" />-->
+                    <el-table-column label="联系人" prop="contacts"/>
+                    <el-table-column label="联系电话" prop="phone"/>
+                    <el-table-column label="所属行业" prop="industry"/>
+                    <el-table-column label="所在园区" prop="groupName"/>
+                    <el-table-column label="认证申请时间" prop="createdAt"/>
+                    <el-table-column label="审核结果" prop="resultDesc"/>
+                    <el-table-column label="审核时间" prop="examineTime"/>
+                    <el-table-column label="审核人" prop="examineUserName"/>
+                    <el-table-column label="操作" header-align="center" align="center" width="180">
+                        <template scope="scope">
+                            <el-button v-if="scope.row.state == 2" size="mini" type="primary"
+                                       @click="handleExamine(scope.row)"
+                            >审核
+                            </el-button>
+                            <el-button v-if="scope.row.state != 2" size="mini" type="primary"
+                                       @click="handleShow(scope.row)"
+                            >查看
+                            </el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <div class="table-page">
+                    <el-pagination
+                        :current-page.sync="currentPage"
+                        :page-size="pageSize"
+                        background
+                        layout="total, prev, pager, next"
+                        :total="allpage"
+                        @current-change="handleCurrentChange"
+                    />
+                </div>
+            </el-col>
+        </el-row>
+        <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="75%" top="50px" @open="dlgOpen">
+            <!-- border: 1px solid #E0E0E0; -->
+            <div style="margin-top: 15px; margin-left: 30px; margin-right: 30px; ">
+                <el-row>
+                    <el-col :span="12">
+                        <el-col :span="6"><B>认证账号:</B></el-col>
+                        <el-col :span="18">{{ null == user ? '' : user.trueName }}</el-col>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-col :span="6"><B>所属园区:</B></el-col>
+                        <el-col :span="18">{{ parkInfo.groupName ? parkInfo.groupName : '' }}</el-col>
+                    </el-col>
+                </el-row>
+                <!--                <el-row style="margin-top: 15px;">-->
+                <!--                    <el-col :span="3"><B>绑定微信号:</B></el-col>-->
+                <!--                    <el-col :span="21">{{ userAccount ? userAccount.nickName : '' }}</el-col>-->
+                <!--                </el-row>-->
+
+                <!-- 企业基本信息 -->
+                <el-row style="margin-top: 30px;">
+                    <el-form ref="form" :model="form" style="width: 100%;padding: 5px" :rules="rules">
+                        <el-col style="padding-bottom: 10px">
+                            <span class="card_title">企业基本信息</span>
+                            <el-card shadow="always" style="padding: 15px 5px 5px 15px">
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>企业名称</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.enterpriseName" readonly/>
+
+                                        </el-form-item>
+                                    </el-col>
+                                    <el-col :span="3" class="col-txt"><span>社会信用代码</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.socialCreditCode" readonly/>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>企业类型</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.enterpriseType" readonly/>
+                                            <!--                                            <el-select v-model="parkProveInfo.enterpriseType" filterable clearable placeholder="请选择" :disabled="isDetail">-->
+                                            <!--                                                <el-option-->
+                                            <!--                                                    v-for="item in dc_data.enterpriseType"-->
+                                            <!--                                                    :key="item.value"-->
+                                            <!--                                                    :label="item.label"-->
+                                            <!--                                                    :value="item.value"-->
+                                            <!--                                                />-->
+                                            <!--                                            </el-select>-->
+                                        </el-form-item>
+                                    </el-col>
+                                    <el-col :span="3" class="col-txt"><span>是否总部</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <!--                                            <el-input v-model="parkProveInfo.isHead" readonly/>-->
+                                            <el-select disabled v-model="parkProveInfo.isHead" filterable clearable
+                                                       placeholder="请选择"
+                                            >
+                                                <el-option :value="'0'" label="是"/>
+                                                <el-option :value="'1'" label="否"/>
+                                            </el-select>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>是否进出口</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <!--                                            <el-input v-model="parkProveInfo.isImout" readonly/>-->
+                                            <el-select disabled v-model="parkProveInfo.isImout" filterable clearable
+                                                       placeholder="请选择"
+                                            >
+                                                <el-option :value="'0'" label="是"/>
+                                                <el-option :value="'1'" label="否"/>
+                                            </el-select>
+                                        </el-form-item>
+                                    </el-col>
+
+                                    <el-col :span="3" class="col-txt"><span>是否外资</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <!--                                            <el-input v-model="parkProveInfo.isForeign" readonly/>-->
+                                            <el-select disabled v-model="parkProveInfo.isForeign" filterable clearable
+                                                       placeholder="请选择"
+                                            >
+                                                <el-option :value="'0'" label="是"/>
+                                                <el-option :value="'1'" label="否"/>
+                                            </el-select>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>所属行业</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.industry" readonly/>
+                                            <!--                                            <el-select disabled v-model="parkProveInfo.industry" filterable clearable placeholder="请选择" :disabled="isDetail">-->
+                                            <!--                                                <el-option-->
+                                            <!--                                                    v-for="item in dc_data.COMPANY_INDUSTRY"-->
+                                            <!--                                                    :key="item.value"-->
+                                            <!--                                                    :label="item.label"-->
+                                            <!--                                                    :value="item.value"-->
+                                            <!--                                                />-->
+                                            <!--                                            </el-select>-->
+                                        </el-form-item>
+                                    </el-col>
+
+                                    <el-col :span="3" class="col-txt"><span>注册标识</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-select disabled v-model="parkProveInfo.registrationCode" filterable clearable
+                                                   placeholder="请选择"
+                                        >
+                                            <el-option :value="'1'" label="是"/>
+                                            <el-option :value="'2'" label="否"/>
+                                        </el-select>
+<!--                                        <el-form-item>-->
+<!--                                            <el-input v-model="parkProveInfo.zcdz" readonly/>-->
+<!--                                        </el-form-item>-->
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>经营地址</span></el-col>
+                                    <el-col :span="20" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.manageAddress" readonly/>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+<!--                            </el-card>-->
+<!--                        </el-col>-->
+
+<!--                        <el-col style="padding-bottom: 10px">-->
+<!--                            <span class="card_title">企业注册信息</span>-->
+<!--                            <el-card shadow="always" style="padding: 15px 5px 5px 15px">-->
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>注册资金(万元)</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.registerAmount" readonly/>
+                                        </el-form-item>
+                                    </el-col>
+                                    <!-- 统一 -->
+                                    <el-col :span="4" class="col-txt"><span>企业经营面积(㎡)</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.manageArea" readonly/>
+                                        </el-form-item>
+                                    </el-col>
+
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>币种</span></el-col>
+                                    <el-col :span="9" class="col-input">
+                                        <el-form-item>
+                                            <el-select
+                                                v-model="parkProveInfo.currency"
+                                                placeholder=""
+                                                filterable
+                                                clearable
+                                                disabled
+                                            >
+                                                <el-option
+                                                    v-for="item in dc_data.CURRENCY"
+                                                    :key="item.value"
+                                                    :label="item.label"
+                                                    :value="item.value"
+                                                />
+                                            </el-select>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>注册地址</span></el-col>
+                                    <el-col :span="21" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.zcdz" readonly maxlength="250"
+                                                      show-word-limit
+                                            />
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>注册时间</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.registerTime" readonly/>
+                                        </el-form-item>
+                                    </el-col>
+                                    <el-col :span="3" class="col-txt"><span>法定代表人</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.legalUser" readonly/>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>经营范围</span></el-col>
+                                    <el-col :span="20" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.manageRange" readonly/>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>营业执照</span></el-col>
+                                    <el-col :span="20" class="col-input">
+                                        <div style="float: left; margin-right: 10px;" class="block">
+                                            <!-- http://localhost:9001/FileController/viewImg/729350354570838016 -->
+                                            <el-avatar shape="square" :size="200"
+                                                       :src="$constant.BASE_URI + '/FileController/viewImg/' + parkProveInfo.businessLicense"
+                                            />
+                                            <!-- <el-avatar shape="square" :size="100" :fit="fit" src="https://scpic.chinaz.net/files/pic/pic9/202107/bpic23813.jpg"></el-avatar> -->
+                                        </div>
+                                        <!--                    <div v-for="fit in parkProveInfo.businessLicense" :key="fit" style="float: left; margin-right: 10px;" class="block">-->
+                                        <!--                      &lt;!&ndash; http://localhost:9001/FileController/viewImg/729350354570838016 &ndash;&gt;-->
+                                        <!--                      <el-avatar shape="square" :size="100" :fit="fit" :src="fit.url" />-->
+                                        <!--                      &lt;!&ndash; <el-avatar shape="square" :size="100" :fit="fit" src="https://scpic.chinaz.net/files/pic/pic9/202107/bpic23813.jpg"></el-avatar> &ndash;&gt;-->
+                                        <!--                    </div>-->
+                                    </el-col>
+                                </el-row>
+<!--                            </el-card>-->
+<!--                        </el-col>-->
+<!--                        <el-col style="padding-bottom: 10px">-->
+<!--                            <span class="card_title">企业联系人信息</span>-->
+<!--                            <el-card shadow="always" style="padding: 15px 5px 5px 15px">-->
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>联系人</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.contacts" readonly/>
+                                        </el-form-item>
+                                    </el-col>
+                                    <el-col :span="3" class="col-txt"><span>联系电话</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.phone" readonly/>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>入驻类型</span></el-col>
+                                    <el-col :span="21" class="col-input">
+                                        <el-form-item prop="settleInType">
+                                            <el-radio-group v-model="parkProveInfo.settleInType">
+                                                <el-radio
+                                                    v-for="item in dc_data.MNP_BUILDING_TYPE"
+                                                    :key="item.value"
+                                                    :label="item.value"
+                                                    disabled
+                                                >
+                                                    {{ item.label }}
+                                                </el-radio>
+                                            </el-radio-group>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                            </el-card>
+                        </el-col>
+                    </el-form>
+                </el-row>
+            </div>
+            <div v-if="isAdd" slot="footer">
+                <el-button @click="confirmSubmit(2)">不通过</el-button>
+                <el-button type="primary" @click="confirmSubmit(1)">通 过</el-button>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+<script>
+import Base from '@/views/base/base'
+import BaseData from '@/views/base/baseData'
+
+export default {
+    name: 'Index',
+    mixins: [Base, BaseData],
+    data() {
+        return {
+            dc_key: ['yesOrNo', 'yesOrNo', 'yesOrNo', 'COMPANY_INDUSTRY', 'enterpriseType', 'CURRENCY', 'MNP_BUILDING_TYPE'],
+            // 列表相关
+            search: {},
+            proveId: '',
+            parkLotList: [],
+            queryParam: {},
+            AllData: [],
+            loading: false,
+            // 弹框相关
+            dialogVisible: false,
+            dialogTitle: '企业认证审核',
+            isAdd: true,
+            form: this.initForm(),
+            rules: {},
+            // 信息回显
+            parkProveInfo: {},
+            user: {},
+            userAccount: {},
+            parkInfo: {}
+        }
+    },
+    mounted() {
+        this.initDict(this.dc_key).then((res) => {
+            this.getData()
+            console.log('this.dc_map_:', this.dc_map)
+        })
+    },
+    methods: {
+        getData: function() {
+            const _this = this
+            _this.loading = true
+            _this.AllData = []
+
+            // 时间
+            if ([] != this.search.payTime && undefined != this.search.payTime && this.search.payTime != null) {
+                this.search.startTime = this.search.payTime[0]
+                this.search.endTime = this.search.payTime[1]
+            }
+
+            this.search.pageNum = this.currentPage
+            this.search.pageSize = this.pageSize
+            this.baseRequest('listByModel', this.search).then((res) => {
+                if (res.data.rows) {
+                    res.data.rows.forEach(function(item) {
+                        const json = _this.getItemJson(item)
+                        _this.AllData.push(json)
+                    })
+                    _this.allpage = res.data.total
+                }
+                _this.loading = false
+            }).catch(() => {
+            })
+            //   this.initOutData()
+        },
+        handleSearch: function() {
+            this.getData()
+        },
+        handleReset: function() {
+            for (const i in this.search) {
+                if (i !== 'pageNum' && i !== 'pageSize') {
+                    this.search[i] = ''
+                }
+            }
+            this.handleSearch()
+        },
+        initOutData: function() {
+            const _this = this
+            this.OutData = []
+            const title = [' 企业名称', ' 社会信用代码', ' 注册资金(万元)', ' 法定代表人', ' 联系人', ' 联系电话',
+                ' 所属行业', ' 所在园区', ' 认证申请时间', ' 审核结果', ' 审核时间', ' 审核人',
+                ' 企业类型', ' 是否总部', ' 是否进出口', ' 是否外资', ' 注册标识', ' 经营地址',
+                ' 统一社会信用代码', ' 注册时间', ' 经营范围', ' 营业执照']
+            this.OutData.push(title)
+
+            this.baseRequest('listAll', this.search).then((res) => {
+                if (res.data) {
+                    res.data.forEach(function(item) {
+                        const jsonMap = _this.getItemJson(item)
+                        const jsonArray = []
+                        jsonArray.push(jsonMap.enterpriseName)
+                        jsonArray.push(jsonMap.enterpriseCode)
+                        jsonArray.push(jsonMap.registerAmount)
+                        jsonArray.push(jsonMap.legalUser)
+                        jsonArray.push(jsonMap.contacts)
+                        jsonArray.push(jsonMap.phone)
+                        jsonArray.push(jsonMap.industry)
+                        jsonArray.push(jsonMap.groupId)
+                        jsonArray.push(jsonMap.applyTime)
+                        jsonArray.push(jsonMap.state)
+                        jsonArray.push(jsonMap.examineTime)
+                        jsonArray.push(jsonMap.examineUserId)
+                        jsonArray.push(jsonMap.enterpriseType)
+                        jsonArray.push(jsonMap.isHead)
+                        jsonArray.push(jsonMap.isImout)
+                        jsonArray.push(jsonMap.isForeign)
+                        jsonArray.push(jsonMap.registrationCode)
+                        jsonArray.push(jsonMap.manageAddress)
+                        jsonArray.push(jsonMap.socialCreditCode)
+                        jsonArray.push(jsonMap.registerTime)
+                        jsonArray.push(jsonMap.manageRange)
+                        jsonArray.push(jsonMap.businessLicense)
+
+                        _this.OutData.push(jsonArray)
+                    })
+                }
+            }).catch(() => {
+            })
+        },
+        getItemJson: function(item) {
+            item.industry = this.dc_map.COMPANY_INDUSTRY[item.industry]
+            item.enterpriseType = this.dc_map.enterpriseType[item.enterpriseType]
+            item.isHead = this.dc_map.yesOrNo[item.isHead]
+            item.isImout = this.dc_map.yesOrNo[item.isImout]
+            item.isForeign = this.dc_map.yesOrNo[item.isForeign]
+            item.registrationCode = this.dc_map.yesOrNo[item.registrationCode]
+            // item.businessLicense = JSON.parse(item.businessLicense)
+            // console.log('/FileController/viewImg/' + item.businessLicense)
+            item.businessLicense = item.businessLicense
+            item.proveTypeString = item.proveType ? (item.proveType === '1' ? '首次认证' : '修改认证') : ''
+            return item
+        },
+        initForm: function() {
+            return {
+                id: '',
+                enterpriseName: '',
+                enterpriseCode: '',
+                registerAmount: '',
+                legalUser: '',
+                contacts: '',
+                phone: '',
+                industry: '',
+                groupId: '',
+                applyTime: '',
+                state: '',
+                examineTime: '',
+                examineUserId: '',
+                enterpriseType: '',
+                isHead: '',
+                isImout: '',
+                isForeign: '',
+                registrationCode: '',
+                manageAddress: '',
+                socialCreditCode: '',
+                registerTime: '',
+                manageRange: '',
+                businessLicense: ''
+            }
+        },
+        confirmOutput() {
+            const _this = this
+            this.OutData = []
+            const title = ['类型',' 企业名称',' 统一社会信用代码',   ' 联系人', ' 联系电话',
+                ' 所属行业', ' 所在园区', ' 认证申请时间', ' 审核结果', ' 审核时间', ' 审核人',
+                ' 企业类型', ' 是否总部', ' 是否进出口', ' 是否外资', ' 注册标识', ' 经营地址',
+                ' 注册时间', ' 经营范围', ' 注册资金(万元)', ' 法定代表人']
+            _this.OutData.push(title)
+
+            this.baseRequest('listAll', this.search).then((res) => {
+                if (res.data) {
+                    res.data.forEach(function(item) {
+                        const jsonMap = _this.getItemJson(item)
+                        const jsonArray = []
+                        jsonArray.push(jsonMap.proveTypeString)
+                        jsonArray.push(jsonMap.enterpriseName)
+                        jsonArray.push(jsonMap.socialCreditCode)
+
+                        jsonArray.push(jsonMap.contacts)
+                        jsonArray.push(jsonMap.phone)
+                        jsonArray.push(jsonMap.industry)
+                        jsonArray.push(jsonMap.groupName)
+                        jsonArray.push(jsonMap.createdAt)
+                        jsonArray.push(jsonMap.resultDesc)
+                        jsonArray.push(jsonMap.examineTime)
+                        jsonArray.push(jsonMap.examineUserName)
+                        jsonArray.push(jsonMap.enterpriseType)
+                        jsonArray.push(jsonMap.isHead)
+                        jsonArray.push(jsonMap.isImout)
+                        jsonArray.push(jsonMap.isForeign)
+                        jsonArray.push(jsonMap.registrationCode)
+                        jsonArray.push(jsonMap.manageAddress)
+                        jsonArray.push(jsonMap.registerTime)
+                        jsonArray.push(jsonMap.manageRange)
+                        // jsonArray.push(jsonMap.businessLicense)
+                        jsonArray.push(jsonMap.registerAmount)
+                        jsonArray.push(jsonMap.legalUser)
+                        _this.OutData.push(jsonArray)
+                    })
+                    const OutSize = [{ wch: 15 },{ wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 },
+                        { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 },
+                        { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 },
+                        { wch: 15 }, { wch: 15 }, { wch: 15 }]
+                    const fileName = 'index导出 ' + new Date().Format('yyyyMMddhhmm')
+                    console.log('_this.OutData',this.OutData,fileName)
+                    this.$outputXlsxFile(this.OutData, OutSize, fileName)
+                }
+            }).catch(() => {
+            })
+        },
+        dlgOpen: function() {
+            const _this = this
+
+            if (_this.form.id !== '') {
+                const postData = {
+                    id: _this.form.id
+                }
+                this.baseRequest('getById', postData).then((res) => {
+                    if (res.data) {
+                        _this.form = Object.assign({}, _this.form, res.data)
+                    }
+                })
+            }
+        },
+        /* 新增*/
+        handleExamine: function(row) {
+            this.form = this.initForm()
+            this.isAdd = true
+            this.dialogVisible = true
+            this.dialogTitle = '企业认证审核'
+            this.proveId = row.id
+            this.getUserProve(row.id)
+        },
+
+        // 查看
+        handleShow: function(row) {
+            this.form = this.initForm()
+            this.isAdd = false
+            this.dialogVisible = true
+            this.dialogTitle = '企业认证审核'
+            this.proveId = row.id
+            this.getUserProve(row.id)
+        },
+
+        confirmSubmit: function(val) {
+            this.$confirm('此操作将审核该认证信息, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                const reqData = {
+                    id: this.proveId,
+                    state: val
+                }
+                this.baseRequest('examine', reqData).then((res) => {
+                    this.dialogVisible = false
+                    this.getData()
+                    let msg = ''
+                    if (val == 1) {
+                        console.log('res', res)
+                        msg = '审核通过成功!'
+                    } else {
+                        msg = '审核不通过成功!'
+                    }
+                    this.$message({
+                        type: 'success',
+                        message: msg
+                    })
+                }).catch((e) => {
+                    this.$message({
+                        type: 'error',
+                        message: e
+                    })
+                })
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: '已取消操作'
+                })
+            })
+        },
+        baseRequest(opUrl, postData) {
+            return this.$channel.globeRequest('ParkProveInfoController', opUrl, postData, 'project')
+        },
+
+        // 获取用户认证信息
+        getUserProve(id) {
+            const reqData = {
+                id: id
+            }
+            this.baseRequest('getDetialById', reqData).then((res) => {
+                console.log('获取用户认证信息——:', res)
+                if (res.data.data) {
+                    this.parkProveInfo = this.getItemJson(res.data.data.parkProveInfo)
+                    this.user = res.data.data.user
+                    this.userAccount = res.data.data.userAccount
+                    this.parkInfo = !res.data.data.parkInfo ? {} : res.data.data.parkInfo
+                    if (this.parkProveInfo.currency) {
+                        this.parkProveInfo.currency = '' + this.parkProveInfo.currency
+                    }
+                    // console.log('asopifoqwiegnioqeniofnioqwfnioqwfnio——:', res)
+                }
+            })
+        }
+
+    }
+}
+</script>
+
+<style scoped>
+.ch-input .el-input__inner {
+    border-color: #32323A;
+}
+
+.ch-input-size {
+    width: 150px;
+}
+
+.ch-button {
+    border-color: #32323A;
+    background-color: #32323A;
+    color: #fff;
+}
+
+.ch-button-warning {
+    margin-left: 10px;
+    border-color: #E6A23C;
+    background-color: #E6A23C;
+    color: #fff;
+}
+
+.ch-button-export {
+    margin-left: 10px;
+    border-color: #98CC1F;
+    background-color: #98CC1F;
+    color: #fff;
+}
+
+/deep/ .el-dialog__header {
+    padding: 10px 20px;
+}
+
+/deep/ .el-dialog__body {
+    padding: 10px 20px;
+}
+</style>

+ 574 - 0
src/views/prove/indexCompanyShow.vue

@@ -0,0 +1,574 @@
+<template>
+<!--    企业审核用的数据-->
+<div>
+            <!-- border: 1px solid #E0E0E0; -->
+            <div style="margin-top: 15px; margin-left: 30px; margin-right: 30px; ">
+                <el-row>
+                    <el-col :span="12">
+                        <el-col :span="6"><B>认证账号:</B></el-col>
+                        <el-col :span="18">{{ null == user ? '' : user.trueName }}</el-col>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-col :span="6"><B>所属园区:</B></el-col>
+                        <el-col :span="18">{{ parkInfo.groupName ? parkInfo.groupName : '' }}</el-col>
+                    </el-col>
+                </el-row>
+                <!--                <el-row style="margin-top: 15px;">-->
+                <!--                    <el-col :span="3"><B>绑定微信号:</B></el-col>-->
+                <!--                    <el-col :span="21">{{ userAccount ? userAccount.nickName : '' }}</el-col>-->
+                <!--                </el-row>-->
+
+                <!-- 企业基本信息 -->
+                <el-row style="margin-top: 30px;">
+                    <el-form ref="form" :model="form" style="width: 100%;padding: 5px" :rules="rules">
+                        <el-col style="padding-bottom: 10px">
+                            <span class="card_title">企业基本信息</span>
+                            <el-card shadow="always" style="padding: 15px 5px 5px 15px">
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>企业名称</span></el-col>
+                                    <el-col :span="20" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.enterpriseName" readonly/>
+
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>企业类型</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.enterpriseType" readonly/>
+                                            <!--                                            <el-select v-model="parkProveInfo.enterpriseType" filterable clearable placeholder="请选择" :disabled="isDetail">-->
+                                            <!--                                                <el-option-->
+                                            <!--                                                    v-for="item in dc_data.enterpriseType"-->
+                                            <!--                                                    :key="item.value"-->
+                                            <!--                                                    :label="item.label"-->
+                                            <!--                                                    :value="item.value"-->
+                                            <!--                                                />-->
+                                            <!--                                            </el-select>-->
+                                        </el-form-item>
+                                    </el-col>
+                                    <el-col :span="3" class="col-txt"><span>是否总部</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <!--                                            <el-input v-model="parkProveInfo.isHead" readonly/>-->
+                                            <el-select disabled v-model="parkProveInfo.isHead" filterable clearable
+                                                       placeholder="请选择"
+                                            >
+                                                <el-option :value="'0'" label="是"/>
+                                                <el-option :value="'1'" label="否"/>
+                                            </el-select>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>是否进出口</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <!--                                            <el-input v-model="parkProveInfo.isImout" readonly/>-->
+                                            <el-select disabled v-model="parkProveInfo.isImout" filterable clearable
+                                                       placeholder="请选择"
+                                            >
+                                                <el-option :value="'0'" label="是"/>
+                                                <el-option :value="'1'" label="否"/>
+                                            </el-select>
+                                        </el-form-item>
+                                    </el-col>
+
+                                    <el-col :span="3" class="col-txt"><span>是否外资</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <!--                                            <el-input v-model="parkProveInfo.isForeign" readonly/>-->
+                                            <el-select disabled v-model="parkProveInfo.isForeign" filterable clearable
+                                                       placeholder="请选择"
+                                            >
+                                                <el-option :value="'0'" label="是"/>
+                                                <el-option :value="'1'" label="否"/>
+                                            </el-select>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>所属行业</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.industry" readonly/>
+                                            <!--                                            <el-select disabled v-model="parkProveInfo.industry" filterable clearable placeholder="请选择" :disabled="isDetail">-->
+                                            <!--                                                <el-option-->
+                                            <!--                                                    v-for="item in dc_data.COMPANY_INDUSTRY"-->
+                                            <!--                                                    :key="item.value"-->
+                                            <!--                                                    :label="item.label"-->
+                                            <!--                                                    :value="item.value"-->
+                                            <!--                                                />-->
+                                            <!--                                            </el-select>-->
+                                        </el-form-item>
+                                    </el-col>
+
+                                    <el-col :span="3" class="col-txt"><span>注册标识</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.zcdz" readonly/>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>经营地址</span></el-col>
+                                    <el-col :span="20" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.manageAddress" readonly/>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                            </el-card>
+                        </el-col>
+
+                        <el-col style="padding-bottom: 10px">
+                            <span class="card_title">企业注册信息</span>
+                            <el-card shadow="always" style="padding: 15px 5px 5px 15px">
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>注册资金(万元)</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.registerAmount" readonly/>
+                                        </el-form-item>
+                                    </el-col>
+                                    <!-- 统一 -->
+                                    <el-col :span="3" class="col-txt"><span>社会信用代码</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.socialCreditCode" readonly/>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>币种</span></el-col>
+                                    <el-col :span="9" class="col-input">
+                                        <el-form-item>
+                                            <el-select
+                                                v-model="parkProveInfo.currency"
+                                                placeholder=""
+                                                filterable
+                                                clearable
+                                                disabled
+                                            >
+                                                <el-option
+                                                    v-for="item in dc_data.CURRENCY"
+                                                    :key="item.value"
+                                                    :label="item.label"
+                                                    :value="item.value"
+                                                />
+                                            </el-select>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>注册地址</span></el-col>
+                                    <el-col :span="21" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.zcdz" readonly maxlength="250"
+                                                      show-word-limit
+                                            />
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>注册时间</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.registerTime" readonly/>
+                                        </el-form-item>
+                                    </el-col>
+                                    <el-col :span="3" class="col-txt"><span>法定代表人</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.legalUser" readonly/>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>经营范围</span></el-col>
+                                    <el-col :span="20" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.manageRange" readonly/>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>营业执照</span></el-col>
+                                    <el-col :span="20" class="col-input">
+                                        <div style="float: left; margin-right: 10px;" class="block">
+                                            <!-- http://localhost:9001/FileController/viewImg/729350354570838016 -->
+                                            <el-avatar shape="square" :size="200"
+                                                       :src="$constant.BASE_URI + '/FileController/viewImg/' + parkProveInfo.businessLicense"
+                                            />
+                                            <!-- <el-avatar shape="square" :size="100" :fit="fit" src="https://scpic.chinaz.net/files/pic/pic9/202107/bpic23813.jpg"></el-avatar> -->
+                                        </div>
+                                        <!--                    <div v-for="fit in parkProveInfo.businessLicense" :key="fit" style="float: left; margin-right: 10px;" class="block">-->
+                                        <!--                      &lt;!&ndash; http://localhost:9001/FileController/viewImg/729350354570838016 &ndash;&gt;-->
+                                        <!--                      <el-avatar shape="square" :size="100" :fit="fit" :src="fit.url" />-->
+                                        <!--                      &lt;!&ndash; <el-avatar shape="square" :size="100" :fit="fit" src="https://scpic.chinaz.net/files/pic/pic9/202107/bpic23813.jpg"></el-avatar> &ndash;&gt;-->
+                                        <!--                    </div>-->
+                                    </el-col>
+                                </el-row>
+                            </el-card>
+                        </el-col>
+                        <el-col style="padding-bottom: 10px">
+                            <span class="card_title">企业联系人信息</span>
+                            <el-card shadow="always" style="padding: 15px 5px 5px 15px">
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>联系人</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.contacts" readonly/>
+                                        </el-form-item>
+                                    </el-col>
+                                    <el-col :span="3" class="col-txt"><span>联系电话</span></el-col>
+                                    <el-col :span="8" class="col-input">
+                                        <el-form-item>
+                                            <el-input v-model="parkProveInfo.phone" readonly/>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+
+                                <el-row>
+                                    <el-col :span="3" class="col-txt"><span>入驻类型</span></el-col>
+                                    <el-col :span="21" class="col-input">
+                                        <el-form-item prop="settleInType">
+                                            <el-radio-group v-model="parkProveInfo.settleInType">
+                                                <el-radio
+                                                    v-for="item in dc_data.MNP_BUILDING_TYPE"
+                                                    :key="item.value"
+                                                    :label="item.value"
+                                                    disabled
+                                                >
+                                                    {{ item.label }}
+                                                </el-radio>
+                                            </el-radio-group>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                            </el-card>
+                        </el-col>
+                    </el-form>
+                </el-row>
+            </div>
+            <div v-if="isAdd" style="text-align: right;padding: 10px 20px 20px;">
+                <el-button @click="confirmSubmit(2)">不通过</el-button>
+                <el-button type="primary" @click="confirmSubmit(1)">通 过</el-button>
+            </div>
+</div>
+</template>
+<script>
+import Base from '@/views/base/base'
+import BaseData from '@/views/base/baseData'
+
+export default {
+    name: 'Index',
+    mixins: [Base, BaseData],
+    data() {
+        return {
+            dc_key: ['yesOrNo', 'yesOrNo', 'yesOrNo', 'COMPANY_INDUSTRY', 'enterpriseType', 'CURRENCY','MNP_BUILDING_TYPE'],
+            // 列表相关
+            search: {},
+            proveId: '',
+            parkLotList: [],
+            queryParam: {},
+            AllData: [],
+            loading: false,
+            // 弹框相关
+            dialogVisible: false,
+            dialogTitle: '企业认证审核',
+            isAdd: true,
+            form: this.initForm(),
+            rules: {},
+            // 信息回显
+            parkProveInfo: {},
+            user: {},
+            userAccount: {},
+            parkInfo: {}
+        }
+    },
+    mounted() {
+        // this.initDict(this.dc_key).then((res) => {
+            // this.getData()
+            // console.log('this.dc_map_:', this.dc_map)
+        // })
+    },
+    methods: {
+        getData: function() {
+            const _this = this
+            _this.loading = true
+            _this.AllData = []
+
+            // 时间
+            if ([] != this.search.payTime && undefined != this.search.payTime && this.search.payTime != null) {
+                this.search.startTime = this.search.payTime[0]
+                this.search.endTime = this.search.payTime[1]
+            }
+
+            this.search.pageNum = this.currentPage
+            this.search.pageSize = this.pageSize
+            this.baseRequest('listByModel', this.search).then((res) => {
+                if (res.data.rows) {
+                    res.data.rows.forEach(function(item) {
+                        const json = _this.getItemJson(item)
+                        _this.AllData.push(json)
+                    })
+                    _this.allpage = res.data.total
+                }
+                _this.loading = false
+            }).catch(() => {
+            })
+            //   this.initOutData()
+        },
+        handleSearch: function() {
+            this.getData()
+        },
+        handleReset: function() {
+            for (const i in this.search) {
+                if (i !== 'pageNum' && i !== 'pageSize') {
+                    this.search[i] = ''
+                }
+            }
+            this.handleSearch()
+        },
+        initOutData: function() {
+            const _this = this
+            this.OutData = []
+            const title = [' 企业名称', ' 社会信用代码', ' 注册资金(万元)', ' 法定代表人', ' 联系人', ' 联系电话',
+                ' 所属行业', ' 所在园区', ' 认证申请时间', ' 审核结果', ' 审核时间', ' 审核人',
+                ' 企业类型', ' 是否总部', ' 是否进出口', ' 是否外资', ' 注册标识', ' 经营地址',
+                ' 统一社会信用代码', ' 注册时间', ' 经营范围', ' 营业执照']
+            this.OutData.push(title)
+
+            this.baseRequest('listAll', this.search).then((res) => {
+                if (res.data) {
+                    res.data.forEach(function(item) {
+                        const jsonMap = _this.getItemJson(item)
+                        const jsonArray = []
+                        jsonArray.push(jsonMap.enterpriseName)
+                        jsonArray.push(jsonMap.enterpriseCode)
+                        jsonArray.push(jsonMap.registerAmount)
+                        jsonArray.push(jsonMap.legalUser)
+                        jsonArray.push(jsonMap.contacts)
+                        jsonArray.push(jsonMap.phone)
+                        jsonArray.push(jsonMap.industry)
+                        jsonArray.push(jsonMap.groupId)
+                        jsonArray.push(jsonMap.applyTime)
+                        jsonArray.push(jsonMap.state)
+                        jsonArray.push(jsonMap.examineTime)
+                        jsonArray.push(jsonMap.examineUserId)
+                        jsonArray.push(jsonMap.enterpriseType)
+                        jsonArray.push(jsonMap.isHead)
+                        jsonArray.push(jsonMap.isImout)
+                        jsonArray.push(jsonMap.isForeign)
+                        jsonArray.push(jsonMap.registrationCode)
+                        jsonArray.push(jsonMap.manageAddress)
+                        jsonArray.push(jsonMap.socialCreditCode)
+                        jsonArray.push(jsonMap.registerTime)
+                        jsonArray.push(jsonMap.manageRange)
+                        jsonArray.push(jsonMap.businessLicense)
+
+                        _this.OutData.push(jsonArray)
+                    })
+                }
+            }).catch(() => {
+            })
+        },
+        getItemJson: function(item) {
+            item.industry = this.dc_map.COMPANY_INDUSTRY[item.industry]
+            item.enterpriseType = this.dc_map.enterpriseType[item.enterpriseType]
+            item.isHead = this.dc_map.yesOrNo[item.isHead]
+            item.isImout = this.dc_map.yesOrNo[item.isImout]
+            item.isForeign = this.dc_map.yesOrNo[item.isForeign]
+            item.registrationCode = this.dc_map.yesOrNo[item.registrationCode]
+            // item.businessLicense = JSON.parse(item.businessLicense)
+            console.log('/FileController/viewImg/' + item.businessLicense)
+            item.businessLicense = item.businessLicense
+            return item
+        },
+        initForm: function() {
+            return {
+                id: '',
+                enterpriseName: '',
+                enterpriseCode: '',
+                registerAmount: '',
+                legalUser: '',
+                contacts: '',
+                phone: '',
+                industry: '',
+                groupId: '',
+                applyTime: '',
+                state: '',
+                examineTime: '',
+                examineUserId: '',
+                enterpriseType: '',
+                isHead: '',
+                isImout: '',
+                isForeign: '',
+                registrationCode: '',
+                manageAddress: '',
+                socialCreditCode: '',
+                registerTime: '',
+                manageRange: '',
+                businessLicense: ''
+            }
+        },
+        confirmOutput() {
+            const OutSize = [{ wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 },
+                { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 },
+                { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 },
+                { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 }]
+            const fileName = 'index导出 ' + new Date().Format('yyyyMMddhhmm')
+            this.$outputXlsxFile(this.OutData, OutSize, fileName)
+        },
+        initData(id, proveType) {
+            console.log('id:',id)
+            this.form.id = id
+            this.proveType = proveType
+            // this.selectAllCompanyList()
+            this.initDict(this.dc_key).then(res => {
+                this.form = this.initForm()
+                this.isAdd = true
+                this.proveId = id
+                this.getUserProve(id)
+            })
+        },
+        dlgOpen: function() {
+            const _this = this
+
+            if (_this.form.id !== '') {
+                const postData = {
+                    id: _this.form.id
+                }
+                this.baseRequest('getById', postData).then((res) => {
+                    if (res.data) {
+                        _this.form = Object.assign({}, _this.form, res.data)
+                    }
+                })
+            }
+        },
+        /* 新增*/
+        handleExamine: function(row) {
+            this.form = this.initForm()
+            this.isAdd = true
+            this.dialogVisible = true
+            this.dialogTitle = '企业认证审核'
+            this.proveId = row.id
+            this.getUserProve(row.id)
+        },
+
+        // 查看
+        handleShow: function(row) {
+            this.form = this.initForm()
+            this.isAdd = false
+            this.dialogVisible = true
+            this.dialogTitle = '企业认证审核'
+            this.proveId = row.id
+            this.getUserProve(row.id)
+        },
+
+        confirmSubmit: function(val) {
+            this.$confirm('此操作将审核该认证信息, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                const reqData = {
+                    id: this.proveId,
+                    state: val
+                }
+                this.baseRequest('examine', reqData).then((res) => {
+                    this.dialogVisible = false
+                    this.getData()
+                    let msg = ''
+                    if (val == 1) {
+                        console.log('res',res)
+                        msg = '审核通过成功!'
+                    } else {
+                        msg = '审核不通过成功!'
+                    }
+                    this.$message({
+                        type: 'success',
+                        message: msg
+                    })
+                    this.$emit('handleClose', true)
+
+                }).catch((e) => {
+                    this.$message({
+                        type: 'error',
+                        message: e
+                    })
+                })
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: '已取消操作'
+                })
+            })
+        },
+        baseRequest(opUrl, postData) {
+            return this.$channel.globeRequest('ParkProveInfoController', opUrl, postData, 'project')
+        },
+
+        // 获取用户认证信息
+        getUserProve(id) {
+            const reqData = {
+                id: id
+            }
+            this.baseRequest('getDetialById', reqData).then((res) => {
+                console.log('获取用户认证信息——:', res)
+                if (res.data.data) {
+                    this.parkProveInfo = this.getItemJson(res.data.data.parkProveInfo)
+                    this.user = res.data.data.user
+                    this.userAccount = res.data.data.userAccount
+                    this.parkInfo = !res.data.data.parkInfo ? {} : res.data.data.parkInfo
+                    if (this.parkProveInfo.currency) {
+                        this.parkProveInfo.currency = '' + this.parkProveInfo.currency
+                    }
+                    // console.log('asopifoqwiegnioqeniofnioqwfnioqwfnio——:', res)
+                }
+            })
+        }
+
+    }
+}
+</script>
+
+<style scoped>
+.ch-input .el-input__inner {
+    border-color: #32323A;
+}
+
+.ch-input-size {
+    width: 150px;
+}
+
+.ch-button {
+    border-color: #32323A;
+    background-color: #32323A;
+    color: #fff;
+}
+
+.ch-button-warning {
+    margin-left: 10px;
+    border-color: #E6A23C;
+    background-color: #E6A23C;
+    color: #fff;
+}
+
+.ch-button-export {
+    margin-left: 10px;
+    border-color: #98CC1F;
+    background-color: #98CC1F;
+    color: #fff;
+}
+
+/deep/ .el-dialog__header {
+    padding: 10px 20px;
+}
+
+/deep/ .el-dialog__body {
+    padding: 10px 20px;
+}
+</style>

+ 439 - 0
src/views/workbench/components/myAudit.vue

@@ -0,0 +1,439 @@
+<template>
+  <div class="myAudit">
+    <el-collapse value="1">
+      <el-collapse-item title="我的待办" name="1">
+        <template slot="title">
+          <svg-icon icon-class="我的待办" />
+          <span class="myLine">我的待办</span>
+          <img
+            src="@/static/images/refresh.svg"
+            alt=""
+            class="panel-icon el-icon-refresh  new-ref"
+            @click.stop="refresh"
+          >
+        </template>
+        <div class="taskType">
+          <div
+            v-for="(item, index) in itemList"
+            :key="index"
+            :class="selectTask==item.key?'isborder task':'task'"
+            @click="typeChange(item, index)"
+          >
+            <span :class="selectTask==item.key?'selectTaskName':'taskName'">{{ item.name }}</span>
+            <span class="taskQuan">{{ '(' + item.quantity + ')' }}</span>
+          </div>
+        </div>
+        <div>
+          <!--					v-if="itemList && itemList.length > 0"-->
+          <el-row v-if="itemList && itemList.length > 0" class="comp-box">
+            <el-col :span="24">
+              <!--							tableDataList-->
+
+              <el-table v-loading="loading" :header-cell-style="{ background: 'rgba(0,0,0,0)!important' }" :data="tableDataList" row-class-name="g_table_row">
+                <el-table-column align="center" type="index" width="30" />
+                <el-table-column label="标题" width="150">
+                  <template scope="scope">
+                    <el-tooltip class="item" effect="dark" :content="scope.row.title" placement="top">
+
+                      <div class="chaochuyingcang">
+                        <el-link type="primary" :underline="false" @click="rowClick(scope.row)">
+                          <div class="chaochuyingcang" style="width: 150px">{{ scope.row.title }}</div>
+                        </el-link>
+                      </div>
+
+                    </el-tooltip>
+                  </template>
+                </el-table-column>
+                <el-table-column label="来源" prop="srcUserName" />
+                <el-table-column align="center" header-align="center" label="接收时间" prop="createdAt" width="180" />
+              </el-table>
+              <div class="table-page">
+                <div class="unSelect" @mouseleave="handleLeave" @mouseover="handleEnter" @click.stop="morePc">
+                  全部<img :src="isSelectAll?selectAll:unSelectAll" class="iconRight">
+                </div>
+                <el-pagination
+                  :current-page.sync="currentPage"
+                  :page-size="tablePageSize"
+                  layout="total, prev, pager, next"
+                  :total="allpage"
+                  @current-change="handlePageChange"
+                />
+              </div>
+            </el-col>
+          </el-row>
+
+          <el-row v-if="!itemList || itemList.length <= 0" class="comp-box" style="padding-top: 90px; text-align: center; font-size: 16px;">
+            暂无消息
+          </el-row>
+        </div>
+      </el-collapse-item>
+    </el-collapse>
+
+    <el-dialog
+      append-to-body
+      :title="dialogTitle"
+      :visible.sync="dialogVisible"
+      width="75%"
+      top="50px"
+    >
+      <!--      <company-form v-if="dialogVisible" ref="companyForm" :is-handle="true" :is-view="false" @handleClose="handleClose" />-->
+      <indexCompanyShow v-if="dialogVisible" ref="companyForm" :is-handle="true" :is-view="false" @handleClose="handleClose" />
+
+    </el-dialog>
+
+  </div>
+</template>
+<script>
+// import BasePanel from '../base/baseListPanel'
+import Base from '@/views/base/base'
+import BaseData from '@/views/base/baseData'
+// import CompanyForm from '@/views/company/companyForm.vue'
+import indexCompanyShow from '@/views/prove/indexCompanyShow'
+import myBus from '@/static/utils/myBus'
+export default {
+    name: 'PendingAudit',
+    components: { indexCompanyShow },
+    // extends: BasePanel,
+    mixins: [Base, BaseData],
+    data() {
+        return {
+            loading: false,
+            tablePageSize: 5,
+            tableDataList: [],
+            selectTask: -1,
+            selectUrl: '',
+            itemList: [],
+            isSelectAll: false,
+            selectAll: require('../../../static/images/iconRight.svg'),
+            unSelectAll: require('../../../static/images/unselectAll.svg'),
+            dialogVisible: false,
+            dialogTitle: '',
+            selectItem: ''
+        }
+    },
+    mounted() {
+        const _this = this
+        _this.initData()
+        // _this.getHandleSize()
+        // _this.getDataList(0)
+    },
+    methods: {
+        // 刷新
+        refresh: function() {
+            // this.getHandleSize()
+            this.currentPage = 1
+            // this.getDataList()
+            this.initData()
+        },
+        handleClose(refresh) {
+            this.dialogVisible = false
+            if (refresh) {
+                this.refresh()
+            }
+        },
+        // 获取key位置
+        getKeyIndex: function() {
+            let keyIndex = -1
+            this.itemList.some((item, index) => {
+                if (item.key == this.selectTask) {
+                    keyIndex = index
+                    return true
+                }
+            })
+            return keyIndex
+        },
+        initData: function() {
+            this.itemList = []
+            this.baseRequest('getHandleSize', {}).then(res => {
+                res.data.data.forEach(element => {
+                    this.itemList.push(element)
+                })
+                if (this.selectTask == -1) {
+                    if (this.itemList.length > 0) {
+                        this.selectTask = this.itemList[0].key
+                        this.selectUrl = this.itemList[0].url
+                        this.getMenuDetail(this.itemList[0].name)
+                    } else {
+                        this.selectTask = 999999
+                        this.selectUrl = ''
+                    }
+                }
+                this.getDataList()
+            }).catch(() => {
+            })
+        },
+
+        // 获取待办各类型数据
+        getHandleSize: function() {
+            this.itemList = []
+            this.baseRequest('getHandleSize', {}).then(res => {
+                console.log('获取待办各类型数据_:', res)
+                res.data.data.forEach(element => {
+                    this.itemList.push(element)
+                })
+            }).catch(() => {
+            })
+        },
+        // 获取菜单详情
+        getMenuDetail(e) {
+            this.baseRequest('getListPermissionByName', { name: e }).then((res) => {
+                console.log(res)
+                this.selectItem = res.data
+            })
+        },
+        // 类型点击事件
+        typeChange: function(item, index) {
+            this.selectTask = item.key
+            this.selectUrl = item.url
+            this.currentPage = 1
+            this.getDataList()
+            this.getMenuDetail(item.name)
+        },
+        // 获取对应类型的数据
+        getDataList: function() {
+            const _this = this
+            _this.loading = true
+            _this.tableDataList = []
+            const keyIndex = this.getKeyIndex()
+            if (keyIndex > -1) {
+                const reqData = {
+                    type: this.selectTask,
+                    pageNum: _this.currentPage,
+                    pageSize: _this.tablePageSize
+                }
+                this.baseRequest('handleList', reqData).then(res => {
+                    if (res.data.rows) {
+                        _this.tableDataList = []
+                        res.data.rows.forEach(function(item) {
+                            _this.tableDataList.push(item)
+                        })
+                        _this.allpage = res.data.total
+                        this.itemList[keyIndex].quantity = res.data.total
+                    }
+                    _this.loading = false
+                })
+                    .catch(() => {
+                    })
+            } else {
+                _this.loading = false
+            }
+        },
+        handlePageChange: function(val) {
+            this.currentPage = val
+            this.getDataList()
+        },
+        handleEnter() {
+            this.isSelectAll = true
+        },
+        handleLeave() {
+            this.isSelectAll = false
+        },
+        rowClick: function(row) {
+            console.log('行数据——:', row)
+            if (row.handleType == 1) {
+                this.dialogTitle = '企业认证审核'
+                this.dialogVisible = true
+                // 获取参数
+                const urlParam = {}
+                if (row.routeParam) {
+                    if (row.routeParam.indexOf('&') > -1) {
+                        const parms = row.routeParam.split('&')
+                        parms.forEach(element => {
+                            const detil = element.split('=')
+                            this.$set(urlParam, detil[0], detil[1])
+                        })
+                    } else {
+                        if (row.routeParam.indexOf('=') > -1) {
+                            const detil = element.split('=')
+                            this.$set(urlParam, detil[0], detil[1])
+                        } else {
+                            this.$set(urlParam, 'id', detil[0])
+                        }
+                    }
+                }
+                this.$nextTick(() => {
+                    this.$refs.companyForm.initData(urlParam.id, urlParam.proveType)
+                })
+            } else {
+                this.$router.push(row.routeUrl + '?' + row.routeParam)
+            }
+        },
+        morePc: function() {
+            localStorage.removeItem('Navbar')
+            this.$nextTick(() => {
+                localStorage.setItem('Navbar', JSON.stringify(this.selectItem))
+                this.$router.push(this.selectUrl)
+                myBus.$emit('menuChild1', { ...this.selectItem })
+            })
+            // this.$router.push(this.selectUrl)
+            // if (this.morePsRouter) {
+            // 	this.$router.push(this.morePsRouter)
+            // }
+        },
+        baseRequest(opUrl, postData) {
+            return this.$channel.globleRequest('WorkPanelController', opUrl, postData, 'project')
+        }
+    }
+}
+</script>
+
+<style lang="scss">
+.myAudit {
+	.el-table{
+		border-bottom: 1px solid #E6E6E6;
+		th,td{
+			border-bottom: none;
+		}
+
+	}
+	.el-icon{
+		color: green;
+	}
+	.isborder{
+		box-sizing:border-box;
+		-webkit-box-sizing:border-box;
+		border-bottom: 3px solid #4A8139;
+	}
+	.cell {
+		display: -webkit-box;
+		-webkit-box-orient: vertical;
+		overflow: hidden;
+		-webkit-line-clamp: 1;
+		text-overflow: ellipsis;
+	}
+
+	.table-page {
+		display: flex !important;
+		align-items: center !important;
+		justify-content: space-between !important;
+		padding: 5px 20px;
+
+		.selectAll {
+			color: rgba(244, 83, 32, 1);
+			display: flex;
+			align-items: center;
+			font-size: 12px;
+			cursor: pointer;
+		}
+
+		.iconRight {
+			margin-left: 2px;
+		}
+
+		.unSelect {
+			color: rgba(153, 153, 153, 1);
+			display: flex;
+			align-items: center;
+			font-size: 12px;
+			cursor: pointer;
+		}
+
+		.unSelect:hover {
+			color: rgba(244, 83, 32, 1);
+		}
+	}
+
+	.el-pagination__total {
+		display: none !important;
+	}
+
+	.el-pager li.active {
+		color: #F8BF23 !important;
+		background: rgba(245, 245, 245, 0.5);
+	}
+
+	.taskType {
+		//display: flex;
+		//align-items: center;
+		border-top: 1px solid rgba(230, 230, 230, 1);
+		height: 40px;
+		margin-left: 0.39vw;
+		padding-top: 10px;
+		.task {
+			display: inline-flex;
+			align-items: center;
+			margin-left: 0.851vw;
+			cursor: pointer;
+			white-space: nowrap;
+
+			.taskName {
+				color: #333333;
+				font-size: 14px;
+			}
+
+			.selectTaskName {
+				color: #4A8139;
+				font-size: 14px;
+			}
+
+			.taskQuan {
+				color: #f6c56e;
+				font-size: 14px;
+				margin-left: 3px;
+			}
+		}
+
+		.taskName:hover {
+			color: rgba(36, 36, 100, 0.7) !important;
+		}
+	}
+
+	.el-table__body-wrapper {
+		min-height: 185px !important;
+
+		&::-webkit-scrollbar {
+			display: none !important;
+		}
+	}
+
+	.el-table__empty-block {
+		min-height: 185px !important;
+	}
+
+	.el-collapse-item__content {
+		height: 331px;
+	}
+
+	.el-table:before {
+		height: 0px !important;
+	}
+
+	.el-collapse-item__arrow {
+		display: none !important;
+	}
+
+	.new-ref {
+		right: 10px !important;
+	}
+
+	.el-button--warning {
+		background-color: rgba(70, 122, 235, 0) !important;
+		color: rgba(70, 122, 235, 1) !important;
+		border: none !important;
+	}
+
+	.el-button--mini {
+		padding: 5px 15px !important;
+	}
+}
+
+.myLine {
+	//border-left: 3px solid rgba(81, 68, 157, 1);
+	padding-left: 5px;
+	height: 16px;
+	display: flex;
+	align-items: center;
+	font-weight: 600;
+	color: #264987 !important;
+}
+
+.el-table__cell {
+
+}
+
+.el-table__header {
+	th {
+		background: rgba(245, 245, 245, 1) !important;
+	}
+}
+</style>

+ 454 - 0
src/views/workbench/components/myAudit_old.vue

@@ -0,0 +1,454 @@
+<template>
+  <div class="myAudit">
+    <el-collapse value="1">
+      <el-collapse-item title="我的代办" name="1">
+        <template slot="title">
+          <span>我的待办</span>
+
+          <!--<el-button icon="el-icon-refresh" circle size="small" @click.stop="refresh" />-->
+          <!--<el-button icon="el-icon-more" circle size="small" @click.stop="more" />-->
+
+          <i
+            class="panel-icon el-icon-refresh"
+            @click.stop="refresh"
+          />
+          <!--          <i class="panel-icon el-icon-more" @click.stop="more" />-->
+        </template>
+        <el-row class="comp-box">
+          <el-col :span="24">
+            <el-table
+              v-loading="loading"
+              :data="AllData"
+              stripe
+              row-class-name="g_table_row"
+            >
+              <el-table-column type="index" width="50" />
+              <el-table-column label="来源" prop="auditType" />
+              <el-table-column label="主题" prop="proName" />
+              <el-table-column
+                label="提交人"
+                prop="applyBy"
+                header-align="center"
+                align="center"
+                width="100"
+              />
+              <el-table-column
+                label="提交日期"
+                prop="createdAt"
+                header-align="center"
+                align="center"
+                width="120"
+              />
+              <el-table-column
+                label="操作"
+                header-align="center"
+                align="center"
+                width="120"
+              >
+                <template scope="scope">
+                  <el-button
+                    v-if="scope.row.type == 'HANDLE_BUG'"
+                    size="mini"
+                    class="ch-button-warning"
+                    @click="handleBugAudit(scope.row)"
+                  >处理</el-button>
+                  <el-button
+                    v-else-if="
+                      scope.row.type == 'TASK_HANDLE'
+                    "
+                    size="mini"
+                    class="ch-button-warning"
+                    @click="handleTaskEdit(scope.row)"
+                  >处理</el-button>
+                  <el-button
+                    v-else-if="
+                      scope.row.type == 'VERIFICATION_BUG'
+                    "
+                    size="mini"
+                    class="ch-button-warning"
+                    @click="verificationBugAudit(scope.row)"
+                  >验证</el-button>
+                  <el-button
+                    v-else
+                    size="mini"
+                    class="ch-button-warning"
+                    @click="handleAudit(scope.row)"
+                  >审核</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+            <div class="table-page">
+              <el-pagination
+                :current-page.sync="currentPage"
+                :page-size="pageSize"
+                background
+                layout="total, prev, pager, next"
+                :total="allpage"
+                @current-change="handleCurrentChange"
+              />
+            </div>
+          </el-col>
+        </el-row>
+      </el-collapse-item>
+    </el-collapse>
+    <el-dialog
+      :title="dialogTitle"
+      :visible.sync="dialogVisible"
+      width="70%"
+      top="50px"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+    >
+      <!-- <audit-detail
+                :audit-id="currAuditId"
+                @handleAuditClose="handleClose"
+                @handleAuditCommit="handleCommit"
+            /> -->
+    </el-dialog>
+    <el-dialog
+      :title="dialogTitle"
+      :visible.sync="dialogBugHandle"
+      width="70%"
+      top="50px"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+    >
+      <!-- <bug-detail
+                :bug-id="currAuditId"
+                :type="type"
+                @handleAuditClose="handleBugClose"
+                @handleAuditCommit="handleBugCommit"
+            /> -->
+    </el-dialog>
+    <el-dialog
+      :title="dialogTitle"
+      :visible.sync="dialogBugVerification"
+      width="70%"
+      top="50px"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+    >
+      <!-- <bug-verification-detail
+                :bug-id="currAuditId"
+                :type="type"
+                @handleAuditClose="verificationBugClose"
+                @handleAuditCommit="verificationBugCommit"
+            /> -->
+    </el-dialog>
+    <el-dialog
+      :title="dialogBatchTaskTitle"
+      :visible.sync="dialogBatchVisible"
+      width="70%"
+      top="50px"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      append-to-body
+    >
+      <!-- <task-form
+                :key="taskFormKey"
+                :task-info="taskInfo"
+                @handleClose="handleTaskClose"
+                @handleCommit="handleTaskCommit"
+            /> -->
+    </el-dialog>
+  </div>
+</template>
+<script>
+// import channel from '../../../static/utils/channel'
+import Constant from '../../../static/utils/constant'
+// import AuditDetail from "../workflow/comps/AuditDetail";
+// import TaskForm from "../task/taskForm";
+// import BasePanel from '../base/baseListPanel'
+// import BugDetail from "../bug/bugHandleDetail";
+// import BugVerificationDetail from "../bug/bugVerificationDetail";
+export default {
+    name: 'PendingAudit',
+    components: {
+        // AuditDetail,
+        // BugDetail,
+        // TaskForm,
+        // BugVerificationDetail
+    },
+    // extends: BasePanel,
+    data() {
+        return {
+            // 继承类基本参数
+            moreRouter: '/flo/pendingAudit',
+            baseUrl: 'FlowAuditController',
+            // 通用字典项
+            dc_flow_status: Constant.dc_flow_status,
+            AUDIT_TYPE: [],
+            dc_map: {},
+            UserData: [],
+            UserMap: {},
+            // 弹框相关
+            currAuditId: '',
+            dialogVisible: false,
+            dialogBugHandle: false,
+            dialogBugVerification: false,
+            dialogTitle: '',
+            isAdd: true,
+            dialogBatchTaskTitle: '任务处理',
+            dialogBatchVisible: false,
+            taskFormKey: 0,
+            taskSearch: {},
+            detailList: [],
+            taskInfo: {
+                id: '',
+                batchId: '',
+                proId: '',
+                batchName: '',
+                type: '1'
+            },
+            type: ''
+        }
+    },
+    mounted() {
+        // this.generateDcMap();
+        // this.initUser().then(() => {
+        //     this.getData();
+        // });
+    },
+    methods: {
+        getData: function() {
+            const _this = this
+            _this.loading = true
+            _this.AllData = []
+
+            // const postData = {
+            //     currAuditBy: _this.$common.currUser() ? _this.$common.currUser().id : '',
+            //     pageNum: _this.currentPage,
+            //     pageSize: _this.pageSize
+            // }
+            // this.baseRequest('list', postData).then((res) => {
+            //     if (res.data.rows) {
+            //         res.data.rows.forEach(function(item) {
+            //             const json = {
+            //                 type: '1',
+            //                 auditType: _this.dc_map.AUDIT_TYPE[item.auditType],
+            //                 auditStatus: _this.dc_map.dc_flow_status[item.auditStatus],
+            //                 applyBy: _this.UserMap[item.applyBy],
+            //                 createdAt: _this.$common.transDate(item.createdAt, Constant.DATE_PATTERN.DATE_TIME_s_h),
+            //                 updatedAt: _this.$common.transDate(item.updatedAt, Constant.DATE_PATTERN.DATE_TIME_s_h),
+            //                 id: item.id
+            //             }
+            //
+            //             const referenceContent = _this.$common.castEval(item.referenceContent)
+            //             if (referenceContent) {
+            //                 json.proName = referenceContent.proName
+            //                 json.cusName = referenceContent.cusName
+            //             }
+            //
+            //             if (_this.AllData.length < 4) {
+            //                 _this.AllData.push(json)
+            //             }
+            //         })
+            //         _this.allpage = res.data.total
+            //     }
+            //     _this.loading = false
+            // }).catch(() => {
+            // })
+            const postBugData = {
+                handleUserId: _this.$common.currUser()
+                    ? _this.$common.currUser().id
+                    : '',
+                pageNum: _this.currentPage,
+                pageSize: _this.pageSize
+            }
+            this.baseBugRequest('myBugListVo', postBugData)
+                .then(res => {
+                    if (res.data.rows) {
+                        res.data.rows.forEach(function(item) {
+                            const json = {
+                                proName: item.title,
+                                auditStatus: item.status,
+                                type: item.bugType,
+                                auditType:
+                                    _this.dc_map.AUDIT_TYPE[item.bugType],
+                                applyBy: _this.UserMap[item.submitUserId],
+                                createdAt: item.submitTime
+                                    ? _this.$common.transDate(
+                                        item.submitTime,
+                                        Constant.DATE_PATTERN.DATE_TIME_s_h
+                                    )
+                                    : '',
+                                id: item.id
+                            }
+                            if (
+                                json.type &&
+                                json.type !== 'VERIFICATION_BUG' &&
+                                json.type !== 'HANDLE_BUG' &&
+                                json.type !== 'TASK_HANDLE'
+                            ) {
+                                const referenceContent = _this.$common.castEval(
+                                    item.title
+                                )
+                                if (referenceContent) {
+                                    json.proName = referenceContent.proName
+                                    json.cusName = referenceContent.cusName
+                                }
+                            }
+
+                            _this.AllData.push(json)
+                        })
+                        _this.allpage = res.data.total
+                    }
+                    _this.loading = false
+                })
+                .catch(() => {})
+        },
+        handleBugCommit: function() {
+            this.getData()
+            this.currAuditId = ''
+            this.dialogBugHandle = false
+        },
+        handleTaskEdit(val) {
+            const _this = this
+            _this.taskInfo.id = val.id
+            _this.taskInfo.isNoHandle = true
+            _this.taskFormKey++
+            _this.dialogBatchTaskTitle = '任务处理'
+            _this.dialogBatchVisible = true
+        },
+        handleBugClose: function() {
+            this.dialogBugHandle = false
+        },
+        verificationBugCommit: function() {
+            this.getData()
+            this.dialogBugVerification = false
+        },
+        handleTaskClose: function() {
+            this.dialogBatchVisible = false
+        },
+        handleTaskCommit: function() {
+            this.getData()
+            this.dialogBatchVisible = false
+        },
+        verificationBugClose: function() {
+            this.dialogBugVerification = false
+        },
+        /* 编辑*/
+        handleAudit: function(val) {
+            this.isAdd = false
+            this.dialogVisible = true
+            this.dialogTitle = '申请详情'
+            this.currAuditId = val.id
+        },
+        /* 编辑*/
+        handleBugAudit: function(val) {
+            this.isAdd = false
+            this.dialogBugHandle = true
+            this.dialogTitle = 'BUG处理'
+            this.currAuditId = val.id
+        },
+        /* 任务编辑*/
+        handleTaskAudit: function(val) {
+            this.isAdd = false
+            this.dialogBugHandle = true
+            this.dialogTitle = '任务处理'
+            this.currAuditId = val.id
+        },
+        /* 编辑*/
+        verificationBugAudit: function(val) {
+            this.isAdd = false
+            this.dialogBugVerification = true
+            this.dialogTitle = 'BUG验证'
+            this.currAuditId = val.id
+        },
+        /* 辅助相关*/
+        initUser: function() {
+            const _this = this
+            this.UserData = []
+            this.UserMap = {}
+            return this.globleRequest(
+                'SysUserExtendController',
+                'listAll',
+                '',
+                'Pending Audit'
+            )
+                .then(res => {
+                    if (res.data) {
+                        res.data.forEach(function(item) {
+                            const json = {
+                                label: item.truename,
+                                value: item.id
+                            }
+                            _this.UserData.push(json)
+                            _this.UserMap[json.value] = json.label
+                        })
+                    }
+                })
+                .catch(() => {})
+        },
+        generateDcMap: function() {
+            this.AUDIT_TYPE = []
+            for (const key in Constant.AUDIT_TYPE) {
+                const json = {
+                    label: Constant.AUDIT_TYPE[key].name,
+                    value: Constant.AUDIT_TYPE[key].key
+                }
+                this.AUDIT_TYPE.push(json)
+            }
+            this.dc_map['dc_flow_status'] = this.$common.transDcMap(
+                Constant.dc_flow_status
+            )
+            this.dc_map['AUDIT_TYPE'] = this.$common.transDcMap(
+                this.AUDIT_TYPE
+            )
+        },
+        baseBugRequest(opUrl, postData) {
+            return this.$channel.globleRequest(
+                'BugLibraryController',
+                opUrl,
+                postData,
+                'project'
+            )
+        }
+    }
+}
+</script>
+
+<style lang="scss">
+.myAudit {
+    .cell {
+        display: -webkit-box;
+        -webkit-box-orient: vertical;
+        overflow: hidden;
+        -webkit-line-clamp: 1;
+        text-overflow: ellipsis;
+    }
+}
+
+/*.el-table th, .el-table td {*/
+/*padding: 5px;*/
+/*}*/
+/*.el-collapse{*/
+/*box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);*/
+/*border-radius: 5px;*/
+/*}*/
+/*.el-collapse-item__header{*/
+/*position: relative;*/
+/*padding: 0 15px;*/
+/*font-size: 16px;*/
+/*color: white;*/
+/*background-color: #4e7ebf;*/
+/*border-bottom: 1px solid #f3f3f3;*/
+/*}*/
+/*.el-collapse-item__header:hover{*/
+/*background-color: #6B6B73;*/
+/*}*/
+/*.el-collapse-item__header .el-button:nth-child(1){*/
+/*right: 55px*/
+/*}*/
+/*.el-collapse-item__header .el-button:nth-child(2){*/
+/*right: 95px*/
+/*}*/
+/*.el-collapse-item__header .el-button{*/
+/*position: absolute;*/
+/*float: right;*/
+/*padding-right: 10px;*/
+/*}*/
+/*.el-collapse-item__content {*/
+/*padding-bottom: 0;*/
+/*}*/
+</style>

+ 224 - 0
src/views/workbench/components/myBoard.vue

@@ -0,0 +1,224 @@
+<template>
+  <div>
+    <el-collapse value="1">
+      <el-collapse-item title="项目看板" name="1">
+        <template slot="title">
+          <span>项目看板</span>
+
+          <!--<el-button icon="el-icon-refresh" circle size="small" @click.stop="refresh" />-->
+          <!--          <el-button icon="el-icon-more" circle size="small" @click.stop="more" />-->
+
+          <!--          <i class="panel-icon el-icon-refresh" @click.stop="refresh" />-->
+
+          <el-button class="panel-icon" type="text" :style="'color:'+color2" @click.stop="moreInfo('2')">本月</el-button>
+          <el-button class="panel-icon" type="text" :style="'color:'+color1" @click.stop="moreInfo('1')">上月</el-button>
+            <i class="panel-icon el-icon-more" @click.stop="more" />
+        </template>
+        <el-row class="comp-box">
+          <el-col :span="24">
+            <el-table v-loading="loading" :data="AllData" stripe row-class-name="g_table_row">
+              <el-table-column type="index" width="50" />
+              <el-table-column label="项目负责人" prop="manageByName" />
+              <el-table-column label="进行中" prop="zero" width="100">
+                <template scope="scope">
+                  <span class="p-blue cp" @click="handleAudit(scope.row)">{{ scope.row.zero }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column label="已验收" prop="one" />
+              <el-table-column label="终止" prop="two" />
+              <el-table-column label="本年累计" prop="year" />
+            </el-table>
+          </el-col>
+        </el-row>
+      </el-collapse-item>
+    </el-collapse>
+    <!--    <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="70%" top="50px" :close-on-click-modal="false" :close-on-press-escape="false">-->
+    <!--      <pro-main-detail :pro="pro" />-->
+    <!--    </el-dialog>-->
+    <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="70%" top="50px" :close-on-click-modal="false" :close-on-press-escape="false">
+      <!-- <pro-main-extend :pro="pro" /> -->
+    </el-dialog>
+    <!--    <el-dialog :title="dialogTitle" :visible.sync="dialogVerification" width="70%" top="50px" :close-on-click-modal="false" :close-on-press-escape="false">-->
+    <!--      <bug-verification-detail :bug-id="bugId" :type="type" @handleAuditClose="verificationClose" @handleAuditCommit="verificationCommit" />-->
+    <!--    </el-dialog>-->
+  </div>
+</template>
+<script>
+import Constant from '@/static/utils/constant'
+
+// import BasePanel from '../base/baseListPanel'
+// import ProMainDetail from './proMainDetail'
+// import ProMainExtend from '../project/proMainExtend_board'
+export default {
+    name: 'MyBoard',
+    components: {
+        // ProMainDetail,
+        // ProMainExtend
+    },
+    // extends: BasePanel,
+    data() {
+        return {
+            // 继承类基本参数
+            moreRouter: '/fx/projectMainExtend',
+            baseUrl: 'BugLibraryController',
+            AllData: [],
+            pro: {
+                managedBy: '',
+                proStatus: '0'
+            },
+            // 通用字典项
+            REPAIR_STATUS: Constant.REPAIR_STATUS,
+            AUDIT_TYPE: [],
+            dc_map: {},
+            UserData: [],
+            // 弹框相关
+            bugId: '',
+            color1: '#ffffff',
+            color2: 'rgb(255 255 255 / 31%)',
+            type: '',
+            dialogVisible: false,
+            dialogVerification: false,
+            dialogTitle: '',
+            isAdd: true,
+            detailList: [],
+            search: {
+                month: '1'
+            }
+        }
+    },
+    mounted() {
+        // this.initUser()
+        // this.getData()
+    },
+    methods: {
+        getData: function() {
+            const _this = this
+            _this.loading = true
+            _this.AllData = []
+            this.baseRequest('proMainManager', _this.search).then((res) => {
+                if (res.data) {
+                    res.data.forEach(function(item) {
+                        const json = {
+                            manageByName: _this.UserMap[item.manageBy],
+                            managedBy: item.manageBy,
+                            zero: item.zero ? item.zero : 0,
+                            one: item.one ? item.one : 0,
+                            two: item.two ? item.two : 0,
+                            year: item.yearNumb ? item.yearNumb : 0
+                        }
+                        _this.AllData.push(json)
+                    })
+                }
+                _this.loading = false
+            }).catch(() => {
+            })
+        },
+        moreInfo: function(val) {
+            this.search.month = val
+            if (val == '1') {
+                this.color1 = '#ffffff'
+                this.color2 = 'rgb(255 255 255 / 31%)'
+            } else if (val == '2') {
+                this.color2 = '#ffffff'
+                this.color1 = 'rgb(255 255 255 / 31%)'
+            }
+            this.getData()
+        },
+        handleViewInfo: function() {
+
+        },
+        verificationCommit: function() {
+            this.getData()
+            this.dialogVerification = false
+        },
+        verificationClose: function() {
+            this.dialogVerification = false
+        },
+        /* 编辑*/
+        handleAudit: function(val) {
+            this.pro.managedBy = val.managedBy
+            this.dialogVisible = true
+            this.dialogTitle = '项目详情'
+        },
+        /* 编辑*/
+        verificationAudit: function(val) {
+            this.isAdd = false
+            this.dialogVerification = true
+            this.dialogTitle = 'BUG详情'
+            this.bugId = val.id
+        },
+        /* 辅助相关*/
+        initUser: function() {
+            const _this = this
+            this.UserData = []
+            this.UserMap = {}
+            return this.globleRequest('SysUserExtendController', 'listAll', '', 'Pending Audit').then((res) => {
+                if (res.data) {
+                    res.data.forEach(function(item) {
+                        const json = {
+                            label: item.truename,
+                            value: item.id
+                        }
+                        _this.UserData.push(json)
+                        _this.UserMap[json.value] = json.label
+                    })
+                }
+            }).catch(() => {
+            })
+        },
+        generateDcMap: function() {
+            this.AUDIT_TYPE = []
+            for (const key in Constant.AUDIT_TYPE) {
+                const json = {
+                    label: Constant.AUDIT_TYPE[key].name,
+                    value: Constant.AUDIT_TYPE[key].key
+                }
+                this.AUDIT_TYPE.push(json)
+            }
+            this.dc_map['dc_flow_status'] = this.$common.transDcMap(Constant.dc_flow_status)
+            this.dc_map['AUDIT_TYPE'] = this.$common.transDcMap(this.AUDIT_TYPE)
+        },
+        baseRequest(opUrl, postData) {
+            return this.$channel.globleRequest('ProMainController', opUrl, postData, 'project')
+        }
+
+    }
+}
+</script>
+
+<style scoped>
+</style>
+<style>
+    /*.el-table th, .el-table td {*/
+        /*padding: 5px;*/
+    /*}*/
+    /*.el-collapse{*/
+        /*box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);*/
+        /*border-radius: 5px;*/
+    /*}*/
+    /*.el-collapse-item__header{*/
+        /*position: relative;*/
+        /*padding: 0 15px;*/
+        /*font-size: 16px;*/
+        /*color: white;*/
+        /*background-color: #4e7ebf;*/
+        /*border-bottom: 1px solid #f3f3f3;*/
+    /*}*/
+    /*.el-collapse-item__header:hover{*/
+        /*background-color: #6B6B73;*/
+    /*}*/
+    /*.el-collapse-item__header .el-button:nth-child(1){*/
+        /*right: 55px*/
+    /*}*/
+    /*.el-collapse-item__header .el-button:nth-child(2){*/
+        /*right: 95px*/
+    /*}*/
+    /*.el-collapse-item__header .el-button{*/
+        /*position: absolute;*/
+        /*float: right;*/
+        /*padding-right: 10px;*/
+    /*}*/
+    /*.el-collapse-item__content {*/
+        /*padding-bottom: 0;*/
+    /*}*/
+</style>

+ 227 - 0
src/views/workbench/components/myBug.vue

@@ -0,0 +1,227 @@
+<template>
+  <div>
+    <el-collapse value="1">
+      <el-collapse-item title="我的待办" name="1">
+        <template slot="title">
+          <span>我的待办</span>
+
+          <!--<el-button icon="el-icon-refresh" circle size="small" @click.stop="refresh" />-->
+          <!--<el-button icon="el-icon-more" circle size="small" @click.stop="more" />-->
+
+          <i class="panel-icon el-icon-refresh" @click.stop="refresh" />
+<!--            <i class="panel-icon el-icon-more" @click.stop="moreInfo()" />-->
+        </template>
+        <el-row class="comp-box">
+          <el-col :span="24">
+            <el-table v-loading="loading" :data="AllData" stripe row-class-name="g_table_row">
+              <el-table-column type="index" width="50" />
+              <el-table-column label="来源" prop="statusName" />
+              <el-table-column label="主题" prop="title" />
+              <el-table-column label="提交人" prop="submitUserName" header-align="center" align="center" width="100" />
+              <el-table-column label="提交日期" prop="submitTime" header-align="center" align="center" width="120" />
+              <el-table-column label="操作" header-align="center" align="center" width="120">
+                <template scope="scope">
+                  <el-button v-if="scope.row.status=='1'" size="mini" class="ch-button-warning" @click="handleAudit(scope.row)">处理</el-button>
+                  <el-button v-if="scope.row.status=='2'" size="mini" class="ch-button-warning" @click="verificationAudit(scope.row)">验证</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+            <div class="table-page">
+              <el-pagination
+                :current-page.sync="currentPage"
+                :page-size="pageSize"
+                background
+                layout="total, prev, pager, next"
+                :total="allpage"
+                @current-change="handleCurrentChange"
+              />
+            </div>
+          </el-col>
+        </el-row>
+      </el-collapse-item>
+    </el-collapse>
+    <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="70%" top="50px" :close-on-click-modal="false" :close-on-press-escape="false">
+      <!-- <bug-detail :bug-id="bugId" :type="type" @handleAuditClose="handleClose" @handleAuditCommit="handleCommit" /> -->
+    </el-dialog>
+    <el-dialog :title="dialogTitle" :visible.sync="dialogVerification" width="70%" top="50px" :close-on-click-modal="false" :close-on-press-escape="false">
+      <!-- <bug-verification-detail :bug-id="bugId" :type="type" @handleAuditClose="verificationClose" @handleAuditCommit="verificationCommit" /> -->
+    </el-dialog>
+  </div>
+</template>
+<script>
+import Constant from '@/static/utils/constant'
+// import BugDetail from '../bug/bugHandleDetail'
+// import BugVerificationDetail from '../bug/bugVerificationDetail'
+
+// import BasePanel from '../base/baseListPanel'
+
+export default {
+    name: 'MyBug',
+    components: {
+        // BugDetail,
+        // BugVerificationDetail
+    },
+    // extends: BasePanel,
+    data() {
+        return {
+            // 继承类基本参数
+            moreRouter: '/flo/pendingAudit',
+            baseUrl: 'BugLibraryController',
+            // 通用字典项
+            REPAIR_STATUS: Constant.REPAIR_STATUS,
+            AUDIT_TYPE: [],
+            dc_map: {},
+            UserData: [],
+            UserMap: {},
+            // 弹框相关
+            bugId: '',
+            type: '',
+            dialogVisible: false,
+            dialogVerification: false,
+            dialogTitle: '',
+            isAdd: true,
+            detailList: []
+        }
+    },
+    mounted() {
+        // this.generateDcMap()
+        // this.initUser().then(() => {
+        //     this.getData()
+        // })
+    },
+    methods: {
+        moreInfo: function() {
+            if (this.moreRouter) {
+                this.$router.push(this.moreRouter)
+            }
+        },
+        handleCommit: function() {
+            this.getData()
+            this.bugId =''
+            this.dialogVisible = false
+        },
+        handleClose: function() {
+            this.dialogVisible = false
+        },
+        getData: function() {
+            const _this = this
+            _this.loading = true
+            _this.AllData = []
+
+            const postData = {
+                handleUserId: _this.$common.currUser() ? _this.$common.currUser().id : '',
+                pageNum: _this.currentPage,
+                pageSize: _this.pageSize
+            }
+            this.baseRequest('myBugListVo', postData).then((res) => {
+                if (res.data.rows) {
+                    res.data.rows.forEach(function(item) {
+                        const json = {
+                            title: item.title,
+                            status: item.status,
+                            statusName: item.status == '1' ? 'BUG处理' : 'BUG验证',
+                            submitUserName: _this.UserMap[item.submitUserId],
+                            submitTime: _this.$common.transDate(item.submitTime, Constant.DATE_PATTERN.DATE_TIME_s_h),
+                            id: item.id
+                        }
+                        _this.AllData.push(json)
+                    })
+                    _this.allpage = res.data.total
+                }
+                _this.loading = false
+            }).catch(() => {
+            })
+        },
+        verificationCommit: function() {
+            this.getData()
+            this.dialogVerification = false
+        },
+        verificationClose: function() {
+            this.dialogVerification = false
+        },
+        /* 编辑*/
+        handleAudit: function(val) {
+            this.isAdd = false
+            this.dialogVisible = true
+            this.dialogTitle = 'BUG详情'
+            this.bugId = val.id
+        },
+        /* 编辑*/
+        verificationAudit: function(val) {
+            this.isAdd = false
+            this.dialogVerification = true
+            this.dialogTitle = 'BUG详情'
+            this.bugId = val.id
+        },
+        /* 辅助相关*/
+        initUser: function() {
+            const _this = this
+            this.UserData = []
+            this.UserMap = {}
+            return this.globleRequest('SysUserExtendController', 'listAll', '', 'Pending Audit').then((res) => {
+                if (res.data) {
+                    res.data.forEach(function(item) {
+                        const json = {
+                            label: item.truename,
+                            value: item.id
+                        }
+                        _this.UserData.push(json)
+                        _this.UserMap[json.value] = json.label
+                    })
+                }
+            }).catch(() => {
+            })
+        },
+        generateDcMap: function() {
+            this.AUDIT_TYPE = []
+            for (const key in Constant.AUDIT_TYPE) {
+                const json = {
+                    label: Constant.AUDIT_TYPE[key].name,
+                    value: Constant.AUDIT_TYPE[key].key
+                }
+                this.AUDIT_TYPE.push(json)
+            }
+            this.dc_map['dc_flow_status'] = this.$common.transDcMap(Constant.dc_flow_status)
+            this.dc_map['AUDIT_TYPE'] = this.$common.transDcMap(this.AUDIT_TYPE)
+        }
+
+    }
+}
+</script>
+
+<style scoped>
+</style>
+<style>
+    /*.el-table th, .el-table td {*/
+        /*padding: 5px;*/
+    /*}*/
+    /*.el-collapse{*/
+        /*box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);*/
+        /*border-radius: 5px;*/
+    /*}*/
+    /*.el-collapse-item__header{*/
+        /*position: relative;*/
+        /*padding: 0 15px;*/
+        /*font-size: 16px;*/
+        /*color: white;*/
+        /*background-color: #4e7ebf;*/
+        /*border-bottom: 1px solid #f3f3f3;*/
+    /*}*/
+    /*.el-collapse-item__header:hover{*/
+        /*background-color: #6B6B73;*/
+    /*}*/
+    /*.el-collapse-item__header .el-button:nth-child(1){*/
+        /*right: 55px*/
+    /*}*/
+    /*.el-collapse-item__header .el-button:nth-child(2){*/
+        /*right: 95px*/
+    /*}*/
+    /*.el-collapse-item__header .el-button{*/
+        /*position: absolute;*/
+        /*float: right;*/
+        /*padding-right: 10px;*/
+    /*}*/
+    /*.el-collapse-item__content {*/
+        /*padding-bottom: 0;*/
+    /*}*/
+</style>

+ 384 - 0
src/views/workbench/components/myInfo.vue

@@ -0,0 +1,384 @@
+<template>
+  <div class="myInfo">
+    <el-collapse value="1">
+      <el-collapse-item title="我的待阅" name="1">
+        <template slot="title">
+          <svg-icon icon-class="我得待阅" />
+          <span class="myLine">我的待阅</span>
+          <img
+            src="../../../static/images/refresh.svg"
+            alt=""
+            class="panel-icon el-icon-refresh new-ref"
+            @click.stop="refresh"
+          >
+        </template>
+        <div class="taskType">
+          <div
+            v-for="(item, index) in itemList"
+            :key="index"
+            :class="selectTask==item.key?'isborder task':'task'"
+            @click="typeChange(item, index)"
+          >
+            <span :class="selectTask==item.key?'selectTaskName':'taskName'">{{ item.name }}</span>
+            <span class="taskQuan">{{ "(" + item.quantity + ")" }}</span>
+          </div>
+        </div>
+        <div>
+          <el-row v-if="itemList && itemList.length > 0" class="comp-box">
+            <el-col :span="24">
+              <el-table v-loading="loading" :header-cell-style="{ background: 'rgba(0,0,0,0)!important' }" :data="tableDataList" stripe row-class-name="g_table_row">
+                <el-table-column align="center" type="index" width="30" />
+                <el-table-column label="标题" width="150">
+                  <template scope="scope">
+                    <el-tooltip class="item" effect="dark" :content="scope.row.title" placement="top">
+
+                      <div class="chaochuyingcang">
+                        <el-link type="primary" :underline="false" @click="rowClick(scope.row)">
+                          <div class="chaochuyingcang" style="width: 150px">{{ scope.row.title }}</div>
+                        </el-link>
+                      </div>
+                    </el-tooltip>
+                  </template>
+                </el-table-column>
+                <el-table-column label="来源" prop="srcUserName" />
+                <el-table-column align="center" header-align="center" label="接收时间" prop="createdAt" width="180" />
+              </el-table>
+              <div class="table-page">
+                <div class="unSelect" @mouseover="handleEnter" @mouseleave="handleLeave" @click="morePc">
+                  全部<img :src="isSelectAll?selectAll:unSelectAll" class="iconRight">
+                </div>
+                <el-pagination
+                  :current-page.sync="currentPage"
+                  :page-size="tablePageSize"
+                  layout="total, prev, pager, next"
+                  :total="allpage"
+                  @current-change="handlePageChange"
+                />
+              </div>
+            </el-col>
+          </el-row>
+
+          <el-row v-if="!itemList || itemList.length <= 0" class="comp-box" style="padding-top: 90px; text-align: center; font-size: 16px;">
+            暂无消息
+          </el-row>
+        </div>
+      </el-collapse-item>
+    </el-collapse>
+
+    <el-dialog title="风险上报查看" :visible.sync="dialogDetialVisible" width="70%" top="50px" append-to-body>
+<!--      <riskDetail ref="riskDetail" :r-id="rId" />-->
+    </el-dialog>
+  </div>
+</template>
+<script>
+// import BasePanel from '../base/baseListPanel'
+import Base from '@/views/base/base'
+import BaseData from '@/views/base/baseData'
+import BaseDept from '@/views/base/baseDept'
+// import riskDetail from '@/views/company/components/comp/riskDetail'
+import myBus from '@/static/utils/myBus'
+export default {
+    name: 'MyInfo',
+    components: {
+        // riskDetail
+    },
+    // extends: BasePanel,
+    mixins: [Base, BaseData, BaseDept],
+    data() {
+        return {
+            loading: false,
+            tablePageSize: 5,
+            tableDataList: [],
+            selectTask: -1,
+            selectUrl: '',
+            itemList: [],
+            isSelectAll: false,
+            selectAll: require('../../../static/images/iconRight.svg'),
+            unSelectAll: require('../../../static/images/unselectAll.svg'),
+            rId: '',
+            dialogDetialVisible: false,
+            selectItem: ''
+        }
+    },
+    mounted() {
+        const _this = this
+        _this.initData()
+        // _this.getReadSize()
+        // this.getDataList(0)
+    },
+    methods: {
+        // 刷新
+        refresh: function() {
+            // this.getReadSize()
+            // this.selectTask = 1
+            this.currentPage = 1
+            // this.getDataList()
+            this.initData()
+        },
+        // 获取key位置
+        getKeyIndex: function() {
+            let keyIndex = -1
+            this.itemList.some((item, index) => {
+                if (item.key == this.selectTask) {
+                    keyIndex = index
+                    return true
+                }
+            })
+            return keyIndex
+        },
+        initData: function() {
+            this.itemList = []
+            this.baseRequest('getReadSize', {}).then(res => {
+                res.data.data.forEach(element => {
+                    this.itemList.push(element)
+                })
+                if (this.selectTask == -1) {
+                    if (this.itemList.length > 0) {
+                        this.selectTask = this.itemList[0].key
+                        this.selectUrl = this.itemList[0].url
+                        this.getMenuDetail(this.itemList[0].name)
+                    } else {
+                        this.selectTask = 999999
+                        this.selectUrl = ''
+                    }
+                }
+                this.getDataList()
+            }).catch(() => {
+            })
+        },
+        // 获取待阅各类型数据
+        getReadSize: function() {
+            this.itemList = []
+            this.baseRequest('getReadSize', {}).then(res => {
+                console.log('获取待阅各类型数据_:', res)
+                res.data.data.forEach(element => {
+                    this.itemList.push(element)
+                })
+            }).catch(() => {
+            })
+        },
+        // 类型点击事件
+        typeChange: function(item, index) {
+            this.selectUrl = item.url
+            this.selectTask = item.key
+            this.currentPage = 1
+            this.getDataList()
+            this.getMenuDetail(item.name)
+        },
+        // 获取菜单详情
+        getMenuDetail(e) {
+            this.baseRequest('getListPermissionByName', { name: e }).then((res) => {
+                console.log(res)
+                this.selectItem = res.data
+            })
+        },
+        // 获取对应类型的数据
+        getDataList: function() {
+            const _this = this
+            _this.loading = true
+            _this.tableDataList = []
+            const keyIndex = this.getKeyIndex()
+            if (keyIndex > -1) {
+                const reqData = {
+                    type: this.selectTask,
+                    pageNum: _this.currentPage,
+                    pageSize: _this.tablePageSize
+                }
+                this.baseRequest('readList', reqData).then(res => {
+                    if (res.data.rows) {
+                        _this.tableDataList = []
+                        res.data.rows.forEach(function(item) {
+                            _this.tableDataList.push(item)
+                        })
+                        _this.allpage = res.data.total
+                        this.itemList[keyIndex].quantity = res.data.total
+                    }
+                    _this.loading = false
+                }).catch(() => {})
+            } else {
+                _this.loading = false
+            }
+        },
+        handlePageChange: function(val) {
+            this.currentPage = val
+            this.getDataList()
+        },
+        handleEnter() {
+            this.isSelectAll = true
+        },
+        handleLeave() {
+            this.isSelectAll = false
+        },
+        rowClick: function(row) {
+            console.log('行数据——:', row)
+            if (row.readType == 3) {
+                let id = ''
+                if (row.routeParam.indexOf('=') > -1) {
+                    id = row.routeParam.split('=')[1]
+                } else {
+                    id = row.routeParam
+                }
+                this.rId = id
+                this.dialogDetialVisible = true
+                this.baseRequest('userRead', { id: row.id }).then(res => {
+                    // this.getReadSize()
+                    // this.getDataList()
+                    this.$message({
+                        message: '阅读成功',
+                        type: 'success'
+                    })
+                    this.initData()
+                }).catch(() => {
+                })
+            } else if (row.readType == 4) {
+                this.$router.push(row.routeUrl)
+            } else {
+                this.baseRequest('userRead', { id: row.id }).then(res => {
+                    // this.getReadSize()
+                    // this.getDataList()
+                    this.$message({
+                        message: '阅读成功',
+                        type: 'success'
+                    })
+                    this.initData()
+                }).catch(() => {
+                })
+            }
+        },
+        morePc: function() {
+            localStorage.removeItem('Navbar')
+            this.$nextTick(() => {
+                localStorage.setItem('Navbar', JSON.stringify(this.selectItem))
+                this.$router.push(this.selectUrl)
+                myBus.$emit('menuChild1', { ...this.selectItem })
+            })
+            // this.$router.push(this.selectUrl)
+        // if (this.morePsRouter) {
+        // 	this.$router.push(this.morePsRouter)
+        // }
+        },
+
+        baseRequest(opUrl, postData) {
+            return this.$channel.globleRequest('WorkPanelController', opUrl, postData, 'project')
+        }
+    }
+}
+</script>
+
+<style lang="scss">
+.myInfo {
+	.el-table{
+		border-bottom: 1px solid #E6E6E6;
+		th,td{
+			border-bottom: none;
+		}
+	}
+	.el-icon{
+		color: green;
+	}
+    .taskType {
+			.isborder{
+				box-sizing:border-box;
+				-webkit-box-sizing:border-box;
+				border-bottom: 3px solid #4A8139;
+			}
+        border-top: 1px solid rgba(230, 230, 230, 1);
+        height: 40px;
+        margin-left: 0.39vw;
+			padding-top: 10px;
+        .task {
+            display: inline-flex;
+            align-items: center;
+            margin-left: 0.851vw;
+            cursor: pointer;
+            white-space: nowrap;
+            .taskName {
+                color: #333333;
+                font-size: 14px;
+            }
+            .selectTaskName {
+							color: #4A8139;
+							font-size: 14px;
+            }
+            .taskQuan {
+                color: #f4b649;
+                font-size: 14px;
+                margin-left: 3px;
+            }
+        }
+        .taskName:hover {
+            color: rgba(36, 36, 100, 0.7) !important;
+        }
+    }
+    .table-page {
+        display: flex !important;
+        align-items: center !important;
+        justify-content: space-between !important;
+        padding: 5px 20px;
+        .selectAll {
+            color: rgba(244, 83, 32, 1);
+            display: flex;
+            align-items: center;
+            font-size: 12px;
+            cursor: pointer;
+        }
+        .iconRight {
+            margin-left: 2px;
+        }
+        .unSelect {
+            color: rgba(153, 153, 153, 1);
+            display: flex;
+            align-items: center;
+            font-size: 12px;
+            cursor: pointer;
+        }
+        .unSelect:hover {
+            color: rgba(244, 83, 32, 1);
+        }
+    }
+    .el-pagination__total {
+        display: none !important;
+    }
+    .el-pager li.active {
+        color: #F8BF23!important;
+        background: rgba(245, 245, 245, 0.5) !important;
+    }
+    .el-table__empty-block {
+        min-height: 185px !important;
+    }
+    .el-table__body-wrapper {
+        min-height: 185px !important;
+        &::-webkit-scrollbar{
+            display: none !important;
+        }
+    }
+    .el-collapse-item__content{
+        height: 331px;
+    }
+    .el-table:before{
+        height: 0px !important;
+    }
+    .el-collapse-item__arrow {
+        display: none !important;
+    }
+    .new-ref {
+        right: 10px !important;
+    }
+    .el-button--warning {
+        background-color: rgba(70, 122, 235, 0) !important;
+        color: rgba(70, 122, 235, 1) !important ;
+        border: none !important;
+    }
+    .el-button--mini{
+        padding: 5px 15px !important;
+    }
+  .cell {
+    display: -webkit-box;
+    -webkit-box-orient: vertical;
+    overflow: hidden;
+    -webkit-line-clamp: 1;
+    text-overflow: ellipsis;
+  }
+}
+</style>
+<style></style>

+ 458 - 0
src/views/workbench/components/myKey.vue

@@ -0,0 +1,458 @@
+<template>
+  <div style="background-color: white">
+    <el-collapse value="1">
+      <el-collapse-item title="我的常用菜单" name="1">
+        <template slot="title">
+          <span>我的常用菜单</span>
+          <i
+            class="panel-icon el-icon-plus"
+            @click.stop="handleEdit()"
+          />
+          <!--<el-button icon="el-icon-refresh" circle size="small" @click.stop="refresh" />-->
+          <!--<el-button icon="el-icon-more" circle size="small" @click.stop="more" />-->
+
+          <!--          <i class="panel-icon el-icon-refresh" @click.stop="refresh" />-->
+          <!--                      <i class="panel-icon el-icon-more" @click.stop="moreInfo()" />-->
+        </template>
+        <el-row class="comp-box">
+          <el-col :span="24" style="margin-left: 1.2rem;">
+            <el-button
+              v-for="item in buttonList"
+              style="background-color: rgb(78 126 191);color: white;width: 9rem;margin:2px 0 0 4px"
+              @click.stop="jumpInfo(item.url)"
+            ><svg-icon
+              style="margin: 0 4px 0 -4px;"
+              :icon-class="item.icon"
+            />{{ item.name }}</el-button>
+          </el-col>
+        </el-row>
+      </el-collapse-item>
+    </el-collapse>
+    <el-dialog
+      :title="dialogTitle"
+      :visible.sync="dialogVisible"
+      width="75%"
+      top="50px"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      @open="dlgOpen"
+    >
+      <el-form
+        ref="form"
+        :model="form"
+        style="width: 100%;padding: 5px"
+        :rules="rules"
+      >
+        <el-row>
+          <el-col style="padding-bottom: 10px">
+            <span class="card_title">选择菜单</span>
+            <el-card
+              shadow="always"
+              style="padding: 15px 5px 5px 15px"
+            >
+              <el-tree
+                ref="tree"
+                :data="TreeData"
+                node-key="id"
+                show-checkbox
+                :indent="indent"
+                accordion
+                default-expand-all
+                @check="handleNodeClick"
+              >
+                <span
+                  slot-scope="{ node, data }"
+                  class="custom-tree-node"
+                >
+                  <span>
+                    <i
+                      v-if="data.level == 0"
+                      class="el-icon-s-home"
+                    />
+                    <i
+                      v-if="data.level == 1"
+                      class="el-icon-menu"
+                    />
+                    <i
+                      v-if="data.level == 2"
+                      class="el-icon-link"
+                    />
+                    {{ node.label }}
+                  </span>
+                </span>
+              </el-tree>
+            </el-card>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer">
+        <el-button @click="dialogVisible = false">取 消</el-button>
+        <el-button
+          type="primary"
+          @click="confirmSubmit()"
+        >确 定</el-button>
+      </div>
+    </el-dialog>
+    <!--    <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="70%" top="50px">-->
+    <!--      <bug-detail :bug-id="bugId" :type="type" @handleAuditClose="handleClose" @handleAuditCommit="handleCommit" />-->
+    <!--    </el-dialog>-->
+    <!--    <el-dialog :title="dialogTitle" :visible.sync="dialogVerification" width="70%" top="50px">-->
+    <!--      <bug-verification-detail :bug-id="bugId" :type="type" @handleAuditClose="verificationClose" @handleAuditCommit="verificationCommit" />-->
+    <!--    </el-dialog>-->
+  </div>
+</template>
+<script>
+// import channel from '../../../static/utils/channel'
+import Constant from '@/static/utils/constant'
+
+// import BasePanel from '../base/baseListPanel'
+
+export default {
+    name: 'MyKey',
+    components: {},
+    // extends: BasePanel,
+    data() {
+        return {
+            // 继承类基本参数
+            moreRouter: '/flo/pendingAudit',
+            baseUrl: 'BugLibraryController',
+            // 通用字典项
+            REPAIR_STATUS: Constant.REPAIR_STATUS,
+            AUDIT_TYPE: [],
+            dc_map: {},
+            UserData: [],
+            UserMap: {},
+            // 弹框相关
+            bugId: '',
+            type: '',
+            dialogVisible: false,
+            dialogVerification: false,
+            dialogTitle: '',
+            isAdd: true,
+            form: {
+                id: '',
+                userId: this.$common.currUser().id,
+                checks: []
+            },
+            rules: {},
+            // Tree Sets
+            TreeData: [],
+            indent: 32,
+            buttonList: []
+        }
+    },
+    mounted() {
+        // this.generateDcMap();
+        // this.initUser().then(() => {
+        //     this.initPermission();
+        //     this.getData();
+        // });
+    },
+    methods: {
+        moreInfo: function() {
+            if (this.moreRouter) {
+                this.$router.push(this.moreRouter)
+            }
+        },
+        jumpInfo: function(ral) {
+            this.$router.push(ral)
+        },
+        /* 编辑*/
+        handleEdit: function(val) {
+            console.log(123)
+            this.dialogVisible = true
+            this.dialogTitle = '编辑'
+        },
+        handleNodeClick: function(_node, _checkData) {
+            // console.log(this.$refs.tree.getCheckedKeys())
+            // console.log(this.$refs.tree.getHalfCheckedKeys())
+            if (_checkData) {
+                this.form.checks = _checkData.checkedKeys
+                this.form.halfchecks = _checkData.halfCheckedKeys
+            }
+        },
+        handleCommit: function() {
+            this.getData()
+            this.bugId = ''
+            this.dialogVisible = false
+        },
+        handleClose: function() {
+            this.dialogVisible = false
+        },
+        /* 操作相关*/
+        refresh: function() {
+            this.getData()
+        },
+        initPermission: function() {
+            const _this = this
+            this.baseRequest('listPermissionAll', {}).then(res => {
+                if (res.data) {
+                    res.data.nodes.forEach(function(item) {
+                        if (item.type === 1) {
+                            const json = {
+                                label: item.text,
+                                icon: item.icon,
+                                url: item.url,
+                                id: item.id,
+                                children: item.nodes
+                            }
+                            _this.washMenuRaw(json)
+                        }
+                    })
+                }
+            })
+        },
+        washMenuRaw: function(rawData) {
+            const _this = this
+            const children = []
+            if (rawData.children.length > 0) {
+                const childrens = []
+                rawData.children.forEach(function(item) {
+                    if (item.type === 1) {
+                        const node = {
+                            label: item.text,
+                            icon: item.icon,
+                            url: item.url,
+                            id: item.id,
+                            children: item.nodes
+                        }
+                        if (node.children.length > 0) {
+                            node.children = _this.getChildren(node)
+                        }
+                        children.push(node)
+                    }
+                })
+            }
+            rawData.children = children
+            _this.TreeData.push(rawData)
+            this.TreeData.sort(function(a, b) {
+                return a.order - b.order
+            })
+        },
+        confirmSubmit: function() {
+            const _this = this
+
+            this.$refs.form.validate(valid => {
+                const postData = {
+                    userId: _this.form.userId,
+                    id: _this.form.id,
+                    menuId: JSON.stringify(_this.form.checks)
+                }
+                this.baseRequest('edit', postData).then(res => {
+                    _this.dialogVisible = false
+                    _this.getData()
+                })
+            })
+        },
+        getChildren: function(rawData) {
+            const _this = this
+            const children = []
+            if (rawData.children.length > 0) {
+                rawData.children.forEach(function(item) {
+                    if (item.type === 1) {
+                        const node = {
+                            label: item.text,
+                            icon: item.icon,
+                            url: item.url,
+                            id: item.id,
+                            children: item.nodes
+                        }
+                        children.push(node)
+                    }
+                })
+            }
+            return children
+        },
+        dlgOpen: function() {
+            const _this = this
+
+            const postData = {
+                userId: _this.$common.currUser().id
+            }
+            this.baseRequest('getMyMenu', postData)
+                .then(res => {
+                    if (res.data) {
+                        _this.form.id = res.data.id
+                        _this.form.checks = res.data.menuId
+                            ? _this.$common.castEval(res.data.menuId)
+                            : []
+
+                        _this.$refs.tree.setCheckedKeys(_this.form.checks)
+                    }
+                })
+                .catch(() => {})
+        },
+        getData: function() {
+            const _this = this
+            _this.AllData = []
+            _this.loading = true
+            const postData = {
+                userId: _this.$common.currUser()
+                    ? _this.$common.currUser().id
+                    : ''
+            }
+            this.baseRequest('listAll', postData)
+                .then(res => {
+                    if (res.data) {
+                        console.log(res.data)
+                        _this.washMenuRaws(
+                            res.data.allPermission,
+                            res.data.myPermission
+                        )
+                    }
+                    _this.loading = false
+                })
+                .catch(() => {})
+        },
+        washMenuRaws: function(rawData, myPermission) {
+            const _this = this
+            _this.buttonList = []
+            rawData.forEach(function(item) {
+                if (item.pid === '1' && item.type === 1) {
+                    const node = {
+                        id: item.id,
+                        name: item.name,
+                        icon: item.icon,
+                        pid: item.pid,
+                        url: item.url
+                    }
+                    _this.getChildrens(myPermission, node)
+                }
+            })
+        },
+        getChildrens: function(rawData, node) {
+            const _this = this
+            rawData.forEach(function(item) {
+                if (item.pid === node.id && item.type === 1) {
+                    const c = {
+                        id: item.id,
+                        name: item.name,
+                        icon: item.icon,
+                        url: '/' + node.url + '/' + item.url
+                    }
+                    _this.buttonList.push(c)
+                }
+            })
+            console.log('buttonList')
+            console.log(_this.buttonList)
+        },
+        verificationCommit: function() {
+            this.getData()
+            this.dialogVerification = false
+        },
+        verificationClose: function() {
+            this.dialogVerification = false
+        },
+        /* 编辑*/
+        handleAudit: function(val) {
+            this.isAdd = false
+            this.dialogVisible = true
+            this.dialogTitle = 'BUG详情'
+            this.bugId = val.id
+        },
+        /* 编辑*/
+        verificationAudit: function(val) {
+            this.isAdd = false
+            this.dialogVerification = true
+            this.dialogTitle = 'BUG详情'
+            this.bugId = val.id
+        },
+        /* 辅助相关*/
+        initUser: function() {
+            const _this = this
+            this.UserData = []
+            this.UserMap = {}
+            return this.globleRequest(
+                'SysUserExtendController',
+                'listAll',
+                '',
+                'Pending Audit'
+            )
+                .then(res => {
+                    if (res.data) {
+                        res.data.forEach(function(item) {
+                            const json = {
+                                label: item.truename,
+                                value: item.id
+                            }
+                            _this.UserData.push(json)
+                            _this.UserMap[json.value] = json.label
+                        })
+                    }
+                })
+                .catch(() => {})
+        },
+        generateDcMap: function() {
+            this.AUDIT_TYPE = []
+            for (const key in Constant.AUDIT_TYPE) {
+                const json = {
+                    label: Constant.AUDIT_TYPE[key].name,
+                    value: Constant.AUDIT_TYPE[key].key
+                }
+                this.AUDIT_TYPE.push(json)
+            }
+            this.dc_map['dc_flow_status'] = this.$common.transDcMap(
+                Constant.dc_flow_status
+            )
+            this.dc_map['AUDIT_TYPE'] = this.$common.transDcMap(
+                this.AUDIT_TYPE
+            )
+        },
+        baseRequest: function(opUrl, postData) {
+            return this.$channel.baseRequest(
+                'MyMenuController',
+                opUrl,
+                postData,
+                'project'
+            )
+        }
+    }
+}
+</script>
+
+<style scoped>
+.comp-box.el-row {
+    padding-bottom: 20px;
+}
+.el-collapse-item >>> .el-collapse-item__header {
+    background-color: #fcfcfc;
+    color: black;
+}
+.el-button--default {
+    color: #13ce66;
+}
+</style>
+<style>
+/*.el-table th, .el-table td {*/
+/*padding: 5px;*/
+/*}*/
+/*.el-collapse{*/
+/*box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);*/
+/*border-radius: 5px;*/
+/*}*/
+/*.el-collapse-item__header{*/
+/*position: relative;*/
+/*padding: 0 15px;*/
+/*font-size: 16px;*/
+/*color: white;*/
+/*background-color: #4e7ebf;*/
+/*border-bottom: 1px solid #f3f3f3;*/
+/*}*/
+/*.el-collapse-item__header:hover{*/
+/*background-color: #6B6B73;*/
+/*}*/
+/*.el-collapse-item__header .el-button:nth-child(1){*/
+/*right: 55px*/
+/*}*/
+/*.el-collapse-item__header .el-button:nth-child(2){*/
+/*right: 95px*/
+/*}*/
+/*.el-collapse-item__header .el-button{*/
+/*position: absolute;*/
+/*float: right;*/
+/*padding-right: 10px;*/
+/*}*/
+/*.el-collapse-item__content {*/
+/*padding-bottom: 0;*/
+/*}*/
+</style>

+ 484 - 0
src/views/workbench/components/myKey_new.vue

@@ -0,0 +1,484 @@
+<template>
+  <div class="myKey">
+    <div
+      v-for="(item, index) in buttonList"
+      :key="index"
+      class="KeyitemBox"
+    >
+      <el-button
+        style="background-color: rgba(123, 123, 248, 1);width: 45px;height: 45px;display: flex;align-items: center;justify-content: center;border-radius: 6px;"
+        @click.stop="jumpInfo(item.url)"
+      >
+        <svg-icon :icon-class="item.icon" />
+      </el-button>
+      <span class="keyName">{{ item.name }}</span>
+    </div>
+    <div class="KeyitemBox2">
+      <el-button
+        style="background-color: rgba(240, 240, 240, 1);width:45px;height: 45px;display: flex;align-items: center;justify-content: center;border-radius: 6px;
+                    border: 3px solid #E6E6E6;"
+        @click.stop="handleEdit()"
+      >
+        <img :src="add" alt="">
+      </el-button>
+    </div>
+    <el-dialog
+      :title="dialogTitle"
+      :visible.sync="dialogVisible"
+      width="75%"
+      top="50px"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      append-to-body
+      @open="dlgOpen"
+    >
+      <el-form
+        ref="form"
+        :model="form"
+        style="width: 100%;padding: 5px"
+        :rules="rules"
+      >
+        <el-row>
+          <el-col style="padding-bottom: 10px">
+            <span class="card_title">选择菜单</span>
+            <el-card
+              shadow="always"
+              style="padding: 15px 5px 5px 15px"
+            >
+              <el-tree
+                ref="tree"
+                :data="TreeData"
+                node-key="id"
+                show-checkbox
+                :indent="indent"
+                accordion
+                default-expand-all
+                @check="handleNodeClick"
+              >
+                <span
+                  slot-scope="{ node, data }"
+                  class="custom-tree-node"
+                >
+                  <span>
+                    <i
+                      v-if="data.level == 0"
+                      class="el-icon-s-home"
+                    />
+                    <i
+                      v-if="data.level == 1"
+                      class="el-icon-menu"
+                    />
+                    <i
+                      v-if="data.level == 2"
+                      class="el-icon-link"
+                    />
+                    {{ node.label }}
+                  </span>
+                </span>
+              </el-tree>
+            </el-card>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer">
+        <el-button @click="dialogVisible = false">取 消</el-button>
+        <el-button
+          type="primary"
+          @click="confirmSubmit()"
+        >确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+<script>
+// import channel from '../../../static/utils/channel'
+import Constant from '@/static/utils/constant'
+// import BasePanel from '../base/baseListPanel'
+export default {
+    name: 'MyKey',
+    components: {},
+    // extends: BasePanel,
+    data() {
+        return {
+            add: require('../../../static/images/add.svg'),
+            // 继承类基本参数
+            moreRouter: '/flo/pendingAudit',
+            baseUrl: 'BugLibraryController',
+            // 通用字典项
+            REPAIR_STATUS: Constant.REPAIR_STATUS,
+            AUDIT_TYPE: [],
+            dc_map: {},
+            UserData: [],
+            UserMap: {},
+            // 弹框相关
+            bugId: '',
+            type: '',
+            dialogVisible: false,
+            dialogVerification: false,
+            dialogTitle: '',
+            isAdd: true,
+            form: {
+                id: '',
+                userId: this.$common.currUser().id,
+                checks: []
+            },
+            rules: {},
+            // Tree Sets
+            TreeData: [],
+            indent: 32,
+            buttonList: []
+        }
+    },
+    mounted() {
+        this.generateDcMap()
+        this.initUser().then(() => {
+            this.initPermission()
+            this.getData()
+        })
+    },
+    methods: {
+        moreInfo: function() {
+            if (this.moreRouter) {
+                this.$router.push(this.moreRouter)
+            }
+        },
+        jumpInfo: function(ral) {
+            this.$router.push(ral)
+        },
+        /* 编辑*/
+        handleEdit: function(val) {
+            this.dialogVisible = true
+            this.dialogTitle = '编辑'
+        },
+        handleNodeClick: function(_node, _checkData) {
+            // console.log(this.$refs.tree.getCheckedKeys())
+            // console.log(this.$refs.tree.getHalfCheckedKeys())
+            if (_checkData) {
+                this.form.checks = _checkData.checkedKeys
+                this.form.halfchecks = _checkData.halfCheckedKeys
+            }
+        },
+        handleCommit: function() {
+            this.getData()
+            this.bugId = ''
+            this.dialogVisible = false
+        },
+        handleClose: function() {
+            this.dialogVisible = false
+        },
+        /* 操作相关*/
+        refresh: function() {
+            this.getData()
+        },
+        initPermission: function() {
+            const _this = this
+            this.baseRequest('listPermissionAll', {}).then(res => {
+                if (res.data) {
+                    res.data.nodes.forEach(function(item) {
+                        if (item.type === 1) {
+                            const json = {
+                                label: item.text,
+                                icon: item.icon,
+                                url: item.url,
+                                id: item.id,
+                                children: item.nodes
+                            }
+                            _this.washMenuRaw(json)
+                        }
+                    })
+                }
+            })
+        },
+        washMenuRaw: function(rawData) {
+            const _this = this
+            const children = []
+            if (rawData.children.length > 0) {
+                const childrens = []
+                rawData.children.forEach(function(item) {
+                    if (item.type === 1) {
+                        const node = {
+                            label: item.text,
+                            icon: item.icon,
+                            url: item.url,
+                            id: item.id,
+                            children: item.nodes
+                        }
+                        if (node.children.length > 0) {
+                            node.children = _this.getChildren(node)
+                        }
+                        children.push(node)
+                    }
+                })
+            }
+            rawData.children = children
+            _this.TreeData.push(rawData)
+            this.TreeData.sort(function(a, b) {
+                return a.order - b.order
+            })
+        },
+        confirmSubmit: function() {
+            const _this = this
+
+            this.$refs.form.validate(valid => {
+                const postData = {
+                    userId: _this.form.userId,
+                    id: _this.form.id,
+                    menuId: JSON.stringify(_this.form.checks)
+                }
+                this.baseRequest('edit', postData).then(res => {
+                    _this.dialogVisible = false
+                    _this.getData()
+                })
+            })
+        },
+        getChildren: function(rawData) {
+            const _this = this
+            const children = []
+            if (rawData.children.length > 0) {
+                rawData.children.forEach(function(item) {
+                    if (item.type === 1) {
+                        const node = {
+                            label: item.text,
+                            icon: item.icon,
+                            url: item.url,
+                            id: item.id,
+                            children: item.nodes
+                        }
+                        children.push(node)
+                    }
+                })
+            }
+            return children
+        },
+        dlgOpen: function() {
+            const _this = this
+
+            const postData = {
+                userId: _this.$common.currUser().id
+            }
+            this.baseRequest('getMyMenu', postData)
+                .then(res => {
+                    if (res.data) {
+                        _this.form.id = res.data.id
+                        _this.form.checks = res.data.menuId
+                            ? _this.$common.castEval(res.data.menuId)
+                            : []
+
+                        _this.$refs.tree.setCheckedKeys(_this.form.checks)
+                    }
+                })
+                .catch(() => {})
+        },
+        getData: function() {
+            const _this = this
+            _this.AllData = []
+            _this.loading = true
+            const postData = {
+                userId: _this.$common.currUser()
+                    ? _this.$common.currUser().id
+                    : ''
+            }
+            this.baseRequest('listAll', postData)
+                .then(res => {
+                    if (res.data) {
+                        console.log(res.data)
+                        _this.washMenuRaws(
+                            res.data.allPermission,
+                            res.data.myPermission
+                        )
+                    }
+                    _this.loading = false
+                })
+                .catch(() => {})
+        },
+        washMenuRaws: function(rawData, myPermission) {
+            const _this = this
+            _this.buttonList = []
+            rawData.forEach(function(item) {
+                if (item.pid === '1' && item.type === 1) {
+                    const node = {
+                        id: item.id,
+                        name: item.name,
+                        icon: item.icon,
+                        pid: item.pid,
+                        url: item.url
+                    }
+                    _this.getChildrens(myPermission, node)
+                }
+            })
+        },
+        getChildrens: function(rawData, node) {
+            const _this = this
+            rawData.forEach(function(item) {
+                if (item.pid === node.id && item.type === 1) {
+                    const c = {
+                        id: item.id,
+                        name: item.name,
+                        icon: item.icon,
+                        url: '/' + node.url + '/' + item.url
+                    }
+                    _this.buttonList.push(c)
+                }
+            })
+            console.log('buttonList')
+            console.log(_this.buttonList)
+        },
+        verificationCommit: function() {
+            this.getData()
+            this.dialogVerification = false
+        },
+        verificationClose: function() {
+            this.dialogVerification = false
+        },
+        /* 编辑*/
+        handleAudit: function(val) {
+            this.isAdd = false
+            this.dialogVisible = true
+            this.dialogTitle = 'BUG详情'
+            this.bugId = val.id
+        },
+        /* 编辑*/
+        verificationAudit: function(val) {
+            this.isAdd = false
+            this.dialogVerification = true
+            this.dialogTitle = 'BUG详情'
+            this.bugId = val.id
+        },
+        /* 辅助相关*/
+        initUser: function() {
+            const _this = this
+            this.UserData = []
+            this.UserMap = {}
+            return this.globleRequest(
+                'SysUserExtendController',
+                'listAll',
+                '',
+                'Pending Audit'
+            )
+                .then(res => {
+                    if (res.data) {
+                        res.data.forEach(function(item) {
+                            const json = {
+                                label: item.truename,
+                                value: item.id
+                            }
+                            _this.UserData.push(json)
+                            _this.UserMap[json.value] = json.label
+                        })
+                    }
+                })
+                .catch(() => {})
+        },
+        generateDcMap: function() {
+            this.AUDIT_TYPE = []
+            for (const key in Constant.AUDIT_TYPE) {
+                const json = {
+                    label: Constant.AUDIT_TYPE[key].name,
+                    value: Constant.AUDIT_TYPE[key].key
+                }
+                this.AUDIT_TYPE.push(json)
+            }
+            this.dc_map['dc_flow_status'] = this.$common.transDcMap(
+                Constant.dc_flow_status
+            )
+            this.dc_map['AUDIT_TYPE'] = this.$common.transDcMap(
+                this.AUDIT_TYPE
+            )
+        },
+        baseRequest: function(opUrl, postData) {
+            return this.$channel.baseRequest(
+                'MyMenuController',
+                opUrl,
+                postData,
+                'project'
+            )
+        }
+    }
+}
+</script>
+<style lang="scss">
+.myKey {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+    position: relative !important;
+    // background: rgba(123, 123, 248, 1);
+    // top: -472px;
+    left: 0%;
+    z-index: 10;
+    .KeyitemBox {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+        // margin: 0 0 5px 0;
+        width: 100px;
+        height: 80px;
+        cursor: pointer;
+        .keyName {
+            color: rgba(51, 51, 51, 1);
+            font-size: 14px;
+            margin: 2px 0 5px 0;
+        }
+        .elBtn {
+            display: flex;
+            flex-direction: column;
+            border-radius: 20px;
+        }
+    }
+    .KeyitemBox2 {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+        // margin: 0 0 5px 0;
+        width: 100px;
+        height: 80px;
+        cursor: pointer;
+        .keyName {
+            color: rgba(51, 51, 51, 1);
+            font-size: 14px;
+            margin: 2px 0 5px 0;
+        }
+        .elBtn {
+            display: flex;
+            flex-direction: column;
+            border-radius: 20px;
+        }
+    }
+    .myIcon {
+        color: white;
+    }
+    .svg-icon {
+        width: 2.5em !important;
+        height: 1.5em !important;
+    }
+    .KeyitemBox:hover {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+        // margin: 0 0 5px 0;
+
+        cursor: pointer;
+        .el-button {
+            width: 55px !important;
+            height: 55px !important;
+            transition: 0.2s;
+        }
+    }
+    .KeyitemBox2:hover {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+        cursor: pointer;
+        .el-button {
+            width: 55px !important;
+            height: 55px !important;
+            transition: 0.2s;
+        }
+    }
+}
+</style>

+ 714 - 0
src/views/workbench/components/myMenu.vue

@@ -0,0 +1,714 @@
+<template>
+  <div class="dataSharing1 " style="width: 100%;">
+    <el-collapse value="1">
+      <el-collapse-item name="1" title="我的组件">
+        <template slot="title">
+          <span class="myLine">我的组件</span>
+          <img :src="add" alt="" class="panel-icon el-icon-refresh new-ref" @click.stop="handleEdit">
+        </template>
+        <div>
+          <div class="myKey">
+            <!-- <div class="KeyitemBox"
+                          v-for="(item, index) in buttonList"
+                          :key="index" >
+                          <el-button style="background-color: rgba(123, 123, 248, 1);width: 45px;height: 45px; display: flex;align-items: center;justify-content: center;border-radius: 6px;"
+                              @click.stop="jumpInfo(item.url)" >
+                              <svg-icon :icon-class="item.icon" />
+                          </el-button>
+                          <span class="keyName">{{ item.name }}</span>
+                      </div> -->
+            <el-row
+              style="margin-left: 5px;margin-top: 5px;width: 100%;overflow-y:scroll;height: 739px;overflow-y: scroll;"
+              class="myRow"
+            >
+              <el-col
+                v-for="(item, index) in buttonList"
+                :key="index"
+                :span="8"
+                style="margin-top: 15px;"
+              >
+                <el-button
+                  style="margin: 0 auto;background-color: #264987;width: 45px;height: 45px; display: flex;align-items: center;justify-content: center;border-radius: 6px;"
+                  @click.stop="jumpInfo(item)"
+                >
+
+                  <!--									{{item.icon}}-->
+                  <svg-icon :icon-class="item.icon" style="color: white" />
+                </el-button>
+                <div class="keyName" style="text-align: center">{{ item.name }}</div>
+              </el-col>
+            </el-row>
+
+            <!-- <div class="KeyitemBox2">
+                          <el-button style="background-color: rgba(240, 240, 240, 1);width:45px;height: 45px;display: flex;align-items: center;justify-content: center;border-radius: 6px;
+                                  border: 3px solid #E6E6E6;" @click.stop="handleEdit()" >
+                              <img :src="add" alt="" />
+                          </el-button>
+                      </div> -->
+            <el-dialog
+              :close-on-click-modal="false"
+              :close-on-press-escape="false"
+              :title="dialogTitle"
+              :visible.sync="dialogVisible"
+              append-to-body
+              top="50px"
+              width="75%"
+              @open="dlgOpen"
+            >
+              <el-form ref="form" :model="form" :rules="rules" style="width: 100%;padding: 5px">
+                <el-row>
+                  <el-col style="padding-bottom: 10px">
+                    <span class="card_title">选择菜单</span>
+                    <el-card shadow="always" style="padding: 15px 5px 5px 15px">
+                      <el-tree
+                        ref="tree"
+                        :data="TreeData"
+                        :indent="indent"
+                        accordion
+                        default-expand-all
+                        node-key="id"
+                        show-checkbox
+                        @check="handleNodeClick"
+                      >
+                        <span slot-scope="{ node, data }" class="custom-tree-node">
+                          <span>
+                            <i v-if="data.level == 0" class="el-icon-s-home" />
+                            <i v-if="data.level == 1" class="el-icon-menu" />
+                            <i v-if="data.level == 2" class="el-icon-link" />
+                            {{ node.label }}
+                          </span>
+                        </span>
+                      </el-tree>
+                    </el-card>
+                  </el-col>
+                </el-row>
+              </el-form>
+              <div slot="footer">
+                <el-button @click="dialogVisible = false">取 消</el-button>
+                <el-button type="primary" @click="confirmSubmit()">确 定</el-button>
+              </div>
+            </el-dialog>
+          </div>
+        </div>
+
+      </el-collapse-item>
+    </el-collapse>
+  </div>
+</template>
+<script>
+import Constant from '../../../static/utils/constant'
+import BasePanel from '@/views/base/baseListPanel.vue'
+import myBus from '@/static/utils/myBus'
+
+export default {
+    name: 'MyKey',
+
+    extends: BasePanel,
+    data() {
+        return {
+            add: require('../../../static/images/add.svg'),
+            // 继承类基本参数
+            moreRouter: '/flo/pendingAudit',
+            baseUrl: 'BugLibraryController',
+            // 通用字典项
+            REPAIR_STATUS: Constant.REPAIR_STATUS,
+            AUDIT_TYPE: [],
+            dc_map: {},
+            UserData: [],
+            UserMap: {},
+            // 弹框相关
+            bugId: '',
+            type: '',
+            dialogVisible: false,
+            dialogVerification: false,
+            dialogTitle: '',
+            isAdd: true,
+            form: {
+                id: '',
+                userId: this.$common.currUser().id,
+                checks: []
+            },
+            rules: {},
+            // Tree Sets
+            TreeData: [],
+            indent: 32,
+            buttonList: []
+        }
+    },
+    mounted() {
+        this.generateDcMap()
+        // this.initUser().then(() => {
+        this.initPermission()
+        this.getData()
+        // });
+    },
+    methods: {
+        moreInfo: function() {
+            if (this.moreRouter) {
+                this.$router.push(this.moreRouter)
+            }
+        },
+        jumpInfo(ral) {
+            // this.$router.push(ral)
+            try {
+                this.baseRequest('listPermissionAll', {}).then(res => {
+                    if (res.data) {
+                        // console.log(res.data)
+                        const firstNode = res.data.nodes
+                        for (let i = 0; i < firstNode.length; i++) {
+                        // console.log(firstNode[i])
+                            for (let j = 0; j < firstNode[i].nodes.length; j++) {
+                                console.log(firstNode[i].nodes[j].text, ral.name)
+                                if (firstNode[i].nodes[j].text == ral.name) {
+                                    localStorage.setItem('Navbar', JSON.stringify(firstNode[i]))
+                                    // console.log('firstNode[i]', firstNode[i])
+                                    // console.log('ral.url', ral.url)
+                                    this.$router.push(ral.url)
+                                    myBus.$emit('menuChild1', { ...firstNode[i] })
+                                }
+                            }
+                        }
+                    }
+                })
+            } catch (e) {
+                console.log(e)
+            }
+        },
+        /* 编辑*/
+        handleEdit: function(val) {
+            this.dialogVisible = true
+            this.dialogTitle = '编辑'
+        },
+        handleNodeClick: function(_node, _checkData) {
+            // console.log(this.$refs.tree.getCheckedKeys())
+            // console.log(this.$refs.tree.getHalfCheckedKeys())
+            if (_checkData) {
+                this.form.checks = _checkData.checkedKeys
+                this.form.halfchecks = _checkData.halfCheckedKeys
+            }
+        },
+        handleCommit: function() {
+            this.getData()
+            this.bugId = ''
+            this.dialogVisible = false
+        },
+        handleClose: function() {
+            this.dialogVisible = false
+        },
+        /* 操作相关*/
+        refresh: function() {
+            this.getData()
+        },
+        initPermission: function() {
+            const _this = this
+            this.baseRequest('listPermissionAll', {}).then(res => {
+                if (res.data) {
+                    res.data.nodes.forEach(function(item) {
+                        if (item.type === 1) {
+                            const json = {
+                                label: item.text,
+                                icon: item.icon,
+                                url: item.url,
+                                id: item.id,
+                                children: item.nodes
+                            }
+                            _this.washMenuRaw(json)
+                        }
+                    })
+                }
+            })
+        },
+        washMenuRaw: function(rawData) {
+            const _this = this
+            const children = []
+            if (rawData.children.length > 0) {
+                const childrens = []
+                rawData.children.forEach(function(item) {
+                    if (item.type === 1) {
+                        const node = {
+                            label: item.text,
+                            icon: item.icon,
+                            url: item.url,
+                            id: item.id,
+                            children: item.nodes
+                        }
+                        if (node.children.length > 0) {
+                            node.children = _this.getChildren(node)
+                        }
+                        children.push(node)
+                    }
+                })
+            }
+            rawData.children = children
+            _this.TreeData.push(rawData)
+            this.TreeData.sort(function(a, b) {
+                return a.order - b.order
+            })
+        },
+        confirmSubmit: function() {
+            const _this = this
+
+            this.$refs.form.validate(valid => {
+                const postData = {
+                    userId: _this.form.userId,
+                    id: _this.form.id,
+                    menuId: JSON.stringify(_this.form.checks)
+                }
+                this.baseRequest('edit', postData).then(res => {
+                    _this.dialogVisible = false
+                    _this.getData()
+                })
+            })
+        },
+        getChildren: function(rawData) {
+            const _this = this
+            const children = []
+            if (rawData.children.length > 0) {
+                rawData.children.forEach(function(item) {
+                    if (item.type === 1) {
+                        const node = {
+                            label: item.text,
+                            icon: item.icon,
+                            url: item.url,
+                            id: item.id,
+                            children: item.nodes
+                        }
+                        children.push(node)
+                    }
+                })
+            }
+            return children
+        },
+        dlgOpen: function() {
+            const _this = this
+
+            const postData = {
+                userId: _this.$common.currUser().id
+            }
+            this.baseRequest('getMyMenu', postData)
+                .then(res => {
+                    if (res.data) {
+                        _this.form.id = res.data.id
+                        _this.form.checks = res.data.menuId
+                            ? _this.$common.castEval(res.data.menuId)
+                            : []
+
+                        _this.$refs.tree.setCheckedKeys(_this.form.checks)
+                    }
+                })
+                .catch(() => {
+                })
+        },
+        getData: function() {
+            const _this = this
+            _this.AllData = []
+            _this.loading = true
+            const postData = {
+                userId: _this.$common.currUser()
+                    ? _this.$common.currUser().id
+                    : ''
+            }
+            this.baseRequest('listAll', postData)
+                .then(res => {
+                    if (res.data) {
+                        console.log(res.data)
+                        _this.washMenuRaws(
+                            res.data.allPermission,
+                            res.data.myPermission
+                        )
+                    }
+                    _this.loading = false
+                })
+                .catch(() => {
+                })
+        },
+        washMenuRaws: function(rawData, myPermission) {
+            const _this = this
+            _this.buttonList = []
+            rawData.forEach(function(item) {
+                if (item.pid === '1' && item.type === 1) {
+                    const node = {
+                        id: item.id,
+                        name: item.name,
+                        icon: item.icon,
+                        pid: item.pid,
+                        url: item.url
+                    }
+                    _this.getChildrens(myPermission, node)
+                }
+            })
+        },
+        getChildrens: function(rawData, node) {
+            // console.log('----',rawData,'======',node)
+            const _this = this
+            rawData.forEach(function(item) {
+                if (item.pid === node.id && item.type === 1) {
+                    const c = {
+                        id: item.id,
+                        name: item.name,
+                        icon: item.icon,
+                        url: '/' + node.url + '/' + item.url
+                    }
+                    // console.log('node',node)
+                    // console.log('item',item)
+                    // console.log('c',c)
+                    _this.buttonList.push(c)
+                }
+            })
+            console.log('buttonList')
+            console.log(_this.buttonList)
+        },
+        verificationCommit: function() {
+            this.getData()
+            this.dialogVerification = false
+        },
+        verificationClose: function() {
+            this.dialogVerification = false
+        },
+        /* 编辑*/
+        handleAudit: function(val) {
+            this.isAdd = false
+            this.dialogVisible = true
+            this.dialogTitle = 'BUG详情'
+            this.bugId = val.id
+        },
+        /* 编辑*/
+        verificationAudit: function(val) {
+            this.isAdd = false
+            this.dialogVerification = true
+            this.dialogTitle = 'BUG详情'
+            this.bugId = val.id
+        },
+        /* 辅助相关*/
+        initUser: function() {
+            const _this = this
+            this.UserData = []
+            this.UserMap = {}
+            return this.globleRequest(
+                'SysUserExtendController',
+                'listAll',
+                '',
+                'Pending Audit'
+            )
+                .then(res => {
+                    if (res.data) {
+                        res.data.forEach(function(item) {
+                            const json = {
+                                label: item.truename,
+                                value: item.id
+                            }
+                            _this.UserData.push(json)
+                            _this.UserMap[json.value] = json.label
+                        })
+                    }
+                })
+                .catch(() => {
+                })
+        },
+        generateDcMap: function() {
+            this.AUDIT_TYPE = []
+            for (const key in Constant.AUDIT_TYPE) {
+                const json = {
+                    label: Constant.AUDIT_TYPE[key].name,
+                    value: Constant.AUDIT_TYPE[key].key
+                }
+                this.AUDIT_TYPE.push(json)
+            }
+            this.dc_map['dc_flow_status'] = this.$common.transDcMap(
+                Constant.dc_flow_status
+            )
+            this.dc_map['AUDIT_TYPE'] = this.$common.transDcMap(
+                this.AUDIT_TYPE
+            )
+        },
+        baseRequest: function(opUrl, postData) {
+            return this.$channel.baseRequest(
+                'MyMenuController',
+                opUrl,
+                postData,
+                'project'
+            )
+        }
+    }
+}
+</script>
+<style lang="scss">
+.myKey {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+    position: relative !important;
+    // background: rgba(123, 123, 248, 1);
+    // top: -472px;
+    left: 0%;
+    z-index: 10;
+
+    .KeyitemBox {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+        // margin: 0 0 5px 0;
+        width: 100px;
+        height: 80px;
+        cursor: pointer;
+
+        .keyName {
+            color: rgba(51, 51, 51, 1);
+            font-size: 14px;
+            margin: 2px 0 5px 0;
+        }
+
+        .elBtn {
+            display: flex;
+            flex-direction: column;
+            border-radius: 20px;
+        }
+    }
+
+    .KeyitemBox2 {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+        // margin: 0 0 5px 0;
+        width: 100px;
+        height: 80px;
+        cursor: pointer;
+
+        .keyName {
+            color: rgba(51, 51, 51, 1);
+            font-size: 14px;
+            margin: 2px 0 5px 0;
+        }
+
+        .elBtn {
+            display: flex;
+            flex-direction: column;
+            border-radius: 20px;
+        }
+    }
+
+    .myIcon {
+        color: white;
+    }
+
+    .svg-icon {
+        width: 2.5em !important;
+        height: 1.5em !important;
+    }
+
+    .KeyitemBox:hover {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+        // margin: 0 0 5px 0;
+
+        cursor: pointer;
+
+        .el-button {
+            width: 55px !important;
+            height: 55px !important;
+            transition: 0.2s;
+        }
+    }
+
+    .KeyitemBox2:hover {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+        cursor: pointer;
+
+        .el-button {
+            width: 55px !important;
+            height: 55px !important;
+            transition: 0.2s;
+        }
+    }
+}
+
+.dataSharing1 {
+    .el-icon {
+        color: green;
+    }
+
+    .content_class {
+        color: #333333;
+        font-weight: 400;
+    }
+
+    .state_class {
+        font-size: 14px;
+        font-weight: 400;
+    }
+
+    .color999999 {
+        color: #999999;
+        font-weight: 400;
+    }
+
+    .color4A8139 {
+        color: #4A8139
+    }
+
+    .color1D65C3 {
+        color: #1D65C3;
+    }
+
+    .colorCF000E {
+        color: #CF000E;
+    }
+
+    .color4A8139 {
+        color: #4A8139;
+    }
+
+    .el-carousel__container {
+        height: 325px;
+    }
+
+    .taskType {
+        display: flex;
+        align-items: center;
+        border-top: 1px solid rgba(230, 230, 230, 1);
+        height: 40px;
+        margin-left: 0.39vw;
+
+        .task {
+            display: inline-flex;
+            align-items: center;
+            margin-left: 0.851vw;
+            cursor: pointer;
+            white-space: nowrap;
+
+            .taskName {
+                color: rgba(153, 153, 153, 1);
+                font-size: 14px;
+            }
+
+            .selectTaskName {
+                color: rgba(36, 36, 100, 1);
+                font-size: 14px;
+            }
+
+            .taskQuan {
+                color: rgba(244, 83, 32, 1);
+                font-size: 14px;
+                margin-left: 3px;
+            }
+        }
+
+        .taskName:hover {
+            color: rgba(36, 36, 100, 0.7) !important;
+        }
+    }
+
+    .table-page {
+        display: flex !important;
+        align-items: center !important;
+        justify-content: space-between !important;
+        padding: 5px 20px;
+
+        .selectAll {
+            color: rgba(244, 83, 32, 1);
+            display: flex;
+            align-items: center;
+            font-size: 12px;
+            cursor: pointer;
+        }
+
+        .iconRight {
+            margin-left: 2px;
+        }
+
+        .unSelect {
+            color: rgba(153, 153, 153, 1);
+            display: flex;
+            align-items: center;
+            font-size: 12px;
+            cursor: pointer;
+        }
+
+        .unSelect:hover {
+            color: rgba(244, 83, 32, 1);
+        }
+    }
+
+    .el-pagination__total {
+        display: none !important;
+    }
+
+    .el-pager li.active {
+        color: #F8BF23 !important;
+        background: rgba(245, 245, 245, 0.5) !important;
+    }
+
+    .el-table__empty-block {
+        min-height: 324px !important;
+    }
+
+    .el-table__body-wrapper {
+        min-height: 324px !important;
+    }
+
+    .el-collapse-item__content {
+        height: 744px !important;
+    }
+
+    .el-table:before {
+        height: 0px !important;
+    }
+
+    .el-collapse-item__arrow {
+        display: none !important;
+    }
+
+    .new-ref {
+        right: 10px !important;
+    }
+
+    .el-button--warning {
+        background-color: rgba(70, 122, 235, 0) !important;
+        color: rgba(70, 122, 235, 1) !important;
+        border: none !important;
+    }
+
+    .el-table--scrollable-y .el-table__body-wrapper {
+        overflow-y: hidden;
+    }
+
+    .el-table {
+        td {
+            border: none;
+
+            border-bottom: 1px dashed #d1d1d1;
+        }
+    }
+
+    .elTable td.el-table__cell, .el-table th.el-table__cell.is-leaf {
+        border-bottom: none;
+    }
+
+    .elTable::before {
+        height: 0;
+    }
+    .myRow{
+        &::-webkit-scrollbar{
+            width: 5px;
+            height: 1px;
+        }
+        /*滚动条滑块*/
+        &::-webkit-scrollbar-thumb {
+            border-radius: 2px;
+            background: #0365F9;
+        }
+        /*滚动条轨道*/
+        &::-webkit-scrollbar-track {
+            background: rgba(155,188,255,0.2);
+        }
+    }
+}
+</style>

+ 113 - 0
src/views/workbench/components/tianqi.vue

@@ -0,0 +1,113 @@
+<template>
+
+
+    <div class="dataSharing"
+				 style="width: 100%;
+				 box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+				 border-radius: 5px;">
+      <iframe
+        scrolling="no"
+        src="https://tianqiapi.com/api.php?style=ti&skin=pitaya"
+        frameborder="0"
+        width="100%"
+        height="316"
+        allowtransparency="true"
+        style="width: 100%;margin-top: 10%"
+      />
+
+
+  </div>
+</template>
+<script>
+
+export default {
+    name: 'MyKey'
+
+}
+</script>
+<style lang="scss">
+.myKey {
+	display: flex;
+	flex-direction: column;
+	align-items: center;
+	justify-content: center;
+	position: relative !important;
+	// background: rgba(123, 123, 248, 1);
+	// top: -472px;
+	left: 0%;
+	z-index: 10;
+	.KeyitemBox {
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		// margin: 0 0 5px 0;
+		width: 100px;
+		height: 80px;
+		cursor: pointer;
+		.keyName {
+			color: rgba(51, 51, 51, 1);
+			font-size: 14px;
+			margin: 2px 0 5px 0;
+		}
+		.elBtn {
+			display: flex;
+			flex-direction: column;
+			border-radius: 20px;
+		}
+	}
+	.KeyitemBox2 {
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		// margin: 0 0 5px 0;
+		width: 100px;
+		height: 80px;
+		cursor: pointer;
+		.keyName {
+			color: rgba(51, 51, 51, 1);
+			font-size: 14px;
+			margin: 2px 0 5px 0;
+		}
+		.elBtn {
+			display: flex;
+			flex-direction: column;
+			border-radius: 20px;
+		}
+	}
+	.myIcon {
+		color: white;
+	}
+	.svg-icon {
+		width: 2.5em !important;
+		height: 1.5em !important;
+	}
+	.KeyitemBox:hover {
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		// margin: 0 0 5px 0;
+
+		cursor: pointer;
+		.el-button {
+			width: 55px !important;
+			height: 55px !important;
+			transition: 0.2s;
+		}
+	}
+	.KeyitemBox2:hover {
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		cursor: pointer;
+		.el-button {
+			width: 55px !important;
+			height: 55px !important;
+			transition: 0.2s;
+		}
+	}
+}
+</style>

BIN
src/views/workbench/image/Vector.png


Plik diff jest za duży
+ 5 - 0
src/views/workbench/image/allpage.svg


BIN
src/views/workbench/image/arrow.png


BIN
src/views/workbench/image/backHome.png


BIN
src/views/workbench/image/banner.png


BIN
src/views/workbench/image/base.png


BIN
src/views/workbench/image/bg.png


BIN
src/views/workbench/image/bgc.png


BIN
src/views/workbench/image/close.png


Plik diff jest za duży
+ 5 - 0
src/views/workbench/image/contact.svg


BIN
src/views/workbench/image/crowd1.png


BIN
src/views/workbench/image/crowd2.png


BIN
src/views/workbench/image/crowd3.png


BIN
src/views/workbench/image/default.png


BIN
src/views/workbench/image/foot.png


BIN
src/views/workbench/image/group.png


BIN
src/views/workbench/image/head.png


BIN
src/views/workbench/image/icon_address.png


BIN
src/views/workbench/image/icon_linkage1.png


BIN
src/views/workbench/image/icon_linkage2.png


BIN
src/views/workbench/image/icon_linkage3.png


BIN
src/views/workbench/image/icon_linkage4.png


BIN
src/views/workbench/image/icon_linkage5.png


BIN
src/views/workbench/image/icon_linkage6.png


BIN
src/views/workbench/image/icon_menu_1.png


BIN
src/views/workbench/image/icon_menu_10.png


BIN
src/views/workbench/image/icon_menu_11.png


BIN
src/views/workbench/image/icon_menu_2.png


BIN
src/views/workbench/image/icon_menu_3.png


BIN
src/views/workbench/image/icon_menu_4.png


BIN
src/views/workbench/image/icon_menu_5.png


BIN
src/views/workbench/image/icon_menu_6.png


BIN
src/views/workbench/image/icon_menu_7.png


BIN
src/views/workbench/image/icon_menu_8.png


BIN
src/views/workbench/image/icon_menu_9.png


BIN
src/views/workbench/image/icon_search.png


BIN
src/views/workbench/image/icon_search2.png


BIN
src/views/workbench/image/icon_time.png


BIN
src/views/workbench/image/ink-cloud.png


BIN
src/views/workbench/image/left.png


BIN
src/views/workbench/image/logo.png


BIN
src/views/workbench/image/logout.png


BIN
src/views/workbench/image/menu.png


BIN
src/views/workbench/image/menu_1.png


BIN
src/views/workbench/image/pic.png


BIN
src/views/workbench/image/pic2.png


BIN
src/views/workbench/image/right.png


BIN
src/views/workbench/image/setting.png


BIN
src/views/workbench/image/split.png


BIN
src/views/workbench/image/thingbg.png


+ 541 - 0
src/views/workbench/index.vue

@@ -0,0 +1,541 @@
+<template>
+  <div class="backstage_index">
+    <div class="header">
+      <div class="left">
+        <img alt="" src="./image/base.png" width="38">
+        <span>无锡市安居投资发展有限公司{{ $constant.BASE_URI==='http://2.22.195.139:8080/api'?'(测试环境)':'' }}</span>
+      </div>
+      <div class="right">
+        <menuDoor @menuSelect="menuSelect" />
+      </div>
+    </div>
+      <div class="my_menu"></div>
+    <div class="my_menu2">
+      <div style="width: 80%;">
+        <el-row :gutter="8" style="margin-right:0px">
+          <el-col
+            :lg="{ span: 12 }"
+            :md="{ span: 24 }"
+            :sm="{ span: 24 }"
+            :xl="{ span: 12 }"
+            :xs="{ span: 24 }"
+            class="panel-left"
+            style="padding-left: 4px"
+          >
+            <my-audit class="space-vertical" />
+          </el-col>
+          <el-col
+            :lg="{ span: 12 }"
+            :md="{ span: 24 }"
+            :sm="{ span: 24 }"
+            :xl="{ span: 12 }"
+            :xs="{ span: 24 }"
+            class="panel-right"
+          >
+            <my-info class="space-vertical" @fatherMethod="fatherMethod" />
+          </el-col>
+        </el-row>
+        <el-row :gutter="8" style="margin-right:0px">
+          <el-col
+            :lg="{ span: 12 }"
+            :md="{ span: 24 }"
+            :sm="{ span: 24 }"
+            :xl="{ span: 12 }"
+            :xs="{ span: 24 }"
+            class="panel-left"
+            style="padding-left: 4px"
+          >
+            <dataSharing class="space-vertical" />
+          </el-col>
+          <el-col
+            :lg="{ span: 12 }"
+            :md="{ span: 24 }"
+            :sm="{ span: 24 }"
+            :xl="{ span: 12 }"
+            :xs="{ span: 24 }"
+            class="panel-right"
+          >
+            <systemMsg :key="msgkey" class="space-vertical" />
+          </el-col>
+        </el-row>
+      </div>
+      <div style="margin-left: 5px;width:20%;">
+        <el-row :gutter="8">
+          <!--                    <el-col-->
+          <!--                        :lg="{ span: 24 }"-->
+          <!--                        :md="{ span: 24 }"-->
+          <!--                        :sm="{ span: 24 }"-->
+          <!--                        :span="24"-->
+          <!--                        :xl="{ span: 24 }"-->
+          <!--                        :xs="{ span: 24 }"-->
+          <!--                        class="panel-right"-->
+          <!--                        style="padding-left: 4px"-->
+          <!--                    >-->
+          <!--                        <div-->
+          <!--                            style="height: 358px; background: white;margin-bottom: 10px;border-radius: 4px 4px 4px 4px;"-->
+          <!--                        >-->
+          <!--                            <tianqi/>-->
+          <!--                        </div>-->
+          <!--                    </el-col>-->
+          <el-col
+            :lg="{ span: 24 }"
+            :md="{ span: 24 }"
+            :sm="{ span: 24 }"
+            :xl="{ span: 24 }"
+            :xs="{ span: 24 }"
+            class="panel-right"
+          >
+            <div style="height: 785px; width: 100%;">
+              <myMenu />
+            </div>
+          </el-col>
+        </el-row>
+
+        <!-- <div>
+                                <iframe scrolling="no" src="https://tianqiapi.com/api.php?style=ti&skin=pitaya" frameborder="0" width="250" height="270" allowtransparency="true"></iframe>
+                              </div>
+                              <MyKey_new /> -->
+      </div>
+    </div>
+  </div></template>
+<script>
+import menuDoor from '@/views/door/menu.vue'
+import tianqi from './components/tianqi'
+import channel from '../../static/utils/channel'
+import MyAudit from './components/myAudit'
+import MyInfo from './components/myInfo'
+import MySYLJ from '@/views/system/homeLink'
+import myMenu from './components/myMenu'
+import systemMsg from '@/views/dashpanel/systemMessages'
+import dataSharing from '@/views/dashpanel/dataSharing'
+import MyKey_new from '@/views/dashpanel/myKey_new'
+export default {
+    name: 'Door',
+    components: { menuDoor,
+        myMenu,
+        tianqi,
+        channel,
+        MyAudit,
+        MyInfo,
+        MySYLJ,
+        MyKey_new,
+        systemMsg,
+        dataSharing
+    },
+    data() {
+        return {
+            currMenu: this.baseMenu(),
+            currSubMenuId: '',
+            currPage: ''
+        }
+    },
+    mounted() {
+        console.log(this.$route)
+    },
+    methods: {
+        baseMenu: function() {
+            return {
+                name: '',
+                children: []
+            }
+        },
+        menuSelect: function(_menu, _defaultSubIndex) {
+            if (_menu) {
+                this.currMenu = _menu
+                this.$router.push({ path: this.$route.path, query: { ...this.$route.query, menuIndex: _menu.id }})
+                if (this.currMenu.children.length > 0) {
+                    if (this.currMenu.children.length > _defaultSubIndex) {
+                        this.subMenuSelect(this.currMenu.children[_defaultSubIndex])
+                    } else {
+                        this.subMenuSelect(this.currMenu.children[0])
+                    }
+                }
+            } else {
+                this.currMenu = this.baseMenu()
+            }
+        },
+        subMenuSelect: function(_subMenu) {
+            console.log('_subMenu', _subMenu)
+            if (_subMenu) {
+                this.currSubMenuId = _subMenu.id
+                this.currPage = _subMenu.page
+                this.$router.push({ path: '/backstage', query: { ...this.$route.query, menuIndex: this.$route.query.menuIndex, subMenu: _subMenu.id }})
+            }
+        }
+    }
+}
+</script>
+<style lang="scss" scoped>
+.backstage_index{
+    position: absolute;
+    width: 100%;
+    height: 100%;
+    background: #FAFAFA;
+    min-width: 1340px;
+    overflow: auto;
+    .header{
+        height: 72px;
+        background: #0D2F76;
+        box-shadow: 0px 4px 12px 0px rgba(13,47,118,0.3);
+        padding: 0 24px;
+        position: absolute;
+        width: 100%;
+        z-index: 9;
+        .left{
+            line-height: 72px;
+            img{
+                vertical-align: middle;
+                margin-right:8px;
+            }
+            span{
+                font-size: 20px;
+                font-family: "PangMenZhengDao";
+                font-weight: 400;
+                color: #FFFFFF;
+                vertical-align: middle;
+            }
+        }
+        .right{
+            position: absolute;
+            top:0;
+            right: 24px;
+            height: 100%;
+            line-height: 72px;
+        }
+    }
+    .container{
+        height: calc(100% - 72px);
+        margin-top: 72px;
+        >div{
+            display: inline-block;
+            vertical-align: top;
+        }
+        >.left{
+            width: 200px;
+            height: 100%;
+            background: #FFFFFF;
+            box-shadow: 0px 6px 14px 0px rgba(13,47,118,0.12);
+            position: relative;
+            z-index: 8;
+            .title{
+                padding: 24px 24px 0;
+                font-size: inherit!important;
+                div{
+                    border-bottom: 1px solid #DDDDDD;
+                    padding-bottom: 16px;
+                }
+                img{
+                    vertical-align: middle;
+                    margin-right: 8px;
+                }
+                span{
+                    vertical-align: middle;font-size: 16px;color: #0D2F76;
+                    font-family: 'PangMenZhengDao';
+                }
+            }
+            .menu{
+                padding: 16px 0;
+                .item{
+                    padding: 10px 0 10px 58px;
+                    font-size: 14px;color: #666666;
+                    cursor: pointer;
+                }
+                .item.active{
+                    background: rgba(25,93,235,0.13);color: #0D2F76;
+                }
+            }
+        }
+        >.right{
+            width: calc(100% - 205px);
+            padding: 24px;border-radius: 4px;
+            height: 100%;
+            position: relative;
+            z-index: 7;
+            box-sizing: border-box;
+            >div{
+                box-shadow: 0px 6px 14px 0px rgba(13,47,118,0.12);
+                border-radius: 4px;
+                //height: 100%;
+                position: relative;
+                z-index: 6;
+                padding: 24px;
+                box-sizing: border-box;
+                background: #fff;
+            }
+            >div>div:nth-child(2){
+                border-radius: 0 0 4px 4px;
+            }
+        }
+    }
+
+}
+.my_menu2 {
+    display: flex;
+    justify-content: space-between;
+    align-items: flex-start;
+    padding: 0 10px 0px 10px;
+    position: absolute;
+    z-index: 2;
+    top: 274px;
+    width: 100%;
+}
+.my_menu {
+    height: 300px;
+    width: 100%;
+    background: url("./image/bgc.png");
+    position: absolute;
+    z-index: 1;
+    top: 0;
+    left: 0;
+
+    .park-icon {
+        height: 50px;
+        width: 196px;
+        z-index: 100;
+        margin: auto 0;
+        margin-left: 35px;
+    }
+
+    .el-menu {
+        color: black;
+        //backdrop-filter: blur(1rem);
+        background: transparent;
+        border: 0;
+
+        //-webkit-filter: blur(2px);
+    }
+
+    .el-menu-item {
+        height: 34px;
+        line-height: 34px;
+        color: #264987;
+        font-size: 18px;
+        font-weight: 400;
+        margin: 22px 0 22px 0
+    }
+
+    .st0 {
+        fill: #264987 !important;
+        use {
+            fill: #264987 !important;
+        }
+    }
+
+    .is-active {
+        border: none;
+        background: #264987 !important;
+        color: white !important;
+
+        .st0 {
+            fill: red !important;
+
+            use {
+                fill: red !important;
+            }
+        }
+    }
+
+    .el-menu-item:not(.is-disabled):hover, .el-menu-item:not(.is-disabled):focus {
+        background: none;
+    }
+}
+
+.dashboard-editor-container {
+    .chaochuyingcang {
+        width: 150px;
+        white-space: nowrap;
+        overflow: hidden;
+        text-overflow: ellipsis;
+    }
+
+    .el-collapse-item__content {
+        height: 316px;
+    }
+
+    //padding:0 10px 10px 10px ;
+    /*background-color: rgb(240, 242, 245);*/
+    position: relative;
+
+
+
+    .link {
+        background-color: rgba(255, 255, 255, 1);
+        cursor: pointer;
+        border-radius: 5px;
+        width: 76px;
+        display: flex;
+        flex-direction: column;
+        justify-content: center;
+        align-items: center;
+
+        .link-image {
+            width: 60px;
+            height: 60px;
+            margin: 0px 8px;
+        }
+
+        .add-image {
+            width: 20px;
+            height: 20px;
+            margin: 0px 8px;
+        }
+    }
+
+    .link:hover {
+        background-color: white;
+        transition: 0.2s;
+        box-shadow: 0 2px 12px 0 rgba(53, 40, 236, 0.3);
+    }
+
+    .github-corner {
+        position: absolute;
+        top: 0px;
+        border: 0;
+        right: 0;
+    }
+
+    .chart-wrapper {
+        background: #fff;
+        padding: 16px 16px 0;
+        margin-bottom: 32px;
+    }
+
+    .panel-left {
+        margin-bottom: 10px;
+    }
+
+    .panel-right {
+        margin-bottom: 10px;
+    }
+
+    .right-menu {
+        z-index: 100;
+        display: flex;
+
+        height: 78px;
+        justify-content: flex-end;
+
+        &:focus {
+            outline: none;
+        }
+
+        .kidsBox {
+            height: 64px;
+            display: flex;
+            flex-direction: column;
+            justify-content: center;
+            align-items: center;
+
+            .userName {
+                display: flex;
+                align-items: center;
+                font-size: 14px;
+                color: #264987;
+            }
+
+            .line {
+                width: 1px;
+                height: 10px;
+                background: rgba(81, 68, 157, 1);
+            }
+
+            .itm {
+                margin: 0 5px;
+                font-weight: 600;
+            }
+
+            .comp {
+                font-size: 12px;
+                color: rgba(102, 102, 102, 1);
+                margin-top: 5px;
+            }
+        }
+
+        .right-menu-item {
+            display: inline-block;
+            padding: 0 18px;
+            height: 54px;
+            font-size: 14px;
+            color: #5a5e66;
+            vertical-align: text-bottom;
+
+            &.hover-effect {
+                cursor: pointer;
+                transition: background 0.3s;
+
+                &:hover {
+                    background: rgba(0, 0, 0, 0.07);
+                }
+            }
+        }
+
+        .right-menu-item2 {
+            display: flex;
+            align-items: center;
+            padding: 0 18px;
+            font-size: 14px;
+            color: #5a5e66;
+            vertical-align: text-bottom;
+
+            &.hover-effect {
+                cursor: pointer;
+                transition: background 0.3s;
+
+                &:hover {
+                    background: rgba(0, 0, 0, 0.07);
+                }
+            }
+        }
+
+        .avatar-container {
+            z-index: 100;
+            margin-right: 30px;
+            //height: 78px;
+
+            .avatar-wrapper {
+                height: 78px;
+                position: relative;
+                display: flex;
+                align-items: center;
+
+                .user-avatar {
+                    cursor: pointer;
+                    width: 50px;
+                    height: 50px;
+                    padding: 5px 5px;
+                    border-radius: 25px;
+                    position: relative;
+                }
+            }
+
+            &.hover-effect {
+                transition: background 0.3s;
+
+                &:hover {
+                    background: rgba(0, 0, 0, 0.07);
+                }
+            }
+        }
+    }
+    .menuList{
+        display: flex;
+        color: #666666;
+        align-items: center;
+        .menuItem{
+            padding:10px 16px;
+            box-sizing: border-box;
+            cursor: pointer;
+        }
+        .selectMenuItem{
+            border-bottom: 2px solid #0365F9;
+            color: #0365F9;
+        }
+        .humburgerPng{
+            width: 24px;
+            height: 24px;
+            cursor:pointer;
+            margin-left: 15px;
+        }
+    }
+}
+</style>

+ 1 - 1
vue.config.js

@@ -54,7 +54,7 @@ module.exports = {
         proxy: {
             // 配置跨域
             "/webServer": {
-                target: 'http://localhost:9001',
+                target: 'https://www.idea-co-sf.com/settleDownApi',
                 ws: true,
                 changOrigin: true, // 允许跨域
                 pathRewrite: {