347617796@qq.com il y a 4 ans
Parent
commit
95129748d3

+ 5 - 106
package-lock.json

@@ -2031,15 +2031,6 @@
       "integrity": "sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY=",
       "dev": true
     },
-    "adler-32": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz",
-      "integrity": "sha1-aj5r8KY5ALoVZSgIyxXGgT0aXyU=",
-      "requires": {
-        "exit-on-epipe": "~1.0.1",
-        "printj": "~1.1.0"
-      }
-    },
     "aggregate-error": {
       "version": "3.1.0",
       "resolved": "https://registry.npm.taobao.org/aggregate-error/download/aggregate-error-3.1.0.tgz",
@@ -2970,16 +2961,6 @@
       "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
       "dev": true
     },
-    "cfb": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.0.tgz",
-      "integrity": "sha512-sXMvHsKCICVR3Naq+J556K+ExBo9n50iKl6LGarlnvuA2035uMlGA/qVrc0wQtow5P1vJEw9UyrKLCbtIKz+TQ==",
-      "requires": {
-        "adler-32": "~1.2.0",
-        "crc-32": "~1.2.0",
-        "printj": "~1.1.2"
-      }
-    },
     "chalk": {
       "version": "2.4.2",
       "resolved": "https://registry.nlark.com/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1618995367379&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz",
@@ -3312,22 +3293,6 @@
         "q": "^1.1.2"
       }
     },
-    "codepage": {
-      "version": "1.14.0",
-      "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz",
-      "integrity": "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k=",
-      "requires": {
-        "commander": "~2.14.1",
-        "exit-on-epipe": "~1.0.1"
-      },
-      "dependencies": {
-        "commander": {
-          "version": "2.14.1",
-          "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz",
-          "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw=="
-        }
-      }
-    },
     "collection-visit": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz",
@@ -3943,15 +3908,6 @@
         }
       }
     },
-    "crc-32": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz",
-      "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==",
-      "requires": {
-        "exit-on-epipe": "~1.0.1",
-        "printj": "~1.1.0"
-      }
-    },
     "create-ecdh": {
       "version": "4.0.4",
       "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.4.tgz",
@@ -5346,11 +5302,6 @@
         }
       }
     },
-    "exit-on-epipe": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz",
-      "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw=="
-    },
     "expand-brackets": {
       "version": "2.1.4",
       "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz",
@@ -5623,11 +5574,6 @@
         "websocket-driver": ">=0.5.1"
       }
     },
-    "fflate": {
-      "version": "0.3.11",
-      "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.3.11.tgz",
-      "integrity": "sha512-Rr5QlUeGN1mbOHlaqcSYMKVpPbgLy0AWT/W0EHxA6NGI12yO1jpoui2zBBvU2G824ltM6Ut8BFgfHSBGfkmS0A=="
-    },
     "figgy-pudding": {
       "version": "3.5.2",
       "resolved": "https://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.2.tgz",
@@ -5825,11 +5771,6 @@
       "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
       "dev": true
     },
-    "frac": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz",
-      "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA=="
-    },
     "fragment-cache": {
       "version": "0.2.1",
       "resolved": "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz",
@@ -9300,11 +9241,6 @@
         "renderkid": "^2.0.4"
       }
     },
-    "printj": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz",
-      "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ=="
-    },
     "process": {
       "version": "0.11.10",
       "resolved": "https://registry.npm.taobao.org/process/download/process-0.11.10.tgz",
@@ -10543,14 +10479,6 @@
       "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
       "dev": true
     },
-    "ssf": {
-      "version": "0.11.2",
-      "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz",
-      "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
-      "requires": {
-        "frac": "~1.1.2"
-      }
-    },
     "sshpk": {
       "version": "1.16.1",
       "resolved": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz",
@@ -11940,6 +11868,11 @@
       "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=",
       "dev": true
     },
+    "vue-virtual-scroll-list": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/vue-virtual-scroll-list/-/vue-virtual-scroll-list-2.3.2.tgz",
+      "integrity": "sha512-afm5bYgjJRK160KXlvs03dsPixEL/gS8sV5DKxEDRjPQKMXjIBmTMN/hMTEyazsPl+G4tXQs/msYK7p7tNVogQ=="
+    },
     "vuex": {
       "version": "3.6.2",
       "resolved": "https://registry.npm.taobao.org/vuex/download/vuex-3.6.2.tgz",
@@ -12721,16 +12654,6 @@
       "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
       "dev": true
     },
-    "wmf": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz",
-      "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw=="
-    },
-    "word": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz",
-      "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA=="
-    },
     "word-wrap": {
       "version": "1.2.3",
       "resolved": "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz",
@@ -12807,30 +12730,6 @@
         "async-limiter": "~1.0.0"
       }
     },
