哥哥玩剑魂呢 4 年之前
父节点
当前提交
8f9490d01b

+ 21 - 0
package-lock.json

@@ -10144,6 +10144,11 @@
       "integrity": "sha1-Z6fQLHbJ2iT5nSCAj8re0ODgS+I=",
       "dev": true
     },
+    "shvl": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/shvl/-/shvl-2.0.3.tgz",
+      "integrity": "sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw=="
+    },
     "signal-exit": {
       "version": "3.0.3",
       "resolved": "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.3.tgz?cache=0&sync_timestamp=1585280715057&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsignal-exit%2Fdownload%2Fsignal-exit-3.0.3.tgz",
@@ -11940,6 +11945,22 @@
       "resolved": "https://registry.npm.taobao.org/vuex/download/vuex-3.6.2.tgz",
       "integrity": "sha1-I2vAhqhww655lG8QfxbeWdWJXnE="
     },
+    "vuex-persistedstate": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/vuex-persistedstate/-/vuex-persistedstate-4.0.0.tgz",
+      "integrity": "sha512-jDs+awbV9YD2A2F6S5zgtYq1Bjd8v0YldOK6HPv1EJZzGMse0FtZTREfXvA7zlVfq9MpmSZJNmYQVylfpZ5znQ==",
+      "requires": {
+        "deepmerge": "^4.2.2",
+        "shvl": "^2.0.3"
+      },
+      "dependencies": {
+        "deepmerge": {
+          "version": "4.2.2",
+          "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
+          "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg=="
+        }
+      }
+    },
     "watchpack": {
       "version": "1.7.5",
       "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.7.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwatchpack%2Fdownload%2Fwatchpack-1.7.5.tgz",

+ 1 - 0
package.json

@@ -27,6 +27,7 @@
     "vue-json-excel": "^0.3.0",
     "vue-router": "^3.2.0",
     "vuex": "^3.4.0",
+    "vuex-persistedstate": "^4.0.0",
     "xlsx": "^0.17.0"
   },
   "devDependencies": {

+ 170 - 0
src/components/toLead.vue

@@ -0,0 +1,170 @@
+<template>
+	<div>
+		<el-dialog :visible.sync="visible" width="700px" :close-on-click-modal="false" :before-close="closePopup">
+            <div class="flex-box flex-dv-center" style="padding: 0 20px;">
+                    <div v-for="(item,index) in headStep" :key="index" class="listg" :class="{listg1: item.id < nowIndex}">
+                        <span class="border" :class="{border1: item.id < nowIndex}" v-if="item.id == 2 || item.id == 3"></span>
+                        <span class="indexnum" v-if="item.id >= nowIndex" :class="{indexnow:nowIndex == item.id}">{{item.id}}</span>
+                        <span class="el-icon-circle-check numicon" v-if="item.id < nowIndex"></span>
+                        <span class="ramin">{{item.name}}</span>
+                    </div>
+            </div>
+			<div :style="dstyle" style="padding: 40px 140px">
+                <slot name="1" v-if="nowIndex == 1"></slot>
+                <div v-if="nowIndex == 2" style="text-align: center;">
+                    <div>
+                        <span>导入中</span>
+                        <span class="el-icon-loading"></span>
+                    </div>
+                    <div>
+                        导入需要一定时间,切记不要关闭当前窗口
+                    </div>
+                </div>
+                <div v-if="nowIndex == 3" class="leadtree">
+                    <div class="lead-tit">导入结果</div>
+                    <div class="lead-cent">
+                        <div v-if="tolead.id == 1">
+                            <div>共{{toleadall(tolead.error,tolead.success)}}条数据,已处理{{toleadall(tolead.error,tolead.success)}}条,导入情况如下:</div>
+                            <div><svg-icon icon-class="leadThenGreen" /> 导入成功{{tolead.success.length}}条</div>
+                            <div><svg-icon icon-class="leadErrRed" /> 导入失败{{tolead.error.length}}条 &nbsp; &nbsp; <span v-if="tolead.error.length > 0" style="cursor:pointer;color: #409EFF;" @click="errClick(tolead.bs_id)">点击下载失败数据</span></div>
+                        </div>
+                        <div v-else-if="tolead.id == 0">
+                            <span><svg-icon icon-class="leadJgRed" /> 导入异常:{{tolead.name}}</span>
+                        </div>
+                    </div>
+                    <div class="lead-but">
+                        <el-button v-if="tolead.id == 1 && tolead.error.length > 0" type="primary" @click="$emit('update:nowIndex', 1)">我已修改文件,重新导入</el-button>
+                        <el-button v-else type="primary" @click="closePopup">确认</el-button>
+                    </div>
+                </div>
+            </div>
+		</el-dialog>
+	</div>
+</template>
+<script>
+  export default {
+    props: {
+		visible: {
+			type: Boolean,
+			default: false
+        },
+        nowIndex: {//当前步骤
+			type: Number,
+			default: 1
+        },
+        tolead: {//导入数据
+			type: Object,
+			default: {}
+        },
+        export_type: {//导出类型
+			type: String,
+			default: ''
+        },
+        dstyle: {
+			type: String,
+			default: ''
+        },
+    },
+    name: "toLead",
+    data() {
+      return {
+          headStep:[
+              {id: 1,name: '选择文件',},
+              {id: 2,name: '正在处理',},
+              {id: 3,name: '导入结果',},
+          ],
+      }
+    },
+    methods: {
+        errClick(id){
+            console.log(process.env.VUE_APP_BASE_API +
+                '/api/download/fail_data_export?employee_id=' + 
+                this.$getUserData().id 
+                + '&bs_id=' + id 
+                + '&export_type=' 
+                + this.export_type)
+			window.open(
+				process.env.VUE_APP_BASE_API +
+                '/api/download/fail_data_export?employee_id=' + 
+                this.$getUserData().id 
+                + '&bs_id=' + id 
+                + '&export_type=' 
+                + this.export_type
+                , '_blank'
+			);
+        },
+        toleadall(err,then){
+            return err.length + then.length
+        },
+		closePopup() {
+			this.$nextTick(() => {
+                this.$emit('confirm');
+				this.$emit('update:visible', false);
+			});
+		},
+    }
+  }
+</script>
+
+<style scoped lang="scss">
+ .listg{
+     .indexnum{
+        width: 30px;
+        height: 30px;
+        display: inline-block;
+        border: 1px solid #cecece;
+        border-radius: 50%;
+        text-align: center;
+        color: #a9a9a9;
+        line-height: 30px;
+        margin-right: 5px;
+     }
+    .indexnow{
+         background-color:#409EFF;
+         color: #fff;
+         border: 1px solid #fff;
+     }
+     .border{
+        display: inline-block;
+        width: 160px;
+        margin: 0 5px 2px 5px;
+        height: 1px;
+        background-color: #eaeaea;
+     }
+     .border1{
+         margin-top: 18px;
+     }
+     .numicon{
+        color: #41b9ff;
+        font-size: 30px;
+        margin-right: 5px;
+     }
+ }
+ .listg1{
+     display: flex;
+    .ramin{
+        line-height: 32px;
+    }
+ }
+ .leadtree{
+     .lead-tit{
+        font-size: 19px;
+        color: black;
+        text-align: center;
+     }
+     .lead-cent{
+        width: 280px;
+        margin: 0 auto;
+        min-height: 100px;
+        padding: 10px 0 0 0;
+        div{
+            div{
+                padding: 4px 0;
+            }
+        }
+     }
+     .lead-but{
+         text-align: center;
+     }
+ }
+</style>

+ 2 - 0
src/icons/svg/leadErrRed.svg

@@ -0,0 +1,2 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1627465068129" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11092" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css">@font-face { font-family: feedback-iconfont; src: url("//at.alicdn.com/t/font_1031158_1uhr8ri0pk5.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1031158_1uhr8ri0pk5.woff2") format("woff2"), url("//at.alicdn.com/t/font_1031158_1uhr8ri0pk5.woff") format("woff"), url("//at.alicdn.com/t/font_1031158_1uhr8ri0pk5.ttf") format("truetype"), url("//at.alicdn.com/t/font_1031158_1uhr8ri0pk5.svg#iconfont") format("svg"); }
+</style></defs><path d="M768.4 705.5c17.7 18 17.5 47-0.5 64.7-8.5 8.4-20 13.1-32 13.1-12.1 0-23.8-4.8-32.3-13.4L511.6 577l-195 192.2c-8.5 8.5-20 13.3-32.1 13.2-25.3-0.3-45.5-21.1-45.2-46.3 0.1-11.9 4.9-23.3 13.3-31.7l195.1-192.2-192.8-195c-18.4-17.5-19.2-46.6-1.7-65s46.6-19.1 65-1.7c0.5 0.5 1.1 1 1.6 1.6l192.7 195.1L707.7 255c18.4-17.5 47.5-16.7 65 1.7 16.9 17.8 16.9 45.6-0.1 63.4l-196 193.6 191.8 191.8zM512 12C235.9 12 12 235.8 12 511.9 12 788 235.7 1011.8 511.8 1012c276.1 0.1 500-223.7 500.2-499.8 0.3-276-223.5-499.9-499.8-500.2h-0.2z" p-id="11093" fill="#f7522d"></path></svg>

+ 2 - 0
src/icons/svg/leadJgRed.svg

@@ -0,0 +1,2 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1627465661569" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11312" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css">@font-face { font-family: feedback-iconfont; src: url("//at.alicdn.com/t/font_1031158_1uhr8ri0pk5.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1031158_1uhr8ri0pk5.woff2") format("woff2"), url("//at.alicdn.com/t/font_1031158_1uhr8ri0pk5.woff") format("woff"), url("//at.alicdn.com/t/font_1031158_1uhr8ri0pk5.ttf") format("truetype"), url("//at.alicdn.com/t/font_1031158_1uhr8ri0pk5.svg#iconfont") format("svg"); }
+</style></defs><path d="M448.7 214.7h110.4l-20.3 452.2H469l-20.3-452.2zM503.5 719c19.4 0 35 5.9 46.8 17.7 12.4 11.2 18.5 26.2 18.5 45 0 18.3-6.2 33.6-18.5 45.9-13.5 11.8-29.1 17.7-46.8 17.7-17.7 0-32.7-6.2-45-18.5-13-12.4-19.4-27.4-19.4-45 0-18.8 6.5-33.9 19.4-45 11.7-11.9 26.7-17.8 45-17.8zM512 12C235.9 12 12 235.8 12 511.9 12 788 235.7 1011.8 511.8 1012c276.1 0.1 500-223.7 500.2-499.8 0.3-276-223.5-499.9-499.8-500.2h-0.2z" p-id="11313" fill="#f7522d"></path></svg>

+ 2 - 0
src/icons/svg/leadThenGreen.svg

@@ -0,0 +1,2 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1627464937031" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10918" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css">@font-face { font-family: feedback-iconfont; src: url("//at.alicdn.com/t/font_1031158_1uhr8ri0pk5.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1031158_1uhr8ri0pk5.woff2") format("woff2"), url("//at.alicdn.com/t/font_1031158_1uhr8ri0pk5.woff") format("woff"), url("//at.alicdn.com/t/font_1031158_1uhr8ri0pk5.ttf") format("truetype"), url("//at.alicdn.com/t/font_1031158_1uhr8ri0pk5.svg#iconfont") format("svg"); }
+</style></defs><path d="M798.7 382.4L475.1 705.8c-17.4 18-46.1 18.4-64 1l-1-1L224 519.6c-18-18-18-47.1 0-65 18-18 47.1-18 65 0l154.3 154.3 291.3-290.2c17.8-18.1 46.9-18.3 65-0.5s18.3 46.9 0.5 65l-0.5 0.5-0.9-1.3zM511.8 12C235.7 12.1 12 236 12 512.1S235.8 1012 511.9 1012c276.1 0 499.9-223.7 500.1-499.8 0.1-276.1-223.7-500.1-499.8-500.2h-0.4z" fill="#2cb536" p-id="10919"></path></svg>

+ 6 - 1
src/index.vue

@@ -134,6 +134,11 @@ export default {
 	created() {
 		this.initRouter();
 		this.getEmployee()//缓存人员列表
+		this.$store.dispatch('export_filter',false).then((res)=>{
+			console.log(res)
+		}).catch((err)=>{
+			console.log(err)
+		})
 	},
 	mounted() {
 		this.getTypes();
@@ -283,7 +288,7 @@ export default {
 				localStorage.setItem("userList",JSON.stringify(map))
 			})
 		},
-	}
+	},
 };
 </script>
 

