Browse Source

Merge branch 'master' into 'dev_info'

# Conflicts:
#   vue.config.js
徐兴安 3 years ago
parent
commit
b397c5e353
35 changed files with 10163 additions and 1866 deletions
  1. 205 639
      package-lock.json
  2. 3 0
      package.json
  3. 44 0
      src/assets/calendar.scss
  4. 154 123
      src/components/deptTreeOnly.vue
  5. 11 2
      src/components/deptTreeUser.vue
  6. 11 4
      src/components/deptTreeUserNew.vue
  7. 225 0
      src/components/meetingDeclarationUpload.vue
  8. 1 1
      src/components/myMessage.vue
  9. 8 1
      src/components/p-header.vue
  10. 27 5
      src/components/upload.vue
  11. 1 1
      src/pages/main/achievements/recallJt.vue
  12. 37 0
      src/pages/main/advertising/acceptanceSituation.vue
  13. 123 6
      src/pages/main/advertising/businessHall.vue
  14. 18 18
      src/pages/main/busitime/busiTime.vue
  15. 29 28
      src/pages/main/busitime/busiTimeout.vue
  16. 517 500
      src/pages/main/competitor/addCompetitor.vue
  17. 754 0
      src/pages/main/competitor/addCompetitorNew.vue
  18. 793 0
      src/pages/main/competitor/changeCompetNew.vue
  19. 410 0
      src/pages/main/competitor/competitorInfoNew.vue
  20. 1234 499
      src/pages/main/competitor/index.vue
  21. 21 16
      src/pages/main/cooOperation/index.vue
  22. 9 1
      src/pages/main/demandDevelop/index.vue
  23. 1165 0
      src/pages/main/file/flieList.vue
  24. 1165 0
      src/pages/main/file/flieListNet.vue
  25. 715 0
      src/pages/main/fullcalendar/calendar.vue
  26. 26 0
      src/pages/main/funcInit/manageLnit.vue
  27. 1126 0
      src/pages/main/meetingDeclaration/marketDecisionMeeting.vue
  28. 1124 0
      src/pages/main/meetingDeclaration/specialReport.vue
  29. 39 6
      src/pages/main/memberFamily/dataStatistics.vue
  30. 14 4
      src/pages/main/memberFamily/employeeInfo.vue
  31. 51 2
      src/pages/main/memberFamily/haveInHand.vue
  32. 18 8
      src/pages/main/memberFamily/speedOfProgress.vue
  33. 2 0
      src/plugins/element-ui.js
  34. 60 2
      src/router/index.js
  35. 23 0
      src/utils/home.js

File diff suppressed because it is too large
+ 205 - 639
package-lock.json


+ 3 - 0
package.json

