dept_rank.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669
  1. <template>
  2. <div>
  3. <div class="diy_tip_bg" v-show="tips_show">
  4. <el-alert class="diy-tip" @close="tips_close" type="success" description><p>排名不包含初始分和工龄分</p></el-alert>
  5. </div>
  6. <div class="all" style="padding: 20px;">
  7. <el-form :inline="true">
  8. <el-form-item label="时间">
  9. <el-col :span="8">
  10. <el-select size="medium" v-model="time_type" placeholder="请选择分类" style="width: 100px;">
  11. <el-option v-for="item in time_types" :key="item.label" :label="item.label" :value="item.value"></el-option>
  12. </el-select>
  13. </el-col>
  14. <el-col :span="16">
  15. <el-date-picker
  16. size="medium"
  17. v-show="time_type == '2'"
  18. v-model="export_from.year"
  19. class="date-picker-width"
  20. type="year"
  21. value-format="yyyy"
  22. placeholder="选择年份排名"
  23. ></el-date-picker>
  24. <el-date-picker
  25. size="medium"
  26. v-show="time_type == '1' || time_type == '月份'"
  27. v-model="export_from.month"
  28. class="date-picker-width"
  29. type="month"
  30. value-format="yyyy-MM"
  31. placeholder="选择月份排名"
  32. ></el-date-picker>
  33. <season v-if="time_type == '3'" :isActive="true" class="date-picker-width" @confirm="export_quarter_confirm"></season>
  34. </el-col>
  35. </el-form-item>
  36. <el-form-item label="部门">
  37. <el-cascader
  38. size="medium"
  39. class="date-picker-width"
  40. v-model="dept_name"
  41. :options="dept_tree"
  42. :props="{ checkStrictly: true,value:'id',label:'name',children:'_child'}"
  43. ref="dept"
  44. clearable
  45. filterable
  46. placeholder="全公司"
  47. ></el-cascader>
  48. <!-- 这是选部门多选。如果更改需求用这个: -->
  49. <!-- <el-cascader
  50. v-model="dept_name"
  51. :options="dept_tree"
  52. :props="{ multiple: true, checkStrictly: true }"
  53. class="date-picker-width"
  54. ref="dept"
  55. clearable
  56. collapse-tags
  57. placeholder="全公司"
  58. ></el-cascader>-->
  59. </el-form-item>
  60. <el-form-item label="谁不参与排名">
  61. <el-select v-model="formData.exclusion" size="medium" multiple filterable collapse-tags placeholder="请选择员工">
  62. <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
  63. </el-select>
  64. </el-form-item>
  65. <!-- <el-form-item label="规则分类">
  66. <el-cascader
  67. size="medium"
  68. class="date-picker-width"
  69. v-model="rule_id"
  70. :options="rule_trees"
  71. :props="props"
  72. ref="rule"
  73. clearable
  74. collapse-tags
  75. placeholder="请选择规则分类"
  76. ></el-cascader>
  77. </el-form-item> -->
  78. <el-form-item label="积分分类">
  79. <el-select class="date-picker-width" size="medium" v-model="formData.pt_id" clearable placeholder="请选择积分分类">
  80. <el-option v-for="item in point_types" :key="item.name" :label="item.name" :value="item.id"></el-option>
  81. </el-select>
  82. </el-form-item>
  83. <el-form-item label="人员">
  84. <el-select size="medium" v-model="formData.position" style="width:150px" placeholder="请选择">
  85. <el-option v-for="item in positions" :key="item.id" :label="item.name" :value="item.age"></el-option>
  86. </el-select>
  87. </el-form-item>
  88. <el-form-item>
  89. <el-checkbox v-model="sort" size="medium" label="排名由低到高" border></el-checkbox>
  90. <el-button type="primary" size="medium" @click="selectBtn" style="margin-left:20px">查询</el-button>
  91. </el-form-item>
  92. <el-form-item>
  93. <el-button type="primary" size="medium" plain @click="dialogVisible = true">导出排名</el-button>
  94. <!-- <el-button type="primary" size="medium" plain @click="byRanking('byRankingData')">轮播排名</el-button> -->
  95. </el-form-item>
  96. </el-form>
  97. <el-table :data="list" style="width: 100%" v-loading="loading">
  98. <el-table-column label="名次" width="80" align="center">
  99. <template slot-scope="scope">
  100. <img v-if="scope.row.rank === 1" src="@/assets/image/statistics_NO1.png" alt="" />
  101. <img v-if="scope.row.rank === 2" src="@/assets/image/statistics_NO2.png" alt="" />
  102. <img v-if="scope.row.rank === 3" src="@/assets/image/statistics_NO3.png" alt="" />
  103. <span v-if="scope.row.rank > 3">{{ scope.row.rank }}</span>
  104. </template>
  105. </el-table-column>
  106. <el-table-column label="姓名" align="left">
  107. <template slot-scope="scope">
  108. <div class="flex-box">
  109. <userImage class="fl" :user_name="scope.row.employee_name" :img_url="scope.row.employee_img_url" width="50px" height="50px"></userImage>
  110. <span style="line-height: 50px; padding-left: 10px;">{{ scope.row.employee_name }}</span>
  111. </div>
  112. </template>
  113. </el-table-column>
  114. <el-table-column :label="labelName" align="left" prop="point"></el-table-column>
  115. <template slot="empty">
  116. <div class="nopoint_box">
  117. <div class="noimg noperson"></div>
  118. <span class="title">没有对应的数据</span>
  119. </div>
  120. </template>
  121. </el-table>
  122. <center style="padding: 20px 0;">
  123. <el-pagination
  124. background
  125. @size-change="handleSizeChange"
  126. @current-change="handleCurrentChange"
  127. :page-sizes="[10, 20, 30, 40, 50, 100]"
  128. layout="total, sizes, prev, pager, next"
  129. :page-size="formData.page_size"
  130. :total="total"
  131. ></el-pagination>
  132. </center>
  133. </div>
  134. <!-- 导出弹窗 -->
  135. <el-dialog title="导出排名" :visible.sync="dialogVisible" width="730px" top="10%">
  136. <span style="font-size:15px">系统将按以下已选条件导出对应的排名报表</span>
  137. <el-form :inline="true">
  138. <div class="picker_er">
  139. <el-form-item label="时间">
  140. <el-date-picker
  141. v-model="Dc_Data.value1"
  142. type="daterange"
  143. size="medium"
  144. value-format="yyyy-MM-dd"
  145. format="yyyy-MM-dd"
  146. range-separator="至"
  147. start-placeholder="开始日期"
  148. end-placeholder="结束日期"
  149. ></el-date-picker>
  150. </el-form-item>
  151. <el-form-item label="人员" style="margin-left:30px">
  152. <el-select size="medium" v-model="Dc_Data.DC_position" style="width:150px" placeholder="请选择">
  153. <el-option v-for="item in positions" :key="item.id" :label="item.name" :value="item.age"></el-option>
  154. </el-select>
  155. </el-form-item>
  156. </div>
  157. <el-form-item label="部门">
  158. <el-cascader
  159. class="date-picker-width cascader_bm"
  160. v-model="Dc_Data.dept_name"
  161. :options="dept_tree"
  162. :props="{ checkStrictly: true,value:'id',label:'name',children:'_child'}"
  163. ref="dept2"
  164. size="medium"
  165. clearable
  166. filterable
  167. placeholder="全公司"
  168. ></el-cascader>
  169. </el-form-item>
  170. <el-form-item label="规则分类" style="margin-left:20px">
  171. <el-cascader
  172. class="date-picker-width"
  173. v-model="Dc_Data.rule_id"
  174. :options="rule_trees"
  175. :props="props"
  176. size="medium"
  177. ref="rule"
  178. clearable
  179. collapse-tags
  180. placeholder="请选择规则分类"
  181. ></el-cascader>
  182. </el-form-item>
  183. </el-form>
  184. <span slot="footer" class="dialog-footer">
  185. <el-button @click="dialogVisible = false" size="medium">取 消</el-button>
  186. <el-button type="primary" @click="exportExcel" size="medium">导 出</el-button>
  187. </span>
  188. </el-dialog>
  189. <!-- 轮播弹窗 -->
  190. <el-dialog title="轮播排名" :visible.sync="byRankingShow" width="500px" top="10%">
  191. <div>
  192. <el-form :inline="true" ref="byRankingData" :model="byRankingData" :rules="byRankingDataRules" label-width="90px">
  193. <el-form-item label="月份" prop="month">
  194. <el-date-picker v-model="byRankingData.month" size="medium" class="date-picker-width" type="month" value-format="yyyy-MM" placeholder="选择月份排名"></el-date-picker>
  195. </el-form-item>
  196. <el-form-item label="选择部门" prop="dept_id">
  197. <el-cascader
  198. size="medium"
  199. class="date-picker-width"
  200. v-model="byRankingData.dept_id"
  201. :options="dept_tree"
  202. :props="{ checkStrictly: true,value:'obj',label:'name',children:'_child'}"
  203. ref="dept1"
  204. clearable
  205. filterable
  206. placeholder="全公司"
  207. ></el-cascader>
  208. </el-form-item>
  209. <el-form-item label="人员范围" prop="position">
  210. <el-radio-group size="medium" v-model="byRankingData.position">
  211. <el-radio label="all">管理者和员工</el-radio>
  212. <el-radio label="manager">只看管理者</el-radio>
  213. <el-radio label="employee">只看员工</el-radio>
  214. </el-radio-group>
  215. </el-form-item>
  216. </el-form>
  217. </div>
  218. <span slot="footer">
  219. <el-button @click="byRankingShow = false" size="medium">取 消</el-button>
  220. <el-button type="primary" @click="swiperPage('byRankingData')" size="medium">开始轮播</el-button>
  221. </span>
  222. </el-dialog>
  223. </div>
  224. </template>
  225. <script>
  226. import moment from 'moment';
  227. import season from '@/components/season';
  228. export default {
  229. data() {
  230. return {
  231. Dc_Data: {
  232. //导出数据
  233. value1: '', //时间
  234. DC_position: '全部', //人员
  235. dept_name: [], //部门
  236. rule_id: [] //规则
  237. },
  238. dialogVisible: false,
  239. dept_name: [],
  240. dept_tree: [],
  241. loading: false,
  242. formData: {
  243. dept_id: '0',
  244. sort: 'DESC',
  245. pt_id: 3,
  246. time_type: 1,
  247. exclusion: [],
  248. page: 1,
  249. rule_id: [],
  250. page_size: 10,
  251. position: 0 //部门多选删除这个
  252. },
  253. total: null,
  254. rule_trees: null,
  255. rule_id: null,
  256. list: null,
  257. point_types:[],
  258. point_type: [],
  259. sort: false,
  260. time_types: [{ label: '月份', value: '1' }, { label: '年份', value: '2' }, { label: '季度', value: '3' }],
  261. props: { value: 'id', label: 'name', children: 'child', multiple: true },
  262. time_type: '月份',
  263. export_from: {
  264. year: '',
  265. month: moment().format('YYYY-MM'),
  266. quarter: ''
  267. },
  268. employee_map: JSON.parse(localStorage.getItem('SET_EMPLOYEE_MAP')),
  269. positions: [{ id: 0, age: 'all', name: '全部' }, { id: 1, age: 'manager', name: '管理者' }, { id: 2, age: 'employee', name: '员工' }],
  270. tips_show: false,
  271. byRankingShow: false,
  272. byRankingData: {
  273. month: '',
  274. dept_id: '',
  275. position: 'all'
  276. },
  277. byRankingDeptId: '',
  278. byRankingDataRules: {
  279. month: [{ required: true, message: '请选择月份', trigger: 'blur' }],
  280. dept_id: [{ required: true, message: '请选择部门', trigger: 'change' }],
  281. position: [{ required: true, message: '请选择人员范围', trigger: 'change' }]
  282. },
  283. labelName:'B分',
  284. };
  285. },
  286. watch: {
  287. sort(val) {
  288. if (val) {
  289. this.formData.sort = 'ASC';
  290. } else {
  291. this.formData.sort = 'DESC';
  292. }
  293. },
  294. dept_name(val) {
  295. if (val.length !== 0) {
  296. // 这是选部门多选。如果更改需求用这个:
  297. // let dept_id = [];
  298. // for (var i in val) {
  299. // dept_id.push(val[i][0]);
  300. // }
  301. // console.log(dept_id);
  302. // this.formData.dept_id = dept_id;//传入选中的部门ID,是数组
  303. this.formData.dept_id = val[val.length - 1];
  304. } else {
  305. this.formData.dept_id = 0;
  306. }
  307. this.$nextTick(() => {
  308. this.$refs.dept.dropDownVisible = false;
  309. this.getEmployeeList();
  310. });
  311. },
  312. 'byRankingData.dept_id'(val) {
  313. this.$refs.dept1.dropDownVisible = false;
  314. },
  315. 'Dc_Data.dept_name': function(val) {
  316. this.$refs.dept2.dropDownVisible = false;
  317. },
  318. rule_id(val) {
  319. if (val.length !== 0) {
  320. this.formData.rule_id = [];
  321. val.forEach((element, index) => {
  322. this.formData.rule_id.push(element[element.length - 1]);
  323. });
  324. } else {
  325. this.formData.rule_id !== undefined ? delete this.formData.rule_id : '';
  326. }
  327. }
  328. },
  329. components: { season },
  330. methods: {
  331. // 轮播页面跳转
  332. swiperPage(formName) {
  333. this.$refs[formName].validate(valid => {
  334. if (valid) {
  335. var { href } = this.$router.resolve({
  336. path: '/deptRankSwiper',
  337. query: {
  338. month: this.byRankingData.month || 0,
  339. type: '2',
  340. position: this.byRankingData.position,
  341. dept_id: this.byRankingData.dept_id[0].id,
  342. dept_name:this.byRankingData.dept_id[0].name,
  343. pt_id: 3
  344. }
  345. });
  346. window.open(href);
  347. }
  348. });
  349. },
  350. // 轮播排名弹窗
  351. byRanking() {
  352. this.byRankingData={
  353. month: '',
  354. dept_id: '',
  355. position: 'all'
  356. },
  357. this.byRankingShow = true;
  358. },
  359. // 提示信息
  360. tips_close() {
  361. localStorage.setItem('dept_rank_tips', 'true');
  362. this.tips_show = false;
  363. },
  364. // 查询
  365. selectBtn() {
  366. switch (this.time_type) {
  367. case '1':
  368. this.$set(this.formData, 'month', this.export_from.month);
  369. this.formData.month ? '' : delete this.formData.month;
  370. break;
  371. case '2':
  372. this.$set(this.formData, 'year', this.export_from.year);
  373. this.formData.year ? '' : delete this.formData.year;
  374. break;
  375. case '月份':
  376. this.$set(this.formData, 'month', this.export_from.month);
  377. this.formData.month ? '' : delete this.formData.month;
  378. break;
  379. case '3':
  380. this.$set(this.formData, 'quarter', this.export_from.quarter);
  381. this.formData.quarter ? '' : delete this.formData.quarter;
  382. break;
  383. default:
  384. break;
  385. }
  386. let data = JSON.parse(JSON.stringify(this.formData));
  387. var employee_ids =data.exclusion.join(',');
  388. data.exclusion=employee_ids;
  389. data.page = 1;
  390. data.page_size = 10;
  391. this.$nextTick(() => {
  392. this.get_list(data);
  393. });
  394. },
  395. // 页面变更
  396. handleCurrentChange(val) {
  397. this.formData.page = val;
  398. this.get_list(this.formData);
  399. },
  400. handleSizeChange(val) {
  401. this.formData.page_size = val;
  402. this.get_list(this.formData);
  403. },
  404. // 选择时间
  405. export_quarter_confirm(val) {
  406. this.export_from.quarter = val;
  407. },
  408. //请求数据
  409. get_list(data, bool) {
  410. if (this.time_type == 1) {
  411. delete data.year;
  412. delete data.quarter;
  413. } else if (this.time_type == 2) {
  414. delete data.month;
  415. delete data.quarter;
  416. } else if (this.time_type == '月份') {
  417. delete data.year;
  418. delete data.quarter;
  419. } else if (this.time_type == 3) {
  420. delete data.month;
  421. delete data.year;
  422. }
  423. if (bool) {
  424. data.month = moment().format('YYYY-MM');
  425. }
  426. let self = this;
  427. self.loading = true;
  428. data ? '' : (data = this.formData);
  429. data.position = data.position == 'manager' ? 'manager' : data.position == 'employee' ? 'employee' : 'all';
  430. self.$axios('get','/api/integral/statistics/ranking',data,'v2').then(res => {
  431. this.labelName=this.formData.pt_id==2? 'A分':'B分';
  432. if (res.data.code == 1) {
  433. self.list = res.data.data.list;
  434. self.total = res.data.data.total;
  435. } else {
  436. self.$message.error(res.data.data.msg);
  437. }
  438. })
  439. .finally(() => {
  440. self.loading = false;
  441. });
  442. },
  443. // 获取积分规则
  444. get_rule_tree() {
  445. this.$axios('get','/api/integral/rule/trees',{ cycle_type: '1'}).then(res => {
  446. this.rule_trees =this.getRuleTreeData(res.data.data.rule_tree);
  447. });
  448. },
  449. // 规则递归 children
  450. getRuleTreeData(data) {
  451. for (var i = 0; i < data.length; i++) {
  452. if (data[i].child.length < 1) {
  453. // children若为空数组,则将children设为undefined
  454. data[i].child = undefined;
  455. } else {
  456. // children若不为空数组,则继续 递归调用 本方法
  457. this.getRuleTreeData(data[i].child);
  458. }
  459. }
  460. return data;
  461. },
  462. // 递归判断列表,把最后的children设为undefined
  463. getTreeData(data) {
  464. for (var i = 0; i < data.length; i++) {
  465. data[i].obj={id:data[i].id,name:data[i].name};
  466. if (data[i]._child.length < 1) {
  467. // children若为空数组,则将children设为undefined
  468. data[i]._child = undefined;
  469. } else {
  470. // children若不为空数组,则继续 递归调用 本方法
  471. this.getTreeData(data[i]._child);
  472. }
  473. }
  474. return data;
  475. },
  476. getEmployeeList() {
  477. let self = this;
  478. self.$axios('get','/api/employee/list',{ dept_id: self.formData.dept_id }).then(res => {
  479. if (res.data.code == 1) {
  480. this.employee_map = res.data.data.list;
  481. } else {
  482. self.$message.error(res.data.data.msg);
  483. }
  484. })
  485. },
  486. exportExcel() {
  487. //人员
  488. this.Dc_Data.DC_position =this.Dc_Data.DC_position == 'manager' ? 'manager' : this.Dc_Data.DC_position == 'employee' ? 'employee' : this.Dc_Data.DC_position == '全部' ? 'all' : 'all';
  489. //部门
  490. let dept_name;
  491. for (let i in this.Dc_Data.dept_name) {
  492. dept_name = this.Dc_Data.dept_name[i];
  493. }
  494. this.Dc_Data.dept_name = dept_name;
  495. //规则
  496. let rule_id = [];
  497. for (let i in this.Dc_Data.rule_id) {
  498. for (let a in this.Dc_Data.rule_id[i]) {
  499. rule_id.push(this.Dc_Data.rule_id[i][a]);
  500. }
  501. }
  502. this.Dc_Data.rule_id = rule_id;
  503. let data = '';
  504. if (this.Dc_Data.value1) {
  505. data += '&start_date=' + this.Dc_Data.value1[0];
  506. data += '&end_date=' + this.Dc_Data.value1[1];
  507. }
  508. data += '&position=' + this.Dc_Data.DC_position;
  509. this.Dc_Data.dept_name > 0 ? (data += '&dept_id=' + this.Dc_Data.dept_name) : (data += '&dept_id=0');
  510. if (this.Dc_Data.rule_id.length > 0) {
  511. data += '&rule_id=' + this.Dc_Data.rule_id;
  512. }
  513. window.open(process.env.VUE_APP_BASE_API + 'api/download/ranking/v2?pt_id='+this.formData.pt_id+'&employee_id='+this.$getUserData().id+ data, '_blank');
  514. this.dialogVisible = false;
  515. },
  516. //获取部门
  517. getDepartment() {
  518. this.$axios('get','/api/department/tree').then(res => {
  519. this.dept_tree =this.getTreeData(res.data.data.list);
  520. });
  521. },
  522. },
  523. mounted() {
  524. this.point_types=this.$getTyps().slice(1);
  525. this.tips_show = JSON.parse(localStorage.getItem('dept_rank_tips')) ? false : true;
  526. this.getDepartment();
  527. this.getEmployeeList();
  528. this.get_list(this.formData, true);
  529. this.get_rule_tree();
  530. }
  531. };
  532. </script>
  533. <style scoped lang="scss">
  534. .search_box {
  535. ::v-deep button:active {
  536. background: #26a2ff;
  537. }
  538. ::v-deep button:active .el-icon-search {
  539. color: #fff;
  540. }
  541. }
  542. .date-picker-width {
  543. width: 100% !important;
  544. }
  545. .color_green {
  546. color: #67c23a;
  547. }
  548. .nopoint_box {
  549. display: inline-block;
  550. text-align: center;
  551. width: 100%;
  552. margin-bottom: 10px;
  553. }
  554. .noimg {
  555. display: inline-block;
  556. width: 110px;
  557. height: 110px;
  558. margin: 22px auto 16px;
  559. /* background:url("/static/images/nodata_default.png") no-repeat center; */
  560. background-size: 99%;
  561. }
  562. .noperson {
  563. display: inline-block;
  564. width: 110px;
  565. height: 110px;
  566. line-height: none;
  567. margin: 22px auto 16px;
  568. background: url('/static/images/noperson_default.png') no-repeat center;
  569. background-size: 99%;
  570. }
  571. .title {
  572. display: block;
  573. text-align: center;
  574. font-size: 12px !important;
  575. line-height: 30px;
  576. color: #909399 !important;
  577. padding: 0;
  578. }
  579. .nopoint_box a {
  580. color: #26a2ff;
  581. }
  582. .chart_content {
  583. .chart-legend__wrap {
  584. text-align: right;
  585. padding: 20px;
  586. padding-right: 50px;
  587. & .chart-legend__pink {
  588. position: relative;
  589. padding-left: 12px;
  590. padding-right: 5px;
  591. &:after {
  592. content: '';
  593. position: absolute;
  594. margin-top: -2px;
  595. top: 35%;
  596. left: 0;
  597. width: 8px;
  598. height: 8px;
  599. background: #f56c6c;
  600. border-radius: 100%;
  601. }
  602. }
  603. & .chart-legend__green {
  604. position: relative;
  605. padding-left: 12px;
  606. &:after {
  607. content: '';
  608. position: absolute;
  609. margin-top: -2px;
  610. top: 35%;
  611. left: 0;
  612. width: 8px;
  613. height: 8px;
  614. background: #53b87f;
  615. border-radius: 100%;
  616. }
  617. }
  618. }
  619. }
  620. .drawer_title {
  621. font-size: 18px;
  622. padding: 20px;
  623. }
  624. .manager_statistics_box {
  625. background-color: #ffffff;
  626. padding: 20px;
  627. min-height: calc(100vh - 160px);
  628. ::v-deep .el-row .el-checkbox .el-checkbox__label {
  629. line-height: 20px;
  630. }
  631. }
  632. .diy_tip_bg {
  633. background: #f5f6f9;
  634. overflow: hidden;
  635. .diy-tip {
  636. margin-bottom: 15px;
  637. border: 1px solid #67c23a;
  638. padding: 20px 16px;
  639. p {
  640. color: #67c23a !important;
  641. font-size: 14px;
  642. margin: 0 !important;
  643. padding: 4px 0;
  644. }
  645. }
  646. }
  647. ::v-deep .el-dialog {
  648. top: 21%;
  649. }
  650. .picker_er {
  651. margin-top: 20px;
  652. }
  653. .el-range-editor--medium.el-input__inner {
  654. width: 280px;
  655. }
  656. ::v-deep .el-cascader .el-input .el-input__inner {
  657. width: 150px;
  658. }
  659. .el-checkbox.is-bordered.el-checkbox--medium {
  660. padding: 9px 20px 7px 10px;
  661. }
  662. </style>
  663. <!-- -->