+ 4 - 0
src/store/getters.js

@@ -0,0 +1,4 @@
+const getters = {
+
+}
+export default getters

+ 7 - 1
src/store/index.js

@@ -1,5 +1,8 @@
 import Vue from 'vue'
 import Vuex from 'vuex'
+import getters from './getters'
+import user from './modules/user'
+import createPersistedState from 'vuex-persistedstate'
 
 Vue.use(Vuex)
 
@@ -10,6 +13,9 @@ export default new Vuex.Store({
   },
   actions: {
   },
+  getters,
   modules: {
-  }
+    user
+  },
+  plugins: [createPersistedState()]  //Vuex内容固化到本地
 })

+ 25 - 0
src/store/modules/user.js

@@ -0,0 +1,25 @@
+
+import axios from '@/api/axios'
+const user = {
+
+    status: {
+
+    },
+    mutations: {
+
+    },
+    actions: {
+        export_filter({commit},arr){
+            return new Promise((resolve, reject)=>{
+                // axios('get','xxx').then(()=>{
+                    if(arr){
+                        resolve('yes')
+                    }else{
+                        reject('no')
+                    }
+                // })
+            })
+        },
+    }
+}
+export default user

+ 10 - 2
src/views/ranking/dept_rank.vue

@@ -167,7 +167,7 @@
 						placeholder="全公司"
 					></el-cascader>
 				</el-form-item>