@@ -9,6 +9,9 @@
     "analyz": "vue-cli-service build"
   },
   "dependencies": {
+    "@fullcalendar/daygrid": "^5.10.1",
+    "@fullcalendar/interaction": "^5.10.1",
+    "@fullcalendar/vue": "^5.10.1",
     "@tinymce/tinymce-vue": "^3.0.1",
     "axios": "^0.19.0",
     "canvg": "^3.0.7",

+ 44 - 0
src/assets/calendar.scss

@@ -0,0 +1,44 @@
+@charset "UTF-8";
+.calendar-box {
+  height: 710px;
+  overflow-y: scroll;
+}
+.tag-tip{
+  text-align: right;
+  margin-bottom: 20px;
+}
+//左侧会议室列表
+.room-content{
+  box-shadow: 0 0 5px #999;
+  padding-top: 15px;
+  text-align: center;
+  .room-title{
+    font-size: 16px;
+    font-weight: bold;
+    border-bottom: 2px solid #3AA1FF;
+    padding-bottom: 15px;
+  }
+  .room-list{
+    height: 40px;
+    line-height: 40px;
+    border-bottom: 1px solid #eee;
+    font-size: 14px;
+    cursor: pointer;
+    position: relative;
+    i{
+      position: absolute;
+      top: 14px;
+      right: 15px;
+    }
+  }
+  .room-list:last-child{
+    border: none;
+  }
+}
+.active-list, .room-list:hover{
+  background-color: #3AA1FF;
+  color: #fff
+}
+.line{
+  text-align: center;
+}

+ 154 - 123
src/components/deptTreeOnly.vue

@@ -1,135 +1,166 @@
 <template>
-    <div class="treebox" v-loading="loading">
-        <el-tree :highlight-current="true" :check-strictly="true" ref="tree" :data="treeList" node-key="o"
-            :default-checked-keys="defaultListc" :default-expanded-keys="defaultListc" @node-click="handleNodeClick">
-
-            <span class="custom-tree-node" slot-scope="{ node, data }">
-                <em style="display: inline-block;width: 20px;" v-if="node.data.haveUserFlag == 'N'&& node.data.children.length == 0"></em>
-                <i class="el-icon-caret-right" v-if="node.data.haveUserFlag == 'Y' && node.data.children.length == 0"></i>
-                <el-checkbox @change="handleCheckChange(node)" style="margin-right: 10px;" v-model="node.checked" v-if="node.data.type == 1"></el-checkbox>
-                <span>{{ node.label }}</span>
-            </span>
-
-        </el-tree>
-    </div>
+  <div class="treebox" v-loading="loading">
+    <el-input placeholder="输入关键字进行过滤" v-model="filterText"> </el-input>
+    <el-tree
+      :highlight-current="true"
+      :check-strictly="true"
+      ref="tree"
+      :data="treeList"
+      node-key="o"
+      :default-checked-keys="defaultListc"
+      :default-expanded-keys="defaultListc"
+      @node-click="handleNodeClick"
+      :filter-node-method="filterNode"
+    >
+      <span class="custom-tree-node" slot-scope="{ node, data }">
+        <em
+          style="display: inline-block; width: 20px"
+          v-if="node.data.haveUserFlag == 'N' && node.data.children.length == 0"
+        ></em>
+        <i
+          class="el-icon-caret-right"
+          v-if="node.data.haveUserFlag == 'Y' && node.data.children.length == 0"
+        ></i>
+        <el-checkbox
+          @change="handleCheckChange(node)"
+          style="margin-right: 10px"
+          v-model="node.checked"
+          v-if="node.data.type == 1"
+        ></el-checkbox>
+        <span>{{ node.label }}</span>
+      </span>
+    </el-tree>
+  </div>
 </template>
 
 <script>
-    export default {
-        props: ["defaultList", "type","closeList"],
-        data() {
-            return {
-                treeList: [],
-                opt: [],
-                defaultProps: {
-                    children: 'children',
-                    label: 'label'
-                },
-                defaultListc: [],
-                loading:false
-            };
+export default {
+  props: ["defaultList", "type", "closeList"],
+  data() {
+    return {
+      filterText: "",
+      treeList: [],
+      opt: [],
+      defaultProps: {
+        children: "children",
+        label: "label",
+      },
+      defaultListc: [],
+      loading: false,
+    };
+  },
+  methods: {
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
+    getTree(v) {
+      this.loading = true;
+      this.$http({
+        url: "/sysmgr/csysdept/queryAllList",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
         },
-        methods: {
-            getTree(v) {
-                this.loading = true;
-                this.$http({
-                    url: "/sysmgr/csysdept/queryAllList",
-                    method: "post",
-                    headers: {
-                        "Content-Type": "application/json",
-                    },
-                    data: {
-                        parentorgid: v
-                    },
-                }).then((res) => {
-                    this.treeList = res.data;
-                    this.loading = false;
-                });
-            },
-            handleNodeClick(v) {
-                let s = false;
-                if(v.children && v.children.length == 0){
-                    s = true;
-                }
-                if (v.type) {
-                    return
-                }
-                if (v.children && v.children.length > 0 && v.children[v.children.length - 1].type == 1) {
-                    return
-                }
-                console.log(v)
-                this.$http({
-                    url: "/sysmgr/sysuserinfo/queryList",
-                    method: "post",
-                    headers: {
-                        "Content-Type": "application/json",
-                    },
-                    data: {
-                        groupId: v.o
-                    },
-                }).then((res) => {
-                    v.children = v.children?v.children:[];
-                    res.data.forEach(item=>{
-                        v.children.push({
-                            id:item.groupId,
-                            label:item.loginNameStr,
-                            type:1,
-                            displayname:v.displayname,
-                            loginNoStr:item.loginNoStr,
-                            o:item.id,
-                        });
-                    })
-                });
-                for (let i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) {
-                    if(s && v.o == this.$refs.tree.store._getAllNodes()[i].data.o){
-                        this.$refs.tree.store._getAllNodes()[i].expanded = true;
-                    }
-                }
-            },
-            handleCheckChange(v){
-                console.log(v)
-                let opt = {
-                    leaderAuditNo:v.data.loginNoStr,
-                    leaderAuditName:v.data.label,
-                    displayname:v.data.displayname,
-                    groupId:v.data.o
-                }
-                this.$emit("treeCheck", opt);
-                for (let i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) {
-                    if(v.data.o == this.$refs.tree.store._getAllNodes()[i].data.o){
-                        this.$refs.tree.store._getAllNodes()[i].checked = true;
-                    }else{
-                        this.$refs.tree.store._getAllNodes()[i].checked = false;
-                    }
-                }
-                this.$forceUpdate()
-            }
+        data: {
+          parentorgid: v,
         },
-        created() {
-            this.getTree();
-            this.defaultListc = this.defaultList;
+      }).then((res) => {
+        this.treeList = res.data;
+        this.loading = false;
+      });
+    },
+    handleNodeClick(v) {
+      let s = false;
+      if (v.children && v.children.length == 0) {
+        s = true;
+      }
+      if (v.type) {
+        return;
+      }
+      if (
+        v.children &&
+        v.children.length > 0 &&
+        v.children[v.children.length - 1].type == 1
+      ) {
+        return;
+      }
+      console.log(v);
+      this.$http({
+        url: "/sysmgr/sysuserinfo/queryList",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
         },
-        watch: {
-            type() {
-                this.defaultListc = this.defaultList;
-                this.$forceUpdate()
-            },
-            defaultList() {
-                this.$forceUpdate()
-            },
-            closeList() {
-                this.$refs.tree.setCheckedNodes([]);
-            },
+        data: {
+          groupId: v.o,
+        },
+      }).then((res) => {
+        v.children = v.children ? v.children : [];
+        res.data.forEach((item) => {
+          v.children.push({
+            id: item.groupId,
+            label: item.loginNameStr,
+            type: 1,
+            displayname: v.displayname,
+            loginNoStr: item.loginNoStr,
+            o: item.id,
+          });
+        });
+      });
+      for (let i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) {
+        if (s && v.o == this.$refs.tree.store._getAllNodes()[i].data.o) {
+          this.$refs.tree.store._getAllNodes()[i].expanded = true;
         }
-    };
+      }
+    },
+    handleCheckChange(v) {
+      console.log(v);
+      let opt = {
+        leaderAuditNo: v.data.loginNoStr,
+        leaderAuditName: v.data.label,
+        displayname: v.data.displayname,
+        groupId: v.data.o,
+      };
+      this.$emit("treeCheck", opt);
+      for (let i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) {
+        if (v.data.o == this.$refs.tree.store._getAllNodes()[i].data.o) {
+          this.$refs.tree.store._getAllNodes()[i].checked = true;
+        } else {
+          this.$refs.tree.store._getAllNodes()[i].checked = false;
+        }
+      }
+      this.$forceUpdate();
+    },
+  },
+  created() {
+    this.getTree();
+    this.defaultListc = this.defaultList;
+  },
+  watch: {
+    type() {
+      this.defaultListc = this.defaultList;
+      this.$forceUpdate();
+    },
+    defaultList() {
+      this.$forceUpdate();
+    },
+    closeList() {
+      this.$refs.tree.setCheckedNodes([]);
+    },
+    filterText(val) {
+      this.$refs.tree.filter(val);
+    },
+  },
+};
 </script>
 
 <style scoped lang="scss">
-    .el-icon-caret-right{
-        color: #ccc;
-        margin:0 5px;
-    }
-    .treebox {
-        border: 1px solid #ddd;
-    }
+.el-icon-caret-right {
+  color: #ccc;
+  margin: 0 5px;
+}
+.treebox {
+  border: 1px solid #ddd;
+}
 </style>

+ 11 - 2
src/components/deptTreeUser.vue

@@ -1,8 +1,9 @@
 <template>
     <div class="treebox" v-loading="loading">
+        <el-input placeholder="输入关键字进行过滤" v-model="filterText"></el-input>
         <el-tree :highlight-current="true" :check-strictly="true" ref="tree" @check-change="handleCheckChange"
             :data="treeList" node-key="id" :default-checked-keys="defaultListc" :default-expanded-keys="defaultListc"
-            @node-click="handleNodeClick">
+            @node-click="handleNodeClick" :filter-node-method="filterNode">
             <span class="custom-tree-node" slot-scope="{ node, data }" @click="cs(node)">
                 <em style="display: inline-block;width: 20px;" v-if="node.data.haveUserFlag == 'N'&& node.data.children.length == 0"></em>
                 <i class="el-icon-caret-right" v-if="node.data.haveUserFlag == 'Y' && node.data.children.length == 0"></i>
@@ -25,10 +26,15 @@
                     label: "label",
                 },
                 defaultListc: [],
-                loading:false
+                loading:false,
+                filterText: '',
             };
         },
         methods: {
+            filterNode(value, data) {
+                if (!value) return true;
+                return data.label.indexOf(value) !== -1;
+            },
             cs(v){
                 // console.log(v)
             },
@@ -115,6 +121,9 @@
             this.defaultListc = this.defaultList;
         },
         watch: {
+            filterText(val) {
+                this.$refs.tree.filter(val);
+            },
             type() {
                 this.defaultListc = this.defaultList;
                 this.$forceUpdate();

+ 11 - 4
src/components/deptTreeUserNew.vue

@@ -1,8 +1,9 @@
 <template>
     <div class="treebox" v-loading="loading">
+        <el-input placeholder="输入关键字进行过滤" v-model="filterText"></el-input>
         <el-tree :highlight-current="true" :check-strictly="true" ref="tree" @check-change="handleCheckChange"
             :data="treeList" node-key="id" :default-checked-keys="defaultListc" :default-expanded-keys="defaultListc"
-            @node-click="handleNodeClick">
+            @node-click="handleNodeClick" :filter-node-method="filterNode">
             <span class="custom-tree-node" slot-scope="{ node, data }" @click="cs(node)">
                 <em style="display: inline-block;width: 20px;" v-if="node.data.haveUserFlag == 'N'&& node.data.children.length == 0"></em>
                 <i class="el-icon-caret-right" v-if="node.data.haveUserFlag == 'Y' && node.data.children.length == 0"></i>
@@ -12,7 +13,6 @@
         </el-tree>
     </div>
 </template>
-
 <script>
     export default {
         props: ["defaultList", "type", "closeList","fillLists"],
@@ -25,11 +25,15 @@
                     label: "label",
                 },
                 defaultListc: [],
-                loading:false
+                loading:false,
+                filterText: '',
             };
         },
         methods: {
-            
+            filterNode(value, data) {
+                if (!value) return true;
+                return data.label.indexOf(value) !== -1;
+            },
             cs(v){
                 // console.log(v)
                 
@@ -130,6 +134,9 @@
             this.defaultListc = this.defaultList;
         },
         watch: {
+            filterText(val) {
+                this.$refs.tree.filter(val);
+            },
             type() {
                 this.defaultListc = this.defaultList;
                 this.$forceUpdate();

+ 225 - 0
src/components/meetingDeclarationUpload.vue

@@ -0,0 +1,225 @@
+<template>
+    <div v-loading="loading">
+        <el-upload class="upload-demo" :drag="fileInfo.type !== 'btn'" multiple :limit="fileInfo.limit" ref="upload"
+            action="string" :on-remove="handleRemove" :on-exceed="handleExceed" :file-list="fileList"
+             :auto-upload="true" :show-file-list="fileInfo.type !== 'btn'"
+            :before-upload="deforeUp" :http-request="signUpload">
+            <div v-if="fileInfo.type !== 'btn'">
+                <i class="el-icon-upload"></i>
+                <div class="el-upload__text">点击上传</div>
+            </div>
+            <div v-if="fileInfo.type === 'btn'">
+                <el-button :size="fileInfo.size?fileInfo.size:'medium'" :type="fileInfo.btntype">{{fileInfo.typename}}</el-button>
+            </div>
+        </el-upload>
+    </div>
+</template>
+<script>
+    export default {
+        props: ['fileInfo', 'fileList'],
+        data() {
+            return {
+                fileLists: [],
+                attList: [],
+                loading: false,
+                num: 0,
+                s: false
+            }
+        },
+        methods: {
+            signUpload(){},
+            //删除
+            handleRemove(file) {
+                for (let i = 0; i < this.attList.length; i++) {
+                    if (this.attList[i].fileName === file.name) {
+                        this.attList.splice(i, 1);
+                        this.$emit('uploadBack', this.attList)
+                    }
+                }
+            },
+            //数量限制
+            handleExceed(files, fileList) {
+                this.$message.warning(
+                    `当前限制选择 ${this.fileInfo.limit} 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`
+                );
+            },
+            deforeUp(file) {
+                const isLt2M = file.size / 1024 / 1024 < 100;
+                if (!isLt2M) {
+                    this.$message.error('上传文件大小不能超过 20MB!');
+                    return false
+                }
+                
+                if(this.fileInfo.type == 'img'){
+                    const isImg = file.type.split("/")[0] == 'image';
+                    if (!isImg) {
+                        this.$message.error('请上传图片格式文件!');
+                        return false
+                    }
+                }
+                if(this.fileInfo.typexz == 'ppt'){
+                    const isImg = file.name.split(".")[1] == 'pptx';
+                    console.log(file.name.split(".")[1] == 'pptx')
+                    if (!isImg) {
+                        this.$message.error('请上传ppt格式文件!');
+                        return false
+                    }
+                }
+                if(this.fileInfo.typexz == 'csv'){
+                    const isImg = file.name.split(".")[1] == 'csv';
+                    if (!isImg) {
+                        this.$message.error('请上传csv格式文件!');
+                        return false
+                    }
+                }
+                if(this.fileInfo.typexz == 'xlsx'){
+                    const isImg = file.name.split(".")[1] == 'xlsx';
+                    if (!isImg) {
+                        this.$message.error('请上传xlsx格式文件!');
+                        return false
+                    }
+                }
+
+                
+                for(var i=0;i<this.attList.length;i++)
+                
+                {
+                     if(this.attList[i].fileName == file.name){
+                        this.$message.error('文件名重复,请修改文件名后,再上传!');
+                        this.attList.push(this.attList[i])
+                        return false
+                    }
+                }
+                this.loading = true;
+                let query = new FormData();
+                query.append("file", file);
+                if(this.fileInfo.typename == '新增素材'){
+                    query.append("advType", this.fileInfo.advType);
+                    query.append("advTypeName", this.fileInfo.advTypeName);
+                }
+                if(this.fileInfo.url == '/market/cIllegalCallTask/importTempByProv'||this.fileInfo.url == '/market/cChannelInfo/cIllegalCallTask/importTempByProv'){
+                    query.append("taskId", this.fileInfo.taskId);
+                    query.append("tempId", this.fileInfo.tempId);
+                }
+                //违规外呼
+                if(this.fileInfo.uploadType == 'outCall'){
+                    query.append("uploadType", 'outCall');
+                    query.append("relId", this.fileInfo.relId);
+                }
+                if(this.fileInfo.uploadType == 'train'){
+                    query.append("uploadType", 'train');
+                    query.append("relId", this.fileInfo.relId);
+                }
+                //运营类项目考核及结算
+                if(this.fileInfo.url == '/market/cmkAttachInfo/upload'){
+                    query.append("uploadType", this.fileInfo.uploadType);
+                }
+                if(this.fileInfo.url == '/market/cStoreOutWo/importData'){
+                    query.append("woNo", this.fileInfo.woNo);
+                }
+                if(this.fileInfo.url == '/market/cStoreScheTrainEva/importDataEva'){
+                    query.append("evaId", this.fileInfo.evaId);
+                }
+                this.num++;
+                let _this = this;
+                
+                this.$http({
+                    url: this.fileInfo.url,
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: query,
+                }).then((res) => {
+
+                    if (this.fileInfo.type === 'btn') {
+                        this.$refs['upload'].clearFiles();
+                        this.$emit('uploadBack',res)
+                        _this.$message({
+                            message: res.data.desc,
+                            type: 'success'
+                        });
+                        this.num--;
+                        if (this.num == 0) {
+                            this.loading = false;
+                        }
+                        return
+                    }
+                    if (this.fileInfo.type === 'voice') {
+                        this.attList = res.data;
+                    } else {
+                        this.attList.push({
+                            id: res.data.body.id,
+                            fileName: res.data.body.fileName,
+                            fileCode: res.data.body.fileCode,
+                            opName: res.data.body.opName,
+                            opNo: res.data.body.opNo,
+                            opTime: res.data.body.opTime,
+                            attchFileId: res.data.body.attchFileId,
+                            type: res.data.body.type,
+                        });
+                    }
+                    this.$emit('uploadBack', this.attList);
+                    this.num--;
+                    if (this.num == 0) {
+                        this.loading = false;
+                    }
+                    return true
+                }).catch((res) => {
+                    this.$message({
+                        message: file.name+'上传失败',
+                        type: 'error'
+                    });
+                    this.num--;
+                    if (this.num == 0) {
+                        this.loading = false;
+                    }
+                    for (let i = 0; i < this.$refs['upload'].uploadFiles.length; i++) {
+                        if(file.name == this.$refs['upload'].uploadFiles[i].name){
+                            this.$refs['upload'].uploadFiles.splice(i,1)
+                        }
+                    }
+                    return false
+                })
+            },
+        },
+        mounted() {
+
+        },
+        created() {
+            this.attList = [];
+            for (let i = 0; i < this.fileList.length; i++) {
+                this.attList.push({
+                    id: this.fileList[i].id,
+                    fileName: this.fileList[i].fileName,
+                    fileCode: this.fileList[i].fileCode,
+                    opName: this.fileList[i].opName,
+                    opNo: this.fileList[i].opNo,
+                    opTime: this.fileList[i].opTime,
+                    attchFileId: this.fileList[i].attchFileId,
+                    type: this.fileList[i].type,
+                })
+            }
+        },
+        watch: {
+            fileList() {
+                this.attList = [];
+                for (let i = 0; i < this.fileList.length; i++) {
+                    this.attList.push({
+                        id: this.fileList[i].id,
+                        fileName: this.fileList[i].fileName,
+                        fileCode: this.fileList[i].fileCode,
+                        opName: this.fileList[i].opName,
+                        opNo: this.fileList[i].opNo,
+                        opTime: this.fileList[i].opTime,
+                        attchFileId: this.fileList[i].attchFileId,
+                        type: this.fileList[i].type,
+                    })
+                }
+            }
+        }
+    }
+</script>
+<style scoped lang="scss">
+
+</style>

+ 1 - 1
src/components/myMessage.vue

@@ -17,7 +17,7 @@
 
 <script>
     export default {
-        props: ["centerDialogVisible","messTit"],
+        props: ["centerDialogVisible","messTit",'type'],
         data() {
             return {
 

+ 8 - 1
src/components/p-header.vue

@@ -15,6 +15,10 @@
     </div> -->
     <div class="bars">
       <div class="bars-item user-info">Hello,{{ username }}</div>
+<!--      <div class="bars-item" @click="handleGoToCalendar">-->
+<!--        <i class="el-icon-date"></i>-->
+<!--        日历-->
+<!--      </div>-->
 
       <div class="bars-item" @click="handleHelp">
         <i class="el-icon-time"></i>
@@ -72,6 +76,9 @@ export default {
     //this.menuClose();
   },
   methods: {
+      handleGoToCalendar(){
+        this.$router.push('calendar');
+      },
     handleCall() {
       this.$switchTab(this, { rountPath: "/knowledgetop", name: "知识库" },'knowledgetop');
     },
@@ -111,7 +118,7 @@ export default {
               window.sessionStorage.userInfo = undefined;
               window.sessionStorage.childrenMenus = undefined;
               window.opener=null;
-              window.open('','_self');
+              window.open(' ','_self');
               window.close();
               // window.parent.close();
             //返回到登录页面

+ 27 - 5
src/components/upload.vue

@@ -16,7 +16,7 @@
 </template>
 <script>
     export default {
-        props: ['fileInfo', 'fileList'],
+        props: ['fileInfo', 'fileList','type'],
         data() {
             return {
                 fileLists: [],
@@ -121,10 +121,32 @@
                     if (this.fileInfo.type === 'btn') {
                         this.$refs['upload'].clearFiles();
                         this.$emit('uploadBack',res)
-                        _this.$message({
-                            message: res.data.desc,
-                            type: 'success'
-                        });
+                        if(res.data.result==0){
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'success'
+                            });
+                        }else if(res.data.result==1){
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'error'
+                            });
+                        }else if(res.data.result==2){
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'warning'
+                            });
+                        }else if(res.data.result==3){
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'info'
+                            });
+                        }else{
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'success'
+                            });
+                        }
                         this.num--;
                         if (this.num == 0) {
                             this.loading = false;

+ 1 - 1
src/pages/main/achievements/recallJt.vue

@@ -11,7 +11,7 @@
 			</div>
 			<el-tabs tab-position="top" v-model="activeName" @tab-click="handleClick">
 				<el-tab-pane name="0" label="KPI"></el-tab-pane>
-				<el-tab-pane name="1" label="GS"></el-tab-pane>
+<!--				<el-tab-pane name="1" label="GS"></el-tab-pane>-->
 			</el-tabs>
 			<div style="height: 100%">
 				<div style="overflow: none">

+ 37 - 0
src/pages/main/advertising/acceptanceSituation.vue

@@ -2,6 +2,8 @@
     <fullscreen :fullscreen.sync="fullscreen" class="container">
         <div class="container-box">
             <div class="section2">
+                <el-button class="btn-check" size="medium" type="primary" @click="outlist" style="width: 100px;margin-right: 20px;margin-bottom: 20px;">导出
+                </el-button>
                 <el-button
                     type="primary"
                     @click="dialogApplication(1)"
@@ -537,7 +539,42 @@ export default {
         },
         getUser() {
             this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+        },
+        outlist() {
+
+            let data = this.params;
+            console.log(data);
+            // return
+            this.$http({
+                url: "/market/advSubtask/excelExport",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                responseType: "blob",
+                data: data,
+            }).then((response) => {
+                if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                    let blob = new Blob([response.data], {
+                        type: 'application/vnd.ms-excel'
+                    })
+                    window.navigator.msSaveOrOpenBlob(blob,
+                        new Date().getTime() + '.xlsx')
+                } else {
+                    /* 火狐谷歌的文件下载方式 */
+                    var blob = new Blob([response.data])
+                    var downloadElement = document.createElement('a')
+                    var href = window.URL.createObjectURL(blob)
+                    downloadElement.href = href
+                    downloadElement.download = new Date().getTime() + '.xlsx'
+                    document.body.appendChild(downloadElement)
+                    downloadElement.click()
+                    document.body.removeChild(downloadElement)
+                    window.URL.revokeObjectURL(href)
+                }
+            });
         }
+    
     },
     mounted() {
         //地址栏不带参

+ 123 - 6
src/pages/main/advertising/businessHall.vue

@@ -2,6 +2,24 @@
     <fullscreen :fullscreen.sync="fullscreen" class="container">
         <div class="container-box">
             <toolList @iconCli="iconCli" :tooltit="tooltit"></toolList>
+            <div class="search" style="justify-content: flex-start;">
+                <el-button class="btn-check" size="medium" type="primary" @click="outlist">导出
+                </el-button>
+                <el-button class="btn-check" size="medium" type="primary" @click="exportTempletelist">下载导入模板
+                </el-button>
+                <myUpload style="display:inline-block;" :fileInfo="fileInfot"
+                        :fileList="fileInfot.fileList" @uploadBack='uploadBack'></myUpload>
+                <el-button
+                    class="btn-check"
+                    size="medium"
+                    type="primary"
+                    @click="dialogCheck(3)"
+                    v-if="
+                        userInfo.countyName != null || userInfo.cityName != null
+                    "
+                    >添加
+                </el-button>
+            </div>
             <div class="search">
                 <mySearch
                     :searchList="searchList"
@@ -433,12 +451,14 @@
 import mySearch from "../../../components/search.vue";
 import myMessage from "../../../components/myMessage.vue";
 import toolList from "../../../components/toolList";
+import myUpload from "../../../components/upload.vue";
 
 export default {
     components: {
         mySearch,
         myMessage,
-        toolList
+        toolList,
+        myUpload
     },
     data() {
         //地市名称
@@ -649,25 +669,37 @@ export default {
                     type: "input",
                     tit: "地市名称",
                     value: "",
-                    width: "24%"
+                    width: "16%"
                 },
                 {
                     type: "input",
                     tit: "区县名称",
                     value: "",
-                    width: "24%"
+                    width: "16%"
                 },
                 {
                     type: "input",
                     tit: "渠道名称",
                     value: "",
-                    width: "24%"
+                    width: "16%"
                 },
                 {
                     type: "input",
                     tit: "场景",
                     value: "",
-                    width: "24%"
+                    width: "16%"
+                },
+                {
+                    type: "input",
+                    tit: "物料类别",
+                    value: "",
+                    width: "16%"
+                },
+                {
+                    type: "input",
+                    tit: "物料名称",
+                    value: "",
+                    width: "16%"
                 }
             ],
             tooltit: "物料基础信息维护",
@@ -794,7 +826,16 @@ export default {
             metirialTypeopt: [],
             materialNameopt: [],
             metirialInfoSingle: [],
-            quantityDisabled: true
+            quantityDisabled: true,
+            fileInfot: {
+                    type: 'btn',
+                    typename: '导入',
+                    btntype: 'primary',
+                    limit: 1,
+                    url: '/market/cadvBusiMetirial/import',
+                    fileList: [],
+                    woNo: "",
+                },
         };
     },
     computed: {
@@ -902,6 +943,9 @@ export default {
             v[1] ? (this.params.countyName = v[1]) : "";
             v[2] ? (this.params.channelName = v[2]) : "";
             v[3] ? (this.params.sceneName = v[3]) : "";
+            //新增物料类别和物料名称模糊查询
+            v[4] ? (this.params.metirialType = v[4]) : "";
+            v[5] ? (this.params.metirialName = v[5]) : "";
             this.getList(this.params, this.pageSize);
         },
         //获取列表
@@ -1083,7 +1127,14 @@ export default {
         },
         //文件返回值
         uploadBack(v) {
+            let that = this;
             console.log(v);
+            if(v.data.result==0){
+                that.getList({}, 1);
+                that.getUser();
+                that.getMetirialType();
+                that.getMetirialInfo();
+            }
         },
         //功能栏
         iconCli(v) {
@@ -1204,6 +1255,72 @@ export default {
             }).then(res => {
                 this.materialNameopt = res.data;
             });
+        },
+        outlist() {
+            let data = this.params;
+            console.log(data);
+            // return
+            this.$http({
+                url: "/market/cadvBusiMetirial/excelExportBase",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                responseType: "blob",
+                data: data,
+            }).then((response) => {
+                if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                    let blob = new Blob([response.data], {
+                        type: 'application/vnd.ms-excel'
+                    })
+                    window.navigator.msSaveOrOpenBlob(blob,
+                        new Date().getTime() + '.xlsx')
+                } else {
+                    /* 火狐谷歌的文件下载方式 */
+                    var blob = new Blob([response.data])
+                    var downloadElement = document.createElement('a')
+                    var href = window.URL.createObjectURL(blob)
+                    downloadElement.href = href
+                    downloadElement.download = new Date().getTime() + '.xlsx'
+                    document.body.appendChild(downloadElement)
+                    downloadElement.click()
+                    document.body.removeChild(downloadElement)
+                    window.URL.revokeObjectURL(href)
+                }
+            });
+        },
+        exportTempletelist() {
+            let data = this.params;
+            console.log(data);
+            // return
+            this.$http({
+                url: "/market/cadvBusiMetirial/excelExportTemplete",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                responseType: "blob",
+                data: data,
+            }).then((response) => {
+                if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                    let blob = new Blob([response.data], {
+                        type: 'application/vnd.ms-excel'
+                    })
+                    window.navigator.msSaveOrOpenBlob(blob,
+                        new Date().getTime() + '.xlsx')
+                } else {
+                    /* 火狐谷歌的文件下载方式 */
+                    var blob = new Blob([response.data])
+                    var downloadElement = document.createElement('a')
+                    var href = window.URL.createObjectURL(blob)
+                    downloadElement.href = href
+                    downloadElement.download = new Date().getTime() + '.xlsx'
+                    document.body.appendChild(downloadElement)
+                    downloadElement.click()
+                    document.body.removeChild(downloadElement)
+                    window.URL.revokeObjectURL(href)
+                }
+            });
         }
     },
     mounted() {

+ 18 - 18
src/pages/main/busitime/busiTime.vue

@@ -14,40 +14,40 @@
             </div>
             <div class="tabbox">
 
-                    <el-table height="calc(100% - 40px)" v-loading="loading" class="com-table" ref="multipleTable"
+                    <el-table height="100%" v-loading="loading" class="com-table" ref="multipleTable"
                               :data="tableData" tooltip-effect="dark" size="small" border style="width: 100%">
                     <el-table-column prop="region" fixed label="地市"> </el-table-column>
                     <el-table-column align="center" label="业务办理平均时长(秒)-自有渠道">
-                        <el-table-column prop="zyYxhdbl" label="营销活动办理"></el-table-column>
+                        <el-table-column prop="zyYxhdbl" label="营销活动办理" width="100px"></el-table-column>
                         <el-table-column prop="zyZfbg" label="资费变更"></el-table-column>
                         <el-table-column prop="zyPtjf" label="普通缴费"></el-table-column>
                         <el-table-column prop="zyKh" label="开户"></el-table-column>
                         <el-table-column prop="zyBk" label="补卡"></el-table-column>
-                        <el-table-column prop="zyYxhdqx" label="营销活动取消"></el-table-column>
-                        <el-table-column prop="zyZnzwjz" label="智能组网加装业务受理"></el-table-column>
-                        <el-table-column prop="zyXhzwkh" label="携号转网开户"></el-table-column>
-                        <el-table-column prop="zyJtcygl" label="家庭成员管理"></el-table-column>
+                        <el-table-column prop="zyYxhdqx" label="营销活动取消" width="100px"></el-table-column>
+                        <el-table-column prop="zyZnzwjz" label="智能组网加装业务受理" width="150px"></el-table-column>
+                        <el-table-column prop="zyXhzwkh" label="携号转网开户" width="100px"></el-table-column>
+                        <el-table-column prop="zyJtcygl" label="家庭成员管理" width="100px"></el-table-column>
                         <el-table-column prop="zyGh" label="过户"></el-table-column>
-                        <el-table-column prop="zyYhmmgq" label="用户密码修改"></el-table-column>
+                        <el-table-column prop="zyYhmmgq" label="用户密码修改" width="100px"></el-table-column>
                         <el-table-column prop="zyXh" label="销户"></el-table-column>
-                        <el-table-column prop="zyLlgx" label="流量共享业务"></el-table-column>
-                        <el-table-column prop="zyRhkd" label="融合宽带业务"></el-table-column>
+                        <el-table-column prop="zyLlgx" label="流量共享业务" width="100px"></el-table-column>
+                        <el-table-column prop="zyRhkd" label="融合宽带业务" width="100px"></el-table-column>
                     </el-table-column>
                     <el-table-column align="center" label="业务办理平均时长(秒)-社会渠道">
-                        <el-table-column prop="shYxhdbl" label="营销活动办理"></el-table-column>
+                        <el-table-column prop="shYxhdbl" label="营销活动办理" width="100px"></el-table-column>
                         <el-table-column prop="shZfbg" label="资费变更"></el-table-column>
                         <el-table-column prop="shPtjf" label="普通缴费"></el-table-column>
                         <el-table-column prop="shKh" label="开户"></el-table-column>
                         <el-table-column prop="shBk" label="补卡"></el-table-column>
-                        <el-table-column prop="shYxhdqx" label="营销活动取消"></el-table-column>
-                        <el-table-column prop="shZnzwjz" label="智能组网加装业务受理"></el-table-column>
-                        <el-table-column prop="shXhzwkh" label="携号转网开户"></el-table-column>
-                        <el-table-column prop="shJtcygl" label="家庭成员管理"></el-table-column>
+                        <el-table-column prop="shYxhdqx" label="营销活动取消" width="100px"></el-table-column>
+                        <el-table-column prop="shZnzwjz" label="智能组网加装业务受理" width="150px"></el-table-column>
+                        <el-table-column prop="shXhzwkh" label="携号转网开户" width="100px"></el-table-column>
+                        <el-table-column prop="shJtcygl" label="家庭成员管理" width="100px"></el-table-column>
                         <el-table-column prop="shGh" label="过户"></el-table-column>
-                        <el-table-column prop="shYhmmgq" label="用户密码修改"></el-table-column>
+                        <el-table-column prop="shYhmmgq" label="用户密码修改" width="100px"></el-table-column>
                         <el-table-column prop="shXh" label="销户"></el-table-column>
-                        <el-table-column prop="shLlgx" label="流量共享业务"></el-table-column>
-                        <el-table-column prop="shRhkd" label="融合宽带业务"></el-table-column>
+                        <el-table-column prop="shLlgx" label="流量共享业务" width="100px"></el-table-column>
+                        <el-table-column prop="shRhkd" label="融合宽带业务" width="100px"></el-table-column>
                     </el-table-column>
                 </el-table>
 
@@ -80,7 +80,7 @@ export default {
           {
               type: 'date',
               tit: '数据时间',
-              value: new Date(),
+              value: new Date(new Date()-24*60*60*1000),
               width: '100%',
           }
         ],

+ 29 - 28
src/pages/main/busitime/busiTimeout.vue

@@ -16,20 +16,20 @@
                 <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
             </div>
             <div class="tabbox">
-                <el-table height="calc(100% - 40px)" v-loading="loading" class="com-table" ref="multipleTable"
+                <el-table height="100%" v-loading="loading" class="com-table" ref="multipleTable"
                           :data="tableData" tooltip-effect="dark" size="small" border style="width: 100%">
-                    <el-table-column prop="region" fixed label="地市"> </el-table-column>
+                    <el-table-column prop="region" label="地市"> </el-table-column>
                     <el-table-column prop="channelType" label="渠道类型"></el-table-column>
                     <el-table-column prop="opName" label="业务类型"></el-table-column>
                     <el-table-column prop="normalTime" label="标准用时(秒)"></el-table-column>
-                    <el-table-column prop="busiTimeoutTime" label="异常业务平均用时(秒)"></el-table-column>
-                    <el-table-column prop="busiTimeoutPercentage" label="异常用时超出比例"></el-table-column>
+                    <el-table-column prop="busiTimeoutTime" label="异常业务平均用时(秒)" width="160px"></el-table-column>
+                    <el-table-column prop="busiTimeoutPercentage" label="异常用时超出比例" width="140px"></el-table-column>
                     <el-table-column prop="busiTotal" label="总业务笔数"></el-table-column>
                     <el-table-column prop="timeoutTotal" label="超时业务笔数"></el-table-column>
                     <el-table-column prop="timeoutPercentage" label="超时业务量占比"></el-table-column>
                     <el-table-column label="操作" width="220px" align="center">
                         <template slot-scope="scope">
-                            <el-button size="mini" type="primary" @click="dialogCheck(scope.row)">查看超时业务详情</el-button>
+                            <el-button :disabled="scope.row.region == '全省'" size="mini" type="primary" @click="dialogCheck(scope.row)">查看超时业务详情</el-button>
                         </template>
                     </el-table-column>
                 </el-table>
@@ -37,10 +37,10 @@
             </div>
         </fullscreen>
         <el-dialog title="异常数据监控(超时业务笔数达到或超过10%)" :visible.sync="dialogStatus" width="50%" :destroy-on-close="true"
-                   :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia">
-            <div v-loading="loadinged">
+                   :modal-append-to-body="false" :close-on-click-modal="true" >
+            <div>
                 <el-table
-                    height="calc(90%)"
+                    height="400px"
                     v-loading="loadingDialog"
                     class="com-table"
                     ref="multipleTable"
@@ -50,16 +50,17 @@
                     style="width: 100%"
                     :row-class-name="addRowId"
                     id="rptTable"
+                    
                 >
                     <el-table-column prop="region" fixed label="地市"> </el-table-column>
                     <el-table-column prop="channelType" label="渠道类型"></el-table-column>
-                    <el-table-column prop="opName" label="业务类型"></el-table-column>
-                    <el-table-column prop="shop" label="网点"></el-table-column>
+                    <el-table-column prop="opName" label="业务类型" width="180px"></el-table-column>
+                    <el-table-column prop="shop" label="网点" width="200px"></el-table-column>
                     <el-table-column prop="channelCode" label="渠道编码"></el-table-column>
                     <!-- <el-table-column prop="busiType" label="业务类型"></el-table-column> -->
                     <el-table-column prop="normalTime" label="标准用时"></el-table-column>
-                    <el-table-column prop="timeoutTotal" label="超时业务笔数"></el-table-column>
-                    <el-table-column prop="aveTime" label="平均实际用时"></el-table-column>
+                    <el-table-column prop="timeoutTotal" label="超时业务笔数" width="120px"></el-table-column>
+                    <el-table-column prop="aveTime" label="平均实际用时" width="120px"></el-table-column>
                     <el-table-column prop="timeoutFlag" label="是否超时"></el-table-column>
                 </el-table>
                 <div slot="footer" class="dialog-footer myfooter">
@@ -97,19 +98,19 @@ export default {
           value: '-',
           width: '32%',
           options: [{dataName:'全部',dataCode:'-'},
-              {dataName:'哈尔滨',dataCode:'哈尔滨'},
-              {dataName:'齐齐哈尔',dataCode:'齐齐哈尔'},
-              {dataName:'牡丹江',dataCode:'牡丹江'},
-              {dataName:'佳木斯',dataCode:'佳木斯'},
-              {dataName:'大庆',dataCode:'大庆'},
-              {dataName:'鸡西',dataCode:'鸡西'},
-              {dataName:'双鸭山',dataCode:'双鸭山'},
-              {dataName:'伊春',dataCode:'伊春'},
-              {dataName:'七台河',dataCode:'七台河'},
-              {dataName:'鹤岗',dataCode:'鹤岗'},
-              {dataName:'黑河',dataCode:'黑河'},
-              {dataName:'绥化',dataCode:'绥化'},
-              {dataName:'大兴安岭地区',dataCode:'大兴安岭地区'}],
+              {dataName:'哈尔滨',dataCode:'哈尔滨'},
+              {dataName:'齐齐哈尔',dataCode:'齐齐哈尔'},
+              {dataName:'牡丹江',dataCode:'牡丹江'},
+              {dataName:'佳木斯',dataCode:'佳木斯'},
+              {dataName:'大庆',dataCode:'大庆'},
+              {dataName:'鸡西',dataCode:'鸡西'},
+              {dataName:'双鸭山',dataCode:'双鸭山'},
+              {dataName:'伊春',dataCode:'伊春'},
+              {dataName:'七台河',dataCode:'七台河'},
+              {dataName:'鹤岗',dataCode:'鹤岗'},
+              {dataName:'黑河',dataCode:'黑河'},
+              {dataName:'绥化',dataCode:'绥化'},
+              {dataName:'大兴安岭',dataCode:'大兴安岭'}],
       },{
           type: 'sel',
           tit: '渠道类型',
@@ -141,7 +142,7 @@ export default {
           {
               type: 'date',
               tit: '数据时间',
-              value: new Date(),
+              value: new Date(new Date()-24*60*60*1000),
               width: '32%',
           }
         ],
@@ -328,11 +329,11 @@ export default {
 
   created() {
 
-      var date = new Date(this.searchList[2].value);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
+      var date = new Date(this.searchList[3].value);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
       var Y = date.getFullYear();
       var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1);
       var D = (date.getDate()+1 < 10 ? '0'+(date.getDate()) : date.getDate())
-      this.params={opTime:Y+M+D,channelType:this.searchList[1].value,opName:this.searchList[2].value}
+      this.params={opTime:Y+M+D,channelType:this.searchList[1].value}
       this.getList(this.params, this.pageSize);
 
   },

File diff suppressed because it is too large
+ 517 - 500
src/pages/main/competitor/addCompetitor.vue


+ 754 - 0
src/pages/main/competitor/addCompetitorNew.vue

@@ -0,0 +1,754 @@
+<template>
+    <div>
+        <fullscreen :fullscreen.sync="fullscreen" class="container structure-l" style="margin: 0;width: calc(75% - 15px);">
+            <div class="container-box">
+                <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+                <div class="info-form">
+                    <el-form :model="infolist" ref="infolist" :rules="rules">
+                        <div class="info-line">
+                            <el-form-item prop="violationCate">
+                                <span><i>*</i>类别</span>
+                                <el-select :popper-append-to-body="false" v-model="infolist.violationCate" placeholder="请选择类别" @change="verifcheck(1)">
+                                    <el-option v-for="item in options1" :key="item.orderNumber" :label="item.dataName"
+                                               :value="item.dataCode">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item prop="provinceCode">
+                                <span><i>*</i>地域</span>
+                                <el-select :popper-append-to-body="false" v-model="infolist.provinceCode" placeholder="请选择省份" @change="verifcheck(2)">
+                                    <el-option v-for="item in options2" :key="item.orderNumber" :label="item.dataName"
+                                               :value="item.dataCode">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                        </div>
+                        <div class="info-line">
+                            <el-form-item prop="operatorCode">
+                                <span><i>*</i>运营商</span>
+                                <el-select :popper-append-to-body="false" v-model="infolist.operatorCode" placeholder="请选择运营商" @change="verifcheck(3)">
+                                    <el-option v-for="item in options3" :key="item.orderNumber" :label="item.dataName"
+                                               :value="item.dataCode">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item prop="packageGear">
+                                <span><i>*</i>套餐档位</span>
+                                <el-select v-model="infolist.packageGear" placeholder="请选择" @change="verifcheck(4)" >
+                                    <el-option
+                                        v-for="item in options6"
+                                        :key="item.value"
+                                        :label="item.label"
+                                        :value="item.value">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                        </div>
+                        <div class="info-line">
+                            <el-form-item prop="tariffName">
+                                <span><i>*</i>套餐名称</span>
+                                <el-input v-model="infolist.tariffName" placeholder="请输入资费名称"></el-input>
+                            </el-form-item>
+                            <el-form-item prop="recordRegionCode" class="info-line tea-r">
+                                <span><i>*</i>地市</span>
+                                <el-select :popper-append-to-body="false" v-model="infolist.recordRegionCode" placeholder="请选择违规地市" @change="verifcheck(5)">
+                                    <el-option v-for="item in options5" :key="item.dataCode" :label="item.dataName"
+                                               :value="item.dataCode">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                        </div>
+                        <div class="info-line">
+                            <el-form-item prop="monthFee">
+                                <span><i>*</i>月费(元)</span>
+                                <el-input v-model="infolist.monthFee" placeholder="请输入月费金额"></el-input>
+                            </el-form-item>
+                            <el-form-item prop="preFee">
+                                <span><i>*</i>预存款(元)</span>
+                                <el-input v-model="infolist.preFee" placeholder="请输入预存款金额"></el-input>
+                            </el-form-item>
+                            <el-form-item prop="concessionalRate">
+                                <span><i>*</i>优惠价(元)</span>
+                                <el-input v-model="infolist.concessionalRate" placeholder="请输入预存款金额"></el-input>
+                            </el-form-item>
+                        </div>
+                        <div class="info-line">
+                            <el-form-item>
+                                <span><i></i>酬金</span>
+                                <el-input v-model="infolist.remFee" placeholder="请输入酬金金额"></el-input>
+                            </el-form-item>
+                            <el-form-item prop="saleChnl">
+                                <span><i>*</i>销售渠道</span>
+                                <el-select :popper-append-to-body="false" v-model="infolist.saleChnl" placeholder="请选择销售渠道">
+                                    <el-option v-for="item in saleChnlopt" :key="item.dataName" :label="item.dataName"
+                                               :value="item.dataName">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                        </div>
+                        <div class="info-line">
+                            <el-form-item>
+                                <span><i></i>销售范围</span>
+                                <el-input v-model="infolist.saleScope" placeholder="请输入销售范围"></el-input>
+                            </el-form-item>
+                            <el-form-item>
+                                <span><i></i>月销量</span>
+                                <el-input v-model="infolist.monthSale" placeholder="请输入月销量"></el-input>
+                            </el-form-item>
+                            <el-form-item prop="isDb">
+                                <span><i>*</i>是否包含宽带</span>
+                                <el-select v-model="infolist.isDb" placeholder="请选择" >
+                                    <el-option
+                                        v-for="item in options7"
+                                        :key="item.value"
+                                        :label="item.label"
+                                        :value="item.value">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item>
+                                <span><i></i>宽带内容</span>
+                                <el-input v-model="infolist.dbContent" placeholder="请输入宽带内容"></el-input>
+                            </el-form-item>
+                        </div>
+
+                        <el-form-item prop="taffiffContent" class="info-line online">
+                            <span><i>*</i>套餐内容</span>
+                            <el-input v-model="infolist.taffiffContent" placeholder="请输入资费内容" type="textarea" :rows="3"></el-input>
+                        </el-form-item>
+                        <div style="padding-left: 60px">
+                            <myUpload @uploadBack="uploadBack" :fileInfo="fileInfo" :fileList="fileInfo.fileList"></myUpload>
+                        </div>
+                    </el-form>
+                </div>
+                <div class="titbtn-box">
+                    <el-button type="primary" plain @click="submitList(1)">取消</el-button>
+                    <el-button type="primary" @click="submitList">提交</el-button>
+                </div>
+            </div>
+        </fullscreen>
+        <competeRight></competeRight>
+    </div>
+</template>
+<script>
+import competeRight from "../../../components/competeRight";
+import myUpload from "../../../components/upload";
+import toolList from "../../../components/toolList";
+
+export default {
+    components: {
+        competeRight,
+        myUpload,
+        toolList
+    },
+    data() {
+        const fileLists = (rule, value, callback) => {
+            if (!this.fileLists.length > 0) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const opName = (rule, value, callback) => {
+            if (!this.infolist.opName) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const contactPhone = (rule, value, callback) => {
+            let x = this.infolist.contactPhone * 1;
+            if (!(/^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/.test(x))) {
+                callback(new Error('请输入正确的电话号码'))
+            } else {
+                callback()
+            }
+        }
+        const violationCate = (rule, value, callback) => {
+            if (!this.infolist.violationCate) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const provinceCode = (rule, value, callback) => {
+            if (!this.infolist.provinceCode) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const operatorCode = (rule, value, callback) => {
+            if (!this.infolist.operatorCode) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const recordRegionCode = (rule, value, callback) => {
+            if (!this.infolist.recordRegionCode) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const packageGear = (rule, value, callback) => {
+            if (!this.infolist.packageGear) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const tariffName = (rule, value, callback) => {
+            if (!this.infolist.tariffName) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const monthFee = (rule, value, callback) => {
+            let x = isNaN(this.infolist.monthFee);
+            if (x) {
+                callback(new Error('请输入数字'))
+            } else {
+                callback()
+            }
+        }
+        const preFee = (rule, value, callback) => {
+            let x = isNaN(this.infolist.preFee);
+            if (x) {
+                callback(new Error('请输入数字'))
+            } else {
+                callback()
+            }
+        }
+        const concessionalRate = (rule, value, callback) => {
+            let x = isNaN(this.infolist.concessionalRate);
+            if (x) {
+                callback(new Error('请输入数字'))
+            } else {
+                callback()
+            }
+        }
+        const remFee = (rule, value, callback) => {
+            if (!this.infolist.remFee) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const saleChnl = (rule, value, callback) => {
+            if (!this.infolist.saleChnl) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const saleScope = (rule, value, callback) => {
+            if (!this.infolist.saleScope) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const monthSale = (rule, value, callback) => {
+            if (!this.infolist.monthSale) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const isDb = (rule, value, callback) => {
+            if (!this.infolist.isDb) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const dbContent = (rule, value, callback) => {
+            if (!this.infolist.dbContent) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const evidenceType = (rule, value, callback) => {
+            if (!this.infolist.evidenceType) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const validateUsername = (rule, value, callback) => {
+            if (!this.infolist.violationContent) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const taffiffContent = (rule, value, callback) => {
+            if (!this.infolist.taffiffContent) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        return {
+            rules: {
+                fileLists: [{
+                    required: true,
+                    trigger: 'change',
+                    validator: fileLists
+                }],
+                recordRegionCode: [{
+                    required: true,
+                    trigger: 'change',
+                    validator: recordRegionCode
+                }],
+                opName: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: opName
+                }],
+                contactPhone: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: contactPhone
+                }],
+                violationCate: [{
+                    required: true,
+                    trigger: 'change',
+                    validator: violationCate
+                }],
+                provinceCode: [{
+                    required: true,
+                    trigger: 'change',
+                    validator: provinceCode
+                }],
+                operatorCode: [{
+                    required: true,
+                    trigger: 'change',
+                    validator: operatorCode
+                }],
+                packageGear: [{
+                    required: true,
+                    trigger: 'change',
+                    validator: packageGear
+                }],
+                tariffName: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: tariffName
+                }],
+                monthFee: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: monthFee
+                }],
+                preFee: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: preFee
+                }],
+                concessionalRate: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: concessionalRate
+                }],
+                remFee: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: remFee
+                }],
+                saleChnl: [{
+                    required: true,
+                    trigger: 'change',
+                    validator: saleChnl
+                }],
+                monthSale: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: monthSale
+                }],
+                isDb: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: isDb
+                }],
+                dbContent: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: dbContent
+                }],
+                evidenceType: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: evidenceType
+                }],
+                saleScope: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: saleScope
+                }],
+                violationContent: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: validateUsername
+                }],
+                taffiffContent: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: taffiffContent
+                }],
+            },
+            tooltit: '新增竞争对手信息',
+            infolist: {},
+            options1: [],
+            options2: [],
+            options3: [],
+            options4: [],
+            options5: [],
+            options6: [{
+                value: '低档:58元以下套餐',
+                label: '低档:58元以下套餐'
+            }, {
+                value: '中档:58元(含)-128元套餐(不含)',
+                label: '中档:58元(含)-128元套餐(不含)'
+            }, {
+                value: '高档:128元及以上套餐',
+                label: '高档:128元及以上套餐'
+            }],
+            options7: [{
+                value: '是',
+                label: '是'
+            }, {
+                value: '否',
+                label: '否'
+            }],
+            saleChnlopt: [],
+            fullscreen: false,
+            fileList: [],
+            fileLists: [],
+            attList: [],
+            fileInfo: {
+                limit: 5,
+                url: '/market/compatt/upload',
+                fileList: []
+            },
+            userInfo: {},
+        }
+    },
+    methods: {
+        //功能栏
+        iconCli(v) {
+            if (v === 1) {
+
+            }
+            if (v === 2) {
+                this.fullscreen = !this.fullscreen
+            }
+        },
+        //查询字典
+        getListwglb() {
+            this.$http({
+                url: "/market/cfgDataDict/queryList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    dictCode: 'wglb'
+                },
+            }).then((res) => {
+                this.options1 = res.data;
+            });
+        },
+        getListsf() {
+            this.$http({
+                url: "/market/cfgDataDict/queryList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    dictCode: 'sf'
+                },
+            }).then((res) => {
+                this.options2 = res.data;
+            });
+        },
+        getListyys(v) {
+            this.$http({
+                url: "/market/cfgDataDict/queryList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    dictCode: 'yys'
+                },
+            }).then((res) => {
+                if (v === 1) {
+                    this.options3 = [];
+                    res.data.forEach(item => {
+                        if (item.dataName !== '移动') {
+                            this.options3.push(item)
+                        }
+                    })
+                } else {
+                    this.options3 = res.data;
+                }
+            });
+        },
+        getListwgxx() {
+            this.$http({
+                url: "/market/cfgDataDict/queryList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    dictCode: 'wgxx'
+                },
+            }).then((res) => {
+                this.options4 = res.data;
+            });
+        },
+        getListregion() {
+            this.$http({
+                url: "/market/cfgDataDict/queryList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    dictCode: 'region'
+                },
+            }).then((res) => {
+                this.options5 = res.data;
+            });
+        },
+        getsaleChnl() {
+            this.$http({
+                url: "/market/cfgDataDict/queryList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    dictCode: 'saleChnl'
+                },
+            }).then((res) => {
+                this.saleChnlopt = res.data;
+            });
+        },
+        //添加、取消
+        submitList(v) {
+            if (v === 1) {
+                this.getUser();
+                this.$router.push("/competitor?type=1");
+                return
+            }
+            let _this = this;
+            let attList = [];
+            for (let i = 0; i < this.attList.length; i++) {
+                attList.push({
+                    id: this.attList[i].id
+                });
+            }
+            this.$refs.infolist.validate(valid => {
+                if (valid) {
+                    let nowdata = _this.$formatDate(new Date(), "YYYY-MM-DD");
+                    this.infolist.opTime = nowdata;
+                    this.infolist.sts = 0;
+                    this.infolist.stsDesc = '未审核';
+                    this.infolist.type = '正规';
+                    this.$http({
+                        url: "/market/cwcompetitor/save",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                        },
+                        data: {
+                            wCompetitor: this.infolist,
+                            attList: attList
+                        },
+                    }).then((res) => {
+                        if (res.data.result === 1) {
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'error'
+                            });
+                        } else {
+                            _this.$message({
+                                message: '添加成功',
+                                type: 'success'
+                            });
+                            _this.$router.push("/competitor");
+                        }
+                    });
+                }
+            })
+        },
+        //处理所需数据
+        verifcheck(v) {
+            if (v === 1) {
+                for (let i = 0; i < this.options1.length; i++) {
+                    if (this.options1[i].dataCode === this.infolist.violationCate) {
+                        this.infolist.violationCateName = this.options1[i].dataName
+                    }
+                }
+            }
+            if (v === 2) {
+                if (this.infolist.provinceCode === 'hlj') {
+                    this.getListyys(1);
+                    if (this.infolist.operatorCode === 'mobile') {
+                        this.infolist.operatorCode = '';
+                    }
+                } else {
+                    this.getListyys();
+                }
+                for (let i = 0; i < this.options2.length; i++) {
+                    if (this.options2[i].dataCode === this.infolist.provinceCode) {
+                        this.infolist.provinceName = this.options2[i].dataName
+                    }
+                }
+            }
+            if (v === 3) {
+                for (let i = 0; i < this.options3.length; i++) {
+                    if (this.options3[i].dataCode === this.infolist.operatorCode) {
+                        this.infolist.operatorName = this.options3[i].dataName
+                    }
+                }
+            }
+            if (v === 4) {
+                for (let i = 0; i < this.options4.length; i++) {
+                    if (this.options4[i].dataCode === this.infolist.violationItem) {
+                        this.infolist.violationItemName = this.options4[i].dataName
+                    }
+                }
+            }
+            if (v === 5) {
+                for (let i = 0; i < this.options5.length; i++) {
+                    if (this.options5[i].dataCode === this.infolist.recordRegionCode) {
+                        this.infolist.recordRegionName = this.options5[i].dataName
+                    }
+                }
+            }
+        },
+        uploadBack(v) {
+            this.attList = v;
+        },
+        getUser() {
+            this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+            this.infolist = {
+                opNo: '',
+                regionName: '',
+                regionCode: '',
+                deptName: '',
+                deptCode: '',
+                opName: '',
+                contactPhone: '',
+            };
+            this.infolist.opNo = this.userInfo.loginNo;
+            // this.infolist.regionName = '';
+            // this.infolist.regionCode = '';
+            // this.infolist.deptName = '';
+            // this.infolist.deptCode = '';
+            this.infolist.opName = this.userInfo.loginName;
+            this.infolist.contactPhone = this.userInfo.phoneNo;
+        }
+    },
+    mounted() {
+
+    },
+    created() {
+        this.getListwglb();
+        this.getListyys();
+        this.getListsf();
+        this.getListwgxx();
+        this.getListregion();
+        this.getsaleChnl();
+        this.getUser();
+    },
+    watch:{
+        $route(to, from) {
+            if(to.path === '/addCompetitor'){
+
+            }
+        },
+    }
+}
+</script>
+<style scoped lang="scss">
+.titbox {
+    div {
+        float: right;
+        margin-top: 20px;
+
+        i {
+            font-size: 22px;
+            margin-left: 20px;
+            cursor: pointer;
+        }
+    }
+}
+
+.info-form {
+    margin-top: 30px;
+    height: calc(100% - 150px);
+    overflow-y: scroll;
+
+    .info-line {
+        width: 100%;
+        display: block;
+
+        div {
+            width: 50%;
+            display: inline-block;
+        }
+
+        span {
+            width: 80px;
+            display: inline-block;
+            text-align: left;
+
+            i {
+                color: red;
+                display: inline-block;
+                padding-right: 5px;
+            }
+        }
+
+        .el-select,
+        .el-input {
+            width: calc(100% - 100px);
+        }
+    }
+
+    .tea-r {
+        /*text-align: right;*/
+    }
+
+    .online {
+        width: 100%;
+
+        span {
+            vertical-align: top;
+        }
+
+        .el-textarea {
+            width: calc(100% - 100px);
+        }
+    }
+}
+
+.titbtn-box {
+    text-align: right;
+    margin: 15px 20px 0 0;
+
+    button {
+        width: 120px;
+    }
+}
+</style>

