b926c8d5 by renchao@pashanhoo.com

style:楼盘表

1 parent cca683d1
1 <template> 1 <template>
2 <div class="lpbContent-wrap" ref="lpbContentWrap"> 2 <div class="lpbContent-wrap" ref="lpbContentWrap">
3 <div 3 <div class="lpbContent" ref="lpbContent" :style="{ 'height': 'calc(100% - '+ lpbContentHeight +'px)'}">
4 class="lpbContent"
5 ref="lpbContent"
6 :style="{ height: 'calc(100% - ' + lpbContentHeight + 'px)' }"
7 >
8 <!-- 纵向倒序排列 逻辑幢位于独立幢单元和独立层户的上方 --> 4 <!-- 纵向倒序排列 逻辑幢位于独立幢单元和独立层户的上方 -->
9 <div class="ch-zdy-wrap"> 5 <div class="ch-zdy-wrap">
10 <!-- 幢单元 --> 6 <!-- 幢单元 -->
11 <zdy-cpn 7 <zdy-cpn v-if="lpbData.zdys.length" :zdys="lpbData.zdys" :onlyShow="onlyShow" />
12 v-if="lpbData.zdys.length"
13 :zdys="lpbData.zdys"
14 :onlyShow="onlyShow"
15 />
16 <!-- 独立层户 --> 8 <!-- 独立层户 -->
17 <ch-cpn 9 <ch-cpn v-if="lpbData.cs.length" :ch="lpbData.cs" :onlyShow="onlyShow" />
18 v-if="lpbData.cs.length"
19 :ch="lpbData.cs"
20 :onlyShow="onlyShow"
21 />
22 </div> 10 </div>
23 <!-- 逻辑幢 --> 11 <!-- 逻辑幢 -->
24 <ljzs-cpn 12 <ljzs-cpn v-if="lpbData.ljzs.length" :ljzs="lpbData.ljzs" :onlyShow="onlyShow" />
25 v-if="lpbData.ljzs.length"
26 :ljzs="lpbData.ljzs"
27 :onlyShow="onlyShow"
28 />
29 </div> 13 </div>
30 <!-- 自然幢名称 --> 14 <!-- 自然幢名称 -->
31 <p 15 <p class="lpb-xmmc" v-if="onlyShow" style="border-bottom: 1px solid #e6e6e6">{{ lpbData.xmmc }}</p>
32 class="lpb-xmmc" 16 <p class="lpb-xmmc" v-else :style="{ 'border-bottom':'1px solid #e6e6e6'}">
33 v-if="onlyShow"
34 style="border-bottom: 1px solid #e6e6e6"
35 >
36 {{ lpbData.xmmc }}
37 </p>
38 <p
39 class="lpb-xmmc"
40 v-else
41 :style="{ 'border-bottom': '1px solid #e6e6e6' }"
42 >
43 <el-checkbox @change="zdySelectAll($event)">{{ 17 <el-checkbox @change="zdySelectAll($event)">{{
44 lpbData.xmmc 18 lpbData.xmmc
45 }}</el-checkbox> 19 }}</el-checkbox>
46 </p> 20 </p>
47 <el-button 21 <el-button type="primary" class="save-btn" v-if="!onlyShow && showSave" @click="saveLpb">选择确认</el-button>
48 type="primary" 22 <el-button type="primary" class="save-btn" v-if="!onlyShow && !showSave" @click="submitForm" :loading="loading">发起申请</el-button>
49 class="save-btn"
50 v-if="!onlyShow && showSave"
51 @click="saveLpb"
52 >选择确认</el-button
53 >
54 <el-button
55 type="primary"
56 class="save-btn"
57 v-if="!onlyShow && !showSave"
58 @click="submitForm"
59 :loading="loading"
60 >发起申请</el-button
61 >
62 <!-- 右键菜单 --> 23 <!-- 右键菜单 -->
63 <ul 24 <ul
64 v-show="lpbChVisible" 25 v-show="lpbChVisible"
65 :style="{ left: lpbChLeft + 'px', top: lpbChTop + 'px' }" 26 :style="{ left: lpbChLeft + 'px', top: lpbChTop + 'px' }"
66 class="contextmenu" 27 class="contextmenu">
67 >
68 <li @click="menuClick">菜单一</li> 28 <li @click="menuClick">菜单一</li>
69 <li @click="menuClick">菜单二</li> 29 <li @click="menuClick">菜单二</li>
70 </ul> 30 </ul>
71 </div> 31 </div>
72 </template> 32 </template>
73 <script> 33 <script>
74 import { getLpb } from "@/api/lpcx.js"; 34 import { getLpb } from "@/api/lpcx.js";
75 import chCpn from "./ch.vue"; 35 import chCpn from "./ch.vue";
76 import zdyCpn from "./zdys.vue"; 36 import zdyCpn from "./zdys.vue";
77 import ljzsCpn from "./ljzs.vue"; 37 import ljzsCpn from "./ljzs.vue";
78 import { 38 import { startBusinessFlow, choiceBdcdy, againAddSldy } from "@/api/workFlow.js";
79 startBusinessFlow, 39 import jump from "../../ywbl/ywsq/components/mixin/jump";
80 choiceBdcdy, 40 import store from '@/store/index.js'
81 againAddSldy, 41 import { ywPopupCacel } from "@/utils/popup.js";
82 } from "@/api/workFlow.js"; 42 export default {
83 import jump from "../../ywbl/ywsq/components/mixin/jump"; 43 mixins: [jump],
84 import store from "@/store/index.js"; 44 provide () {
85 import { ywPopupCacel } from "@/utils/popup.js"; 45 return {
86 export default { 46 openMenu: this.openMenu,
87 mixins: [jump], 47 selectAll: this.selectAllObj,
88 provide() { 48 changeChoosedObj: this.changeChoosedObj,
89 return { 49 clearChangeChoosedObj: this.clearChangeChoosedObj,
90 openMenu: this.openMenu, 50 getBsmList: this.getBsmList
91 selectAll: this.selectAllObj, 51 };
92 changeChoosedObj: this.changeChoosedObj,
93 clearChangeChoosedObj: this.clearChangeChoosedObj,
94 getBsmList: this.getBsmList,
95 };
96 },
97 name: "",
98 components: { chCpn, zdyCpn, ljzsCpn },
99 props: {
100 zrzbsm: {
101 type: String,
102 default: "",
103 },
104 lpbParent: {
105 type: String,
106 default: "isLpb",
107 },
108 isHb: {
109 type: Boolean,
110 default: true,
111 },
112 onlyShow: {
113 type: Boolean,
114 default: true,
115 },
116 showSave: {
117 type: Boolean,
118 default: false,
119 },
120 scyclx: {
121 type: Number,
122 default: 0,
123 },
124 sqywInfo: {
125 type: Object,
126 default: () => {},
127 }, 52 },
128 }, 53 name: "",
129 data() { 54 components: { chCpn, zdyCpn, ljzsCpn },
130 return { 55 props: {
131 lpbData: { 56 zrzbsm: {
132 ljzs: [], 57 type: String,
133 cs: [], 58 default: "",
134 zdys: [],
135 }, 59 },
136 //户全选标识 由于依赖注入的绑定并不是可响应的,所以传入可监听的对象以获取其属性的响应 60 lpbParent: {
137 selectAllObj: { 61 type: String,
138 selectAll: false, 62 default: "isLpb",
139 }, 63 },
140 //层户右键菜单显隐 64 isHb: {
141 lpbChVisible: false, 65 type: Boolean,
142 //右键菜单定位位置 66 default: true,
143 lpbChLeft: 100,
144 lpbChTop: 100,
145 // 改变户选中状态
146 changeChoosedObj: {
147 bsms: [],
148 color: "",
149 }, 67 },
150 // 选中户bsm合集 68 onlyShow: {
151 bsmList: [], 69 type: Boolean,
152 loading: false, 70 default: true,
153 }; 71 },
154 }, 72 showSave: {
155 mounted() { 73 type: Boolean,
156 this.scyclx 74 default: false,
157 ? this.getLpb(this.zrzbsm, this.scyclx) 75 },
158 : this.getLpb(this.zrzbsm); 76 scyclx: {
159 window.lpbContent = this; 77 type: Number,
160 }, 78 default: 0,
161 methods: { 79 },
162 /** 80 sqywInfo: {
163 * @description: 获取当前楼盘表选中户信息 81 type: Object,
164 * @param {Array} bsmList 82 default: () => { }
165 * @author: renchao 83 },
166 */ 84 isJump: { type: Boolean, default: false },
167 getBsmList(bsmList, compFlag) {
168 // 根据本次传入的组件标识删除之前对应组件标识存入hbsmList的数据
169 this.bsmList = this.bsmList.filter((i) => i.flag != compFlag);
170 // 合并本次数据
171 this.bsmList = this.bsmList.concat([
172 ...new Map(bsmList.map((item) => [item.bdcdyh, item])).values(),
173 ]);
174 // })
175 }, 85 },
176 /** 86 data () {
177 * @description: 保存当前楼盘表 87 return {
178 * @author: renchao 88 lpbData: {
179 */ 89 ljzs: [],
180 saveLpb() { 90 cs: [],
181 if (this.bsmList.length == 0) { 91 zdys: [],
182 this.$message.error("请至少选择一条数据"); 92 },
183 return; 93 //户全选标识 由于依赖注入的绑定并不是可响应的,所以传入可监听的对象以获取其属性的响应
184 } 94 selectAllObj: {
185 this.loading = true; 95 selectAll: false,
186 store.dispatch("user/reMenuRefresh", false); 96 },
187 againAddSldy({ 97 //层户右键菜单显隐
188 bsmSqyw: this.sqywInfo.bsmSqyw, 98 lpbChVisible: false,
189 bsmSlsq: this.sqywInfo.bsmSlsq, 99 //右键菜单定位位置
190 bdcdysz: this.bsmList, 100 lpbChLeft: 100,
191 sjlx: "houses", 101 lpbChTop: 100,
192 }) 102 // 改变户选中状态
193 .then((res) => { 103 changeChoosedObj: {
194 this.loading = false; 104 bsms: [],
105 color: ''
106 },
107 // 选中户bsm合集
108 bsmList: [],
109 loading: false,
110 };
111 },
112 mounted () {
113 this.scyclx ? this.getLpb(this.zrzbsm, this.scyclx) : this.getLpb(this.zrzbsm);
114 window.lpbContent = this;
115 },
116 methods: {
117 /**
118 * @description: 获取当前楼盘表选中户信息
119 * @param {Array} bsmList
120 * @author: renchao
121 */
122 getBsmList (bsmList, compFlag) {
123 // 根据本次传入的组件标识删除之前对应组件标识存入hbsmList的数据
124 this.bsmList = this.bsmList.filter((i) => i.flag != compFlag)
125 // 合并本次数据
126 this.bsmList = this.bsmList.concat([...new Map(bsmList.map(item => [item.bdcdyh, item])).values()]);
127 // })
128 },
129 /**
130 * @description: 保存当前楼盘表
131 * @author: renchao
132 */
133 saveLpb () {
134 if (this.bsmList.length == 0) {
135 this.$message.error("请至少选择一条数据");
136 return;
137 }
138 this.loading = true;
139 store.dispatch('user/reMenuRefresh', false)
140 againAddSldy({
141 bsmSqyw: this.sqywInfo.bsmSqyw,
142 bsmSlsq: this.sqywInfo.bsmSlsq,
143 bdcdysz: this.bsmList,
144 sjlx: "houses"
145 }).then((res) => {
146 this.loading = false
195 if (res.code == 200) { 147 if (res.code == 200) {
196 this.$message({ 148 this.$message({
197 showClose: true, 149 showClose: true,
198 message: "添加成功", 150 message: '添加成功',
199 type: "success", 151 type: 'success'
200 }); 152 })
153 store.dispatch('user/reMenuRefresh', true)
201 if (!this.isJump) { 154 if (!this.isJump) {
202 this.jump(res.result, this.sqywInfo.djywbm); 155 this.jump(res.result, this.sqywInfo.djywbm)
203 } 156 }
204 store.dispatch("user/refreshPage", true);
205 //this.close();
206 this.$popupCacel(); 157 this.$popupCacel();
207 } else { 158 } else {
208 if (res.result && res.result.length > 0) { 159 if (res.result && res.result.length > 0) {
209 this.$popup("申请错误明细", "components/ywdialog", { 160 this.$popup("申请错误明细", "components/ywdialog", { width: '36%', formData: { result: res.result } })
210 width: "36%",
211 formData: { result: res.result },
212 });
213 } else { 161 } else {
214 if (res.result && res.result.length > 0) { 162 this.$popup("申请错误明细", "components/ywdialog", { width: '36%', formData: { message: res.message } })
215 this.$popup("申请错误明细", "components/ywdialog", {
216 width: "36%",
217 formData: { result: res.result },
218 });
219 } else {
220 this.$popup("申请错误明细", "components/ywdialog", {
221 width: "36%",
222 formData: { message: res.message },
223 });
224 }
225 } 163 }
226 } 164 }
165 }).catch(() => {
166 this.loading = false
227 }) 167 })
228 .catch(() => { 168 // todo 调用保存接口 传入参数待定
229 this.loading = false; 169 //console.log(this.bsmList,'this.bsmList');
230 }); 170 // 保存成功后关闭弹框
231 // todo 调用保存接口 传入参数待定 171 //this.$popupCacel()
232 //console.log(this.bsmList,'this.bsmList'); 172 },
233 // 保存成功后关闭弹框 173 // 改变户选中状态
234 //this.$popupCacel() 174 /**
235 }, 175 * @description: 改变户选中状态
236 // 改变户选中状态 176 * @param {*} bsms
237 /** 177 * @param {*} color
238 * @description: 改变户选中状态 178 * @author: renchao
239 * @param {*} bsms 179 */
240 * @param {*} color 180 changeChoosed (bsms, color) {
241 * @author: renchao 181 this.changeChoosedObj.bsms = bsms;
242 */ 182 this.changeChoosedObj.color = color;
243 changeChoosed(bsms, color) { 183 },
244 this.changeChoosedObj.bsms = bsms; 184 /**
245 this.changeChoosedObj.color = color; 185 * @description: clearChangeChoosedObj
246 }, 186 * @author: renchao
247 /** 187 */
248 * @description: clearChangeChoosedObj 188 clearChangeChoosedObj () {
249 * @author: renchao 189 this.changeChoosedObj.bsms = [];
250 */ 190 },
251 clearChangeChoosedObj() { 191 //全选户
252 this.changeChoosedObj.bsms = []; 192 /**
253 }, 193 * @description: 全选户
254 //全选户 194 * @param {*} val
255 /** 195 * @author: renchao
256 * @description: 全选户 196 */
257 * @param {*} val 197 zdySelectAll (val) {
258 * @author: renchao 198 this.selectAllObj.selectAll = val;
259 */ 199 },
260 zdySelectAll(val) { 200 //获取楼盘表数据
261 this.selectAllObj.selectAll = val; 201 /**
262 }, 202 * @description: 获取楼盘表数据
263 //获取楼盘表数据 203 * @param {*} zrzbsm
264 /** 204 * @param {*} scyclx
265 * @description: 获取楼盘表数据 205 * @param {*} actual
266 * @param {*} zrzbsm 206 * @author: renchao
267 * @param {*} scyclx 207 */
268 * @param {*} actual 208 getLpb (zrzbsm, scyclx, actual) {
269 * @author: renchao
270 */
271 getLpb(zrzbsm, scyclx, actual) {
272 if (!zrzbsm) {
273 this.$message({
274 message: "暂无楼盘表",
275 type: "warning",
276 });
277 } else {
278 getLpb(zrzbsm, scyclx).then((res) => { 209 getLpb(zrzbsm, scyclx).then((res) => {
279 if (res.code == 200) { 210 if (res.code == 200) {
280 if (scyclx) { 211 if (scyclx) {
281 if (res.result.syclx == "1") { 212 if (res.result.syclx == "1") {
282 res.result.lpb.ljzs = res.result.lpb.ljzs.sort( 213 res.result.lpb.ljzs = res.result.lpb.ljzs.sort(this.compare("place"));
283 this.compare("place") 214 this.lpbData = res.result.lpb == null ? this.lpbData : res.result.lpb;
284 );
285 this.lpbData =
286 res.result.lpb == null ? this.lpbData : res.result.lpb;
287 } 215 }
288 } else { 216 } else {
289 this.$message({ 217 res.result.lpb.ljzs = res.result.lpb.ljzs.sort(this.compare("place"));
290 message: res.message, 218 this.lpbData = res.result.lpb == null ? this.lpbData : res.result.lpb;
291 type: "warning",
292 });
293 } 219 }
294 } else { 220 } else {
295 this.$message({ 221 this.$message({
...@@ -298,194 +224,185 @@ export default { ...@@ -298,194 +224,185 @@ export default {
298 }); 224 });
299 } 225 }
300 }); 226 });
301 } 227 },
302 }, 228 //户右键点击事件
303 //户右键点击事件 229 /**
304 /** 230 * @description: 户右键点击事件
305 * @description: 户右键点击事件 231 * @param {*} e
306 * @param {*} e 232 * @param {*} item
307 * @param {*} item 233 * @param {*} type
308 * @param {*} type 234 * @author: renchao
309 * @author: renchao 235 */
310 */ 236 openMenu (e, item, type) {
311 openMenu(e, item, type) { 237 this.lpbChLeft = e.pageX - 96;
312 this.lpbChLeft = e.pageX - 96; 238 this.lpbChTop = e.pageY - 23;
313 this.lpbChTop = e.pageY - 23; 239 // this.lpbChVisible = true;
314 // this.lpbChVisible = true; 240 },
315 }, 241 //关闭户右键菜单
316 //关闭户右键菜单 242 /**
317 /** 243 * @description: 关闭户右键菜单
318 * @description: 关闭户右键菜单 244 * @author: renchao
319 * @author: renchao 245 */
320 */ 246 closeMenu () {
321 closeMenu() { 247 this.lpbChVisible = false;
322 this.lpbChVisible = false; 248 },
323 }, 249 //右键菜单点击
324 //右键菜单点击 250 /**
325 /** 251 * @description: 右键菜单点击
326 * @description: 右键菜单点击 252 * @author: renchao
327 * @author: renchao 253 */
328 */ 254 menuClick () {
329 menuClick() { 255 this.closeMenu();
330 this.closeMenu(); 256 },
331 }, 257 /**
332 /** 258 * @description: compare
333 * @description: compare 259 * @param {*} property
334 * @param {*} property 260 * @author: renchao
335 * @author: renchao 261 */
336 */ 262 compare (property) {
337 compare(property) { 263 return function (a, b) {
338 return function (a, b) { 264 var value1 = a[property];
339 var value1 = a[property]; 265 var value2 = b[property];
340 var value2 = b[property]; 266 return value1 - value2;
341 return value1 - value2; 267 };
342 }; 268 },
343 }, 269 /**
344 /** 270 * @description: submitForm
345 * @description: submitForm 271 * @author: renchao
346 * @author: renchao 272 */
347 */ 273 submitForm () {
348 submitForm() { 274 if (this.bsmList.length == 0) {
349 if (this.bsmList.length == 0) { 275 this.$message.error("请至少选择一条数据");
350 this.$message.error("请至少选择一条数据"); 276 return;
351 return; 277 }
352 } 278 this.loading = true;
353 this.loading = true; 279 startBusinessFlow({
354 startBusinessFlow({ 280 bsmSqyw: this.sqywInfo.bsmSqyw,
355 bsmSqyw: this.sqywInfo.bsmSqyw, 281 bdcdysz: this.bsmList,
356 bdcdysz: this.bsmList, 282 }).then((res) => {
357 }) 283 this.loading = false
358 .then((res) => {
359 this.loading = false;
360 if (res.code == 200) { 284 if (res.code == 200) {
361 this.$message({ 285 this.$message({
362 showClose: true, 286 showClose: true,
363 message: "发起申请成功", 287 message: '发起申请成功',
364 type: "success", 288 type: 'success'
365 }); 289 })
366 if (!this.isJump) { 290 if (!this.isJump) {
367 this.jump(res.result, this.sqywInfo.djywbm); 291 this.jump(res.result, this.sqywInfo.djywbm)
368 } else { 292 } else {
369 store.dispatch("user/refreshPage", true); 293 store.dispatch('user/refreshPage', true);
370 } 294 }
371 this.close(); 295 this.close()
372 } else { 296 } else {
373 if (res.result && res.result.length > 0) { 297 if (res.result && res.result.length > 0) {
374 this.$popup("申请错误明细", "components/ywdialog", { 298 this.$popup("申请错误明细", "components/ywdialog", { width: '36%', formData: { result: res.result } })
375 width: "36%",
376 formData: { result: res.result },
377 });
378 } else { 299 } else {
379 this.$popup("申请错误明细", "components/ywdialog", { 300 this.$popup("申请错误明细", "components/ywdialog", { width: '36%', formData: { message: res.message } })
380 width: "36%",
381 formData: { message: res.message },
382 });
383 } 301 }
384 } 302 }
303 }).catch(() => {
304 this.loading = false
385 }) 305 })
386 .catch(() => { 306 },
387 this.loading = false; 307 /**
388 }); 308 * @description: close
389 }, 309 * @param {*} val
390 /** 310 * @author: renchao
391 * @description: close 311 */
392 * @param {*} val 312 close () {
393 * @author: renchao 313 ywPopupCacel()
394 */ 314 },
395 close() {
396 ywPopupCacel();
397 }, 315 },
398 }, 316 computed: {
399 computed: { 317 lpbContentHeight () {
400 lpbContentHeight() { 318 return this.onlyShow ? 32 : 76
401 return this.onlyShow ? 32 : 76; 319 // return 76
402 // return 76 320 }
403 }, 321 },
404 }, 322 watch: {
405 watch: { 323 //户右键菜单显示时,监听到鼠标点击时关闭户右键菜单
406 //户右键菜单显示时,监听到鼠标点击时关闭户右键菜单 324 lpbChVisible (value) {
407 lpbChVisible(value) { 325 if (value) {
408 if (value) { 326 document.body.addEventListener("click", this.closeMenu);
409 document.body.addEventListener("click", this.closeMenu); 327 } else {
410 } else { 328 document.body.removeEventListener("click", this.closeMenu);
411 document.body.removeEventListener("click", this.closeMenu); 329 }
412 } 330 }
413 }, 331 },
414 }, 332 };
415 };
416 </script> 333 </script>
417 <style scoped lang="scss"> 334 <style scoped lang="scss">
418 .lpbContent-wrap { 335 .lpbContent-wrap {
419 width: 100%;
420 height: 100%;
421 overflow: hidden;
422 .lpbContent {
423 width: 100%; 336 width: 100%;
424 position: relative; 337 height: 100%;
425 overflow: scroll; 338 overflow: hidden;
426 -webkit-user-select: none; 339 .lpbContent {
427 -moz-user-select: none; 340 width: 100%;
428 -ms-user-select: none; 341 position: relative;
429 user-select: none; 342 overflow: scroll;
430 display: flex; 343 -webkit-user-select: none;
431 flex-direction: column-reverse; 344 -moz-user-select: none;
432 box-sizing: border-box; 345 -ms-user-select: none;
433 padding-top: 20px; 346 user-select: none;
434 .ch-zdy-wrap {
435 display: flex; 347 display: flex;
436 flex-direction: row; 348 flex-direction: column-reverse;
349 box-sizing: border-box;
350 padding-top: 20px;
351 .ch-zdy-wrap {
352 display: flex;
353 flex-direction: row;
354 }
437 } 355 }
438 } 356 .lpb-xmmc {
439 .lpb-xmmc { 357 border: 0;
440 border: 0; 358 border-top: 1px solid #e6e6e6;
441 border-top: 1px solid #e6e6e6; 359 }
442 } 360 .save-btn {
443 .save-btn { 361 display: block;
444 display: block; 362 margin: 5px auto;
445 margin: 5px auto; 363 }
446 } 364 // 自定义右键菜单样式
447 // 自定义右键菜单样式 365 .contextmenu {
448 .contextmenu {
449 margin: 0;
450 background: #fff;
451 width: 92px;
452 z-index: 3000;
453 position: fixed;
454 list-style-type: none;
455 padding: 5px 0;
456 border-radius: 4px;
457 font-size: 12px;
458 font-weight: 400;
459 color: #333;
460 box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, 0.3);
461 li {
462 margin: 0; 366 margin: 0;
463 padding: 7px 16px; 367 background: #fff;
464 cursor: pointer; 368 width: 92px;
465 position: relative; 369 z-index: 3000;
466 .childUl { 370 position: fixed;
467 display: none; 371 list-style-type: none;
468 position: absolute; 372 padding: 5px 0;
469 left: 92px !important; 373 border-radius: 4px;
470 top: 0 !important; 374 font-size: 12px;
471 li { 375 font-weight: 400;
472 width: 76px; 376 color: #333;
377 box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, 0.3);
378 li {
379 margin: 0;
380 padding: 7px 16px;
381 cursor: pointer;
382 position: relative;
383 .childUl {
384 display: none;
385 position: absolute;
386 left: 92px !important;
387 top: 0 !important;
388 li {
389 width: 76px;
390 }
473 } 391 }
474 } 392 }
475 } 393 li:hover {
476 li:hover { 394 background: #eee;
477 background: #eee; 395 > .childUl {
478 > .childUl { 396 display: block;
479 display: block; 397 }
398 }
399 .noEdit {
400 color: #e6e6e6;
401 cursor: not-allowed;
402 }
403 .noEdit:hover {
404 background: #ffffff;
480 } 405 }
481 }
482 .noEdit {
483 color: #e6e6e6;
484 cursor: not-allowed;
485 }
486 .noEdit:hover {
487 background: #ffffff;
488 } 406 }
489 } 407 }
490 }
491 </style> 408 </style>
......