liuhj 1 year ago
parent
commit
932fd3fa08

+ 14 - 0
package-lock.json

@@ -22,6 +22,7 @@
         "pinyin-pro": "^3.17.0",
         "tippy.js": "^6.3.7",
         "vue": "^2.5.2",
+        "vue-cookie": "^1.1.4",
         "vue-quill-editor": "^3.0.6",
         "vue-router": "^3.0.1",
         "vue-typed-js": "^0.1.2",
@@ -13772,6 +13773,11 @@
       "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==",
       "dev": true
     },
+    "node_modules/tiny-cookie": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/tiny-cookie/-/tiny-cookie-1.0.1.tgz",
+      "integrity": "sha512-4KJ21HYTNumxnHvCbLrtrrhSwtWXzpmaRJIUg4biBii5AiSe2izod5bauXiiQxVuf2Fta57U2DTW1Fa4/6Cmgw=="
+    },
     "node_modules/tippy.js": {
       "version": "6.3.7",
       "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz",
@@ -14434,6 +14440,14 @@
         "csstype": "^3.1.0"
       }
     },
+    "node_modules/vue-cookie": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/vue-cookie/-/vue-cookie-1.1.4.tgz",
+      "integrity": "sha512-lxWIzmUTCVra0H7YPbNpYx0wbTQThV+n7ueUOcqtK8dlckmfB8fcyf4OEiRuQUd7iiVub2T3IDlWiisEM5Ku0Q==",
+      "dependencies": {
+        "tiny-cookie": "^1.0"
+      }
+    },
     "node_modules/vue-hot-reload-api": {
       "version": "2.3.4",
       "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz",

+ 1 - 0
package.json

@@ -24,6 +24,7 @@
     "pinyin-pro": "^3.17.0",
     "tippy.js": "^6.3.7",
     "vue": "^2.5.2",
+    "vue-cookie": "^1.1.4",
     "vue-quill-editor": "^3.0.6",
     "vue-router": "^3.0.1",
     "vue-typed-js": "^0.1.2",

+ 2 - 2
src/components/Finance/Sendack.vue

@@ -69,12 +69,12 @@
                         width="160">
                     </el-table-column>
                     <el-table-column
-                        prop="createUserName"
+                        prop="auditGMName"
                         label="审核人"
                         width="80">
                     </el-table-column>
                     <el-table-column
-                        prop="createTime"
+                        prop="auditGMDate"
                         label="审核时间"
                         width="160">
                     </el-table-column>

+ 38 - 15
src/components/Login.vue

@@ -25,7 +25,7 @@
                     </el-input>
                     <div class="el-input remembers">
                         <div class="el-input-box">
-                            <input id="ckxjz" :checked="msgs" type="checkbox">
+                            <input id="ckxjz" v-model="msgs" type="checkbox">
                             <span class="two" @click="ckxclick"></span>
                             <label for="ckxjz">记住账户</label>
                         </div>
@@ -66,12 +66,34 @@ export default {
         ...mapActions(['vlogin']),
         //记住账户click
         ckxclick() {
-            if (document.getElementById("ckxjz").checked == true) {
-                document.getElementById("ckxjz").checked = false;
+            if (this.msgs == true) {
+                this.msgs = false;
             } else {
-                document.getElementById("ckxjz").checked = true;
+                this.msgs = true;
             }
         },
+        //记住密码存cookie
+        setUserInfo() {
+            var vm = this;
+            // 判断用户是否勾选记住密码,如果勾选,向cookie中储存登录信息,
+            // 如果没有勾选,储存的信息为空
+            console.log(vm.msgs)
+            if (vm.msgs) {
+                vm.$cookie.set("userName", vm.usernum,7);
+                vm.$cookie.set("userPwd", vm.password,7);
+                vm.$cookie.set("checked", vm.msgs,7);
+            } else {
+                vm.$cookie.set("userName", "");
+                vm.$cookie.set("userPwd", "");
+                vm.$cookie.set("checked","");
+            }
+        },
+         //记住密码存cookie
+         getUserInfo() {
+            this.usernum=this.$cookie.get('userName');
+            this.password=this.$cookie.get('userPwd');
+            this.msgs=this.$cookie.get('checked');
+        },
         //登录
         Login() {
             var homepage = "";
@@ -105,6 +127,7 @@ export default {
                         }
                     }
                     that.$router.push({ path: "/home" + homepage });
+                    that.setUserInfo();
                     console.log("/home" + homepage)
                     // that.$router.push('/home/index');
                 } else {
@@ -118,19 +141,19 @@ export default {
         }
     },
     mounted() {
-
         console.log(process.env.API_HOST);
-
         document.querySelector(".login-all").style.height = window.innerHeight + "px";
-        // let that = this
-        // document.onkeydown = function (e) {
-        //     e = window.event || e
-        //     //保证是在登录页面发出的enter事件
-        //     if (e.code === 'Enter' || e.code === 'enter' || e.code === 'NumpadEnter') {
-        //         //调用登录函数
-        //         that.Login();
-        //     }
-        // }
+        
+        this.getUserInfo();
+        let that = this
+        document.onkeydown = function (e) {
+            e = window.event || e
+            //保证是在登录页面发出的enter事件
+            if (e.code === 'Enter' || e.code === 'enter' || e.code === 'NumpadEnter') {
+                //调用登录函数
+                that.Login();
+            }
+        }
     }
 }
 </script>

+ 13 - 6
src/components/MCR/MarketCustomerResourcesHome.vue

@@ -102,7 +102,7 @@
                             <el-tooltip class="item" effect="dark" placement="top">
                                 <span style="color:royalblue">查看</span>
                                 <div slot="content">
-                                    <div v-for="yw in scope.row.ascribedDepartment"
+                                    <div v-for="(yw,index) in scope.row.ascribedDepartment" :key="index"
                                         style="text-align: center; width: 100px;padding: 5px;">
                                         {{ yw.name }}
                                     </div>
@@ -121,7 +121,7 @@
                                     </div>
                                 </div>
                             </el-tooltip> -->
-                            <div v-for="yw in scope.row.ascribedUser" style="text-align: center;">
+                            <div v-for="(yw,index) in scope.row .ascribedUser" :key="index" style="text-align: center;">
                                 {{ yw.cnName }}
                             </div>
                         </template>
@@ -204,7 +204,8 @@ export default {
                 "lvlid": 0,
                 "business": "",
                 "Range": 0,
-                "Category": 0
+                "Category": 0,
+                "operationUserId":0
             },
             groupNumber: {
                 preDeleAll: '',
@@ -236,11 +237,13 @@ export default {
         },
         pageload() {
             var that = this;
+            that.pageloadData.operationUserId=that.userId
             //初始化界面数据
-            this.$axios.post('/api/MarketCustomerResources/QueryNewClientData', this.pageloadData, {
+            console.log(that.pageloadData)
+            this.$axios.post('/api/MarketCustomerResources/QueryNewClientData', that.pageloadData, {
                 headers: {
                     'Authorization': that.token,
-                }
+                },
             }).then(resp => {
                 if (resp.data.code == 200) {
                     if (resp.data.data == null) {
@@ -283,9 +286,10 @@ export default {
             this.pageloadData.contact = this.inputLXR; //联系人
             this.pageloadData.userid = this.principalSel.toString(); //负责人
             this.pageloadData.Range = this.territorySel == '' ? 0 : this.territorySel;//省域
-            this.pageloadData.Lvlid = this.clientLvSel == '' ? 0 : this.clientLvSel; //客户级别
+            this.pageloadData.lvlid = this.clientLvSel == '' ? 0 : this.clientLvSel; //客户级别
             this.pageloadData.Category = this.clientTypeSel == '' ? 0 : this.clientTypeSel;//客户类别
             this.pageloadData.business = this.businessClassSel.toString();//业务分类
+            this.pageloadData.operationUserId = this.userId;//
             this.pageload();
         },
         Edit(row) {
@@ -294,9 +298,12 @@ export default {
         Del(row) {
             var that = this;
             var delData = {
+                "portType":1,
                 "id": row.id,
                 "deleteUserId": this.userId
             }
+            console.log(delData);
+
             this.$axios.post('/api/MarketCustomerResources/NewClientDel', delData, {
                 headers: {
                     'Authorization': that.token,

+ 9 - 3
src/components/MCR/MarketCustomerResourcesOperation.vue

@@ -217,7 +217,10 @@
 export default {
     data() {
         return {
+            token :'',
+            userId :'',
             requestData: {
+                "portType":1,
                 "status": 0,
                 "id": 0,
                 "number": 0,
@@ -291,7 +294,7 @@ export default {
         QueryPageData() {
             var that = this;
             //初始化界面数据
-            this.$axios.post('/api/MarketCustomerResources/QuerySelectAndSingleData', { Id: this.requestData.id }, {
+            this.$axios.post('/api/MarketCustomerResources/QuerySelectAndSingleData', { Id: this.requestData.id,portType:1,userId:this.userId }, {
                 headers: {
                     'Authorization': that.token,
                 }
@@ -308,6 +311,7 @@ export default {
                     if (resp.data.data.data != null) { //单条数据
                         var obj = resp.data.data.data;
                         that.requestData.lvlid = obj.lvlid;
+                        that.requestData.portType = 1;
                         that.requestData.category = obj.category;
                         that.requestData.weight = obj.weight;
                         that.requestData.contact = obj.contact;
@@ -346,6 +350,7 @@ export default {
             })
 
             p.then(resolve => {
+                this.portType = 1;
                 if (this.requestData.id == 0) {
                     //添加
                     this.requestData.status = 1;
@@ -359,7 +364,7 @@ export default {
 
                 that.requestData.predele = isNaN(pred) ? 0 : pred;
                 that.requestData.finlishedDele = isNaN(inli) ? 0 : inli;
-
+                console.log(JSON.stringify(this.requestData))
                 this.$axios.post('/api/MarketCustomerResources/NewClientOp', this.requestData, {
                     headers: {
                         'Authorization': that.token,
@@ -379,10 +384,11 @@ export default {
             }).catch(reject => {
                 console.log("未通过表单校验");
             })
-
         }
     },
     mounted() {
+        this.token = JSON.parse(localStorage.getItem('userinif')).token;
+        this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId
         try {
             this.requestData.id = parseInt(this.$route.query.id);
         } catch (err) {

+ 23 - 11
src/components/OP/AirTicketRes.vue

@@ -2,7 +2,6 @@
     <div>
         <div class="communal-list">
             <div>
-
                 <div class="communal-title">
                     <div>机票费用录入</div>
                 </div>
@@ -23,16 +22,16 @@
                     </div>
                 </div>
                 <div style="margin:10px 0;color:#606266;">
-                    <span style="font-weight: bold;font-size:17px;">团队名称:</span>
+                    <span style="font-weight: bold;font-size:15px;">团队名称:</span>
                     <span style="color:#606266;">{{ delegationInfo.teamName }}&nbsp;&nbsp;&nbsp;</span>
-                    <span style="font-weight: bold;font-size:17px;">客户:</span>
+                    <span style="font-weight: bold;font-size:15px;">客户:</span>
                     <span style="color:#606266;">{{ delegationInfo.clientName }}&nbsp;&nbsp;&nbsp;</span>
-                    <span style="font-weight: bold;font-size:17px;">出访国家:</span>
+                    <span style="font-weight: bold;font-size:15px;">出访国家:</span>
                     <span style="color:#606266;">{{ delegationInfo.visitCountry }}&nbsp;&nbsp;&nbsp;</span>
-                    <span style="font-weight: bold;font-size:17px;">起止日期:</span>
+                    <span style="font-weight: bold;font-size:15px;">起止日期:</span>
                     <span style="color:#606266;">{{ delegationInfo.visitStartDate }}—{{ delegationInfo.visitEndDate
                     }}&nbsp;&nbsp;&nbsp;</span>
-                    <span style="font-weight: bold;font-size:17px;">天数/人数:</span>
+                    <span style="font-weight: bold;font-size:15px;">天数/人数:</span>
                     <span style="color:#606266;">{{ delegationInfo.visitDays }}天/{{ delegationInfo.visitPNumber }}人</span>
                 </div>
             </div>
@@ -78,7 +77,7 @@
                     </el-table-column>
                 </el-table>
             </template>
-            <div class="block">
+            <div v-if="fynone" class="block">
                 <el-pagination align='center' @size-change="handleSizeChange" @current-change="handleCurrentChange"
                     :current-page="currentPage" :page-sizes="[10, 12, 15, 20]" :page-size="pageSize"
                     layout="total, sizes, prev, pager, next" :total="tableDatas.length">
@@ -88,6 +87,7 @@
     </div>
 </template>
 <script>
+import { el } from '@fullcalendar/core/internal-common';
 export default {
     data() {
         return {
@@ -102,6 +102,7 @@ export default {
             DiId: '',
             AirTicketResSelectData: [],
             delegationInfo: {},
+            fynone:true
         }
     },
     methods: {
@@ -128,9 +129,11 @@ export default {
                     userId: that.userId
                 }
             }).then(function (res) {
+                console.log(res)
                 if (res.data.code == 200) {
                     that.AirTicketResSelectData = res.data.data.groupName;
-                    if (that.AirTicketResSelectData.length != 0) {
+                    if (that.AirTicketResSelectData.length > 0) {
+                        console.log(1)
                         that.DiId = that.AirTicketResSelectData[0].id;
                         that.AirTicketResList()
                     }
@@ -154,27 +157,35 @@ export default {
                     Authorization: 'Bearer ' + this.token
                 },
                 data: {
+                    portType: 1,
                     diId: that.DiId,
                     userId: that.userId,
-                    portType: 1
                 }
             }).then(function (res) {
+                console.log(res)
                 if (res.data.code == 200) {
-                    debugger
                     that.tableDatas = res.data.data.airTicketReservations;
                     that.tableData = that.tableDatas
+                    if(that.tableData<=0){
+                        that.fynone=false;
+                    }else{
+                        that.fynone=true;
+                    }
                     if (that.tableDatas.length != 0) {
                         if (that.tableDatas.slice((that.currentPage - 1) * that.pageSize, that.currentPage * that.pageSize).length == 0) {
                             if (that.currentPage > 1) {
                                 that.currentPage = that.currentPage - 1;
                             }
                         }
+
                     }
                     that.delegationInfo = res.data.data.delegationInfo
+                }else{
+                    that.fynone=false;
                 }
 
             }).catch(function (error) {
-
+                that.fynone=false;
                 that.$message.error("网络错误,请稍后重试");
             });
         },
@@ -325,6 +336,7 @@ export default {
     padding: 10px;
     box-shadow: 0 0 5px #0005;
     border-radius: 10px;
+    min-height: 830px;
 }
 
 .communal-title {

+ 21 - 10
src/components/OP/Customers.vue

@@ -23,23 +23,22 @@
                                 @click="QueryByVisaClient">查询</el-button>
                         </div>
                     </div>
-                    <div style="width: 20%">
+                    <div style="width: 20%;text-align: right;">
                         <el-button type="primary" style="" @click="addIf">新增</el-button>
                     </div>
                 </div>
             </div>
             <div style="margin:10px 0;color:#606266;">
-                <span style="font-weight: bold;font-size:17px;">团队名称:</span>
+                <span style="font-weight: bold;font-size:15px;">团队名称:</span>
                 <span style="color:#606266;">{{ delegationInfo.teamName }}&nbsp;&nbsp;&nbsp;</span>
-                <span style="font-weight: bold;font-size:17px;">客户:</span>
+                <span style="font-weight: bold;font-size:15px;">客户:</span>
                 <span style="color:#606266;">{{ delegationInfo.clientName }}&nbsp;&nbsp;&nbsp; {{
 }}&nbsp;&nbsp;&nbsp;</span>
-                <span style="font-weight: bold;font-size:17px;">出访国家:</span>
-                <span style="color:#606266;">{{ delegationInfo.visitCountry }}&nbsp;&nbsp;&nbsp;</span>
-                <span style="font-weight: bold;font-size:17px;">起止日期:</span>
-                <span style="color:#606266;">{{ delegationInfo.visitStartDate }}—{{ delegationInfo.visitEndDate
-                }}&nbsp;&nbsp;&nbsp;</span>
-                <span style="font-weight: bold;font-size:17px;">天数/人数:</span>
+                <span style="font-weight: bold;font-size:15px;">出访国家:</span>
+                <span style="color:#606266;">{{ delegationInfo.visitCountry|filter_city }}&nbsp;&nbsp;&nbsp;</span>
+                <span style="font-weight: bold;font-size:15px;">起止日期:</span>
+                <span style="color:#606266;">{{ delegationInfo.visitStartDate|filter_time }}—{{ delegationInfo.visitEndDate|filter_time}}&nbsp;&nbsp;&nbsp;</span>
+                <span style="font-weight: bold;font-size:15px;">天数/人数:</span>
                 <span style="color:#606266;">{{ delegationInfo.visitDays }}天/{{ delegationInfo.visitPNumber }}人</span>
             </div>
 
@@ -66,7 +65,7 @@
                             <a @click="download(scope.$index, scope.row)">{{ scope.row.attachment }}</a>
                         </template>
                     </el-table-column>
-                    <el-table-column label="操作">
+                    <el-table-column width="150" label="操作">
                         <template slot-scope="scope">
                             <el-button-group>
                                 <el-button type="primary" size="mini" icon="el-icon-edit"
@@ -275,6 +274,18 @@ export default {
 
         },
     },
+    filters:{
+        filter_city(value){
+            if(value){
+                return value.replaceAll('|','、')
+            }
+        },
+        filter_time(value){
+            if(value){
+                return value.split(" ")[0]
+            }
+        }
+    },
     mounted() {
         this.token = JSON.parse(localStorage.getItem('userinif')).token;
         this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId

+ 22 - 8
src/components/OP/DecreasePayments.vue

@@ -14,22 +14,22 @@
                             </el-option>
                         </el-select>
                     </div>
-                    <div>
+                    <div style="width: 10%;text-align: right;">
                         <router-link :to="{ path: '/home/OpDecreasePayments', query: { DiId } }">
                             <el-button type="primary" style="margin-left: 10px;">新增</el-button>
                         </router-link>
                     </div>
                 </div>
                 <div class="communal-box-title">
-                    <span style="font-weight: bold;">团队名称:</span>
+                    <span>团队名称:</span>
                     {{ delegationInfo.teamName }}&nbsp;&nbsp;&nbsp;
-                    <span style="font-weight: bold;">客户:</span>
+                    <span>客户:</span>
                     {{ delegationInfo.clientName }}&nbsp;&nbsp;&nbsp;
-                    <span style="font-weight: bold;">出访国家:</span>
-                    {{ delegationInfo.visitCountry }}&nbsp;&nbsp;&nbsp;
-                    <span style="font-weight: bold;">起止日期:</span>
-                    {{ delegationInfo.visitStartDate }}—{{ delegationInfo.visitEndDate }}&nbsp;&nbsp;&nbsp;
-                    <span style="font-weight: bold;">天数/人数:</span>
+                    <span>出访国家:</span>
+                    {{ delegationInfo.visitCountry |filter_city}}&nbsp;&nbsp;&nbsp;
+                    <span>起止日期:</span>
+                    {{ delegationInfo.visitStartDate|filter_time }}—{{ delegationInfo.visitEndDate|filter_time }}&nbsp;&nbsp;&nbsp;
+                    <span>天数/人数:</span>
                     {{ delegationInfo.visitDays }}天/{{ delegationInfo.visitPNumber }}人
                 </div>
             </div>
@@ -234,6 +234,18 @@ export default {
         }
 
     },
+    filters:{
+        filter_city(value){
+            if(value){
+                return value.replaceAll('|','、')
+            }
+        },
+        filter_time(value){
+            if(value){
+                return value.split(" ")[0]
+            }
+        }
+    },
     mounted() {
         this.token = JSON.parse(localStorage.getItem('userinif')).token;
         this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId
@@ -248,6 +260,7 @@ export default {
     padding: 10px;
     box-shadow: 0 0 5px #0005;
     border-radius: 10px;
+    min-height: 830px;
 }
 
 .communal-title {
@@ -270,6 +283,7 @@ export default {
     padding: 8px 20px;
 }
 .communal-box-title{
+    font-size: 15px;
     margin: 10px 0;
 }
 .communal-box-title span{

+ 23 - 40
src/components/OP/Groupedit.vue

@@ -63,7 +63,7 @@
                 </div>
                 <div style="display: flex;align-items: center;">
                     <el-form-item label-width="120px" label="OP提成等级" prop="opRoyaltyLv">
-                        <el-select v-model="ruleForm.opRoyaltyLv" placeholder="OP提成等级" clearable filterable
+                        <el-select @change="commissionlevel" v-model="ruleForm.opRoyaltyLv" placeholder="OP提成等级" clearable filterable
                             style="width: 100%;">
                             <el-option v-for="item in opRoyaltyLvList" :key="item.id" :label="item.name + '元'"
                                 :value="item.id">
@@ -72,8 +72,8 @@
                     </el-form-item>
                     <el-form-item style="width:50%" label-width="98px" label="等级说明:" prop="opRoyaltyRemark">
                         <el-select style="width:100%" class="op-type" v-model="ruleForm.opRoyaltyRemark" placeholder="请选择团组类型">
-                            <el-option v-for="(item, index) in commissionleve" :key="index" :label="item.lable"
-                                :value="item.lable"></el-option>
+                            <el-option v-for="(item, index) in commissionleve" :key="index" :label="item"
+                                :value="item"></el-option>
                         </el-select>
                         <!-- <el-input type="textarea" v-model="ruleForm.opRoyaltyRemark" style="width: 500px;"></el-input> -->
                     </el-form-item>
@@ -87,12 +87,12 @@
                     <el-form-item label-width="120px" label="特殊需求:">
                         <el-input type="textarea" v-model="ruleForm.specialneeds"></el-input>
                     </el-form-item>
-                    <el-form-item label-width="120px" label="其他需求:">
-                        <el-input type="textarea" v-model="ruleForm.otherneeds"></el-input>
-                    </el-form-item>
                     <el-form-item label-width="120px" label="公务需求:">
                         <el-input type="textarea" v-model="ruleForm.Officialneeds"></el-input>
                     </el-form-item>
+                    <el-form-item label-width="120px" label="其他需求:">
+                        <el-input type="textarea" v-model="ruleForm.otherneeds"></el-input>
+                    </el-form-item>
                 </el-form>
                 <el-form class="approval-box">
                     <el-form-item label-width="160px" label="出国任务审批部门名称:">
@@ -123,7 +123,7 @@
                 </el-form-item>
             </el-form>
         </div>
-        <el-dialog title="等级说明" :visible.sync="dialogVisible" width="30%" :before-close="handleClose"
+        <el-dialog title="等级说明" :visible.sync="dialogVisible" width="30%"
             :close-on-click-modal="false">
             <span>
                 1)普通团组:¥300/团;<br><br>
@@ -194,39 +194,7 @@ export default {
                 opRoyaltyRemark: ''
             },
             commissionleve:[
-                {
-                    lable:'1)普通团组:¥300/团;'
-                },
-                {
-                    lable:'2)VIP团(地市州书记 市长 成都副市级别 副书记级别 成都正厅级干部):¥500/团;'
-                },
-                {
-                    lable:'3)VVIP团(四川省副部级 副省级 省长 ):¥1000/团;'
-                },
-                {
-                    lable:'4)非全程接待或非标准团组,接待5天内(含5天)的团组:¥100/团;'
-                },
-                {
-                    lable:'5)非全程接待或非标准团组,但负责全程机票,接待5天以上的团组:¥200/团;'
-                },
-                {
-                    lable:'6)非全程接待或非标准团组且不负责全程机票,接待5天以上的团组:¥100/团;'
-                },
-                {
-                    lable:'7)非全程接待或非标准团组且不负责全程机票,只负责地接的,人数为10人以上的的团组:300/团;'
-                },
-                {
-                    lable:'8)人数为5人以内(含5人)的标准团组:¥200/团;'
-                },
-                {
-                    lable:'9)人数为5人以内(含5人)并且非全程接待5天内(含5天)的团组:¥100/团;'
-                },
-                {
-                    lable:'10)人数为5人以内(含5人),非全程接待5天以上并且负责全程机票的团组:¥200/团;'
-                },
-                {
-                    lable:'11)人数为5人以内(含5人)并且非全程接待5天以上,但不负责全程机票的团组:¥100.00/团;'
-                },
+               '无'
             ],
             personarr: [],
             gradearr: [],
@@ -339,6 +307,7 @@ export default {
                 }
             }).then(function (res) {
                 if (res.data.code == 200) {
+                    console.log(res)
                     that.opRoyaltyLvList = res.data.data;
                 }
             })
@@ -364,6 +333,20 @@ export default {
             }
 
         },
+        //提成等级值改变
+        commissionlevel(val){
+            console.log(val)
+            console.log(this.opRoyaltyLvList)
+            var tctext
+            for(var tc=0;tc<this.opRoyaltyLvList.length;tc++){
+                if(this.opRoyaltyLvList[tc].id==val){
+                    tctext=this.opRoyaltyLvList[tc].remark.split('&')
+                }
+            }
+            this.ruleForm.opRoyaltyRemark='',
+            this.commissionleve=tctext,
+            console.log(tctext);
+        },
         //处理时间
         disposeTime(val) {
             var date = new Date(val);

+ 6 - 3
src/components/OP/GroupsTaskAssignment.vue

@@ -1,5 +1,5 @@
 <template>
-    <div class="communal-list">
+    <div class="communal-list"  v-loading.fullscreen.lock="fullscreenLoading">
         <div class="communal-title">
             <div>团组任务分配</div>
         </div>
@@ -96,14 +96,15 @@ export default {
             user: [],
             diId: '',
             ctId: '',
-
             userStr: [],
             TaskAssignment: {},
-            DelegationInfo: {}
+            DelegationInfo: {},
+            fullscreenLoading:false,
         }
     },
     methods: {
         GetTaskAssignmen() {
+            this.fullscreenLoading=true;
             var that = this
             var url = "/api/Groups/GetTaskAssignmen";
             this.$axios({
@@ -145,10 +146,12 @@ export default {
                     that.userStr = res.data.data.userStr
                     that.TaskAssignment = res.data.data.taskAssignment
                     that.DelegationInfo = res.data.data.delegationInfo
+                    that.fullscreenLoading=false;
                 } else {
                     that.userStr = [];
                     that.TaskAssignment = {};
                     that.DelegationInfo = {}
+                    that.fullscreenLoading=false;
                 }
             })
         },

+ 3 - 2
src/components/OP/OPgroup.vue

@@ -139,10 +139,10 @@ export default {
                     label: '全部'
                 }, {
                     value: '0',
-                    label: '完成'
+                    label: '完成'
                 }, {
                     value: '1',
-                    label: '完成'
+                    label: '完成'
                 }
             ],
             value: '-1',
@@ -324,6 +324,7 @@ export default {
         padding: 10px;
         box-shadow: 0 0 5px #0005;
         border-radius: 10px;
+        min-height: 830px;
     }
     .group-title{
         display: flex;

+ 9 - 12
src/components/OP/OpCustomers.vue

@@ -6,13 +6,13 @@
             </div>
         </div>
         <hr style='background-color:#5555; height:1px; border:none;' />
-        <div>
+        <div class="opcustomers-box">
             <el-form :model="delegationInfo" label-width="100px" class="demo-ruleForm">
                 <div style="display: flex;">
                     <div style="width: 25%;">
                         <el-form-item label="团组名称:" label-width="160px">
                             <el-select v-model="OpCustomersData.diId" clearable filterable placeholder="团组选择"
-                                :disabled="isShow" style="width: 220px;" @change="DiIdSelectChange">
+                                :disabled="isShow" @change="DiIdSelectChange">
                                 <el-option v-for="item in delegationInfoList" :key="item.id" :label="item.teamName"
                                     :value="item.id">
                                 </el-option>
@@ -111,7 +111,7 @@
                     </div>
                 </div>
                 <div style="display: flex;">
-                    <div style="width: 81%;">
+                    <div style="width: 100%;">
                         <el-form-item label="备 注:" prop="Remark" label-width="160px">
                             <el-input type="textarea" :rows="5" placeholder="备注"
                                 v-model="OpCustomersData.remark"></el-input>
@@ -395,7 +395,6 @@ export default {
                 }
             }).then(function (res) {
                 if (res.data.code == 200) {
-                    debugger
                     that.delegationInfoList = res.data.data.groupName
                     that.payment = res.data.data.payment
                     for (let index = 0; index < that.delegationInfoList.length; index++) {
@@ -456,14 +455,12 @@ export default {
                             diId: that.OpCustomersData.diId
                         }
                     }).then(function (res) {
-                        debugger
                         if (res.data.code == 200) {
                             that.insuranceCostList = res.data.data.insuranceCost;//保险类型下拉框
                             that.OpCustomersData.iid = that.insuranceCostList[0].id;
                             that.Balance = that.insuranceCostList[0].balance;
                             that.currencyList = res.data.data.currencyList;//币种下拉框
                             if (that.currencyList.length != 0) {
-                                debugger
                                 that.OpCustomersData.currency = that.currencyList[0].currencyId
                             }
                             that.bankCard = res.data.data.bankCard;//卡类型下拉框
@@ -478,7 +475,6 @@ export default {
             })
         },
         iidChane(row) {
-            debugger
             for (let index = 0; index < this.insuranceCostList.length; index++) {
                 if (this.insuranceCostList[index].id == row) {
                     this.Balance = this.insuranceCostList[index].balance;
@@ -548,7 +544,6 @@ export default {
                 }
             }).then(function (res) {
                 if (res.data.code == 200) {
-                    debugger
                     var CreditCardPayment = res.data.data.creditCard;
                     var Customers = res.data.data.customers;
                     that.IsAuditGM = CreditCardPayment.isAuditGM;
@@ -615,8 +610,6 @@ export default {
                                     }).then(function (res) {
                                     })
                                 }
-
-                                debugger
                                 that.OpCustomersData.createUserId = that.userId;
                                 if (that.OpCustomersData.ctdId == '') {
                                     that.OpCustomersData.ctdId = 0
@@ -809,7 +802,6 @@ export default {
         this.initializeSelect();
         this.OpCustomersData.diId = parseInt(this.$route.query.DiId)
         this.OpCustomersData.id = this.$route.query.id
-        debugger
         if (this.OpCustomersData.id != null && this.OpCustomersData.id != undefined && this.OpCustomersData.id != 0) {
             this.QueryCustomersById();
             this.title = "修改保险费用";
@@ -868,7 +860,12 @@ export default {
     box-shadow: 0 0 5px #0005;
     border-radius: 10px;
 }
-
+.opcustomers-box .el-select{
+    width: 100%;
+}
+.opcustomers-box  .el-date-editor .el-input{
+    width: 100%;
+}
 @media screen and (max-width: 1700px) {
     .appraise-box>div {
         width: 48%;

+ 10 - 11
src/components/OP/OpDecreasePayments.vue

@@ -12,7 +12,7 @@
                     <div style="width: 25%;">
                         <el-form-item label="团组名称:" label-width="160px">
                             <el-select v-model="DiIdSelect" clearable filterable placeholder="团组选择"
-                                @change="DecreasePaymentsChange" :disabled="isShow" style="width: 220px;">
+                                @change="DecreasePaymentsChange" :disabled="isShow" style="width: 100%;">
                                 <el-option v-for="item in delegationInfoList" :key="item.id" :label="item.teamName"
                                     :value="item.id">
                                 </el-option>
@@ -41,33 +41,31 @@
             </el-form>
             <el-form :model="DecreasePaymentsData" ref="DecreasePaymentsData" :rules="DecreasePaymentsRules"
                 label-width="100px" class="demo-ruleForm">
-                <div style="display:flex ;">
-                    <div style="width: 33%;">
+                <div style="display:flex ;flex-wrap: wrap;">
+                    <div style="width: 25%;">
                         <el-form-item label="费用名称:" prop="priceName" label-width="160px">
                             <el-input placeholder="费用名称" v-model="DecreasePaymentsData.priceName">
                             </el-input>
                         </el-form-item>
                     </div>
-                    <div style="width: 33%;">
+                    <div style="width: 25%;">
                         <el-form-item label="费用金额:" prop="price" label-width="160px">
                             <el-input placeholder="费用金额" v-model="DecreasePaymentsData.price" style="width: 58%;">
                             </el-input>
-                            <el-select v-model="DecreasePaymentsData.currency" style="width: 35%;">
+                            <el-select v-model="DecreasePaymentsData.currency" style="width: 40%;">
                                 <el-option key="48" label="CNY" :value="48"></el-option>
                                 <el-option key="49" label="USD" :value="49"></el-option>
                                 <el-option key="51" label="EUR" :value="51"></el-option>
                             </el-select>
                         </el-form-item>
                     </div>
-                    <div style="width: 33%;">
+                    <div style="width: 25%;">
                         <el-form-item label="收款方:" prop="payee" label-width="160px">
                             <el-input placeholder="收款方" v-model="DecreasePaymentsData.payee">
                             </el-input>
                         </el-form-item>
                     </div>
-                </div>
-                <div style="display:flex ;">
-                    <div style="width: 33%;">
+                    <div style="width: 25%;">
                         <el-form-item label="费用标识:" prop="orbitalPrivateTransfer" label-width="160px">
                             <el-select v-model="DecreasePaymentsData.orbitalPrivateTransfer" placeholder="费用标识"
                                 style="width: 100%;">
@@ -78,7 +76,7 @@
                             </el-select>
                         </el-form-item>
                     </div>
-                    <div style="width: 33%;">
+                    <div style="width: 25%;">
                         <el-form-item label="支付方式:" prop="payDId" label-width="160px">
                             <el-select v-model="DecreasePaymentsData.payDId" placeholder="支付方式" style="width: 100%;">
                                 <el-option v-for="item in payment" :key="item.id" :label="item.name" :value="item.id">
@@ -103,7 +101,7 @@
                     </div>
                 </div>
                 <div style="display: flex;">
-                    <div style="width: 90%;">
+                    <div style="width: 100%;">
                         <el-form-item label="备 注:" prop="remark" label-width="160px">
                             <el-input type="textarea" :rows="5" placeholder="备注"
                                 v-model="DecreasePaymentsData.remark"></el-input>
@@ -490,6 +488,7 @@ export default {
     padding: 10px;
     box-shadow: 0 0 5px #0005;
     border-radius: 10px;
+    
 }
 
 .car_add .communal-title {

+ 285 - 50
src/components/OP/PickupList.vue

@@ -1,5 +1,5 @@
 <template>
-    <div>
+    <div v-loading.fullscreen.lock="fullscreenLoading">
         <div class="pickuplist-all">
             <div class="pickuplist-head">
                 <div class="pickuplist-head-li">
@@ -34,23 +34,21 @@
                     </div>
                 </div>
             </div>
-            <div class="pickuplist-Upload-box">
-                <!-- <el-upload
-                style="width:30%"
-                class="upload-demo"
-                ref="upload"
-                action="https://jsonplaceholder.typicode.com/posts/"
-                :on-preview="handlePreview"
-                :on-remove="handleRemove"
-                :file-list="fileList"
+            <div class="pickuplist-Upload-box"> 
+                <el-upload 
+                class="upload-demo" 
+                ref="upload" 
+                action="" 
+                :on-change="httpRequest" 
+                :on-remove="httpRequest" 
                 accept=".png, .jpg, .jpeg"
                 :limit="1"
+                :file-list="fileList" 
                 :auto-upload="false">
                     <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
-                    <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button>
-                    <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
-                </el-upload> -->
-                
+                    <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">识别图片</el-button>
+                    <div slot="tip" class="el-upload__tip">只能识别jpg/png文件</div>
+                </el-upload>
             </div>
             <div class="pickuplist-table">
                 <el-table
@@ -94,7 +92,6 @@
                     </template>
                     </el-table-column>
                     <el-table-column
-                    fixed="right"
                     label="操作"
                     width="100">
                         <template slot-scope="scope">
@@ -214,7 +211,7 @@
                     <el-input :rows="2" type="textarea" v-model="pickupinif.remark"></el-input>
                 </el-form-item>
             </el-form>
-            <el-dialog class="dutzl" width="1242px" title="添加多条资料" :visible.sync="dialogTableVisible">
+            <el-dialog class="dutzl" width="1242px" title="添加多条资料" :visible.sync="dialogTableVisible" :before-close="closeExpertFormDialog">
                 <div class="dialog-hade">
                     <label>PS:自动填写补全功能可能有误差请仔细核实,补全或修改(没有可用‘-’或‘暂无’代替)</label>
                     <el-button @click="manysave" size="mini" type="primary">保 存</el-button>
@@ -320,6 +317,7 @@
 </template>
 <script>
 import { pinyin } from 'pinyin-pro';
+import { cl, el } from '@fullcalendar/core/internal-common';
 export default {
     data () {
         return {
@@ -328,112 +326,162 @@ export default {
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex: '男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex: '男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex:'男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex: '男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex: '男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex: '男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex: '男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex: '男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex: '男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex: '男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
             ],
             token:'',
@@ -498,7 +546,10 @@ export default {
                     { required: true, message: '请选择舱位类型', trigger: ['blur', 'change'] }
                 ], 
             },
-            fileList: []
+            fileList: [],
+			upLoadFile: [],
+            fullscreenLoading:false,
+            timeStamp:''
         }
     },
     methods:{
@@ -521,126 +572,172 @@ export default {
                 return restaurant.value.replace("  ", "").toLowerCase().match(queryString.toLowerCase());
             };
         },
-
-
         delegationSelectChange(){
             this.PostShareGroupInfo()
             this.addhandoff()
         },
-
-
         //清空
         clearedlist(){
             this.tourClientListInfos=[
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex: '男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex: '男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex:'男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex: '男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex: '男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex: '男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex: '男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex: '男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex: '男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
                 {
                     lastName: "",
                     firstName: "",
+                    pinyin:'',
                     sex: '男',
                     companyFullName: "",
                     job: "",
                     idCardNo: "",
                     phone: "",
                     birthDay: "",
-                    shippingSpaceTypeId: 460
+                    shippingSpaceTypeId: 460,
+                    shippingSpaceSpecialNeeds:'',
+                    hotelSpecialNeeds:'',
+                    mealSpecialNeeds:'',
+                    remark:'',
                 },
             ]
         },
@@ -723,6 +820,7 @@ export default {
         },
         //获取基础数据
         PostTourClientListBasicDataInit() {
+            this.fullscreenLoading=true;
             var url = "/api/Groups/PostTourClientListBasicDataInit"
             var that = this
             this.$axios({
@@ -753,8 +851,10 @@ export default {
                             value: terminal.companyFullName,
                         };
                     });
+                    that.fullscreenLoading=false;
                 }
             }).catch(function (error) {
+                that.fullscreenLoading=false;
                 that.$message.error("获取基础数据失败!");
             });
         },
@@ -895,6 +995,7 @@ export default {
         },
         //保存修改api
         PostTourClientListAddOrEdit() {
+            this.fullscreenLoading=true;
             var url = "/api/Groups/PostTourClientListAddOrEdit"
             var that = this
             this.$axios({
@@ -917,7 +1018,7 @@ export default {
                     companyFullName:that.pickupinif.flats,//公司名全称
                     job:that.pickupinif.office,//职位
                     idCardNo:that.pickupinif.identity,//身份证No
-                    tel:'',//...
+                    // tel:'',//...
                     birthDay:that.pickupinif.birth,//生日
                     shippingSpaceTypeId:that.pickupinif.Accommodation,//舱位类型(数据类型表Id)
                     shippingSpaceSpecialNeeds:that.pickupinif.ClassRemarks,//舱位特殊需求
@@ -938,10 +1039,14 @@ export default {
                         that.addhandoff();
                         that.loading=false;
                     }, 500);
+                    that.fullscreenLoading=false;
                 }else{
                     that.$message.error(res.data.msg);
+                    that.fullscreenLoading=false;
+
                 }
             }).catch(function (error) {
+                that.fullscreenLoading=false;
                 that.$message.error("保存或修改失败!");
             });
         },
@@ -971,6 +1076,11 @@ export default {
             }
             this.PostTourClientListBasicDataInit()
         },
+        //清空表单
+        closeExpertFormDialog(done){
+            this.clearedlist()
+            done();//done 用于关闭 Dialog
+        },
         //删除
         PostTourClientListDel(index,row) {
             this.$confirm('此操作将删除此条数据,是否确认', '提示', {
@@ -1033,6 +1143,14 @@ export default {
         PostTourClientListAddMultiple(listinif) {
             var url = "/api/Groups/PostTourClientListAddMultiple"
             var that = this
+            var data= {
+                    portType: 1,
+                    userId:that.userId,
+                    pageId:that.pageId,
+                    diId:that.diId,
+                    tourClientListInfos:listinif
+                }
+                console.log(JSON.stringify(data))
             this.$axios({
                 method: 'post',
                 url: url,
@@ -1096,15 +1214,119 @@ export default {
                 that.$message.error("下载失败!");
             });
         },
+        async httpRequest(file, fileList) {
+			this.upLoadFile = []
+			for (let i in fileList) {
+				this.upLoadFile[i] = await this.getBase64(fileList[i].raw)
+			}
+			console.log('上传文件列表', this.upLoadFile)
+		},
+		// 转base64码
+		getBase64(file) {
+			return new Promise((resolve, reject) => {
+				const reader = new FileReader()
+				let fileResult = ''
+				reader.readAsDataURL(file)
+				// 开始转
+				reader.onload = () => {
+					fileResult = reader.result
+				}
+				// 转 失败
+				reader.onerror = error => {
+					reject(error)
+				}
+				// 转 结束
+				reader.onloadend = () => {
+					resolve(fileResult)
+				}
+			})
+		},
         submitUpload() {
-            this.$refs.upload.submit();
-        },
-        handleRemove(file, fileList) {
-            console.log(file, fileList);
+            console.log(this.upLoadFile)
+            if(this.upLoadFile.length==0){
+                this.$message.error("未选择图片!");
+            }else{
+                this.fullscreenLoading=true;
+                var url = "/api/BaiduOCR/ClientOCR"
+                var that = this
+                this.$axios({
+                    method: 'post',
+                    url: url,
+                    headers: {
+                        Authorization: 'Bearer ' + this.token
+                    },
+                    data: {
+                        base64img:that.upLoadFile[0]
+                    }
+                }).then(function (res) {
+                    console.log(res)
+                    if (res.data.code == 200) {
+                        that.fullscreenLoading=false;
+                        var dataarr=res.data.data;
+                        var dataarrnew=[];
+                        for(var i=0;i<dataarr.length;i++){
+                            dataarrnew.push(
+                                {
+                                    lastName:dataarr[i].lastName,
+                                    firstName:dataarr[i].firstName,
+                                    pinyin:'',
+                                    sex:dataarr[i].sex,
+                                    companyFullName:dataarr[i].companyFullName,
+                                    job:dataarr[i].job,
+                                    idCardNo:dataarr[i].iDcard,
+                                    phone:dataarr[i].phone,
+                                    birthDay:dataarr[i].birthday=='-'?'':dataarr[i].birthday,
+                                    shippingSpaceTypeId:dataarr[i].berth,
+                                    shippingSpaceSpecialNeeds:'',
+                                    hotelSpecialNeeds:'',
+                                    mealSpecialNeeds:'',
+                                    remark:'',
+                                }
+                            )
+                            // that.tourClientListInfos[i]=dataarrnew[i]
+                        }
+                        that.tourClientListInfos=dataarrnew
+                        console.log(10-dataarrnew.length)
+                        var len = 10 - dataarrnew.length
+                        console.log(len)
+                        for(var jk=0;jk<len;jk++){
+                            that.tourClientListInfos.push(
+                                {
+                                    lastName: '',
+                                    firstName: "",
+                                    pinyin:'',
+                                    sex: '男',
+                                    companyFullName: "",
+                                    job: "",
+                                    idCardNo: "",
+                                    phone: "",
+                                    birthDay: "",
+                                    shippingSpaceTypeId: 460,
+                                    shippingSpaceSpecialNeeds:'',
+                                    hotelSpecialNeeds:'',
+                                    mealSpecialNeeds:'',
+                                    remark:'',
+                                }
+                            )
+                        }
+                        that.$message({
+                            type: 'success',
+                            message: res.data.msg,
+                            duration:'3000'
+                        });
+                        // setTimeout(function(){ that.dialogTableVisible=true; }, 3000); 
+                        that.dialogTableVisible=true;
+                    }else{
+                        that.fullscreenLoading=false;
+                        that.$message.error(res.data.msg);
+                    }
+                }).catch(function (error) {
+                    that.fullscreenLoading=false;
+                    that.$message.error("导入失败!");
+                });
+                
+            }
         },
-        handlePreview(file) {
-            console.log(file);
-        }
     },
     filters:{
         filter_city(value){
@@ -1119,6 +1341,7 @@ export default {
         }
     },
     mounted(){
+        console.log(this.tourClientListInfos)
         this.token = JSON.parse(localStorage.getItem('userinif')).token;
         this.pageId=Number(localStorage.getItem('indexs').split('-')[1]);//页面id
         this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
@@ -1155,7 +1378,9 @@ export default {
     display: flex;
     margin-top: 10px;
 }
-
+.pickuplist-info .pickuplist-info-li:last-child{
+    margin-right: 0;
+}
 .pickuplist-info-li {
     margin-right: 30px;
 }
@@ -1176,6 +1401,16 @@ export default {
     align-items: baseline;
     justify-content: end;
 }
+.pickuplist-Upload-box .upload-demo{
+    display: flex;
+    align-items: center;
+}
+.pickuplist-Upload-box .el-upload__tip{
+    margin-top: 0px;
+}
+.pickuplist-Upload-box .el-upload-list__item:first-child{
+    margin-top: 0px;
+}
 .pickuplist-table{
     margin-top: 20px;
 }

+ 24 - 27
src/components/OP/visaEdit.vue

@@ -92,7 +92,7 @@
                 <span>证件信息</span>
             </div>
             <el-form v-for="(item, i) in customerCerts" :key="i" :rules="rulesCert" ref="deleClient" @submit.native.prevent>
-                <div class="foundation-box1">
+                <div class="foundation-box1 aligns">
                     <el-form-item label="证件类型" prop="sdId">
                         <el-select v-model="item.sdId" filterable placeholder="请选择" style="width: 164px;">
                             <el-option v-for="item1 in SetData" :key=item1.id :label=item1.name :value=item1.id></el-option>
@@ -245,10 +245,9 @@
         <div class="plate-box">
             <div class="small-title">
                 <span>家庭成员信息</span>
-
             </div>
-            <el-form v-for="(item, index) in customerFamily" :key="index">
-                <div class="foundation-box1">
+            <el-form label-width="120px" v-for="(item, index) in customerFamily" :key="index">
+                <div class="foundation-box1 itemwidth">
                     <el-form-item label="称谓:" prop="appellation">
                         <el-select v-model="item.appellation" filterable placeholder="请选择">
                             <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
@@ -276,13 +275,8 @@
                         </el-radio-group>
                     </el-form-item>
                     <el-form-item label="工作单位:" prop="client">
-                        <el-input v-model="item.client" clearable style="width: 400px;"></el-input>
-                    </el-form-item>
-
-                    <el-form-item label="家庭住址:" prop="address">
-                        <el-input v-model="item.address" clearable style="width: 400px;"></el-input>
+                        <el-input v-model="item.client" clearable></el-input>
                     </el-form-item>
-
                     <el-form-item label="是否欧盟公民:" prop="isEu">
                         <el-radio-group v-model="item.isEu">
                             <el-radio :label=1>是</el-radio>
@@ -291,22 +285,19 @@
                     </el-form-item>
 
                 </div>
-                若家庭成员是欧盟、欧洲经济区或瑞士公民,请填写下方信息:
+                <el-form-item label="家庭住址:" prop="address">
+                    <el-input v-model="item.address" clearable style="width: 400px;"></el-input>
+                </el-form-item>
+                <p style="font-size: 14px;color: #606266;font-weight: 600;">若家庭成员是欧盟、欧洲经济区或瑞士公民,请填写下方信息:</p>
                 <div class="foundation-box1">
-                    <div style="width: 32%;display: flex;">
-                        <el-form-item label="成员国籍:" prop="nationality">
+                    <div style="display:flex;align-items: center;width: 100%;">
+                        <el-form-item style="width:25%;" label-width="120px" label="成员国籍:" prop="nationality">
                             <el-input v-model="item.nationality"></el-input>
                         </el-form-item>
-
-                        <el-form-item label="证件号码" prop="idCard">
+                        <el-form-item style="width:25%;" label-width="120px" label="证件号码" prop="idCard">
                             <el-input v-model="item.idCard" placeholder="旅行证件编号或身份证号码"></el-input>
                         </el-form-item>
-                    </div>
-                    <div>
-                        <div class="textClass">
-                            客户与该欧盟、欧洲经济区或瑞士公民亲属关系
-                        </div>
-                        <el-form-item prop="reletionship">
+                        <el-form-item style="width:45%;" label-width="350px" label="客户与该欧盟、欧洲经济区或瑞士公民亲属关系" prop="reletionship">
                             <el-radio-group v-model="item.reletionship">
                                 <el-radio label="配偶"></el-radio>
                                 <el-radio label="子女"></el-radio>
@@ -314,10 +305,9 @@
                                 <el-radio label="赡养的老人"></el-radio>
                             </el-radio-group>
                         </el-form-item>
-                    </div>
-                    <div style="line-height: 70px;margin-left: 15%;">
-                        <el-button circle icon="el-icon-minus" @click="subcustomerFamilyAdd(index, item.id)"
-                            v-if="index >= 0"></el-button>
+                        <div style="width:5%;margin-bottom: 22px;text-align: right;">
+                            <el-button circle icon="el-icon-minus" @click="subcustomerFamilyAdd(index, item.id)" v-if="index >= 0"></el-button>
+                        </div>
                     </div>
                 </div>
                 <hr style='background-color:#5555; height:1px; border:none;' />
@@ -625,10 +615,11 @@
             <div class="tips">
                 <span>列出除小学以外的所有教育经历:从高中开始填写</span>
 
+
             </div>
             <div>
                 <el-form v-for="(item, e) in customerSchool" :key="e" @submit.native.prevent>
-                    <div class="foundation-box1">
+                    <div class="foundation-box1 aligns">
                         <el-form-item label="学校名称和学历:" prop="school">
                             <el-input v-model="item.school" clearable></el-input>
                         </el-form-item>
@@ -1514,8 +1505,14 @@ export default {
     margin-bottom: 10px;
     font-size: 12px;
     color: #555;
+    
+}
+.itemwidth .el-form-item{
+    width:25%;
+}
+.itemwidth .el-select{
+    width:100%;
 }
-
 .foundation-box {
     display: flex;
     flex-wrap: wrap;

+ 195 - 23
src/components/home.vue

@@ -1,18 +1,86 @@
 <template>
   <div class="all-box">
-    <el-dialog
+    <div class="home-dialog">
+      <el-dialog
       style=""
       top="0"
-      title="提示"
+      title="消息"
       :visible.sync="dialogVisible"
-      width="30%"
-      :before-close="handleClosezz">
-      <span>这是一段信息</span>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
-      </span>
-    </el-dialog>
+      width="30%">
+        <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
+          <el-tab-pane name="first">
+            <span slot="label">
+              任务操作通知
+              <el-badge :hidden="tasknot==0?true:false" :value="tasknot" :max="9999"></el-badge>
+            </span>
+            <div class="read-btn">
+              <el-badge :hidden="tasknot==0?true:false" :value="tasknot" class="item">
+                <el-button  size="mini" plain >未读</el-button>
+              </el-badge>
+              <el-button size="mini" plain >
+                已读
+              </el-button>
+            </div>
+            <div class="news-box" v-for="(item,index) in newstasklist" :key="index">
+              <div class="news-box-list">
+                <div class="news-list-hade">
+                  <div>{{item.title}}</div>
+                  <div>所属部门: {{item.issuerDep}}</div>
+                </div>
+                <div class="news-list-content" v-html="item.content">
+                </div>
+                <div class="news-list-posts">
+                  <div>发布人: {{item.issuerUser}}</div>
+                  <div>发布时间: {{item.releaseTime}}</div>
+                </div>
+                <div class="news-list-btn">
+                  <el-button v-if="item.isRead==0" type="primary">确认已读</el-button>
+                  <el-button v-if="item.isRead==1" type="info">已读</el-button>
+                </div>
+              </div>
+            </div>
+            <div class="notyet" v-if="newstasklist.length==0">
+              暂无通知
+            </div>
+          </el-tab-pane>
+          <el-tab-pane name="second">
+            <span slot="label">
+              团组操作通知
+              <el-badge :hidden="groupnot==0?true:false" :value='groupnot' :max="9999"></el-badge>
+            </span>
+            <div class="read-btn">
+              <el-badge :hidden="groupnot==0?true:false" :value="groupnot" class="item">
+                <el-button size="mini" plain >未读</el-button>
+              </el-badge>
+              <el-button size="mini" plain >
+                已读
+              </el-button>
+            </div>
+            <div class="news-box" v-for="(item,index) in newsgrouplist" :key="index">
+              <div class="news-box-list">
+                <div class="news-list-hade">
+                  <div>{{item.title}}</div>
+                  <div>所属部门: {{item.issuerDep}}</div>
+                </div>
+                <div class="news-list-content" v-html="item.content">
+                </div>
+                <div class="news-list-posts">
+                  <div>发布人: {{item.issuerUser}}</div>
+                  <div>发布时间: {{item.releaseTime}}</div>
+                </div>
+                <div class="news-list-btn">
+                  <el-button v-if="item.isRead==0" type="primary">确认已读</el-button>
+                  <el-button v-if="item.isRead==1" type="info">已读</el-button>
+                </div>
+              </div>
+            </div>
+            <div class="notyet" v-if="newsgrouplist.length==0">
+              暂无通知
+            </div>
+          </el-tab-pane>
+        </el-tabs>
+      </el-dialog>
+    </div>
     <el-container class="all">
       <el-aside class="delwh">
         <el-menu :default-active="indexs" class="el-menu-vertical-demo menubar" @open="handleOpen" @close="handleClose"
@@ -91,7 +159,9 @@
               <i class="icon-shiyonggongju"></i>
             </div>
             <div class="message">
-              <i class="icon-tongzhi" @click="dialogVisible = true"></i>
+              <el-badge :value="12" class="item">
+                <i class="icon-tongzhi" @click="dialogVisible= true"></i>
+              </el-badge>
             </div>
             <div class="user-inif" @click="instrumentclick('.user-operate', $event)">
               <div class="user-inifs">
@@ -185,9 +255,9 @@
               </div>
             </div>
             <div class="operate-ul">
-              <div class="operate-li">全屏</div>
+              <!-- <div class="operate-li">全屏</div>
               <div class="operate-li">修改密码</div>
-              <div class="operate-li">个人资料</div>
+              <div class="operate-li">个人资料</div> -->
               <div @click="logOut()" class="operate-li">退出</div>
             </div>
           </div>
@@ -200,11 +270,13 @@
   </div>
 </template>
 <script>
-import * as signalR from "@aspnet/signalr";
+//import * as signalR from "@aspnet/signalr";
 // const signalR=require('@microsoft/signalr')
 // import * as signalR from "@microsoft/signalr";
 // import * as signalR from "../../node_modules/microso";
 // import child from '~/components/Finance/FeesPage';
+// const signalR=require('@microsoft/signalr')
+ 
 export default {
   data() {
     return {
@@ -217,7 +289,12 @@ export default {
       indexs: "1",
       pdinstrument: true,
       userinif: '',
-      dialogVisible: false
+      dialogVisible: true,
+      newstasklist:[],
+      newsgrouplist:[],
+      activeName: 'first',
+      tasknot:0,//任务未读
+      groupnot:0,//团组未读
     };
   },
   // components: {
@@ -326,7 +403,45 @@ export default {
     fatherMethod() {
       console.log('测试');
     },
-
+    handleClick(tab, event) {
+      console.log(tab, event);
+    },
+    //任务通知切换
+    newstasklistclick(){
+      console.log(this.newstasklist)
+       
+    },
+    //消息列表
+    PsotMsgPageList(){
+        var url = "/api/System/PsotMsgPageList"
+        var that = this
+        this.$axios({
+            method: 'post',
+            url: url,
+            headers: {
+                Authorization: 'Bearer ' + that.token
+            },
+            data:{
+              portType:1,
+              pageIndex:1,
+              pageSize:10,
+              userId:that.userId
+            }
+        }).then(function (res) {
+            console.log(res)
+            if(res.data.code==200){
+                that.newstasklist=res.data.data.taskNotificatio.taskNotificatioData;
+                that.tasknot=res.data.data.taskNotificatio.unReadCount;
+                that.newsgrouplist=res.data.data.operationNotificatio.operationNotificatioData;
+                that.groupnot=res.data.data.operationNotificatio.unReadCount;
+                console.log(that.newsgrouplist)
+            }else{
+                that.$message.error(res.data.msg);
+            }
+        }).catch(function (error) {
+            that.$message.error("获取消息列表失败!");
+        });
+    },
     //消息通知
     chatHub(){
         var url = "/api/chatHub"
@@ -359,6 +474,7 @@ export default {
         })
         .catch(_ => {});
     }
+    
     //实时通讯
     // async startConnection() {
     //   this.connection = new signalR.HubConnectionBuilder()
@@ -393,6 +509,7 @@ export default {
     this.radioChange(false);
     this.ifIndexValue();
     this.getmenu();
+    this.PsotMsgPageList();
     // this.chatHub();
   },
   created() {
@@ -439,16 +556,17 @@ body {
   margin: 0;
   padding: 0;
 }
-.all-box .el-dialog{
+
+html {
+  background-color: #fff;
+}
+
+.home-dialog .el-dialog{
   position: fixed;
   right: 0;
   height: 100%;
   margin: 0;
 }
-html {
-  background-color: #fff;
-}
-
 .el-menu-vertical-demo:not(.el-menu--collapse) {
   width: 260px;
   min-height: 400px;
@@ -472,7 +590,10 @@ html {
       transparent);
   background-color: #0f619f;
 }
-
+.aligns{
+  display: flex;
+  justify-content: space-between;
+}
 .el-header {
   border-bottom: solid 1px #e6e6e6;
   display: flex;
@@ -540,7 +661,9 @@ html {
   display: flex;
   align-items: center;
 }
-
+.home-dialog .el-dialog__body{
+  padding: 0px 20px;
+}
 .name-box {
   display: flex;
   font-size: 14px;
@@ -771,11 +894,60 @@ i.icon-tongzhi {
   width: 100%;
 }
 
+/*消息*/ 
+.news-box:last-child{
+  border-bottom: 1px solid #EBEEF5;
+}
+.news-box:hover{
+  background-color: #EBEEF5;
+}
+.news-box{
+  border-top: 1px solid #EBEEF5;
+  padding: 10px;
+}
+.news-list-hade{
+  display: flex;
+  justify-content: space-between;
+  font-size:15px;
+  font-weight: 600;
+  margin-bottom: 15px;
+}
+.news-list-posts{
+  text-align: right;
+  margin: 10px 0;
+  font-size: 15px;
+  font-weight: 600;
+}
 .instrument-box-inif::-webkit-scrollbar {
   width: 5px;
   height: 16px;
   background-color: transparent;
 }
+.news-list-btn{
+  text-align: right;
+}
+.home-dialog .el-tabs__header{
+  margin-bottom: 0;
+}
+.read-btn{
+  margin: 10px 0;
+}
+.read-btn .el-badge{
+  margin-right: 15px;
+}
+.notyet{
+  height: 20px;
+  line-height: 20px;
+  font-size: 17px;
+  font-weight: 600;
+  text-align: center;
+}
+.home-dialog .el-dialog__header{
+  padding: 10px 20px;
+}
+
+
+
 
 /*定义滚动条轨道
     内阴影+圆角*/

+ 130 - 24
src/components/statistics/Statistically.vue

@@ -1,8 +1,11 @@
 <template>
     <div>
         <div class="statistically-all">
-            <div id="statisticallyone" style="width: 100%;height:400px;">
-
+            <div class="canvas-box">
+                <div id="statisticallyone" style="width: 50%;height:400px;"></div>
+                <div id="grossmargin" style="width: 50%;height:400px;"></div>
+                <div id="grossmargins" style="width: 50%;height:400px;"></div>
+                <div id="grossmarginss" style="width: 50%;height:400px;"></div>
             </div>
         </div>
     </div>
@@ -13,31 +16,130 @@ export default {
     data () {
         return {
             aaa:[
-                    ['product', '2015', '2016', '2017'],
-                    ['Matcha Latte', 43.3, 85.8, 93.7],
-                    ['Milk Tea', 83.1, 73.4, 55.1],
-                    ['Cheese Cocoa', 86.4, 65.2, 82.5],
-                    ['Walnut Brownie', 72.4, 53.9, 39.1]
-                ],
+                ['product', '去年销售额', '今年销售额'],
+                ['1月', 43.3, 85.8],
+                ['2月', 83.1, 73.4],
+                ['3月', 86.4, 65.2],
+                ['4月', 72.4, 53.9],
+                ['5月', 72.4, 53.9],
+                ['6月', 72.4, 53.9],
+                ['7月', 72.4, 53.9],
+                ['8月', 72.4, 53.9],
+                ['9月', 72.4, 53.9],
+                ['10月', 72.4, 53.9],
+                ['11月', 72.4, 53.9],
+                ['12月', 72.4, 53.9],
+            ],
+            bbb:[
+                ['product', '毛利率',],
+                ['1月', 43.3,],
+                ['2月', 83.1,],
+                ['3月', 86.4,],
+                ['4月', 72.4,],
+                ['5月', 72.4,],
+                ['6月', 72.4,],
+                ['7月', 72.4,],
+                ['8月', 72.4,],
+                ['9月', 72.4,],
+                ['10月', 72.4,],
+                ['11月', 72.4,],
+                ['12月', 72.4,],
+            ],
         }
-    },
+    }, 
     methods: {
         statisone(){
-                console.log(21)
-                var myChart = echarts.init(document.getElementById('statisticallyone'));
-                myChart.setOption({
-                    legend: {},
-                    tooltip: {},
-                    dataset: {
-                        source: this.aaa
-                    },
-                    xAxis: { type: 'category' },
-                    yAxis: {},
-                    // Declare several bar series, each will be mapped
-                    // to a column of dataset.source by default.
-                    series: [{ type: 'bar' }, { type: 'bar' }, { type: 'bar' }]
-                });
-            }
+            var myChart = echarts.init(document.getElementById('statisticallyone'));
+            myChart.setOption({
+                title:{
+                    text: '业务总收入额',
+                },
+                legend: {},
+                tooltip: {},
+                dataset: {
+                    source: this.aaa
+                },
+                xAxis: { type: 'category' },
+                yAxis: {
+                    name: '销售额',
+                },
+                
+                // Declare several bar series, each will be mapped
+                // to a column of dataset.source by default.
+                series: [{ type: 'bar' }, { type: 'bar' },]
+            });
+            var grossmargins = echarts.init(document.getElementById('grossmargins'));
+            grossmargins.setOption({
+                title:{
+                    text: '业务总收入额',
+                },
+                legend: {},
+                tooltip: {},
+                dataset: {
+                    source: this.aaa
+                },
+                xAxis: { type: 'category' },
+                yAxis: {
+                    name: '销售额',
+                },
+                
+                // Declare several bar series, each will be mapped
+                // to a column of dataset.source by default.
+                series: [{ type: 'bar' }, { type: 'bar' },]
+            });
+            var grossmarginss = echarts.init(document.getElementById('grossmarginss'));
+            grossmarginss.setOption({
+                title:{
+                    text: '业务总收入额',
+                },
+                legend: {},
+                tooltip: {},
+                dataset: {
+                    source: this.aaa
+                },
+                xAxis: { type: 'category' },
+                yAxis: {
+                    name: '销售额',
+                },
+                
+                // Declare several bar series, each will be mapped
+                // to a column of dataset.source by default.
+                series: [{ type: 'bar' }, { type: 'bar' },]
+            });
+            var grossmargin = echarts.init(document.getElementById('grossmargin'));
+            grossmargin.setOption({
+                title:{
+                    text: '毛利率',
+                },
+                legend: {},
+                tooltip: {
+                    formatter:function(params){
+                        // console.log(params);
+                        console.log(params.data)
+                        var html = params.data[0]+'毛利率'+"<br/>"+ params.data[1]+"%";
+                    // for(var i=0;i<params.length;i++){
+
+                    // html +=
+                    //     params[i].marker +params[i].seriesName+
+                    //     params[i].value +"人"+"<br/>";
+                    // }
+                    return html 
+                }
+
+                },
+                dataset: {
+                    source: this.bbb
+                },
+                xAxis: { type: 'category' },
+                yAxis: {
+                    name: '毛利额',
+                },
+                color:['#EEAD0E'],
+                // Declare several bar series, each will be mapped
+                // to a column of dataset.source by default.
+                series: [{ type: 'bar' },]
+            });
+        }
     },
     mounted(){
         this.statisone()
@@ -53,4 +155,8 @@ export default {
     height: 100%;
     min-height: 830px;
 }
+.canvas-box{
+    display: flex;
+    flex-wrap: wrap;
+  }
 </style>

+ 1 - 0
src/components/system/TaskList.vue

@@ -941,4 +941,5 @@ export default {
     position: relative;
     text-align: left;
 }
+
 </style>

+ 4 - 0
src/main.js

@@ -20,6 +20,10 @@ Vue.use(VueQuillEditor);
 import * as echarts from 'echarts';
 Vue.use(echarts);
 
+// 配置cookie
+import cookie from 'vue-cookie'
+Vue.prototype.$cookie = cookie;  //配置时候prototype.$这里的名字自己定义不是固定是cookie
+
 Vue.use(VueTypedJs)
 import axios from 'axios';
 axios.defaults.baseURL = 'http://132.232.92.186:8888';