+ 793 - 0
src/pages/main/competitor/changeCompetNew.vue

@@ -0,0 +1,793 @@
+<template>
+    <div>
+        <fullscreen :fullscreen.sync="fullscreen" class="container structure-l" style="margin: 0;width: calc(75% - 15px);">
+            <div class="container-box">
+                <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+                <div class="info-form">
+                    <el-form :model="infolist" ref="infolist" :rules="rules">
+                        <div class="info-line">
+                            <el-form-item prop="violationCate">
+                                <span><i>*</i>类别</span>
+                                <el-select :popper-append-to-body="false" v-model="infolist.violationCate" placeholder="类别" @change="verifcheck(1)">
+                                    <el-option v-for="item in options1" :key="item.orderNumber" :label="item.dataName"
+                                               :value="item.dataCode">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item prop="provinceCode">
+                                <span><i>*</i>地域</span>
+                                <el-select :popper-append-to-body="false" v-model="infolist.provinceCode" placeholder="省份" @change="verifcheck(2)">
+                                    <el-option v-for="item in options2" :key="item.orderNumber" :label="item.dataName"
+                                               :value="item.dataCode">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                        </div>
+                        <div class="info-line">
+                            <el-form-item prop="operatorCode">
+                                <span><i>*</i>运营商</span>
+                                <el-select :popper-append-to-body="false" v-model="infolist.operatorCode" placeholder="运营商" @change="verifcheck(3)">
+                                    <el-option v-for="item in options3" :key="item.orderNumber" :label="item.dataName"
+                                               :value="item.dataCode">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item prop="packageGear">
+                                <span><i>*</i>套餐档位</span>
+                                <el-select :popper-append-to-body="false" v-model="infolist.packageGear" placeholder="违规项目" @change="verifcheck(4)">
+                                    <el-option
+                                        v-for="item in options6"
+                                        :key="item.value"
+                                        :label="item.label"
+                                        :value="item.value">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                        </div>
+                        <div class="info-line">
+                            <el-form-item prop="tariffName">
+                                <span><i>*</i>套餐名称</span>
+                                <el-input v-model="infolist.tariffName" placeholder="资费名称"></el-input>
+                            </el-form-item>
+                            <el-form-item prop="recordRegionCode" class="info-line tea-r">
+                                <span><i>*</i>地市</span>
+                                <el-select :popper-append-to-body="false" v-model="infolist.recordRegionCode" placeholder="违规地市" @change="verifcheck(5)">
+                                    <el-option v-for="item in options5" :key="item.dataCode" :label="item.dataName"
+                                               :value="item.dataCode">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                        </div>
+                        <div class="info-line">
+                            <el-form-item>
+                                <span>月费(元)</span>
+                                <el-input v-model="infolist.monthFee" placeholder="月费"></el-input>
+                            </el-form-item>
+                            <el-form-item>
+                                <span>预存款(元)</span>
+                                <el-input v-model="infolist.preFee" placeholder="预存款"></el-input>
+                            </el-form-item>
+                            <el-form-item>
+                                <span><i>*</i>优惠价(元)</span>
+                                <el-input v-model="infolist.concessionalRate" placeholder="请输入预存款金额"></el-input>
+                            </el-form-item>
+                        </div>
+                        <div class="info-line">
+                            <el-form-item>
+                                <span>酬金</span>
+                                <el-input v-model="infolist.remFee" placeholder="酬金"></el-input>
+                            </el-form-item>
+                            <el-form-item>
+                                <span>销售渠道</span>
+                                <el-select :popper-append-to-body="false" v-model="infolist.saleChnl" placeholder="请选择销售渠道">
+                                    <el-option v-for="item in saleChnlopt" :key="item.dataName" :label="item.dataName"
+                                               :value="item.dataName">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                        </div>
+                        <div class="info-line">
+                            <el-form-item prop="saleScope">
+                                <span><i>*</i>销售范围</span>
+                                <el-input v-model="infolist.saleScope" placeholder="销售范围"></el-input>
+                            </el-form-item>
+                            <el-form-item prop="monthSale">
+                                <span><i>*</i>月销量</span>
+                                <el-input v-model="infolist.monthSale" placeholder="月销量"></el-input>
+                            </el-form-item>
+                            <el-form-item prop="isDb">
+                                <span><i>*</i>是否包含宽带</span>
+                                <el-select v-model="infolist.isDb" placeholder="请选择" >
+                                    <el-option
+                                        v-for="item in options7"
+                                        :key="item.value"
+                                        :label="item.label"
+                                        :value="item.value">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item>
+                                <span><i></i>宽带内容</span>
+                                <el-input v-model="infolist.dbContent" placeholder="请输入宽带内容"></el-input>
+                            </el-form-item>
+                        </div>
+                        <div class="info-line">
+                            <el-form-item>
+                                <span>解决结果</span>
+                                <el-select v-model="infolist.fixFlag" placeholder="解决结果">
+                                    <el-option v-for="item in ifoption" :key="item.id" :label="item.name" :value="item.id">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item>
+                                <span>反馈总部</span>
+                                <el-select v-model="infolist.groupFlag" placeholder="是否反馈总部">
+                                    <el-option v-for="item in ifoption" :key="item.id" :label="item.name" :value="item.id">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                        </div>
+                        <div class="info-line">
+                            <el-form-item>
+                                <span>返回竞合</span>
+                                <el-select v-model="infolist.wwFlag" placeholder="是否返回竞合">
+                                    <el-option v-for="item in ifoption" :key="item.id" :label="item.name" :value="item.id">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item>
+                                <span>反馈总局</span>
+                                <el-select v-model="infolist.admFlag" placeholder="是否反馈总局">
+                                    <el-option v-for="item in ifoption" :key="item.id" :label="item.name" :value="item.id">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                        </div>
+                        <!-- <div class="info-line">
+                            <el-form-item prop="opName">
+                                <span><i>*</i>上报人</span>
+                                <el-input v-model="infolist.opName" placeholder="销售范围"></el-input>
+                            </el-form-item>
+                            <el-form-item prop="contactPhone">
+                                <span><i>*</i>联系电话</span>
+                                <el-input v-model="infolist.contactPhone" placeholder="月销量"></el-input>
+                            </el-form-item>
+                        </div> -->
+                        <el-form-item prop="taffiffContent" class="info-line online">
+                            <span><i>*</i>资费内容</span>
+                            <el-input v-model="infolist.taffiffContent" placeholder="套餐内容" type="textarea" :rows="3"></el-input>
+                        </el-form-item>
+                        <div style="padding-left: 60px">
+                            <myUpload @uploadBack="uploadBack" :fileInfo="fileInfo" :fileList="fileInfo.fileList"></myUpload>
+                        </div>
+                    </el-form>
+                </div>
+                <div class="titbtn-box">
+                    <el-button type="primary" plain @click="submitList(1)">取消</el-button>
+                    <el-button type="primary" @click="submitList">提交</el-button>
+                </div>
+            </div>
+
+        </fullscreen>
+        <competeRight></competeRight>
+    </div>
+</template>
+<script>
+import competeRight from "../../../components/competeRight";
+import myUpload from "../../../components/upload";
+import toolList from "../../../components/toolList";
+
+export default {
+    components: {
+        competeRight,
+        myUpload,
+        toolList
+    },
+    data() {
+        const fileLists = (rule, value, callback) => {
+            if (!this.fileLists.length > 0) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const opName = (rule, value, callback) => {
+            if (!this.infolist.opName) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const contactPhone = (rule, value, callback) => {
+            let x = this.infolist.contactPhone * 1;
+            if (!(/^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/.test(x))) {
+                callback(new Error('请输入正确的电话号码'))
+            } else {
+                callback()
+            }
+        }
+        const violationCate = (rule, value, callback) => {
+            if (!this.infolist.violationCate) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const provinceCode = (rule, value, callback) => {
+            if (!this.infolist.provinceCode) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const operatorCode = (rule, value, callback) => {
+            if (!this.infolist.operatorCode) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const recordRegionCode = (rule, value, callback) => {
+            if (!this.infolist.recordRegionCode) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const violationItem = (rule, value, callback) => {
+            if (!this.infolist.violationItem) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const tariffName = (rule, value, callback) => {
+            if (!this.infolist.tariffName) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const monthFee = (rule, value, callback) => {
+            let x = isNaN(this.infolist.monthFee);
+            if (x) {
+                callback(new Error('请输入数字'))
+            } else {
+                callback()
+            }
+        }
+        const preFee = (rule, value, callback) => {
+            let x = isNaN(this.infolist.preFee);
+            if (x) {
+                callback(new Error('请输入数字'))
+            } else {
+                callback()
+            }
+        }
+        const remFee = (rule, value, callback) => {
+            if (!this.infolist.remFee) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const saleChnl = (rule, value, callback) => {
+            if (!this.infolist.saleChnl) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const saleScope = (rule, value, callback) => {
+            if (!this.infolist.saleScope) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const monthSale = (rule, value, callback) => {
+            if (!this.infolist.monthSale) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const validateUsername = (rule, value, callback) => {
+            if (!this.infolist.violationContent) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        const taffiffContent = (rule, value, callback) => {
+            if (!this.infolist.taffiffContent) {
+                callback(new Error('不能为空'))
+            } else {
+                callback()
+            }
+        }
+        return {
+            rules: {
+                fileLists: [{
+                    required: true,
+                    trigger: 'change',
+                    validator: fileLists
+                }],
+                recordRegionCode: [{
+                    required: true,
+                    trigger: 'change',
+                    validator: recordRegionCode
+                }],
+                opName: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: opName
+                }],
+                contactPhone: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: contactPhone
+                }],
+                violationCate: [{
+                    required: true,
+                    trigger: 'change',
+                    validator: violationCate
+                }],
+                provinceCode: [{
+                    required: true,
+                    trigger: 'change',
+                    validator: provinceCode
+                }],
+                operatorCode: [{
+                    required: true,
+                    trigger: 'change',
+                    validator: operatorCode
+                }],
+                violationItem: [{
+                    required: true,
+                    trigger: 'change',
+                    validator: violationItem
+                }],
+                tariffName: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: tariffName
+                }],
+                monthFee: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: monthFee
+                }],
+                preFee: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: preFee
+                }],
+                remFee: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: remFee
+                }],
+                saleChnl: [{
+                    required: true,
+                    trigger: 'change',
+                    validator: saleChnl
+                }],
+                monthSale: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: monthSale
+                }],
+                saleScope: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: saleScope
+                }],
+                violationContent: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: validateUsername
+                }],
+                taffiffContent: [{
+                    required: true,
+                    trigger: 'blur',
+                    validator: taffiffContent
+                }],
+            },
+            tooltit: '修改竞争对手信息',
+            infolist: {
+                roomname: '0'
+            },
+            options1: [],
+            options2: [],
+            options3: [],
+            options4: [],
+            options5: [],
+            options6: [{
+                value: '低档:58元以下套餐',
+                label: '低档:58元以下套餐'
+            }, {
+                value: '中档:58元(含)-128元套餐(不含)',
+                label: '中档:58元(含)-128元套餐(不含)'
+            }, {
+                value: '高档:128元及以上套餐',
+                label: '高档:128元及以上套餐'
+            }],
+            options7: [{
+                value: '是',
+                label: '是'
+            }, {
+                value: '否',
+                label: '否'
+            }],
+            saleChnlopt: [],
+            fullscreen: false,
+            fileList: [],
+            fileLists: [],
+            attList: [],
+            fileInfo: {
+                limit: 5,
+                url: '/market/compatt/upload',
+                fileList: []
+            },
+            ifoption: [{
+                id: '0',
+                name: '是'
+            },
+                {
+                    id: '1',
+                    name: '否'
+                }
+            ]
+        }
+    },
+    methods: {
+        //获取详情
+        getInfo(v) {
+            let _this = this;
+            this.$http({
+                url: "/market/cwcompetitor/queryInfo",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    id: v
+                },
+            }).then((res) => {
+                _this.infolist = res.data;
+                this.attList = [];
+                this.fileInfo.fileList = [];
+                res.data.attList.forEach(item => {
+                    this.fileInfo.fileList.push({
+                        name: item.fileName,
+                        url: '',
+                        id: item.id,
+                        fileName: item.fileName
+                    });
+                    this.attList.push({
+                        name: item.fileName,
+                        url: '',
+                        id: item.id,
+                        fileName: item.fileName
+                    });
+                })
+                if (this.infolist.provinceCode === 'hlj') {
+                    this.getListyys(1);
+                } else {
+                    this.getListyys();
+                }
+            });
+        },
+        //功能栏
+        iconCli(v) {
+            if (v === 1) {
+
+            }
+            if (v === 2) {
+                this.fullscreen = !this.fullscreen
+            }
+        },
+        //查询字典
+        getListwglb() {
+            this.$http({
+                url: "/market/cfgDataDict/queryList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    dictCode: 'wglb'
+                },
+            }).then((res) => {
+                this.options1 = res.data;
+            });
+        },
+        getListsf() {
+            this.$http({
+                url: "/market/cfgDataDict/queryList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    dictCode: 'sf'
+                },
+            }).then((res) => {
+                this.options2 = res.data;
+            });
+        },
+        getListyys(v) {
+            this.$http({
+                url: "/market/cfgDataDict/queryList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    dictCode: 'yys'
+                },
+            }).then((res) => {
+                if (v === 1) {
+                    this.options3 = [];
+                    res.data.forEach(item => {
+                        if (item.dataName !== '移动') {
+                            this.options3.push(item)
+                        }
+                    })
+                } else {
+                    this.options3 = res.data;
+                }
+            });
+        },
+        getListwgxx() {
+            this.$http({
+                url: "/market/cfgDataDict/queryList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    dictCode: 'wgxx'
+                },
+            }).then((res) => {
+                this.options4 = res.data;
+            });
+        },
+        getListregion() {
+            this.$http({
+                url: "/market/cfgDataDict/queryList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    dictCode: 'region'
+                },
+            }).then((res) => {
+                this.options5 = res.data;
+            });
+        },
+        getsaleChnl() {
+            this.$http({
+                url: "/market/cfgDataDict/queryList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    dictCode: 'saleChnl'
+                },
+            }).then((res) => {
+                this.saleChnlopt = res.data;
+            });
+        },
+        //添加、取消
+        submitList(v) {
+            if (v === 1) {
+                this.$router.push("/competitor");
+                return
+            }
+            let _this = this;
+            let attList = [];
+            for (let i = 0; i < this.attList.length; i++) {
+                attList.push({
+                    id: this.attList[i].id
+                });
+            }
+            this.infolist.fixFlag === '1' ? this.infolist.fixFlagDesc = '否' : this.infolist.fixFlagDesc = '是';
+            this.infolist.groupFlag === '1' ? this.infolist.groupFlagDesc = '否' : this.infolist.groupFlagDesc = '是';
+            this.infolist.wwFlag === '1' ? this.infolist.wwFlagDesc = '否' : this.infolist.wwFlagDesc = '是';
+            this.infolist.admFlag === '1' ? this.infolist.admFlagDesc = '否' : this.infolist.admFlagDesc = '是';
+            this.$refs.infolist.validate(valid => {
+                if (valid) {
+                    let nowdata = _this.$formatDate(new Date(), "YYYY-MM-DD");
+                    this.infolist.opTime = nowdata;
+                    this.infolist.sts = 0;
+                    this.infolist.stsDesc = '未审核';
+                    this.$http({
+                        url: "/market/cwcompetitor/update",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                        },
+                        data: {
+                            wCompetitor: this.infolist,
+                            attList: attList
+                        },
+                    }).then((res) => {
+                        if (res.data.result === 1) {
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'error'
+                            });
+                        } else {
+                            _this.$message({
+                                message: '修改成功',
+                                type: 'success'
+                            });
+                            _this.$router.push("/competitor");
+                        }
+                    });
+                }
+            })
+        },
+        //处理所需数据
+        verifcheck(v) {
+            if (v === 1) {
+                for (let i = 0; i < this.options1.length; i++) {
+                    if (this.options1[i].dataCode === this.infolist.violationCate) {
+                        this.infolist.violationCateName = this.options1[i].dataName
+                    }
+                }
+            }
+            if (v === 2) {
+                if (this.infolist.provinceCode === 'hlj') {
+                    this.getListyys(1);
+                    if (this.infolist.operatorCode === 'mobile') {
+                        this.infolist.operatorCode = '';
+                    }
+                } else {
+                    this.getListyys();
+                }
+                for (let i = 0; i < this.options2.length; i++) {
+                    if (this.options2[i].dataCode === this.infolist.provinceCode) {
+                        this.infolist.provinceName = this.options2[i].dataName
+                    }
+                }
+            }
+            if (v === 3) {
+                for (let i = 0; i < this.options3.length; i++) {
+                    if (this.options3[i].dataCode === this.infolist.operatorCode) {
+                        this.infolist.operatorName = this.options3[i].dataName
+                    }
+                }
+            }
+            if (v === 4) {
+                for (let i = 0; i < this.options4.length; i++) {
+                    if (this.options4[i].dataCode === this.infolist.violationItem) {
+                        this.infolist.violationItemName = this.options4[i].dataName
+                    }
+                }
+            }
+            if (v === 5) {
+                for (let i = 0; i < this.options5.length; i++) {
+                    if (this.options5[i].dataCode === this.infolist.recordRegionCode) {
+                        this.infolist.recordRegionName = this.options5[i].dataName
+                    }
+                }
+            }
+        },
+        uploadBack(v) {
+            this.attList = v;
+        }
+    },
+    mounted() {
+
+    },
+    created() {
+        this.getListwglb();
+        this.getListyys();
+        this.getListsf();
+        this.getListwgxx();
+        this.getListregion();
+        this.getsaleChnl();
+        this.getInfo(this.$route.query.id);
+    }
+}
+</script>
+<style scoped lang="scss">
+.fileline {
+    color: #666;
+    font-size: 14px;
+    overflow: hidden;
+    padding: 0 10px;
+    height: 28px;
+    line-height: 28px;
+    border-radius: 3px;
+
+    span {}
+
+    i {
+        float: right;
+        height: 28px;
+        line-height: 28px;
+        cursor: pointer;
+    }
+}
+
+.fileline:hover {
+    background: #f4f4f4;
+}
+
+.titbox {
+    div {
+        float: right;
+        margin-top: 20px;
+
+        i {
+            font-size: 22px;
+            margin-left: 20px;
+            cursor: pointer;
+        }
+    }
+}
+
+.info-form {
+    margin-top: 30px;
+    height: calc(100% - 150px);
+    overflow-y: scroll;
+
+    .info-line {
+        width: 100%;
+        display: block;
+
+        div {
+            width: 50%;
+            display: inline-block;
+        }
+
+        span {
+            width: 80px;
+            display: inline-block;
+            text-align: left;
+
+            i {
+                color: red;
+                display: inline-block;
+                padding-right: 5px;
+            }
+        }
+
+        .el-select,
+        .el-input {
+            width: calc(100% - 100px);
+        }
+    }
+
+    .tea-r {
+        /*text-align: right;*/
+    }
+
+    .online {
+        width: 100%;
+
+        span {
+            vertical-align: top;
+        }
+
+        .el-textarea {
+            width: calc(100% - 100px);
+        }
+    }
+}
+
+.titbtn-box {
+    text-align: right;
+    margin: 15px 20px;
+
+    button {
+        width: 120px;
+    }
+}
+</style>