-    "xlsx": {
-      "version": "0.17.0",
-      "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.17.0.tgz",
-      "integrity": "sha512-bZ36FSACiAyjoldey1+7it50PMlDp1pcAJrZKcVZHzKd8BC/z6TQ/QAN8onuqcepifqSznR6uKnjPhaGt6ig9A==",
-      "requires": {
-        "adler-32": "~1.2.0",
-        "cfb": "^1.1.4",
-        "codepage": "~1.14.0",
-        "commander": "~2.17.1",
-        "crc-32": "~1.2.0",
-        "exit-on-epipe": "~1.0.1",
-        "fflate": "^0.3.8",
-        "ssf": "~0.11.2",
-        "wmf": "~1.0.1",
-        "word": "~0.3.0"
-      },
-      "dependencies": {
-        "commander": {
-          "version": "2.17.1",
-          "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
-          "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
-        }
-      }
-    },
     "xtend": {
       "version": "4.0.2",
       "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz",

+ 2 - 2
package.json

@@ -26,9 +26,9 @@
     "vue": "^2.6.11",
     "vue-json-excel": "^0.3.0",
     "vue-router": "^3.2.0",
+    "vue-virtual-scroll-list": "^2.3.2",
     "vuex": "^3.4.0",
-    "vuex-persistedstate": "^4.0.0",
-    "xlsx": "^0.17.0"
+    "vuex-persistedstate": "^4.0.0"
   },
   "devDependencies": {
     "@vue/cli-plugin-babel": "~4.4.0",

+ 32 - 28
src/components/EmployeeSelector.vue

@@ -22,21 +22,19 @@
 					</div>
 					<el-scrollbar :style="{ height: can_select_dept ? '310px' : '350px' }" :native="false" v-loading="table_loading">
 						<div class="choose_left">
-							<div class="persons_box" style="padding-top:4px;" v-if="list.length > 0">
-								<a class="employee_cell_a" href="javascript:void(0)" v-for="(item, index) in list" :key="index">
+							<div class="persons_box" v-if="list.length > 0">
+								<div class="employee_cell_a"  v-for="(item, index) in list" :key="index">
 									<div
 										class="employee_cell flex-box flex-v-ce"
 										v-if="can_select_employee && item.name.indexOf(keyword) >= 0"
 										@click.prevent.stop="select_employee(item)"
 									>
+										<div class="employee_checkbox"><el-checkbox v-model="item.checked"></el-checkbox></div>
 										<img :src="item.img_url" width="30" height="30" class="imgUrl" v-if="item.img_url">
 										<div class="imgUrl" v-else style="background: #238DFA;color: #fff;">{{item.name.substring(item.name.length-2)}}</div>
-										<div class="employee_checkbox"><el-checkbox v-model="item.checked"></el-checkbox></div>
-										<!-- <userImage :user_name="item.name" :img_url="item.img_url" width="30px" height="30px"></userImage> -->
 										<div class="employee_name">{{ item.name }}</div>
-										<div class="employee_cell_clear"></div>
 									</div>
-								</a>
+								</div>
 							</div>
 							<div v-else class="fontColorF" style="text-align: center;margin-top: 50px;">暂无可选人员</div>
 						</div>
@@ -53,18 +51,14 @@
 							<div class="employee_cell flex-box flex-v-ce" v-for="(item, index) in dept_selected_list" :key="index">
 								<div class="employee_name">{{ item.dept_name }}</div>
 								<div class="employee_delete"><el-button type="default" size="mini" @click="dept_cancel(item)" icon="el-icon-close" circle></el-button></div>
-								<div class="employee_cell_clear"></div>
 							</div>
-							<div class="employee_cell" v-for="(item, index) in employee_selected_list" :key="index">
-								
-								<img :src="item.img_url" width="30" height="30" class="imgUrl" v-if="item.img_url">
-								<div class="imgUrl" v-else style="background: #238DFA;color: #fff;">{{item.name.substring(item.name.length-2)}}</div>
-								<!-- <userImage :user_name="item.name" :img_url="item.img_url" width="30px" height="30px"></userImage> -->
-								<div class="employee_name">{{ item.name }}</div>
-								<div class="employee_delete">
-									<el-button type="default" size="mini" @click="employee_cancel(item, true)" icon="el-icon-close" circle></el-button>
+							<div class="flex-box-ce employee_cell2" v-for="(item, index) in employee_selected_list" :key="index">
+								<div class="flex-box-ce flex-1">
+									<img :src="item.img_url" width="30" height="30" style="margin-right: 8px;" class="imgUrl" v-if="item.img_url">
+									<div class="imgUrl" v-else style="background: #238DFA;color: #fff;margin-right: 8px;">{{item.name.substring(item.name.length-2)}}</div>
+									<div class="userName font-flex-word">{{ item.name }}</div>
 								</div>
-								<div class="employee_cell_clear"></div>
+								<i class="el-icon-error deleteUser" @click="employee_cancel(item, true)"></i>
 							</div>
 						</div>
 					</el-scrollbar>
@@ -75,6 +69,8 @@
 </template>
 
 <script>
+// import Item  from './Item'
+// import VirtualList from 'vue-virtual-scroll-list'
 export default {
 	props: {
 		can_select_dept: {
@@ -460,11 +456,18 @@ export default {
 </script>
 
 <style scoped>
-a {
+.deleteUser{
+	font-size: 16px;
+	padding: 8px;
+	color: #777777;
 	cursor: pointer;
-	color: inherit;
-	text-decoration: none;
 }
+.deleteUser:hover{
+	color: #F56C6C;
+}
+.userName{
+	width: 170px;
+}	
 .employee_selector_box {
 	width: 600px;
 	padding: 20px;
@@ -480,16 +483,13 @@ a {
 
 /* 左边框 */
 .employee_selector_box .choose_left {
-	padding: 8px 10px 8px 10px;
+	padding: 8px 10px;
 }
 
 .employee_selector_box .choose_left .employee_cell {
-	border-bottom: 1px #f8f8f8 solid;
+	border-bottom: 1px #f1f1f1 solid;
 }
 
-.employee_selector_box .choose_left .employee_cell_a .employee_cell {
-	border-bottom: none;
-}
 
 .employee_selector_box .choose_left .employee_checkbox {
 	padding-left: 8px;
@@ -544,9 +544,16 @@ a {
 }
 
 /* 右边距 */
-
+.employee_cell2{
+	padding: 8px 0;
+	height: 50px;
+	box-sizing: border-box;
+	border-bottom: 1px #f1f1f1 solid;
+}
 .employee_selector_box ::v-deep .employee_cell {
 	padding: 8px 0;
+	height: 50px;
+	box-sizing: border-box;
 }
 
 .employee_selector_box ::v-deep .employee_cell:hover {
@@ -563,9 +570,6 @@ a {
 	border-bottom: 1px #f1f1f1 solid;
 }
 
-.employee_cell .employee_cell_clear {
-	clear: both;
-}
 
 .employee_cell .employee_img_url {
 	display: table-cell;

+ 110 - 0
src/components/VirtualList.vue

@@ -0,0 +1,110 @@
+<template>
+  <div ref="list" class="infinite-list-container" @scroll="scrollEvent($event)">
+    <div class="infinite-list-phantom" :style="{ height: listHeight + 'px' }"></div>
+    <div class="infinite-list" :style="{ transform: getTransform }">
+      <div ref="items" class="infinite-list-item"  v-for="item in visibleData"  :key="item.id"
+	   :style="{ height: itemSize + 'px',lineHeight: itemSize + 'px' }"
+      >{{ item.value }}</div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name:'VirtualList',
+  props: {
+    //所有列表数据
+    listData:{
+      type:Array,
+      default:()=>[]
+    },
+    //每项高度
+    itemSize: {
+      type: Number,
+      default:200
+    }
+  },
+  data() {
+    return {
+      //可视区域高度
+      screenHeight:0,
+      //偏移量
+      startOffset:0,
+      //起始索引
+      start:0,
+      //结束索引
+      end:null,
+    };
+  },
+  computed:{
+    //列表总高度
+    listHeight(){
+      return this.listData.length * this.itemSize;
+    },
+    //可显示的列表项数
+    visibleCount(){
+	  //  Math.ceil() 方法可对一个数进行向上取整。
+      return Math.ceil(this.screenHeight / this.itemSize)
+    },
+    //偏移量对应的style
+    getTransform(){
+      return `translate3d(0,${this.startOffset}px,0)`;
+    },
+    //获取真实显示列表数据
+    visibleData(){
+      return this.listData.slice(this.start, Math.min(this.end,this.listData.length));
+    }
+  },
+  mounted() {
+	 //可视区域高度 
+    this.screenHeight = this.$el.clientHeight;
+	
+    this.start = 0;
+    this.end = this.start + this.visibleCount;
+  },
+  methods: {
+    scrollEvent() {
+      //当前滚动位置
+      let scrollTop = this.$refs.list.scrollTop;
+      //此时的开始索引
+	  // Math.floor方法可对一个数进行下舍入。
+      this.start = Math.floor(scrollTop / this.itemSize);
+      //此时的结束索引
+      this.end = this.start + this.visibleCount;
+      //此时的偏移量
+      this.startOffset = scrollTop - (scrollTop % this.itemSize);
+    }
+  }
+};
+</script>
+<style scoped>
+.infinite-list-container {
+  height: 100%;
+  overflow: auto;
+  position: relative;
+  -webkit-overflow-scrolling: touch;
+}
+
+.infinite-list-phantom {
+  position: absolute;
+  left: 0;
+  top: 0;
+  right: 0;
+  z-index: -1;
+}
+
+.infinite-list {
+  left: 0;
+  right: 0;
+  top: 0;
+  position: absolute;
+  text-align: center;
+}
+
+.infinite-list-item {
+  padding: 10px;
+  color: #555;
+  box-sizing: border-box;
+  border-bottom: 1px solid #999;
+}
+</style>

+ 38 - 0
src/dome.vue

@@ -0,0 +1,38 @@
+<template>
+<div id="app">
+  <VirtualList :listData="data" :itemSize="100"/>
+</div>
+</template>
+
+<script>
+import VirtualList from "@/components/VirtualList";
+let d = [];
+for (let i = 0; i < 50; i++) {
+  d.push({ id: i, value: i });
+}
+
+export default {
+  name: "App",
+  data() {
+    return {
+      data: d
+    };
+  },
+  components: {
+    VirtualList
+  }
+};
+</script>
+
+<style>
+html{
+  height: 100%;
+}
+body{
+  height: 100%;
+  margin:0;
+}
+#app{
+  height:100%;
+}
+</style>

+ 37 - 37
src/hint.vue

@@ -1,27 +1,27 @@
 <template>
 	<div>
-		<div  @click="init()">
-				<img src="./assets/image/testPc.jpg" style="width:100%;height:auto" v-if="type=='PC'"/>
-				<div class="app" v-else :style="{width:width}">
-					<img src="./assets/image/test.jpg" :style="{width:width,height:'auto'}"/>
-				</div>
+		<div @click="init()">
+			<img src="./assets/image/testPc.jpg" style="width:100%;height:auto" v-if="type == 'PC'" />
+			<div class="app" v-else :style="{ width: width }"><img src="./assets/image/test.jpg" :style="{ width: width, height: 'auto' }" /></div>
 		</div>
 	</div>
 </template>
 
 <script>
-import { openTryoutSku, contactAdminToUseApp } from 'dingtalk-design-libs';
+import { openTryoutSku } from 'dingtalk-design-libs';
+import openLink from 'dingtalk-jsapi/api/biz/util/openLink';
+import close from 'dingtalk-jsapi/api/biz/navigation/close';
 export default {
 	data() {
 		return {
 			corpId: '',
 			token: '',
 			type: 'PC',
-			width:'',
+			width: ''
 		};
 	},
 	created() {
-		this.width=document.body.clientWidth+'px'
+		this.width = document.body.clientWidth + 'px';
 	},
 	mounted() {
 		var url = window.location.href;
@@ -31,7 +31,9 @@ export default {
 		this.token = data.purchaseToken;
 		this.type = data.appEntityType;
 		if (this.corpId) {
-			this.init();
+			this.$nextTick(()=>{
+				this.init();
+			})
 		}
 	},
 	methods: {
@@ -40,37 +42,36 @@ export default {
 			openTryoutSku({
 				// corpId可以从应用首页的url上获取到
 				corpId: this.corpId,
+				// corpId: 'ding18d2ac9042d997e5f5bf40eda33b7ba0',
 				// 应用的appId
 				appId: 55493,
 				// 从应用首页的url上获取到,url上参数名为 purchaseToken。
 				// purchaseToken如何配置参照下文”配置入口地址“章节。
 				token: this.token,
-				miniAppId: this.token == 'APP' ? 55493 : '' // 如果是三方小程序应用,需要设置一下自身的miniAppId。H5微应用可以不设置这个参数
+				miniAppId: this.type == 'APP' ? 5000000000104741 : '' // 如果是三方小程序应用,需要设置一下自身的miniAppId。H5微应用可以不设置这个参数
 			}).then(res => {
-					const {
-						// action的值为:
-						// 'ok',用户执行了开通动作,或将自己加入了已开通的应用的可见范围内
-						// 'cancel', 用户点击了取消按钮
-						// 'unknown',用户点击空白区域关闭了弹窗,此时可以跟cancel采取同样的处理逻辑
-						action,
-						// 开通了应用的组织的corpId。因为个人开通可能会用钉钉的隐藏组织,所以开通应用的组织的corpId以这里返回的为准。
-						corpId
-					} = res;
-					console.log(action, corpId);
-					if (action === 'ok') {
-						this.$dd.biz.util.openLink({
-							url: 'http://www.dingtalk.com', //要打开链接的地址
-							onSuccess: function(result) {
-								this.$dd.biz.navigation.close();
-							},
-							onFail: function(err) {}
-						});
+				const {
+					// action的值为:
+					// 'ok',用户执行了开通动作,或将自己加入了已开通的应用的可见范围内
+					// 'cancel', 用户点击了取消按钮
+					// 'unknown',用户点击空白区域关闭了弹窗,此时可以跟cancel采取同样的处理逻辑
+					action,
+					// 开通了应用的组织的corpId。因为个人开通可能会用钉钉的隐藏组织,所以开通应用的组织的corpId以这里返回的为准。
+					corpId
+				} = res;
+				if (action === 'ok') {
+					if (this.type == 'APP') {
+						close({});
+					} else {
+						openLink({ url:'https://pc.dd.g107.com?corpId=' + corpId }).then(() => close({}));
 					}
-					// action不是ok的情况下,可以不采取任何动作
-				})
-				.catch(() => {
-					// 钉钉侧出现了技术异常,比如打开弹窗失败等,出现概率非常低
-				});
+				}
+				// action不是ok的情况下,可以不采取任何动作
+			})
+			.catch((res) => {
+				console.log(res);
+				// 钉钉侧出现了技术异常,比如打开弹窗失败等,出现概率非常低
+			});
 		},
 		GetRequest(urlStr) {
 			if (typeof urlStr == 'undefined') {
@@ -94,13 +95,12 @@ export default {
 </script>
 
 <style scoped="scoped">
-.app{
+.app {
 	margin: 0 auto;
 	height: auto;
 	padding: 0;
 }
-.app img{
+.app img {
 	/* width: 375px; */
-}	
-	
+}
 </style>

+ 5 - 0
src/router/index.js

@@ -322,6 +322,11 @@ const routes = [{
 		name: '提示页',
 		component: () => import( /* webpackChunkName: "hint" */ '@/hint'),
 	},
+	{
+		path: '/dome',
+		name: '虚拟列表',
+		component: () => import( /* webpackChunkName: "hint" */ '@/dome'),
+	},
 ]
 
 const router = new VueRouter({

+ 0 - 210
src/vendors/Blob.js

@@ -1,210 +0,0 @@
-/* eslint-disable */
-/* Blob.js*/
-
-/*global self, unescape */
-/*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true,
-  plusplus: true */
-
-/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */
-
-(function (view) {
-    "use strict";
-  
-    view.URL = view.URL || view.webkitURL;
-  
-    if (view.Blob && view.URL) {
-      try {
-        new Blob;
-        return;
-      } catch (e) {
-      }
-    }
-  
-    // Internally we use a BlobBuilder implementation to base Blob off of
-    // in order to support older browsers that only have BlobBuilder
-    var BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || (function (view) {
-      var
-        get_class = function (object) {
-          return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1];
-        }
-        , FakeBlobBuilder = function BlobBuilder() {
-          this.data = [];
-        }
-        , FakeBlob = function Blob(data, type, encoding) {
-          this.data = data;
-          this.size = data.length;
-          this.type = type;
-          this.encoding = encoding;
-        }
-        , FBB_proto = FakeBlobBuilder.prototype
-        , FB_proto = FakeBlob.prototype
-        , FileReaderSync = view.FileReaderSync
-        , FileException = function (type) {
-          this.code = this[this.name = type];
-        }
-        , file_ex_codes = (
-          "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR "
-          + "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR"
-        ).split(" ")
-        , file_ex_code = file_ex_codes.length
-        , real_URL = view.URL || view.webkitURL || view
-        , real_create_object_URL = real_URL.createObjectURL
-        , real_revoke_object_URL = real_URL.revokeObjectURL
-        , URL = real_URL
-        , btoa = view.btoa
-        , atob = view.atob
-  
-        , ArrayBuffer = view.ArrayBuffer
-        , Uint8Array = view.Uint8Array
-  
-        , origin = /^[\w-]+:\/*\[?[\w\.:-]+\]?(?::[0-9]+)?/
-      ;
-      FakeBlob.fake = FB_proto.fake = true;
-      while (file_ex_code--) {
-        FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1;
-      }
-      // Polyfill URL
-      if (!real_URL.createObjectURL) {
-        URL = view.URL = function (uri) {
-          var
-            uri_info = document.createElementNS("http://www.w3.org/1999/xhtml", "a")
-            , uri_origin
-          ;
-          uri_info.href = uri;
-          if (!("origin" in uri_info)) {
-            if (uri_info.protocol.toLowerCase() === "data:") {
-              uri_info.origin = null;
-            } else {
-              uri_origin = uri.match(origin);
-              uri_info.origin = uri_origin && uri_origin[1];
-            }
-          }
-          return uri_info;
-        };
-      }
-      URL.createObjectURL = function (blob) {
-        var
-          type = blob.type
-          , data_URI_header
-        ;
-        if (type === null) {
-          type = "application/octet-stream";
-        }
-        if (blob instanceof FakeBlob) {
-          data_URI_header = "data:" + type;
-          if (blob.encoding === "base64") {
-            return data_URI_header + ";base64," + blob.data;
-          } else if (blob.encoding === "URI") {
-            return data_URI_header + "," + decodeURIComponent(blob.data);
-          }
-          if (btoa) {
-            return data_URI_header + ";base64," + btoa(blob.data);
-          } else {
-            return data_URI_header + "," + encodeURIComponent(blob.data);
-          }
-        } else if (real_create_object_URL) {
-          return real_create_object_URL.call(real_URL, blob);
-        }
-      };
-      URL.revokeObjectURL = function (object_URL) {
-        if (object_URL.substring(0, 5) !== "data:" && real_revoke_object_URL) {
-          real_revoke_object_URL.call(real_URL, object_URL);
-        }
-      };
-      FBB_proto.append = function (data/*, endings*/) {
-        var bb = this.data;
-        // decode data to a binary string
-        if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) {
-          var
-            str = ""
-            , buf = new Uint8Array(data)
-            , i = 0
-            , buf_len = buf.length
-          ;
-          for (; i < buf_len; i++) {
-            str += String.fromCharCode(buf[i]);
-          }
-          bb.push(str);
-        } else if (get_class(data) === "Blob" || get_class(data) === "File") {
-          if (FileReaderSync) {
-            var fr = new FileReaderSync;
-            bb.push(fr.readAsBinaryString(data));
-          } else {
-            // async FileReader won't work as BlobBuilder is sync
-            throw new FileException("NOT_READABLE_ERR");
-          }
-        } else if (data instanceof FakeBlob) {
-          if (data.encoding === "base64" && atob) {
-            bb.push(atob(data.data));
-          } else if (data.encoding === "URI") {
-            bb.push(decodeURIComponent(data.data));
-          } else if (data.encoding === "raw") {
-            bb.push(data.data);
-          }
-        } else {
-          if (typeof data !== "string") {
-            data += ""; // convert unsupported types to strings
-          }
-          // decode UTF-16 to binary string
-          bb.push(unescape(encodeURIComponent(data)));
-        }
-      };
-      FBB_proto.getBlob = function (type) {
-        if (!arguments.length) {
-          type = null;
-        }
-        return new FakeBlob(this.data.join(""), type, "raw");
-      };
-      FBB_proto.toString = function () {
-        return "[object BlobBuilder]";
-      };
-      FB_proto.slice = function (start, end, type) {
-        var args = arguments.length;
-        if (args < 3) {
-          type = null;
-        }
-        return new FakeBlob(
-          this.data.slice(start, args > 1 ? end : this.data.length)
-          , type
-          , this.encoding
-        );
-      };
-      FB_proto.toString = function () {
-        return "[object Blob]";
-      };
-      FB_proto.close = function () {
-        this.size = 0;
-        delete this.data;
-      };
-      return FakeBlobBuilder;
-    }(view));
-  
-    view.Blob = function (blobParts, options) {
-      var type = options ? (options.type || "") : "";
-      var builder = new BlobBuilder();
-      if (blobParts) {
-        for (var i = 0, len = blobParts.length; i < len; i++) {
-          if (Uint8Array && blobParts[i] instanceof Uint8Array) {
-            builder.append(blobParts[i].buffer);
-          }
-          else {
-            builder.append(blobParts[i]);
-          }
-        }
-      }
-      var blob = builder.getBlob(type);
-      if (!blob.slice && blob.webkitSlice) {
-        blob.slice = blob.webkitSlice;
-      }
-      return blob;
-    };
-  
-    var getPrototypeOf = Object.getPrototypeOf || function (object) {
-      return object.__proto__;
-    };
-    view.Blob.prototype = getPrototypeOf(new view.Blob());
-  }(
-    typeof self !== "undefined" && self
-    || typeof window !== "undefined" && window
-    || this
-  ));

+ 0 - 189
src/vendors/Export2Excel.js

@@ -1,189 +0,0 @@
-require('script-loader!file-saver');
-/* 这里的路径换成自己的 */
-require('@/vendors/Blob.js')
-require('script-loader!xlsx/dist/xlsx.core.min');
-
-function generateArray(table) {
-  var out = [];
-  var rows = table.querySelectorAll('tr');
-  var ranges = [];
-  for (var R = 0; R < rows.length; ++R) {
-    var outRow = [];
-    var row = rows[R];
-    var columns = row.querySelectorAll('td');
-    for (var C = 0; C < columns.length; ++C) {
-      var cell = columns[C];
-      var colspan = cell.getAttribute('colspan');
-      var rowspan = cell.getAttribute('rowspan');
-      var cellValue = cell.innerText;
-      if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;
-
-      //Skip ranges
-      ranges.forEach(function (range) {
-        if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) {
-          for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null);
-        }
-      });
-
-      //Handle Row Span
-      if (rowspan || colspan) {
-        rowspan = rowspan || 1;
-        colspan = colspan || 1;
-        ranges.push({s: {r: R, c: outRow.length}, e: {r: R + rowspan - 1, c: outRow.length + colspan - 1}});
-      }
-      ;
-
-      //Handle Value
-      outRow.push(cellValue !== "" ? cellValue : null);
-
-      //Handle Colspan
-      if (colspan) for (var k = 0; k < colspan - 1; ++k) outRow.push(null);
-    }
-    out.push(outRow);
-  }
-  return [out, ranges];
-};
-
-function datenum(v, date1904) {
-  if (date1904) v += 1462;
-  var epoch = Date.parse(v);
-  return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
-}
-
-function sheet_from_array_of_arrays(data, opts) {
-  var ws = {};
-  var range = {s: {c: 10000000, r: 10000000}, e: {c: 0, r: 0}};
-  for (var R = 0; R != data.length; ++R) {
-    for (var C = 0; C != data[R].length; ++C) {
-      if (range.s.r > R) range.s.r = R;
-      if (range.s.c > C) range.s.c = C;
-      if (range.e.r < R) range.e.r = R;
-      if (range.e.c < C) range.e.c = C;
-      var cell = {v: data[R][C]};
-      if (cell.v == null) continue;
-      var cell_ref = XLSX.utils.encode_cell({c: C, r: R});
-
-      if (typeof cell.v === 'number') cell.t = 'n';
-      else if (typeof cell.v === 'boolean') cell.t = 'b';
-      else if (cell.v instanceof Date) {
-        cell.t = 'n';
-        cell.z = XLSX.SSF._table[14];
-        cell.v = datenum(cell.v);
-      }
-      else cell.t = 's';
-
-      ws[cell_ref] = cell;
-    }
-  }
-  if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
-  return ws;
-}
-
-function Workbook() {
-  if (!(this instanceof Workbook)) return new Workbook();
-  this.SheetNames = [];
-  this.Sheets = {};
-}
-
-function s2ab(s) {
-  var buf = new ArrayBuffer(s.length);
-  var view = new Uint8Array(buf);
-  for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
-  return buf;
-}
-
-export function export_table_to_excel(id) {
-  var theTable = document.getElementById(id);
-  console.log('a')
-  var oo = generateArray(theTable);
-  var ranges = oo[1];
-
-  /* original data */
-  var data = oo[0];
-  var ws_name = "SheetJS";
-  console.log(data);
-
-  var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
-
-  /* add ranges to worksheet */
-  // ws['!cols'] = ['apple', 'banan'];
-  ws['!merges'] = ranges;
-
-  /* add worksheet to workbook */
-  wb.SheetNames.push(ws_name);
-  wb.Sheets[ws_name] = ws;
-
-  var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
-
-  saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), "test.xlsx")
-}
-
-function formatJson(jsonData) {
-  console.log(jsonData)
-}
-
-export function export_json_to_excel(th, jsonData, defaultTitle) {
-
-  /* original data */
-
-  var data = jsonData;
-  data.unshift(th);
-  var ws_name = "SheetJS";
-
-  var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
-
-
-  /* add worksheet to workbook */
-  wb.SheetNames.push(ws_name);
-  wb.Sheets[ws_name] = ws;
-
-  var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
-  var title = defaultTitle || '列表'
-  saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), title + ".xlsx")
-}
-// export default{
-// 	export_json_to_excel(th, jsonData, defaultTitle) {
-	
-// 	  /* original data */
-	
-// 	  var data = jsonData;
-// 	  data.unshift(th);
-// 	  var ws_name = "SheetJS";
-	
-// 	  var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
-	
-	
-// 	  /* add worksheet to workbook */
-// 	  wb.SheetNames.push(ws_name);
-// 	  wb.Sheets[ws_name] = ws;
-	
-// 	  var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
-// 	  var title = defaultTitle || '列表'
-// 	  saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), title + ".xlsx")
-// 	},
-// 	export_table_to_excel(id) {
-// 	  var theTable = document.getElementById(id);
-// 	  console.log('a')
-// 	  var oo = generateArray(theTable);
-// 	  var ranges = oo[1];
-	
-// 	  /* original data */
-// 	  var data = oo[0];
-// 	  var ws_name = "SheetJS";
-// 	  console.log(data);
-	
-// 	  var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
-	
-// 	  /* add ranges to worksheet */
-// 	  // ws['!cols'] = ['apple', 'banan'];
-// 	  ws['!merges'] = ranges;
-	
-// 	  /* add worksheet to workbook */
-// 	  wb.SheetNames.push(ws_name);
-// 	  wb.Sheets[ws_name] = ws;
-	
-// 	  var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
-	
-// 	  saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), "test.xlsx")
-// 	}
-// }

+ 2 - 1
src/views/common/below/rewardTask.vue

@@ -158,7 +158,7 @@ export default {
 				reviewer_id: '',
 				task_cycle: 0,
 				timeout_deduction_point: null,
-				dept_ids: null
+				dept_ids: []
 			},
 			point_types: [],
 			// 执行者
@@ -325,6 +325,7 @@ export default {
 						this.$parent.get_list();
 						self.$emit('update:dialogVisible', false);
 						self.$refs[formName].resetFields();
+						self.formData.dept_ids=[];
 						self.$message.success(res.data.msg);
 						self.executorName = '';
 						self.reviewerName = '';

+ 56 - 56
src/views/ranking/custom_rank.vue

@@ -95,7 +95,6 @@
 					</center>
 				</el-col>
 			</div>
-			<!-- </el-row> -->
 		</div>
 
 		
@@ -129,61 +128,6 @@
 					<div style="margin-bottom:12px;">
 						<span style="font-size:13px;color:#8a8a8a;position: absolute; top: 30px; left: 0;">{{ ruleHint }}</span>
 					</div>
-					<el-dialog title="选择规则" width="952px" :visible.sync="ruleDialogTableVisible" @close="closeNone" append-to-body :before-close="handleClose">
-						<div style="display:flex;position: relative;width:100%;height:40px">
-							<span style="position: absolute;line-height:40px;left:20px">已选:{{ valuesOrLength.length }}条</span>
-							<el-input type="text" class="search" style="position: absolute;right:20px;width:20%" placeholder="输入关键字搜索" v-model.trim="keyword" />
-						</div>
-						<el-row class="architecture">
-							<el-col :span="8" class="RuleLeft" style="height:500px">
-								<div ref="ruletree" class="department_box">
-									<el-tree
-										ref="menum"
-										node-key="id"
-										:accordion="true"
-										:highlight-current="true"
-										@node-expand="treeOpen"
-										:data="treedata"
-										:default-expand-all="defaultExpand"
-										:props="defaultProps"
-										:expand-on-click-node="false"
-										@node-click="handleNodeClick"
-										@check="handleCheckChange"
-									>
-										<div
-											content="tree"
-											v-if="!data.dis"
-											v-show="treedata.length != 0"
-											class="custom-tree-node"
-											slot-scope="{ node, data }"
-											style="font-size: 14px;color: #606266; width:100%; text-align: left;"
-										>
-											<span class="name">{{ data.name }}</span>
-										</div>
-									</el-tree>
-								</div>
-							</el-col>
-							<el-col :span="16" class="RuleRight" v-loading="tableLoadingRule" style="height:500px;overflow-y:auto">
-								<el-table
-									ref="multipleTable"
-									:data="tableData_rule"
-									tooltip-effect="dark"
-									style="width: 100%;cursor:pointer"
-									@select="onTableSelect"
-									@select-all="selectAll"
-									@cell-click="clicktable"
-									@selection-change="handleSelectionChange"
-								>
-									<el-table-column type="selection" width="55"></el-table-column>
-									<el-table-column prop="remark" :label="'全选'" show-overflow-tooltip></el-table-column>
-								</el-table>
-							</el-col>
-						</el-row>
-						<span slot="footer" class="dialog-footer">
-							<el-button @click="ruleDialogTableVisible = false">取 消</el-button>
-							<el-button type="primary" @click="ruleDialogTableVisibleQD">确 定</el-button>
-						</span>
-					</el-dialog>
 				</el-form-item>
 				<el-form-item label="统计周期" label-width="85px" :required="true" :show-message="false">
 					<el-select v-model="options_time_value" placeholder="月度" @change="options_times">
@@ -198,6 +142,62 @@
 				<el-button type="primary" :loading="saveLoad" @click="subGroupForm('newGroupForm')">确 定</el-button>
 			</div>
 		</el-dialog>
+		<!-- 选择规则 -->
+		<el-dialog title="选择规则" width="952px" :visible.sync="ruleDialogTableVisible" @close="closeNone" append-to-body :before-close="handleClose">
+			<div style="display:flex;position: relative;width:100%;height:40px">
+				<span style="position: absolute;line-height:40px;left:20px">已选:{{ valuesOrLength.length }}条</span>
+				<el-input type="text" class="search" style="position: absolute;right:20px;width:20%" placeholder="输入关键字搜索" v-model.trim="keyword" />
+			</div>
+			<el-row class="architecture">
+				<el-col :span="8" class="RuleLeft" style="height:500px">
+					<div ref="ruletree" class="department_box">
+						<el-tree
+							ref="menum"
+							node-key="id"
+							:accordion="true"
+							:highlight-current="true"
+							@node-expand="treeOpen"
+							:data="treedata"
+							:default-expand-all="defaultExpand"
+							:props="defaultProps"
+							:expand-on-click-node="false"
+							@node-click="handleNodeClick"
+							@check="handleCheckChange"
+						>
+							<div
+								content="tree"
+								v-if="!data.dis"
+								v-show="treedata.length != 0"
+								class="custom-tree-node"
+								slot-scope="{ node, data }"
+								style="font-size: 14px;color: #606266; width:100%; text-align: left;"
+							>
+								<span class="name">{{ data.name }}</span>
+							</div>
+						</el-tree>
+					</div>
+				</el-col>
+				<el-col :span="16" class="RuleRight" v-loading="tableLoadingRule" style="height:500px;overflow-y:auto">
+					<el-table
+						ref="multipleTable"
+						:data="tableData_rule"
+						tooltip-effect="dark"
+						style="width: 100%;cursor:pointer"
+						@select="onTableSelect"
+						@select-all="selectAll"
+						@cell-click="clicktable"
+						@selection-change="handleSelectionChange"
+					>
+						<el-table-column type="selection" width="55"></el-table-column>
+						<el-table-column prop="remark" :label="'全选'" show-overflow-tooltip></el-table-column>
+					</el-table>
+				</el-col>
+			</el-row>
+			<span slot="footer" class="dialog-footer">
+				<el-button @click="ruleDialogTableVisible = false">取 消</el-button>
+				<el-button type="primary" @click="ruleDialogTableVisibleQD">确 定</el-button>
+			</span>
+		</el-dialog>
 	</div>
 </template>
 <script>

+ 0 - 89
src/views/set/initialPoint.vue

@@ -1,58 +1,13 @@
 <template>
 	<div v-loading="loading">
 		<workpoints :initia_arr="initia_arr" :initia_head="initia_head" @initia="initia" />
-<!-- 		<download-excel
-			:fields="exportDataStandard"
-			:data="exportData"
-			type="xlsx"
-			:name="exportName"
-			:header="exportHeader"
-			:footer="exportFooter"
-			:defaultValue="exportDefaultValue"
-			:fetch="createExportData"
-			:before-generate="startDownload"
-			:before-finish="finishDownload"
-			:stringifyLongNum="true"
-			worksheet="导出信息"
-		>
-			<el-button icon="el-icon-download">导出</el-button>
-		</download-excel> -->
-<!-- 		<el-button @click="exportExcel">导出Excel</el-button> -->
 	</div>
 </template>
 <script>
 import workpoints from '@/components/publics/workpoints';
-import {export_json_to_excel} from '@/vendors/Export2Excel'
 export default {
 	data() {
 		return {
-			// exportDataStandard: {
-			// 	名称: 'name',
-			// 	性别: 'sex',
-			// 	地区: {
-			// 		field: 'phone',
-			// 		callback: value => {
-			// 			return `他的电话是:${value}`;
-			// 		}
-			// 	}
-			// },
-			// exportData: [
-			// 	{ name: '甲', sex: 123456, phone: 15521103211 },
-			// 	{ name: '乙', sex: '00123', phone: 15521103222 },
-			// 	{ name: '丙', sex: 123, phone: 15521103233 },
-			// 	{ area: '北京市朝阳区' },
-			// 	{ name: '丁', sex: 123, phone: 15521103233 },
-			// 	{ name: '丁', sex: '男', phone: 15521103233 }
-			// ],
-			// exportName: '导出数据',
-			// exportHeader: ['用户信息页头1', '用户信息页头2'],
-			// exportFooter: ['用户的信息页脚1', '用户的信息页脚2'],
-			// exportDefaultValue: '这一行这一列没有数据',
-
-
-
-
-
 			loading: false,
 			initia_head: {
 				initial_suername: '初始分',
@@ -95,50 +50,6 @@ export default {
 		this.cheak_ax();
 	},
 	methods: {
-		// exportExcel() {          
-		//     const excelHeader = ['ICD10编码', '诊断名称'];
-		//     const keys = ['temp_column1', 'temp_column2'];
-		//     const _dataSource = this.dataTabel();
-		//     const excelData = _dataSource.map(item => keys.map(i => item[i] || ''))
-		// 	const excelName='规则表'
-		//     export_json_to_excel(excelHeader, excelData, excelName)
-		
-		// },
-		// dataTabel(){
-		//   return [
-		//       {
-		//         "temp_column_id": "100000202102251058271000000001",
-		//         "temp_column1": "00C97",
-		//         "temp_column2": "哎呀呀呀1111"
-		//       },
-		//       {
-		//         "temp_column_id": "232423423",
-		//         "temp_column1": "00C97",
-		//         "temp_column2": "哎呀呀呀2222"
-		//       }
-		//   ]
-		// },
-		
-		
-		// createExportData() {
-		// 	// 点击导出按钮之后,开始导出数据之前的执行函数,返回值为需要下载的数据
-		// 	// TODO:构造需要下载的数据返回
-		// 	return [
-		// 		{ name: '甲', sex: 123456, phone: 15521103211 },
-		// 		{ name: '乙', sex: '00123', phone: 15521103222 },
-		// 		{ name: '丙', sex: 123, phone: 15521103233 },
-		// 		{ area: '北京市朝阳区' },
-		// 		{ name: '丁', sex: 123, phone: 15521103233 },
-		// 		{ name: '丁', sex: '男', phone: 15521103233 }
-		// 	];
-		// },
-		// startDownload() {
-		// 	console.log('数据开始');
-		// },
-		// finishDownload() {
-		// 	console.log('数据下载完成');
-		// },
-
 		initia(ok) {
 			this.loading = true;
 			this.obj.base_point = +ok[0].sj;

+ 2 - 2
src/views/set/jurisdiction.vue

@@ -31,10 +31,10 @@
 					</div>
 					<div class="flex-box btns flex-v-ce margin-bottom" v-if="item_info.code != 'employee'">
 						<div class="flex-1">
-							<el-button size="small" v-show="item_info.code == 'creator' && table_list.length > 1 && isStart" @click="del_creator" type="danger">删除</el-button>
 							<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' && table_list.length > 1 && isStart" @click="del_creator" 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 != 'creator' && table_list.length > 0" @click="del_item" type="danger">删除</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>