-				<el-form-item label="规则分类" style="margin-left:20px">
+				<el-form-item label="规则分类" style="margin-left:10px">
 					<el-cascader
 						class="date-picker-width"
 						@change="ruleInquiredialog"
@@ -181,6 +181,11 @@
 						placeholder="请选择规则分类"
 					></el-cascader>
 				</el-form-item>
+				<el-form-item label="积分分类" style="margin-left:10px">
+					<el-select style="width:150px" size="medium" v-model="Dc_Data.pt_id" placeholder="全部积分分类">
+						<el-option v-for="item in point_types" :key="item.name" :label="item.name" :value="item.id"></el-option>
+					</el-select>
+				</el-form-item>
 			</el-form>
 			<span slot="footer" class="dialog-footer">
 				<el-button @click="dialogVisible = false" size="medium">取 消</el-button>
@@ -243,7 +248,7 @@ export default {
 				value1: '', //时间
 				DC_position: '全部', //人员
 				dept_name: [], //部门
-				rule_id: [] //规则
+				rule_id: [], //规则
 			},
 			dialogVisible: false,
 			dept_name: [],
@@ -553,6 +558,9 @@ export default {
 				data += '&start_date=' + this.Dc_Data.value1[0];
 				data += '&end_date=' + this.Dc_Data.value1[1];
 			}