+ 410 - 0
src/pages/main/competitor/competitorInfoNew.vue

@@ -0,0 +1,410 @@
+<template>
+    <div class="dia-box">
+        <fullscreen :fullscreen.sync="fullscreen" class="container structure-l" style="margin: 0;width: calc(75% - 15px);">
+            <div class="container-box">
+                <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+                <!-- <div class="titbox">
+                                    <span :style="'color:'+tableData.bg">({{tableData.stsDesc}})</span>
+                                </div> -->
+                <div class="checknum">
+                    <span>上报人:{{tableData.opName}}</span>
+                    <!--                    <span>部门:市场部</span>-->
+                    <span>联系方式:{{tableData.contactPhone}}</span>
+                    <!--                    <span>地市:哈尔滨市移动分公司</span>-->
+                    <!--                    <span>职级:部门经理</span>-->
+                    <span>上报时间:{{tableData.opTime}}</span>
+                </div>
+                <div style="height: 116px;background: #f4f4f4;">
+                    <uploadDown :datalist="datalist" :dialogStatus="uploadstatus" style="margin-top: 10px;"></uploadDown>
+                </div>
+                <div class="tab-boxinfo">
+                    <div class="box-line">
+                        <span>省份</span>
+                        <div>{{tableData.provinceName}}</div>
+                    </div>
+                    <div class="box-line">
+                        <span>运营商</span>
+                        <div>{{tableData.operatorName}}</div>
+                    </div>
+                    <div class="box-line">
+                        <span>类别</span>
+                        <div>{{tableData.violationCateName}}</div>
+                    </div>
+                    <div class="box-line box-line-bg">
+                        <span>月费</span>
+                        <div>{{tableData.monthFee}} (元)</div>
+                    </div>
+                    <div class="box-line box-line-bg">
+                        <span>预存款</span>
+                        <div>{{tableData.preFee}} (元)</div>
+                    </div>
+                    <div class="box-line">
+                        <span>套餐名称</span>
+                        <div>{{tableData.tariffName}}</div>
+                    </div>
+                    <div class="box-line">
+                        <span>套餐内容</span>
+                        <div>{{tableData.taffiffContent}}</div>
+                    </div>
+                    <div class="box-line">
+                        <span>酬金</span>
+                        <div>{{tableData.remFee}}</div>
+                    </div>
+                    <div class="box-line box-line-bg">
+                        <span>销售范围</span>
+                        <div>{{tableData.saleScope}}</div>
+                    </div>
+                    <div class="box-line box-line-bg">
+                        <span>销售渠道</span>
+                        <div>{{tableData.saleChnl}}</div>
+                    </div>
+                    <div class="box-line box-line-bg">
+                        <span>月销量</span>
+                        <div>{{tableData.monthSale}}</div>
+                    </div>
+                    <div class="box-line">
+                        <span>地市</span>
+                        <div>{{tableData.recordRegionName}}</div>
+                    </div>
+                    <!--                    <div class="box-line">-->
+                    <!--                        <span>上报时间</span>-->
+                    <!--                        <div>{{tableData.opTime}}</div>-->
+                    <!--                    </div>-->
+                    <!--                    <div class="box-line">-->
+                    <!--                        <span>上报人</span>-->
+                    <!--                        <div>{{tableData.opName}}</div>-->
+                    <!--                    </div>-->
+                    <!--                    <div class="box-line">-->
+                    <!--                        <span>联系电话</span>-->
+                    <!--                        <div>{{tableData.contactPhone}}</div>-->
+                    <!--                    </div>-->
+                    <div class="box-line" v-if="tableData.sts*1!==0">
+                        <span>审批人</span>
+                        <div>{{tableData.auditName}}</div>
+                    </div>
+                    <div class="box-line-bg">
+                        <div class="box-line" v-if="tableData.sts*1!==0">
+                            <span>是否已解决</span>
+                            <div>{{tableData.fixFlagDesc}}</div>
+                        </div>
+                        <div class="box-line" v-if="tableData.sts*1!==0">
+                            <span>是否反馈总部</span>
+                            <div>{{tableData.groupFlagDesc}}</div>
+                        </div>
+                        <div class="box-line" v-if="tableData.sts*1!==0">
+                            <span>是否返回竞合</span>
+                            <div>{{tableData.wwFlagDesc}}</div>
+                        </div>
+                    </div>
+
+
+                    <div class="box-line" v-if="tableData.sts*1!==0">
+                        <span>是否反馈总局</span>
+                        <div>{{tableData.admFlagDesc}}</div>
+                    </div>
+
+                    <div class="box-line" v-if="tableData.sts*1!==0">
+                        <span>审批意见</span>
+                        <div>{{tableData.auditResultDesc}}.{{tableData.auditRemarks}}</div>
+                    </div>
+
+
+                </div>
+                <div class="titbtn-box" v-if="infotype===1">
+                    <el-button size="medium" type="warning" icon="el-icon-picture" @click="outlineinfo(1)">对外导出图片</el-button>
+                    <el-button size="medium" type="primary" icon="el-icon-folder-opened" @click="outlineinfo(2)">对内导出word</el-button>
+                </div>
+                <div class="titbtn-box" v-if="infotype!==1">
+                    <el-button size="medium" type="danger" @click="exaStatus=true">拒绝</el-button>
+                    <el-button size="medium" type="primary" @click="exaInfo(1,'已通过')">通过</el-button>
+                </div>
+            </div>
+            <el-dialog title="拒绝申请" :visible.sync="exaStatus" width="50%" :destroy-on-close="true" :modal-append-to-body="false"
+                       :close-on-click-modal="false">
+                <el-input type="textarea" :rows="4" placeholder="请输入拒绝原因或建议" v-model="auditRemarks">
+                </el-input>
+                <div slot="footer" class="dialog-footer">
+                    <el-button @click="exaStatus = false">取 消</el-button>
+                    <el-button type="primary" @click="exaInfo(2,'未通过')">确 定</el-button>
+                </div>
+            </el-dialog>
+        </fullscreen>
+
+        <competeRight></competeRight>
+
+    </div>
+</template>
+<script>
+import competeRight from "../../../components/competeRight";
+import uploadDown from "../../../components/uploadDown";
+import toolList from "../../../components/toolList";
+
+export default {
+    components: {
+        competeRight,
+        uploadDown,
+        toolList
+    },
+    data() {
+        return {
+            tooltit: '竞争对手信息',
+            tableData: {},
+            fullscreen: false,
+            infotype: 0,
+            attList: [],
+            auditRemarks: '',
+            exaStatus: false,
+            datalist: {
+                url: '/market/compatt/downfile',
+                type: 1
+            },
+            uploadstatus: false,
+        }
+    },
+    methods: {
+        //获取详情
+        getInfo(v) {
+            this.infotype = this.$route.query.type * 1;
+            this.$http({
+                url: "/market/cwcompetitor/queryInfo",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    id: v
+                },
+            }).then((res) => {
+                this.datalist.attList = res.data.attList;
+                this.uploadstatus = true;
+                this.tableData = res.data;
+                if (this.tableData.sts * 1 === 0) {
+                    this.tableData.bg = '#999';
+                } else if (this.tableData.sts * 1 === 1) {
+                    this.tableData.bg = 'green';
+                } else {
+                    this.tableData.bg = 'red';
+                }
+                // this.tableData.opTime = this.timeChange(res.data.opTime * 1);
+                this.attList = res.data.attList;
+            });
+        },
+        //功能栏
+        iconCli(v) {
+            if (v === 1) {
+                this.getInfo(this.$route.query.id)
+            }
+            if (v === 2) {
+                this.fullscreen = !this.fullscreen
+            }
+        },
+        exaInfo(v, n) {
+            let _this = this;
+            this.exaStatus = false;
+            let params = {
+                id: this.tableData.id,
+                sts: v,
+                stsDesc: n,
+                auditName: JSON.parse(window.sessionStorage.userInfo).loginName,
+                auditNo: JSON.parse(window.sessionStorage.userInfo).loginName,
+                auditRemarks: this.auditRemarks,
+                auditResult: v,
+                auditResultDesc: n,
+                auditTime: new Date().getTime(),
+            }
+            this.$http({
+                url: "/market/swcompetitor/update",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: params,
+            }).then((res) => {
+                if (res.data.result === 1) {
+                    _this.$message({
+                        message: res.data.desc,
+                        type: 'error'
+                    });
+                } else {
+                    _this.$message({
+                        message: '审核成功',
+                        type: 'success'
+                    });
+                    _this.$router.push("/competExa");
+                }
+            });
+        },
+        //导出
+        outlineinfo(v) {
+            let data = {
+                provinceName: this.tableData.provinceName,
+                operatorName: this.tableData.operatorName,
+                violationCateName: this.tableData.violationCateName,
+                violationItemName: this.tableData.violationItemName,
+                violationItem: this.tableData.violationItemName,
+                monthFee: this.tableData.monthFee,
+                tariffName: this.tableData.tariffName,
+                taffiffContent: this.tableData.taffiffContent,
+                remFee: this.tableData.remFee,
+                preFee: this.tableData.preFee,
+                saleScope: this.tableData.saleScope,
+                saleChnl: this.tableData.saleChnl,
+                monthSale: this.tableData.monthSale,
+                violationContent: this.tableData.violationContent,
+                recordRegionName: this.tableData.recordRegionName,
+                opTime: this.tableData.opTime,
+            }
+            console.log(data)
+            if (v === 1) {
+                this.$http({
+                    url: "/market/cwcompetitor/writeImg1",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    responseType: "blob",
+                    data: data,
+                }).then((response) => {
+                    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                        let blob = new Blob([response.data], {
+                            type: 'application/vnd.ms-excel'
+                        })
+                        window.navigator.msSaveOrOpenBlob(blob,
+                            new Date().getTime() + '.png')
+                    } else {
+                        /* 火狐谷歌的文件下载方式 */
+                        var blob = new Blob([response.data])
+                        var downloadElement = document.createElement('a')
+                        var href = window.URL.createObjectURL(blob)
+                        downloadElement.href = href
+                        downloadElement.download = new Date().getTime() + '.png'
+                        document.body.appendChild(downloadElement)
+                        downloadElement.click()
+                        document.body.removeChild(downloadElement)
+                        window.URL.revokeObjectURL(href)
+                    }
+                });
+            } else {
+                data.id = this.tableData.id;
+                this.$http({
+                    url: "/market/cwcompetitor/write2Doc1",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    responseType: "blob",
+                    data: data,
+                }).then((response) => {
+                    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                        let blob = new Blob([response.data], {
+                            type: 'application/vnd.ms-excel'
+                        })
+                        window.navigator.msSaveOrOpenBlob(blob,
+                            new Date().getTime() + '.docx')
+                    } else {
+                        /* 火狐谷歌的文件下载方式 */
+                        var blob = new Blob([response.data])
+                        var downloadElement = document.createElement('a')
+                        var href = window.URL.createObjectURL(blob)
+                        downloadElement.href = href
+                        downloadElement.download = new Date().getTime() + '.docx'
+                        document.body.appendChild(downloadElement)
+                        downloadElement.click()
+                        document.body.removeChild(downloadElement)
+                        window.URL.revokeObjectURL(href)
+                    }
+                });
+            }
+        },
+        //时间转换
+        timeChange(v) {
+            var time = new Date(v);
+            var y = time.getFullYear();
+            var m = time.getMonth() + 1;
+            m < 10 ? '0' + m : m;
+            var d = time.getDate();
+            d < 10 ? '0' + d : d;
+            var h = time.getHours();
+            h < 10 ? '0' + h : h;
+            var mm = time.getMinutes();
+            mm < 10 ? '0' + mm : mm;
+            var s = time.getSeconds();
+            s < 10 ? '0' + s : s;
+            return y + '-' + m + '-' + d + ' ' + h + ':' + mm + ':' + s;
+        },
+    },
+    mounted() {
+
+    },
+    created() {
+        this.infotype = this.$route.query.type * 1;
+        this.infotype === 1 ? this.tooltit = '竞争对手信息收集' : this.tooltit = '竞争对手信息审核';
+        this.getInfo(this.$route.query.id);
+    }
+}
+</script>
+<style scoped lang="scss">
+@import "../../../assets/style";
+
+.titbox {
+
+    span {
+        padding-left: 10px;
+    }
+}
+
+.checknum {
+    border: 3px dotted #f0f0f0;
+    padding: 10px 20px;
+    margin-top: 10px;
+
+    span {
+        display: inline-block;
+        width: 33%;
+        padding-left: 10px;
+        height: 36px;
+        line-height: 36px;
+        color: #aaa;
+    }
+}
+
+.tab-boxinfo {
+    border: 2px solid #f0f0f0;
+    margin-top: 10px;
+    color: #4b4b4b;
+    height: calc(100% - 330px);
+    overflow-y: scroll;
+
+    .box-line {
+        height: 34px;
+        line-height: 34px;
+        padding-left: 20px;
+        font-size: 14px;
+        width: 33.3%;
+        display: inline-block;
+
+        span {
+            display: inline-block;
+            width: 100px;
+        }
+
+        div {
+            display: inline-block;
+            width: calc(100% - 100px);
+        }
+    }
+
+    .box-line-bg {
+        background: #FAFAFA;
+    }
+}
+
+.titbtn-box {
+    text-align: right;
+    margin-top: 20px;
+
+    button {
+        min-width: 100px;
+    }
+}
+</style>

File diff suppressed because it is too large
+ 1234 - 499
src/pages/main/competitor/index.vue


+ 21 - 16
src/pages/main/cooOperation/index.vue

@@ -389,22 +389,27 @@
 					this.titname = '审批';
 					this.disableStatus = true;
 				} else if (v === 3) {
-                    this.$http({
-                        url: '/market/bpmTemp/query',
-                        method: "post",
-                        headers: {"Content-Type": "application/json",},
-                        data: {bpmType: "5"},
-                    }).then((res) => {
-                        if (res.data) {
-                            let content = JSON.parse(res.data.content);
-                            this.infolist = content.infolist;
-                            this.attList = content.attList;
-                            this.fileInfo.fileList =  content.fileList;
-                        }
-                        this.tempSave = true;
-                        this.titname = '添加';
-                        this.disableStatus = false;
-                    });
+                    // this.$http({
+                    //     url: '/market/bpmTemp/query',
+                    //     method: "post",
+                    //     headers: {"Content-Type": "application/json",},
+                    //     data: {bpmType: "5"},
+                    // }).then((res) => {
+                    //     if (res.data) {
+                    //         let content = JSON.parse(res.data.content);
+                    //         this.infolist = content.infolist;
+                    //         this.attList = content.attList;
+                    //         this.fileInfo.fileList =  content.fileList;
+                    //     }
+                    //     this.tempSave = true;
+                    //     this.titname = '添加';
+                    //     this.disableStatus = false;
+                    // });
+					//todo 查询历史数据会导致节点id为空的bug(添加失败)临时解决方案此处流程待梳理
+					this.infolist = {};
+					this.tempSave = true;
+					this.titname = '添加';
+					this.disableStatus = false;
                     return
 				}
 				this.$http({

+ 9 - 1
src/pages/main/demandDevelop/index.vue

@@ -670,10 +670,18 @@ export default {
               this.type = "0";
               console.log("送部门人员审核");
               break;
+            // case "送领导审核":
+            //   this.operateName = "送领导审核";
+            //   this.type = "1";
+            //   this.checkLaeder = true;
+            //   console.log("送领导审核");
+            //   break;
+            //领导审批支持整个OA组织架构
             case "送领导审核":
               this.operateName = "送领导审核";
               this.type = "1";
-              this.checkLaeder = true;
+              // this.checkLaeder = true;
+              this.checkexa = true;
               console.log("送领导审核");
               break;
             case "送起草人编号发送":

File diff suppressed because it is too large
+ 1165 - 0
src/pages/main/file/flieList.vue


File diff suppressed because it is too large
+ 1165 - 0
src/pages/main/file/flieListNet.vue


+ 715 - 0
src/pages/main/fullcalendar/calendar.vue

@@ -0,0 +1,715 @@
+<template>
+    <div>
+        <basic-block title="日历">
+            <!--
+            <div class="tag-tip">
+              <el-tag size="small" color="#f08f00">审核中</el-tag>
+              <el-tag size="small" color="#6bb377">已审核</el-tag>
+              <el-tag size="small" color="#999">已结算</el-tag>
+            </div>
+            -->
+            <el-row type="flex" justify="space-between">
+                <!--
+                <el-col :span="4">
+                  <div class="room-content">
+                    <div class="room-title">会议室列表</div>
+                    <div class="room-list" :class="{'active-list': index === activeNum}"
+                         v-for="(item, index) in meetingRoomList" :key="index" @click="chooseRoom(index)">
+                      <span>{{ item.name }}</span>
+                    </div>
+                  </div>
+                </el-col>
+                -->
+                <el-col :span="19">
+                    <div class="calendar-box">
+                        <full-calendar
+                            ref="fullCalendar"
+                            style="height: 100%"
+                            :options="calendarOptions"
+                        >
+                        </full-calendar>
+                    </div>
+                </el-col>
+            </el-row>
+            <!--日程新增弹窗start-->
+            <el-dialog
+                title="会议新增"
+                :visible.sync="dialogVisible"
+                :before-close="close"
+                :modal="false"
+                width="45%">
+                <el-form :model="form" :rules="rules" ref="form" label-width="120px" size="small" class="demo-ruleForm"
+                         :disabled="auth? false: 'disabled'">
+                    <el-form-item label="会议名称" prop="title">
+                        <el-input v-model="form.title"></el-input>
+                    </el-form-item>
+                    <el-form-item label="参会角色" prop="orgId">
+                        <el-select v-model="form.orgId" clearable filterable placeholder="参会角色" multiple>
+                            <el-option
+                                v-for="item in roleNameList"
+                                :key="item.userId"
+                                :label="item.name"
+                                :value="item.userId">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="是否是党会" prop="isParty">
+                        <el-select v-model="form.isParty" clearable filterable placeholder="是否是党会">
+                            <el-option
+                                v-for="item in isParrty"
+                                :key="item.is_party"
+                                :label="item.name"
+                                :value="item.is_party">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="发起科室" prop="leaderName">
+                        <el-input v-model="form.leaderName"></el-input>
+                    </el-form-item>
+                    <el-form-item label="会议开始时间" required>
+                        <el-col :span="11">
+                            <el-form-item prop="begindate" style="margin-bottom: 0">
+                                <el-date-picker type="date"
+                                                disabled
+                                                format="yyyy-MM-dd"
+                                                value-format="yyyy-MM-dd"
+                                                placeholder="选择日期"
+                                                v-model="form.begindate"
+                                                style="width: 100%;">
+                                </el-date-picker>
+                            </el-form-item>
+                        </el-col>
+                        <el-col class="line" :span="2">-</el-col>
+                        <el-col :span="11">
+                            <el-form-item prop="startTime" style="margin-bottom: 0">
+                                <el-select v-model="form.startTime" placeholder="选择时间" clearable @visible-change="handleBeginTimeOptionShow">
+                                    <el-option
+                                        v-for="item in timeOptions"
+                                        :key="item.time"
+                                        :disabled="item.disabled"
+                                        :label="item.time"
+                                        :value="item.time"
+                                    />
+                                </el-select>
+                                <!--                                <el-time-select placeholder="选择时间"-->
+                                <!--                                                v-model="form.startTime"-->
+
+                                <!--                                                :picker-options="{-->
+                                <!--                                    start: '09:00',-->
+                                <!--                                    step: '00:30',-->
+                                <!--                                    end: '20:00 ',-->
+                                <!--                                  }"-->
+                                <!--                                                @change="onStartTime"-->
+                                <!--                                                style="width: 100%;">-->
+                                <!--                                </el-time-select>-->
+                            </el-form-item>
+                        </el-col>
+                    </el-form-item>
+                    <el-form-item label="会议结束时间" required>
+                        <el-col :span="11">
+                            <el-form-item prop="enddate" style="margin-bottom: 0">
+                                <el-date-picker type="date"
+                                                disabled
+                                                format="yyyy-MM-dd"
+                                                value-format="yyyy-MM-dd"
+                                                placeholder="选择日期"
+                                                v-model="form.enddate"
+                                                style="width: 100%;">
+                                </el-date-picker>
+                            </el-form-item>
+                        </el-col>
+                        <el-col class="line" :span="2">-</el-col>
+                        <el-col :span="11">
+                            <el-form-item prop="endTime" style="margin-bottom: 0">
+<!--                                <el-time-select placeholder="选择时间"-->
+
+<!--                                                v-model="form.endTime"-->
+<!--                                                :picker-options="{-->
+<!--                                    start: '00:00',-->
+<!--                                    step: '00:30',-->
+<!--                                    end: '23:30 ',-->
+<!--                                    minTime: form.startTime-->
+<!--                                  }"-->
+<!--                                                style="width: 100%;">-->
+<!--                                </el-time-select>-->
+                                <el-select v-model="form.endTime" placeholder="选择时间" clearable @visible-change="handleEndTimeOptionShow">
+                                    <el-option
+                                        v-for="item in timeOptions"
+                                        :key="item.time"
+                                        :disabled="item.disabled"
+                                        :label="item.time"
+                                        :value="item.time"
+                                    />
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
+                    </el-form-item>
+                    <el-form-item label="会议备注" prop="remark">
+                        <el-input type="textarea" v-model="form.remark"></el-input>
+                    </el-form-item>
+                    <el-form-item>
+                        <el-button @click="resetForm('form')">取消</el-button>
+                        <el-button type="primary" @click="submitForm('form')">提交</el-button>
+                    </el-form-item>
+                </el-form>
+            </el-dialog>
+            <!--日程新增弹窗end-->
+        </basic-block>
+    </div>
+</template>
+
+<script>
+    import _ from 'lodash' //导入loadsh插件
+    // 引入日历组件
+    import FullCalendar from "@fullcalendar/vue";
+    import dayGridPlugin from "@fullcalendar/daygrid";
+    import interactionPlugin from "@fullcalendar/interaction";
+    // 引入js数据
+    // import array from '@/utils/home'
+
+    export default {
+        name: 'Home',
+        components: {
+            FullCalendar, // make the <FullCalendar> tag available
+        },
+        data() {
+            return {
+                activeNum: 0,
+                dialogVisible: false,
+                // meetingRoomList: [],
+                subList: [],
+                array: [],
+                auth: false,
+                roleNameList: [
+                    {
+                        userId: 1,
+                        name: '分管公司领导/部门负责人'
+                    }, {
+                        userId: 2,
+                        name: '部门负责人'
+                    }, {
+                        userId: 3,
+                        name: '部门分管线条领导/科室主任'
+                    }
+                ],
+                isParrty: [
+                    {
+                        is_party: '1',
+                        name: '是'
+                    },
+                    {
+                        is_party: '0',
+                        name: '否'
+                    },
+
+                ],
+                form: {
+                    title: '',
+                    userId: '',
+                    begindate: '',
+                    startTime: '',
+                    enddate: '',
+                    endTime: '',
+                    remark: '',
+                    leaderName: '',
+                    roleId: '',
+                    roleColor: '',
+                    id: '',
+                    isParty: '否',
+                    // roleName: '分管公司领导/部门负责人'
+                    // roleName: [],
+                    orgId: []
+                },
+                rules: {
+                    title: [{required: true, message: '请输入会议主题', trigger: 'blur'}],
+                    userid: [{required: true, message: '请选择会议室使用人', trigger: 'change'}],
+                    begindate: [{required: true, message: '请选择开始日期', trigger: 'change'}],
+                    startTime: [{required: true, message: '请选择开始时间', trigger: 'change'}],
+                    enddate: [{required: true, message: '请选择结束日期', trigger: 'change'}],
+                    endTime: [{required: true, message: '请选择结束时间', trigger: 'change'}],
+                    remark: [{required: true, message: '请填写会议备注', trigger: 'blur'}],
+                    leaderName: [{required: true, message: '发起科室', trigger: 'blur'}],
+                    isParty: [{required: true, message: '是否是党会', trigger: 'change'}],
+                    // roleName:[{required: true, message: '参会角色', trigger: 'change'}]
+                    orgId: [{required: true, message: '参会角色', trigger: 'change'}]
+                },
+                calendarOptions: {
+                    //   timeGridPlugin  可显示每日时间段
+                    height: 700,
+                    plugins: [dayGridPlugin, interactionPlugin],
+                    headerToolbar: {
+                        left: "prev,next today",
+                        center: "title",
+                        right: "dayGridMonth,dayGridWeek,dayGrid",
+                        // right: 'agendaWeek,dayGridWeek,dayGrid'
+                    },
+                    buttonText: {
+                        // 设置按钮
+                        today: "今天",
+                        month: "月",
+                        week: "周",
+                        dayGrid: "天",
+                    },
+                    // allDaySlot: false,
+                    editable: false,
+                    selectable: true,
+                    navLinks: true,
+                    // displayEventEnd: true,//所有视图显示结束时间
+                    initialView: "dayGridMonth", // 设置默认显示月,可选周、日
+                    dateClick: this.handleDateClick,
+                    eventClick: this.handleEventClick,
+                    eventsSet: this.handleEvents,
+                    select: this.handleDateSelect,
+                    // timezone
+                    // 设置日程
+                    events: [
+                        // {
+                        // 	id: 1,
+                        // 	title: '09:30~11:30 小破孩',
+                        // 	start: '2020-12-11',
+                        // 	end: '2020-12-13',
+                        // 	color: '#f08f00',
+                        // },
+                        // {
+                        // 	id: 2,
+                        // 	title: '9:30~14:30 项目会议',
+                        // 	start: '2020-12-14',
+                        // 	end: '2020-12-14',
+                        // 	color: '#6bb377',
+                        // },
+                    ],
+                    eventColor: "", // 修改日程背景色
+                    locale: "zh-cn", // 设置语言
+                    weekNumberCalculation: "ISO", // 周数
+                    customButtons: {
+                        prev: { // this overrides the prev button
+                            text: "PREV",
+                            click: () => {
+                                this.prev();
+                            }
+                        },
+                        next: { // this overrides the next button
+                            text: "PREV",
+                            click: () => {
+                                this.next();
+                            }
+                        },
+                        today: {
+                            text: "今天",
+                            click: () => {
+                                this.today();
+                            }
+                        }
+                    }
+                },
+                // 时间选项
+                timeOptions: [
+                    {time:'00:00'},
+                    {time:'00:30'},
+                    {time:'01:00'},
+                    {time:'01:30'},
+                    {time:'02:00'},
+                    {time:'02:30'},
+                    {time:'03:00'},
+                    {time:'03:30'},
+                    {time:'04:00'},
+                    {time:'04:30'},
+                    {time:'05:00'},
+                    {time:'05:30'},
+                    {time:'06:00'},
+                    {time:'06:30'},
+                    {time:'07:00'},
+                    {time:'07:30'},
+                    {time:'08:00'},
+                    {time:'08:30'},
+                    {time:'09:00'},
+                    {time:'09:30'},
+                    {time:'10:00'},
+                    {time:'10:30'},
+                    {time:'11:00'},
+                    {time:'11:30'},
+                    {time:'12:00'},
+                    {time:'12:30'},
+                    {time:'13:00'},
+                    {time:'13:30'},
+                    {time:'14:00'},
+                    {time:'14:30'},
+                    {time:'15:00'},
+                    {time:'15:30'},
+                    {time:'16:00'},
+                    {time:'16:30'},
+                    {time:'17:00'},
+                    {time:'17:30'},
+                    {time:'18:00'},
+                    {time:'18:30'},
+                    {time:'19:00'},
+                    {time:'19:30'},
+                    {time:'20:00'},
+                    {time:'20:30'},
+                    {time:'21:00'},
+                    {time:'21:30'},
+                    {time:'22:00'},
+                    {time:'22:30'},
+                    {time:'23:00'},
+                    {time:'23:30'},
+                ],
+                // 备份
+                backupTimeOptions: [
+                    {time:'00:00'},
+                    {time:'00:30'},
+                    {time:'01:00'},
+                    {time:'01:30'},
+                    {time:'02:00'},
+                    {time:'02:30'},
+                    {time:'03:00'},
+                    {time:'03:30'},
+                    {time:'04:00'},
+                    {time:'04:30'},
+                    {time:'05:00'},
+                    {time:'05:30'},
+                    {time:'06:00'},
+                    {time:'06:30'},
+                    {time:'07:00'},
+                    {time:'07:30'},
+                    {time:'08:00'},
+                    {time:'08:30'},
+                    {time:'09:00'},
+                    {time:'09:30'},
+                    {time:'10:00'},
+                    {time:'10:30'},
+                    {time:'11:00'},
+                    {time:'11:30'},
+                    {time:'12:00'},
+                    {time:'12:30'},
+                    {time:'13:00'},
+                    {time:'13:30'},
+                    {time:'14:00'},
+                    {time:'14:30'},
+                    {time:'15:00'},
+                    {time:'15:30'},
+                    {time:'16:00'},
+                    {time:'16:30'},
+                    {time:'17:00'},
+                    {time:'17:30'},
+                    {time:'18:00'},
+                    {time:'18:30'},
+                    {time:'19:00'},
+                    {time:'19:30'},
+                    {time:'20:00'},
+                    {time:'20:30'},
+                    {time:'21:00'},
+                    {time:'21:30'},
+                    {time:'22:00'},
+                    {time:'22:30'},
+                    {time:'23:00'},
+                    {time:'23:30'},
+                ],
+            }
+        },
+        mounted() {
+            // 获取用户信息
+            this.calendarApi = this.$refs.fullCalendar.getApi();
+
+            // this.meetingRoomList = this.array.meetingRoomList;
+            // console.log('this.array', this.array)
+            // this.getReservationList(this.array.scheduleList0);
+            this.queryRole();
+            this.getList();
+        },
+        methods: {
+            // 获取会议信息
+            getList() {
+                this.$http({
+                    url: "/market/calendar/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {isFile: "0"},
+                }).then((res) => {
+                    console.log('res', res)
+                    if (res.data && res.data.length > 0) {
+                        this.array = res.data;
+                        // this.getReservationList(this.array.scheduleList0);
+                        this.getReservationList(this.array);
+                    }
+                });
+            },
+            // 获取会议信息
+            queryRole() {
+                this.$http({
+                    url: "/market/calendar/queryRole",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {isFile: "0"},
+                }).then((res) => {
+                    console.log('res====', typeof res.data)
+                    console.log(res.data)
+                    this.auth = res.data;
+                    console.log("res.data", res.data)
+
+                });
+            },
+            getReservationList(arrayData) {
+                let newArr = [];
+                this.subList = arrayData;
+                arrayData.forEach((item) => {
+                    console.log('item', item)
+                    newArr.push({
+                        newBeginTime: item.begindate.split(' ')[1].substr(0,5),
+                        newEndTime:  item.enddate.split(' ')[1].substr(0,5),
+                        start: this.dealWithTime(item.begindate),
+                        end: this.addDate(this.dealWithTime(item.enddate), 1),
+                        color: item.roleColor,
+                        id: item.id,
+                        title: `${this.getTitle(item.begindate, item.enddate, item.isParty)}   ${'会议名称:' + item.title}    ${'召集人:' + item.leaderName}`,
+                    })
+                });
+                this.calendarOptions.events = newArr;
+                // console.log(newArr)
+                // debugger
+            },
+            // 切换教室
+            chooseRoom(index) {
+                this.activeNum = index;
+                // 查询该会议室下面的会议事件
+                if (index === 0) {
+                    this.getReservationList(this.array.scheduleList0);
+                } else if (index === 1) {
+                    this.getReservationList(this.array.scheduleList1);
+                }
+            },
+            // 日期加1天
+            addDate(date, days) {
+                var d = new Date(date);
+                d.setDate(d.getDate() + days);
+                var mon = (d.getMonth() + 1) < 10 ? "0" + (d.getMonth() + 1) : d.getMonth() + 1;
+                let endD = d.getDate() < 10 ? '0' + d.getDate() : d.getDate();
+                return `${d.getFullYear()}-${mon}-${endD}`;
+            },
+            // 获取会议事件title
+            // getTitle(date1, date2) {
+            //     let start = date1.substring(11, 16);
+            //     let end = date2.substring(11, 16);
+            //     return `${start}~${end}`;
+            // },
+            // 获取会议事件title
+            getTitle(date1, date2, isParty) {
+                let start = isParty == '1' ? '★' + date1.substring(11, 16) : date1.substring(11, 16);
+                let end = date2.substring(11, 16);
+                return `${start}~${end}`;
+            },
+            getShowTime(beginDate, endDate) {
+                this.form.begindate = this.dealWithTime(beginDate);
+                this.form.startTime = this.getHoursMin(beginDate);
+                this.form.enddate = this.dealWithTime(endDate);
+                this.form.endTime = this.getHoursMin(endDate);
+                // this.$forceUpdate()
+                this.form = {...this.form}
+            },
+            // 获取时分时间
+            getHoursMin(value) {
+                return value.substring(11, 16);
+            },
+            // 处理会议时间格式
+            dealWithTime(date) {
+                let newDate = /\d{4}-\d{1,2}-\d{1,2}/g.exec(date)[0];
+                return newDate;
+            },
+            // 点击日历
+            handleDateClick: function (arg) {
+                if (!this.auth) {
+                    return;
+                }
+                this.$forceUpdate();
+                console.log(arg, '事件1')
+                //开始时间
+                this.form.begindate = arg.dateStr
+                //结束时间
+                this.form.enddate = arg.dateStr
+                this.dialogVisible = true;
+            },
+            // 日历日程点击事件
+            handleEventClick(calEvent) {
+                console.log(calEvent, '事件2');
+                this.dialogVisible = true;
+                let id = calEvent.event.id;
+                let info = this.subList.filter((item) => {
+                    return item.id == id
+                });
+                this.$nextTick(() => {
+                    this.form = _.cloneDeep(info[0]);
+                    // 处理时间回显
+                    this.getShowTime(this.form.begindate, this.form.enddate);
+                    console.log(info[0], '数据')
+                });
+            },
+            handleEvents(events) {
+                console.log(events, '事件3');
+            },
+            handleDateSelect(selectInfo) {
+                console.log(selectInfo, '限制');
+            },
+            // 切换上一个按钮
+            prev() {
+                this.calendarApi.prev();
+            },
+            // 切换下一个按钮事件
+            next() {
+                this.calendarApi.next();
+            },
+            // 点击今天按钮
+            today() {
+                this.calendarApi.today();
+            },
+            // 提交数据
+            submitForm(formName) {
+                console.log(this.form)
+                this.$refs[formName].validate((valid) => {
+                    if (valid) {
+                        this.form.begindate = `${this.form.begindate} ${this.form.startTime}`;
+                        this.form.enddate = `${this.form.enddate} ${this.form.endTime}`;
+                        console.log(this.form, '数据');
+                        this.dialogVisible = false;
+                        if (this.form.id === '') {
+                            this.form === ""
+                        }
+                        this.$http({
+                            url: this.form.id === '' ? '/market/calendar/add' : '/market/calendar/update',
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: this.form,
+                        }).then((res) => {
+                            this.loadinged = false;
+                            if (res.data.result === 1) {
+                                this.$message({
+                                    message: res.data.desc,
+                                    type: "error",
+                                });
+                            } else {
+                                this.$message({
+                                    message: "成功",
+                                    type: "success",
+                                });
+                                location.reload();
+                            }
+                        });
+                    } else {
+                        console.log('error submit!!');
+                        return false;
+                    }
+                });
+            },
+            resetForm(formName) {
+                this.dialogVisible = false;
+                this.$refs[formName].resetFields();
+            },
+            //关闭弹窗,重置表单
+            close() {
+                this.dialogVisible = false;
+                this.$refs['form'].resetFields();
+            },
+            onStartTime(val) {
+                console.log('val', val)
+                this.form.startTime = val
+            },
+            //开始时间 option显示/隐藏
+            handleBeginTimeOptionShow(_value) {
+                if (_value) {
+
+                    let disabledOnOff = false
+
+                    // 第一次过滤,过滤掉结束时间
+                    this.timeOptions = this.backupTimeOptions.map(_item => {
+                        const result = { time: _item.time, disabled: _item.disabled }
+                        if (_item.time === this.form.endTime) {
+                            disabledOnOff = true
+                        }
+                        if (disabledOnOff) {
+                            result.disabled = true
+                        }
+                        return result
+                    })
+                    // 第二次过滤,过滤掉后端返回的数据
+                    disabledOnOff = false
+
+
+                    this.calendarOptions.events.map(_item => {
+
+                        this.timeOptions = this.timeOptions.map(_timeOptionItem => {
+                            // debugger
+                            // 开始
+                            if (_item.newBeginTime === _timeOptionItem.time) {
+                                disabledOnOff = true
+                            }
+                            // 结束
+                            if (_item.newEndTime === _timeOptionItem.time) {
+                                disabledOnOff = false
+                            }
+                            if (disabledOnOff) {
+                                _timeOptionItem.disabled = true
+                            }
+                            return _timeOptionItem
+                        })
+                    })
+                } else {
+                    this.timeOptions = this.backupTimeOptions
+                }
+            },
+            //结束时间 option显示/隐藏
+            handleEndTimeOptionShow(_value) {
+                // 下拉显示
+                if (_value) {
+                    let disabledOnOff = true
+                    if (this.form.startTime !== '') {
+                        // 第一次过滤,过滤掉开始时间
+                        this.timeOptions = this.backupTimeOptions.map(_item => {
+                            const result = { time: _item.time, disabled: _item.disabled }
+                            if (disabledOnOff) {
+                                result.disabled = true
+                            }
+                            if (_item.time === this.form.startTime) {
+                                disabledOnOff = false
+                            }
+                            return result
+                        })
+                    }
+                    // 第二次过滤,过滤掉后端返回的数据
+                    disabledOnOff = false
+                    this.calendarOptions.events.map(_item => {
+                        this.timeOptions = this.timeOptions.map(_timeOptionItem => {
+                            // debugger
+                            if (disabledOnOff) {
+                                _timeOptionItem.disabled = true
+                            }
+                            // 开始
+                            if (_item.newBeginTime === _timeOptionItem.time) {
+                                disabledOnOff = true
+                            }
+
+                            // 结束
+                            if (_item.newEndTime === _timeOptionItem.time) {
+                                disabledOnOff = false
+                            }
+
+                            return _timeOptionItem
+                        })
+                    })
+                } else {
+                    this.timeOptions = this.backupTimeOptions
+                }
+            }
+        },
+    }
+</script>
+<style lang="scss" scoped>
+    @import "src/assets/calendar";
+
+    .el-row--flex.is-justify-space-between {
+        justify-content: center;
+    }
+</style>

+ 26 - 0
src/pages/main/funcInit/manageLnit.vue

@@ -62,6 +62,14 @@
                         <span>线条名称</span>
                         <el-input v-model="infolist.lineName" placeholder="线条名称" :disabled="disableStatus"></el-input>
                     </el-form-item>
+                    <el-form-item v-if="type == '1'" prop="groupname">
+                        <span>分组名称</span>
+                        <el-select  :disabled="disableStatus" v-model="groupname"
+                            placeholder="分组名称">
+                            <el-option value="default" label="默认"> </el-option>
+					        <el-option value="IT" label="信息中心"> </el-option>
+                        </el-select>
+                    </el-form-item>
                     <el-form-item v-if="type != '1'" prop="lineId">
                         <span>线条名称</span>
                         <el-select :popper-append-to-body="false" :disabled="disableStatus" v-model="lineId"
@@ -165,6 +173,15 @@
                     callback()
                 }
             }