+			if(this.Dc_Data.pt_id){
+				data += '&pt_id=' + this.Dc_Data.pt_id;
+			}
 			data += '&position=' + this.Dc_Data.DC_position;
 			this.Dc_Data.dept_name > 0 ? (data += '&dept_id=' + this.Dc_Data.dept_name) : (data += '&dept_id=0');
 			if (this.Dc_Data.rule_id.length > 0) {

+ 70 - 6
src/views/ranking/integral_event.vue

@@ -50,8 +50,8 @@
 					</el-input>
 				</el-form-item>
 				<el-form-item>
-					<el-button v-if="employeeOrdept" type="success" size="medium" @click="excelImportShow = true" plain>导入数据</el-button>
-					<el-button type="primary" size="medium" @click="exportExcel" plain>导出当前数据</el-button>
+					<el-button v-if="employeeOrdept" type="success" size="medium" @click="toleadShw = true" plain>导入数据</el-button>
+					<el-button type="primary" size="medium" @click="exportExcel" plain>导出当前数据<span v-if="total && total > 0">:{{total}}条</span></el-button>
 					<el-button class="first-element-btn" v-if="employeeOrdept" :disabled="deleteDisabled" @click="deleteInBatches" type="danger">批量删除</el-button>
 					<!-- <el-button type="primary" size="medium" plain @click="swiperShow = true">轮播事件</el-button> -->
 				</el-form-item>
@@ -284,11 +284,43 @@
 				</router-link>
 			</span>
 		</el-dialog>
+		<toLead :visible.sync="toleadShw" :nowIndex.sync="nowIndex" :tolead="toleadResult" @confirm="tealConfirm" :export_type="'integral_event'" :dstyle="'height:150px;'">
+			<template slot="1">
+				<!-- <div style="padding: 50px 140px 20px 140px;"> -->
+					<div v-if="nowIndex == 1">
+						<div class="flex-box flex-v-ce margin-bottom">
+							<div style="margin-right: 10px;">1、下载积分事件模版,批量录入积分事件</div>
+							<el-button size="medium" type="primary" @click="downloadTemplate" plain>下载模板</el-button>
+						</div>
+						<div class="margin-bottom">
+							<el-upload
+								:limit="1"
+								:headers="ATOKEN"
+								ref="upload"
+								:action="action"
+								:on-remove="handleRemove"
+								:on-success="handlePictureCardPrediv"
+								:file-list="fileList"
+								:before-upload="beforeFilesUpload"
+								:on-progress="handleOnthecross"
+							>
+								<p>
+									2、上传积分事件数据Excel表
+									<el-button style="margin-left: 10px;" size="medium" type="primary" plain>选择文件</el-button>
+								</p>
+							</el-upload>
+						</div>
+						<!-- <div>3、选择文件后点击下方【上传】按钮</div> -->
+					</div>
+				<!-- </div> -->
+			</template>
+		</toLead>
 	</div>
 </template>
 <script>
 import noData from '@/components/noData';
 import Steps from '@/components/Steps';
+import toLead from '@/components/toLead';
 export default {
 	data() {
 		return {
@@ -330,10 +362,14 @@ export default {
 			ding_report: {
 				contents: [],
 				images: []
-			}
+			},
+			//导入相关
+			toleadShw: false,
+			nowIndex: 1,
+			toleadResult: {}
 		};
 	},
-	components: { noData, Steps },
+	components: { noData, Steps, toLead },
 	mounted() {
 		this.getDepartment();
 		this.get_rule_trees();
@@ -341,6 +377,9 @@ export default {
 		this.point_types = this.getTypes();
 	},
 	watch: {
+		toleadShw(val){
+			if(val) this.nowIndex = 1
+		},
 		selectionID() {
 			if (this.selectionID.length == 0) {
 				this.deleteDisabled = true;
@@ -432,7 +471,24 @@ export default {
 					}, 3000);
 				});
 		},
+		tealConfirm(){
+			this.keyWordSelect();
+		},
+		handleOnthecross(event, file, fileList){
+			this.nowIndex = 2
+		},
 		handlePictureCardPrediv(response) {
+			console.log(response)
+			if(response.code == 1){
+				response.data.id = 1
+			}else{
+				response.data.id = 0
+				response.data.name = response.msg
+			}
+			this.toleadResult = response.data
+			this.nowIndex = 3
+			return
+			// this.nowIndex = 3
 			if (response.code == 1) {
 				if (response.data.error.length > 0) {
 					var htmls = response.data.error;
@@ -440,7 +496,7 @@ export default {
 					htmls.forEach(item => {
 						str += `<div>${item}</div>`;
 					});
-					this.close_import();
+					// this.close_import();
 					this.$notify.error({
 						title: '导入错误',
 						dangerouslyUseHTMLString: true,
@@ -456,6 +512,7 @@ export default {
 					this.close_import();
 				}
 			}else{
+
 				this.$message.error({ message: response.msg });
 			}
 		},
@@ -465,11 +522,18 @@ export default {
 			const $ext_name = file.name.split('.')[len];
 			if ($ext_list.indexOf($ext_name) != -1) {
 			} else {
-				this.$message.warning('文件格式上传错误,仅支持上传xlsx,xls)');
+				this.toleadResult.id = 0
+				this.toleadResult.name = '文件格式上传错误,仅支持上传xlsx,xls)'
+				this.nowIndex = 3
+				// this.$message.warning('文件格式上传错误,仅支持上传xlsx,xls)');
 				return false;
 			}
 		},
 		exportExcel() {
+			if(this.total >= 10000){
+				this.$message.warning('当前数据已超出10000条,请拆分时间段分批导出');
+				return
+			}
 			window.open(
 				process.env.VUE_APP_BASE_API +
 					'api/download/integral?employee_id=' +

+ 106 - 4
src/views/set/jurisdiction.vue

@@ -35,7 +35,7 @@
 							<el-button size="small" v-show="item_info.code == 'creator' && isStart" @click="dialogFormVisible = true" type="primary">添加</el-button>
 							<el-button size="small" v-show="item_info.code != 'creator' && table_list.length > 0" @click="del_item" type="danger">删除</el-button>
 							<el-button size="small" v-show="item_info.code != 'creator'" @click="add_item" type="primary">添加</el-button>
-							<el-button size="small" v-show="item_info.code == 'dept_manager'" @click="exportEmploye = true">导出/修改管理列表</el-button>
+							<el-button size="small" v-show="item_info.code == 'dept_manager'" @click="toleadShw = true">导出/修改管理列表</el-button>
 							<el-button size="small" v-show="item_info.code == 'dept_manager'" @click="synchronization" type="primary">同步管理范围</el-button>
 						</div>
 						<div class="gap-right-8 fr" style="display:inline-block; width:180px;" v-show="item_info.code == 'dept_manager'">
@@ -671,6 +671,75 @@
 			<div class="align-center" style="margin-bottom:20px; float:left; margin-left:10px;"></div>
 			<div style="clear:both;"></div>
 		</el-dialog>
+		
+		<toLead :visible.sync="toleadShw" :nowIndex.sync="nowIndex" :tolead="toleadResult" @confirm="tealConfirm" :export_type="'integral_event'" :dstyle="'height:150px;'">
+			<template slot="1">
+				<div v-if="nowIndex == 1">
+					<div class=" margin-bottom">
+						<div class="flex-box flex-v-ce">
+							<div style="margin-right: 10px;">1、导出部门管理者信息</div>
+							<el-button size="medium" type="primary" @click="downloadSheet" plain>导出</el-button>
+						</div>
+						<!-- <div class="leadhint">导出部门管理者信息表进行修改</div> -->
+					</div>
+					
+					<div class="margin-bottom">
+						<!-- <p>2、修改部门管理者信息<br>
+						导出部门管理者信息表进行修改<br>
+						上传修改好的部门管理者信息表</p> -->
+						<el-upload
+							:limit="1"
+							:headers="ATOKEN"
+							ref="upload2"
+							:action="integralUpload"
+							:on-success="handlePictureCardPreview"
+							:before-upload="beforeFilesUpload"
+							:on-progress="handleOnthecross"
+						>
+							<div>
+								2、上传修改好的部门管理者信息表
+								<el-button style="margin-left: 10px;" size="medium" type="primary" plain>选取文件</el-button>
+							</div>
+						</el-upload>
+						<!-- <div class="leadhint">上传修改好的部门管理者信息表</div> -->
+					</div>
+					<!-- <div>3、选择文件后点击下方【上传】按钮</div> -->
+				</div>
+
+				<!-- <div v-if="nowIndex == 1">
+					<div style="float: left;width:49%" class="ps">
+						<div style="margin-left: 20%;">
+							<p>1.导出部门管理者信息</p>
+							<el-button type="primary" plain @click="downloadSheet">导出</el-button>
+						</div>
+					</div>
+					<div style="border-left: 1px solid #D8D8D8;width: 1px;height: 255px;float: left;"></div>
+
+					<div style="float: left;width:49%;" class="ps">
+						<div style="margin-left: 20%;">
+							<p>2.修改部门管理者信息</p>
+							<p>导出部门管理者信息表进行修改</p>
+							<p>上传修改好的部门管理者信息表</p>
+							<el-upload
+								:limit="1"
+								:headers="ATOKEN"
+								ref="upload2"
+								:action="integralUpload"
+								:on-success="handlePictureCardPreview"
+								:before-upload="beforeFilesUpload"
+								:on-progress="handleOnthecross"
+							>
+								<p><el-button slot="trigger" type="primary" plain>选取文件</el-button></p>
+							</el-upload>
+						</div>
+					</div>
+					<div class="align-center" style="margin-bottom:20px; float:left; margin-left:10px;"></div>
+					<div class="align-center" style="margin-bottom:20px; float:left; margin-left:10px;"></div>
+					<div style="clear:both;"></div>
+				</div> -->
+			</template>
+		</toLead>
+
 		<!-- 同步人员 -->
 		<el-dialog  title="提示" :visible.sync="isShowTb" :before-close="closeTb" width="500px">
 			<p style="font-size: 18px;font-weight: 600;margin-bottom: 10px;">
@@ -692,6 +761,7 @@
 <script>
 import EmployeeSelector from '@/components/EmployeeSelector.vue';
 import noData from '@/components/noData';
+import toLead from '@/components/toLead';
 const minimum = (rule, value, callback) => {
 	if (value < 0) {
 		callback(new Error('数值不能为负数'));
@@ -818,10 +888,15 @@ export default {
 			del_arr: [],
 			isShowTb: false,
 			tb_loading: false,
-			isMode: false
+			isMode: false,
+
+			//导入相关
+			toleadShw: false,
+			nowIndex: 1,
+			toleadResult: {}
 		};
 	},
-	components: { EmployeeSelector, noData },
+	components: { EmployeeSelector, noData, toLead },
 	created() {
 		this.get_role_list();
 		// 判断是否是创始人
@@ -835,6 +910,9 @@ export default {
 		}
 	},
 	watch: {
+		toleadShw(val){
+			if(val) this.nowIndex = 1
+		},
 		isShowTb(val) {
 			if (!val) {
 				this.isMode = false;
@@ -849,6 +927,9 @@ export default {
 		}
 	},
 	methods: {
+		handleOnthecross(event, file, fileList){
+			this.nowIndex = 2
+		},
 		// 同步管理范围
 		tb() {
 			this.tb_loading = true;
@@ -918,7 +999,21 @@ export default {
 			}
 			window.open(this.publicBASE_API + 'api/download/prize_export?role_id=' + role_id + '&employee_id=' + this.$getUserData().id, '_blank');
 		},
+		tealConfirm(){
+			this.page=1;
+			this.get_table_list();
+		},
 		handlePictureCardPreview(response) {
+			console.log(response)
+			if(response.code == 1){
+				response.data.id = 1
+			}else{
+				response.data.id = 0
+				response.data.name = response.msg
+			}
+			this.toleadResult = response.data
+			this.nowIndex = 3
+			return
 		  if (response.code == 1) {
 		  	if (Array.isArray(response.data)&&response.data.length > 0) {
 		  		var htmls = response.data;
@@ -953,7 +1048,10 @@ export default {
 			const $ext_name = file.name.split('.')[len];
 			if ($ext_list.indexOf($ext_name) != -1) {
 			} else {
-				this.$message.warning('文件格式上传错误,仅支持上传xlsx,xls)');
+				this.toleadResult.id = 0
+				this.toleadResult.name = '文件格式上传错误,仅支持上传xlsx,xls)'
+				this.nowIndex = 3
+				// this.$message.warning('文件格式上传错误,仅支持上传xlsx,xls)');
 				return false;
 			}
 		},
@@ -1442,4 +1540,8 @@ export default {
 .ps p {
 	margin-bottom: 10px;
 }
+.leadhint{
+	padding: 2px 0 0 10px;
+	color: #949494;
+}
 </style>

+ 74 - 7
src/views/set/rule.vue

@@ -21,7 +21,7 @@
 						<div class="flex-box btns flex-v-ce">
 							<el-button size="small" @click="del_item" type="danger" plain>批量删除</el-button>
 							<el-button size="small" @click="add_rule" type="primary">添加规则</el-button>
-							<el-button size="small" type="success" @click="import_rules_show = true" plain>导入规则</el-button>
+							<el-button size="small" type="success" @click="toleadShw = true" plain>导入规则</el-button>
 							<el-button size="small" type="success" @click="derivedRule" plain>导出规则</el-button>
 						</div>
 						<div class="" style="display:inline-block; width:180px;margin:20px 0 0 10px;">
@@ -169,7 +169,7 @@
 		</el-dialog>
 
 		<!-- 导入规则 -->
-		<el-dialog title="导入规则" :visible.sync="import_rules_show" width="500px" @before-close="close_import">
+		<!-- <el-dialog title="导入规则" :visible.sync="import_rules_show" width="500px" @before-close="close_import">
 			<el-row>
 				<el-col :span="12">
 					<div class="text-center">
@@ -199,17 +199,57 @@
 						>
 							<el-button slot="trigger" type="primary">选取文件</el-button>
 						</el-upload>
-						<!-- <p><el-button type="primary" @click="submitUpload" :loading="save_loading" v-show="import_btn_show" block>导入</el-button></p> -->
 					</div>
 				</el-col>
 			</el-row>
-		</el-dialog>
+		</el-dialog> -->
+
+		
+		<toLead :visible.sync="toleadShw" :nowIndex.sync="nowIndex" :tolead="toleadResult" @confirm="tealConfirm" :export_type="'rule_items'" :dstyle="'height:180px;'">
+			<template slot="1">
+				<el-row v-if="nowIndex == 1">
+					<el-col :span="12">
+						<div class="text-center">
+							<p>1、下载规则模版,填写好规则</p>
+							<p><img src="@/assets/image/rules_mould.png" alt="" /></p>
+							<p>规则表</p>
+							<span>
+								<a target="_blank" :href="downloadUrl"><el-button type="primary">下载模板</el-button></a>
+							</span>
+						</div>
+					</el-col>
+					<el-col :span="12">
+						<div class="text-center">
+							<p>2、上传填好的规则表</p>
+							<p><img src="@/assets/image/rules_mould1.png" alt="" /></p>
+							<p>仅支持xls、xlsx格式文件</p>
+							<el-upload
+								class="upload-demo"
+								:headers="ATOKEN"
+								ref="upload"
+								:limit="1"
+								:action="action"
+								:on-remove="handleRemove"
+								:on-success="handleSuccess"
+								:before-upload="beforeFilesUpload"
+								:file-list="fileList"
+								:on-progress="handleOnthecross"
+							>
+								<el-button slot="trigger" type="primary">选取文件</el-button>
+							</el-upload>
+							<!-- <p><el-button type="primary" @click="submitUpload" :loading="save_loading" v-show="import_btn_show" block>导入</el-button></p> -->
+						</div>
+					</el-col>
+				</el-row>
+			</template>
+		</toLead>
 	</div>
 </template>
 
 <script>
 import noData from '@/components/noData';
 import QRCode from 'qrcodejs2';
+import toLead from '@/components/toLead';
 export default {
 	data() {
 		return {
@@ -323,12 +363,20 @@ export default {
 			file: null,
 			flName: '',
 			// item_lists:[],
+			//导入相关
+			toleadShw: false,
+			nowIndex: 1,
+			toleadResult: {}
 		};
 	},
 	components: {
-		noData
+		noData,
+		toLead
 	},
 	watch: {
+		toleadShw(val){
+			if(val) this.nowIndex = 1
+		},
 		'dept_formdata.pid'(val, old_val) {
 			this.$nextTick(() => {
 				this.$refs.dept.dropDownVisible = false;
@@ -355,6 +403,9 @@ export default {
 		that.getData();
 	},
 	methods: {
+		handleOnthecross(event, file, fileList){
+			this.nowIndex = 2
+		},
 		//导出规则按钮
 		derivedRule(){
 		  let userData=this.$getUserData();
@@ -433,7 +484,21 @@ export default {
 					this.save_loading = false;
 				});
 		},
+		tealConfirm(){
+			this.getData();
+		},
 		handleSuccess(response) {
+			console.log(response)
+			if(response.code == 1){
+				response.data.id = 1
+			}else{
+				response.data.id = 0
+				response.data.name = response.msg
+			}
+			this.toleadResult = response.data
+			this.nowIndex = 3
+			return
+
 			if (response.code == 1) {
 				if (response.data.length > 0) {
 					var htmls = response.data;
@@ -479,9 +544,11 @@ export default {
 			let len = file.name.split('.').length - 1;
 			const $ext_name = file.name.split('.')[len];
 			if ($ext_list.indexOf($ext_name) != -1) {
-				this.import_btn_show = true;
 			} else {
-				this.$message.warning('文件格式上传错误,仅支持上传xlsx,xls)');
+				this.toleadResult.id = 0
+				this.toleadResult.name = '文件格式上传错误,仅支持上传xlsx,xls)'
+				this.nowIndex = 3
+				// this.$message.warning('文件格式上传错误,仅支持上传xlsx,xls)');
 				return false;
 			}
 		},