+
+             const groupname = (rule, value, callback) => {
+                if (!this.groupname && this.type > 1) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+
             const lineId = (rule, value, callback) => {
                 if (!this.lineId && this.type > 1) {
                     callback(new Error('不能为空'))
@@ -252,6 +269,11 @@
                         trigger: 'blur',
                         validator: lineName
                     }],
+                    groupname: [{
+                        required: true,
+                        trigger: 'blur',
+                        validator: groupname
+                    }],
                     lineId: [{
                         required: true,
                         trigger: 'change',
@@ -342,6 +364,7 @@
 
                 },
                 lineId: '',
+                groupname: 'default',
                 unitId: '',
                 moduleId: '',
                 typeOptions: [{
@@ -440,6 +463,7 @@
                     this.lineId = this.infolist.lineId;
                     this.unitId = this.infolist.unitId;
                     this.moduleId = this.infolist.moduleId;
+                    this.groupname = this.infolist.groupname;
                     return
                 } else if (v === 2) {
                     this.titname = '修改';
@@ -448,6 +472,7 @@
                     this.lineId = this.infolist.lineId;
                     this.unitId = this.infolist.unitId;
                     this.moduleId = this.infolist.moduleId;
+                    this.groupname = this.infolist.groupname;
                 } else if (v === 3) {
                     this.titname = '添加';
                     this.disableStatus = false;
@@ -471,6 +496,7 @@
                     this.infolist.lineId = this.lineId;
                     this.infolist.unitId = this.unitId;
                     this.infolist.moduleId = this.moduleId;
+                    this.infolist.groupname = this.groupname;
                     if (this.titname === '添加') {
                         let url = '';
                         if (this.type == '1') {

File diff suppressed because it is too large
+ 1126 - 0
src/pages/main/meetingDeclaration/marketDecisionMeeting.vue


File diff suppressed because it is too large
+ 1124 - 0
src/pages/main/meetingDeclaration/specialReport.vue


+ 39 - 6
src/pages/main/memberFamily/dataStatistics.vue

@@ -76,17 +76,21 @@
 				lastUpdateTime: '',
                 sts:1,
                 companyFlag:'',
+				// excelCityparam: ""
+				memberFamilyBtnShow: "-1"
 			}
 		},
 		methods: {
             outexl(){
                 let url = '';
                 let paramsf = {};
+				if(window.sessionStorage.excelCityparam){
+					paramsf.regionName = window.sessionStorage.excelCityparam
+				}
                 if(this.sts == 1){
                     url = '/market/cMemberWo/excelExportSummaryByProv';
                 }else{
                     url = '/market/cMemberWo/excelExportSummaryByArea';
-                    // paramsf.regionName =
                 }
                 this.$http({
                     url: url,
@@ -118,8 +122,30 @@
                 });
             },
 			choseperson(v){
-                console.log(v)
+				if(v.showButton){
+					window.sessionStorage.memberFamilyBtnShow = v.showButton;
+				}
                 if(this.companyFlag == 0){
+					if(v.regionName == "省公司"){
+						 this.$router.push({
+                        	path: "/employeeInfo",
+                            query:{
+                                regionName:v.regionName
+                            }
+                        });
+                        this.setabList("员工信息", "/employeeInfo?regionName="+v.regionName);
+						return
+					}
+					// if(v.areaName == "省公司"){
+					// 	this.$router.push({
+                    //     	path: "/employeeInfo",
+                    //         query:{
+                    //             regionName:v.areaName
+                    //         }
+                    //     });
+                    //     this.setabList("员工信息", "/employeeInfo?regionName="+v.areaName);
+					// 	return
+					// }
                     if(this.sts == 2){
                         this.$router.push({
                         	path: "/employeeInfo",
@@ -130,6 +156,7 @@
                         this.setabList("员工信息", "/employeeInfo?regionName="+v.areaName);
                         return
                     }
+					window.sessionStorage.excelCityparam = v.regionName;
                     this.$http({
                     	url: "/market/cMemberWo/querySummaryByAreaPage",
                     	method: "post",
@@ -144,14 +171,16 @@
                     	this.loading = false;
                         this.sts = 2;
                     });
+					
                 }else{
                     this.$router.push({
-                    	path: "/employeeInfo?regionName="+v.regionName,
+                    	path: "/employeeInfo?regionName="+v.areaName,
                         query:{
-                            regionName:v.regionName
+                            regionName:v.areaName
                         }
                     });
-                    this.setabList("员工信息", "/employeeInfo?regionName="+v.regionName);
+					
+                    this.setabList("员工信息", "/employeeInfo?regionName="+v.areaName);
                 }
 			},
 			setabList(n, p) {
@@ -172,7 +201,7 @@
 				this.$store.commit("setTabList", Array.from(set));
 			},
 			handleSelectionChange(val) {
-				console.log(val)
+				console.log(val) 
 			},
 			//搜索数据
 			searchInfo(v) {
@@ -192,6 +221,8 @@
                 }else if(this.companyFlag == 1){
                     url="/market/cMemberWo/querySummaryByAreaPage"
                     v.regionName = this.userInfo.cityName
+					window.sessionStorage.excelCityparam = this.userInfo.cityName;
+					this.sts = 2
                 }
 				this.$http({
 					url: url,
@@ -205,6 +236,7 @@
 					this.tableData = res.data.data;
 					this.total = res.data.totalRecord;
 					this.loading = false;
+					
 				});
 			},
 			// 分页
@@ -268,6 +300,7 @@
 		},
 		mounted() {
 			this.getUser();
+			window.sessionStorage.memberFamilyBtnShow = this.memberFamilyBtnShow
 		},
 		created() {
 

+ 14 - 4
src/pages/main/memberFamily/employeeInfo.vue

@@ -100,7 +100,7 @@
                 searchList: [
                     {
                         type: 'input',
-                        tit: '供应商名称',
+                        tit: '人员名称',
                         value: '',
                         width: '98%',
                     }
@@ -121,12 +121,19 @@
                 delid: '',
                 loading:false,
                 loadinged:false,
+                memberFamilyBtnShow: "",
             }
         },
         methods: {
             outexl(){
                 let url = '/market/cMemberWo/excelExportDetailSummary';
-                let paramsf = {areaName:this.$route.query.regionName};
+                let paramsf = {};
+                
+                if(this.memberFamilyBtnShow && (this.memberFamilyBtnShow == "1")){
+                    paramsf.areaName = this.$route.query.regionName
+                }else{
+                    paramsf.regionName = this.$route.query.regionName
+                }
                 this.$http({
                     url: url,
                     method: "post",
@@ -198,8 +205,10 @@
                 let _this = this;
                 this.loading = true;
                 this.tableData = [];
-                v.areaName = this.$route.query.regionName
-                v.isShow = 0
+                v.areaName = this.$route.query.regionName;
+                v.isShow = 0;
+                var memberFamilyBtnShow = JSON.parse(window.sessionStorage.memberFamilyBtnShow)
+                v.showButton = memberFamilyBtnShow
                 this.$http({
                     url: "/market/cMemberWo/queryMkMemberFillDetailSummaryPage",
                     method: "post",
@@ -342,6 +351,7 @@
         mounted() {
             this.getList({}, 1);
             this.getUser();
+            this.memberFamilyBtnShow = JSON.parse(window.sessionStorage.memberFamilyBtnShow)
         },
         created() {
 

+ 51 - 2
src/pages/main/memberFamily/haveInHand.vue

@@ -107,8 +107,10 @@
         </el-dialog>
 
         <el-dialog title="选择负责人" :visible.sync="dialogStatusp" width="50%" :destroy-on-close="true"
-            :modal-append-to-body="false" :close-on-click-modal="false">
+            :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closeDutydia">
+            <el-input placeholder="输入关键字进行过滤" v-model="filterText" @input="dutyNameSearch"></el-input>
             <el-form :model="infolist" ref="infolist" style="height: 50vh;overflow-y: scroll;">
+                
                 <div class="treeUserp">
 					<p v-for="(item,index) in treeListponly" :key="index" @click="chofz(item)" v-if="item.loginNameStr">
 					    {{item.groupName}} -
@@ -187,7 +189,9 @@
                 companyFlag: '',
                 dialogStatusp: false,
                 choone: {},
-                fillLists:[]
+                fillLists:[],
+                filterText: '',
+                filterData: []
             }
         },
         methods: {
@@ -292,6 +296,7 @@
             },
             chofz(v) {
                 this.dialogStatusp = false;
+                this.filterText = "";
                 for (let i = 0; i < this.treeListp.length; i++) {
                     if (this.treeListp[i].o == this.fadept.o) {
                         this.treeListp[i].loginNameStr = v.loginNameStr;
@@ -337,6 +342,8 @@
                        }).then((ress) => {
                           this.treeListponly.push({bumen:item.ou})
                           this.treeListponly=this.treeListponly.concat(ress.data);
+
+                          this.filterData = this.treeListponly;
                        });
                    })
                 });
@@ -403,6 +410,11 @@
             closedia() {
                 this.infolist = {};
                 this.dialogStatus = false;
+                
+            },
+            closeDutydia(){
+                this.dialogStatusp = false;
+                this.filterText = "";
             },
             //搜索数据
             searchInfo(v) {
@@ -622,6 +634,43 @@
                     this.companyFlag = res.data.companyFlag;
                     this.getList({}, 1);
                 });
+            },
+            dutyNameSearch() {
+
+                if(this.filterText == "" || this.filterText == null){
+                    this.treeListponly = this.filterData;
+                    return;
+                }
+                
+                this.treeListponly.forEach((item)=>{
+                        if(item.groupName !== undefined){
+                            if(item.groupName.indexOf(this.filterText) !== -1){
+                            this.treeListponly = this.treeListponly.filter(m=>{
+                                if(m.groupName)
+                                return m.groupName.indexOf(this.filterText)!=-1;
+                                else
+                                {
+                                    return false;
+                                }
+                            })
+                            }
+                        }
+                        if(item.loginNameStr !== undefined){
+                             
+                            if(item.loginNameStr.indexOf(this.filterText) !== -1){
+                                this.treeListponly = this.treeListponly.filter(n=>{
+                                    if(n.loginNameStr)
+                                return n.loginNameStr.indexOf(this.filterText)!=-1;
+                                else
+                                {
+                                    return false;
+                                }
+                                })
+                            }
+                        }
+                    
+                })
+
             }
         },
         mounted() {

+ 18 - 8
src/pages/main/memberFamily/speedOfProgress.vue

@@ -28,15 +28,21 @@
 					</el-table-column>
                     <el-table-column label="操作" width="160px" align="center">
                         <template slot-scope="scope">
-                            <el-button size="mini" type="primary" @click="dialogCheck(2,scope.row)" v-if="!scope.row.areaDutyNme">查看</el-button>
+                            <el-button size="mini" type="primary" @click="dialogCheck(2,scope.row,1)" v-if="!scope.row.areaDutyNme">查看</el-button>
                             <el-button size="mini" type="danger">催办</el-button>
                         </template>
                     </el-table-column>
                 </el-table>
-                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
-                    :total="total">
+                <el-pagination
+                    class="pageBox"
+                    @current-change="currchange"
+                    layout="prev, pager, next"
+                    background
+                    :total="total"
+                >
                 </el-pagination>
             </div>
+            
         </div>
     </fullscreen>
 
@@ -80,6 +86,7 @@
                 loading:false,
                 loadinged:false,
                 companyFlag:'',
+                secParams:{}
             }
         },
         methods: {
@@ -133,29 +140,32 @@
                     data: v,
                 }).then((res) => {
                     this.tableData = res.data;
-                    this.total = res.data.totalRecord;
+                    // this.total = res.data.totalRecord;
                     this.loading = false;
-                });
+                })
             },
             // 分页
             currchange(v) {
                 this.pageSize = v;
-                this.getList(this.params, this.pageSize);
+                // this.getList(this.params, this.pageSize);
+                this.dialogCheck(2, this.secParams, this.pageSize);
             },
             //申请
-            dialogCheck(v, n) {
+            dialogCheck(v, n, page) {
+                
                 this.$http({
                     url: '/market/cMemberWo/queryProgressByAreaPage',
                     method: "post",
                     headers: {
                         "Content-Type": "application/json",
-                        "page": '{"pageNo":"' + 1 + '","pageSize":"10"}'
+                        "page": '{"pageNo":"' + page + '","pageSize":"10"}'
                     },
                     data: {regionName:n.regionName},
                 }).then((res) => {
                     this.tableData = res.data.data;
                     this.total = res.data.totalRecord;
                 });
+                this.secParams = n
             },
             //添加
             dialogCli(v) {

+ 2 - 0
src/plugins/element-ui.js

@@ -61,6 +61,7 @@ import {
 	Drawer,
 	Badge,
 	TimePicker,
+	Alert
 } from 'element-ui';
 Vue.use(TimePicker);
 Vue.use(Badge);
@@ -119,6 +120,7 @@ Vue.use(Carousel)
 Vue.use(Tabs)
 Vue.use(TabPane)
 Vue.use(TimeSelect)
+Vue.use(Alert)
 Vue.prototype.$confirm = MessageBox.confirm;
 Vue.prototype.$prompt = MessageBox.prompt;
 Vue.prototype.$notify = Notification;

+ 60 - 2
src/router/index.js

@@ -867,20 +867,34 @@ const routes = [{
                     component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/competitor/competeInfo'], resolve)
                 },
                 {
-                    meta: { name:  '新增竞争对手', keepAlive: false },
+                    meta: { name:  '新增竞争对手违规信息', keepAlive: false },
                     path: '/addCompetitor',
                     name: 'addCompetitor',
                     component: (resolve) => require( /* webpackChunkName: "system" */
                         ['../pages/main/competitor/addCompetitor.vue'], resolve)
                 },
                 {
-                    meta: { name:  '修改竞争对手', keepAlive: false },
+                    meta: { name:  '新增竞争对手常规信息', keepAlive: false },
+                    path: '/addCompetitorNew',
+                    name: 'addCompetitorNew',
+                    component: (resolve) => require( /* webpackChunkName: "system" */
+                        ['../pages/main/competitor/addCompetitorNew.vue'], resolve)
+                },
+                {
+                    meta: { name:  '修改竞争对手违规信息', keepAlive: false },
                     path: '/changeCompet',
                     name: 'changeCompet',
                     component: (resolve) => require( /* webpackChunkName: "system" */
                         ['../pages/main/competitor/changeCompet.vue'], resolve)
                 },
                 {
+                    meta: { name:  '修改竞争对手正规信息', keepAlive: false },
+                    path: '/changeCompetNew',
+                    name: 'changeCompetNew',
+                    component: (resolve) => require( /* webpackChunkName: "system" */
+                        ['../pages/main/competitor/changeCompetNew.vue'], resolve)
+                },
+                {
                     meta: { name:  '修改竞争对手审核详情', keepAlive: false },
                     path: '/competitorInfo',
                     name: 'competitorInfo',
@@ -888,6 +902,13 @@ const routes = [{
                         ['../pages/main/competitor/competitorInfo.vue'], resolve)
                 },
                 {
+                    meta: { name:  '修改竞争对手审核详情', keepAlive: false },
+                    path: '/competitorInfoNew',
+                    name: 'competitorInfo',
+                    component: (resolve) => require( /* webpackChunkName: "system" */
+                        ['../pages/main/competitor/competitorInfoNew.vue'], resolve)
+                },
+                {
                     meta: { name:  '修改竞争对手统计', keepAlive: false },
                     path: '/compete',
                     name: 'compete',
@@ -1072,6 +1093,24 @@ const routes = [{
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/knowledge/knowledgeType'], resolve)
         },
         {
+            meta: { name: '附件库', keepAlive: true },
+            path: '/flieList',
+            name: 'flieList',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/file/flieList'], resolve)
+          },
+        {
+            meta: { name: '文件共享', keepAlive: true },
+            path: '/fileListNet',
+            name: 'fileListNet',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/file/flieListNet'], resolve)
+        },
+        {
+        meta: { name: '日历', keepAlive: true },
+        path: '/calendar',
+        name: 'calendar',
+        component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/fullcalendar/calendar'], resolve)
+        },
+        {
             meta: { name:  '公告', keepAlive: false },
             path: '/noticec',
             name: 'noticec',
@@ -1673,6 +1712,25 @@ const routes = [{
             name: 'approvalExamination',
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/gridDivision/approvalExamination.vue'], resolve)
         },
+        {
+            meta: {
+                name: '专题汇报',
+                keepAlive: false
+            },
+            path: '/specialReport',
+            name: 'specialReport',
+            component: (resolve) => require( /* webpackChunkName: "system" */ ['../pages/main/meetingDeclaration/specialReport'], resolve)
+        },
+        {
+            meta: {
+                name: '市场决策会',
+                keepAlive: false
+            },
+            path: '/marketDecisionMeeting',
+            name: 'marketDecisionMeeting',
+            component: (resolve) => require( /* webpackChunkName: "system" */ ['../pages/main/meetingDeclaration/marketDecisionMeeting'], resolve)
+        },
+
     ]
 },
 {

+ 23 - 0
src/utils/home.js

@@ -0,0 +1,23 @@
+// 会议室列表数据
+let meetingRoomList = [
+    {id:0,name:'会议室1'},{id:0,name:'会议室2'},{id:0,name:'会议室3'}
+];
+// 会议室1日程安排
+let scheduleList0 = [
+    {id: 1, title: '小破孩', userId: 3, beginDate: '2021-07-11 09:30', endDate: '2021-07-11 11:30', remark: '备注内容', status: '#f08f00'},
+    {id: 2, title: '项目会议', userId: 2, beginDate: '2021-07-11 13:30', endDate: '2021-07-11 14:30', remark: '备注内容', status: '#6bb377'},
+    {id: 3, title: '供应商接待', userId: 3, beginDate: '2021-09-18 10:00', endDate: '2021-09-18 12:30', remark: '备注内容', status: '#6bb377'},
+    {id: 4, title: '部门周会', userId: 2, beginDate: '2021-10-18 13:30', endDate: '2021-10-19 15:30', remark: '备注内容', status: '#999'},
+    {id: 5, title: '项目分析会', userId: 1, beginDate: '2021-11-29 14:30', endDate: '2021-11-29 17:00', remark: '备注内容', status: '#6bb377'},
+];
+// 会议室2日程安排
+let scheduleList1 = [
+    {id: 1, title: '小破孩', userId: 2, beginDate: '2021-08-03 09:30', endDate: '2021-08-05 11:30', remark: '备注内容', status: '#f08f00'},
+    {id: 2, title: '项目会议', userId: 3, beginDate: '2021-09-10 09:30', endDate: '2021-09-11 14:30', remark: '备注内容', status: '#6bb377'},
+    {id: 3, title: '供应商接待', userId: 1, beginDate: '2021-10-15 10:00', endDate: '2021-10-17 12:30', remark: '备注内容', status: '#6bb377'},
+    {id: 4, title: '部门周会', userId: 1, beginDate: '2021-11-23 13:30', endDate: '2021-11-23 15:30', remark: '备注内容', status: '#999'},
+    {id: 5, title: '项目分析会', userId: 2, beginDate: '2021-12-26 14:30', endDate: '2021-12-29 17:00', remark: '备注内容', status: '#6bb377'},
+];
+export default {
+    meetingRoomList,scheduleList0,scheduleList1
+}