manager_statistics.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742
  1. <template>
  2. <div>
  3. <div class="all wlj">
  4. <el-tabs v-model="activeName" type="card"><!-- 奖扣完成情况 -->
  5. <el-tab-pane label="奖扣完成情况" name="second">
  6. <el-form :model="condition" :inline="true" ref="formData">
  7. <!-- 部门 -->
  8. <el-form-item label="部门">
  9. <el-cascader
  10. size="medium"
  11. class="date-picker-width"
  12. v-model="dept_name_xq_xq"
  13. :options="dept_tree"
  14. @change="get_last_dept_null"
  15. :props="{ checkStrictly: true,value:'id',label:'name',children:'_child'}"
  16. ref="dept"
  17. clearable
  18. filterable
  19. change-on-select
  20. placeholder="全公司"
  21. ></el-cascader>
  22. </el-form-item>
  23. <!-- 时间 -->
  24. <el-form-item label="时间">
  25. <el-date-picker
  26. class="date-picker-width"
  27. v-model="condition.month"
  28. clearable
  29. size="medium"
  30. width="100%"
  31. type="month"
  32. placeholder="请选择月份"
  33. value-format="yyyy-MM"
  34. ></el-date-picker>
  35. </el-form-item>
  36. <!-- 搜索框 -->
  37. <el-form-item style="margin-top: 2px;">
  38. <el-input
  39. v-model="condition.keyword"
  40. placeholder="输入同事姓名"
  41. max="200"
  42. size="medium"
  43. @keyup.enter.native="keyWordSelect"
  44. class="persons_name"
  45. >
  46. <el-button slot="append" size="medium" icon="el-icon-search" @click='search_box'></el-button>
  47. </el-input>
  48. </el-form-item>
  49. <!-- 达标选项 -->
  50. <br>
  51. <el-form-item>
  52. <el-checkbox v-model="allPass" size="medium" label="只看全部达标的"></el-checkbox>
  53. </el-form-item>
  54. <!-- 导出报表 -->
  55. <el-form-item>
  56. <el-button type="primary" plain @click="exportExcel" size="medium" style="margin-left:20px">导出报表</el-button>
  57. </el-form-item>
  58. </el-form>
  59. <el-table :data="last" style="width: 100%" v-loading="loading" >
  60. <el-table-column label="管理者">
  61. <template slot-scope="scope">
  62. <userImage
  63. class="fl"
  64. :id="scope.row.id"
  65. :user_name="scope.row.name"
  66. :img_url="scope.row.img_url"
  67. width="50px"
  68. height="50px"
  69. ></userImage>
  70. <span
  71. style=" margin-left: 10px; line-height: 50px; display: inline-block;"
  72. >{{ scope.row.name }}</span>
  73. </template>
  74. </el-table-column>
  75. <el-table-column label="奖分" prop="scope_count">
  76. <template slot-scope="scope">
  77. <b>{{scope.row.reward.point}}&nbsp;</b>
  78. <span :class="scope.row.reward.status == 1?'color_green':''">{{scope.row.reward.status==1?'达标':''}}</span><br/>
  79. <span class="span_h">奖分目标 {{scope.row.reward.target}}</span>
  80. </template>
  81. </el-table-column>
  82. <el-table-column label="扣分" prop="reward_count">
  83. <template slot-scope="scope">
  84. <b>{{scope.row.deduction.point}}&nbsp;</b>
  85. <span :class="scope.row.deduction.status == 1?'color_green':''">{{scope.row.deduction.status==1?'达标':''}}</span><br/>
  86. <span class="span_h">扣分目标 {{scope.row.deduction.target}}</span>
  87. </template>
  88. </el-table-column>
  89. <el-table-column label="奖扣比例" prop="deduct_count">
  90. <template slot-scope="scope">
  91. <div v-if="scope.row.ratio.enable == 1">
  92. <b>{{scope.row.ratio.reward_ratio}}&nbsp;:1 </b>
  93. <span :class="scope.row.ratio.status == 1?'color_green':''">{{scope.row.ratio.status==1?'达标':''}}</span><br/>
  94. <span class="span_h">比例目标 小于 {{scope.row.ratio.target}}<b>:</b>&nbsp;1</span>
  95. </div>
  96. <div v-else style="padding-left:21px"> —</div>
  97. </template>
  98. </el-table-column>
  99. <el-table-column label="人次目标" prop="deduct_count">
  100. <template slot-scope="scope">
  101. <b>{{scope.row.exec.count}}&nbsp;</b>
  102. <span :class="scope.row.exec.status == 1?'color_green':''">{{scope.row.exec.status==1?'达标':''}}</span><br/>
  103. <span class="span_h">人次目标 {{scope.row.exec.target}}人次</span>
  104. </template>
  105. </el-table-column>
  106. <template slot="empty">
  107. <div class="nopoint_box">
  108. <div class="noimg noperson"></div>
  109. <span class="title">没有对应的数据</span>
  110. </div>
  111. </template>
  112. </el-table>
  113. <center style="padding: 20px 0;">
  114. <el-pagination
  115. background
  116. @size-change="handleSizeChange_xq"
  117. @current-change="handleCurrentChange_xq"
  118. :current-page="condition.page"
  119. layout="total, sizes, prev, pager, next"
  120. :page-size="condition.page_size"
  121. :total="totals"
  122. ></el-pagination>
  123. </center>
  124. </el-tab-pane>
  125. <el-tab-pane label="奖扣执行对比" name="first">
  126. <el-form :model="formData" :inline="true" ref="formData">
  127. <el-form-item label="部门">
  128. <el-cascader
  129. v-model="dept_name_xq"
  130. :options="dept_tree"
  131. @change="dept_null"
  132. :props="{ checkStrictly: true,value:'id',label:'name',children:'_child'}"
  133. ref="depts"
  134. filterable
  135. size="medium"
  136. change-on-select
  137. placeholder="全公司"
  138. clearable
  139. ></el-cascader>
  140. </el-form-item>
  141. <el-form-item label="时间">
  142. <el-date-picker
  143. class="date-picker-width"
  144. v-model="formData.month"
  145. clearable
  146. width="100%"
  147. type="month"
  148. size="medium"
  149. placeholder="请选择月份"
  150. value-format="yyyy-MM"
  151. ></el-date-picker>
  152. </el-form-item>
  153. </el-form>
  154. <el-table :data="list" style="width: 100%" v-loading="loading" @row-click="open_detail">
  155. <el-table-column label="管理者">
  156. <template slot-scope="scope">
  157. <userImage
  158. class="fl"
  159. :id="scope.row.id"
  160. :user_name="scope.row.name"
  161. :img_url="scope.row.img_url"
  162. width="50px"
  163. height="50px"
  164. ></userImage>
  165. <span
  166. style=" margin-left: 10px; line-height: 50px; display: inline-block;"
  167. >{{ scope.row.name }}</span>
  168. </template>
  169. </el-table-column>
  170. <el-table-column label="管理范围(人)" prop="scope_count"></el-table-column>
  171. <el-table-column label="人均奖分(次)" prop="reward_count"></el-table-column>
  172. <el-table-column label="人均扣分(次)" prop="deduct_count"></el-table-column>
  173. <template slot="empty">
  174. <div class="nopoint_box">
  175. <div class="noimg noperson"></div>
  176. <span class="title">没有对应的数据</span>
  177. </div>
  178. </template>
  179. </el-table>
  180. <center style="padding: 20px 0;">
  181. <el-pagination
  182. background
  183. @size-change="handleSizeChange"
  184. @current-change="handleCurrentChange"
  185. :current-page="formData.page"
  186. :page-sizes="[10, 20, 30, 40, 50, 100]"
  187. layout="total, sizes, prev, pager, next"
  188. :page-size="formData.page_size"
  189. :total="total"
  190. ></el-pagination>
  191. </center>
  192. <el-drawer size="500px" :visible.sync="detail_show" :with-header="false" direction="rtl">
  193. <el-button type="info" style="position: absolute; left: -100px;">test</el-button>
  194. <div class="drawer_title">
  195. {{item.name}}的奖扣统计
  196. <el-tooltip placement="top">
  197. <div slot="content" style="width: 300px">作为管理者,管理执行力是关键,每月按要求完成奖分和扣分任务。</div>
  198. <span class="tips">?</span>
  199. </el-tooltip>
  200. </div>
  201. <div class="chart_content">
  202. <el-row :gutter="20" v-if="personalData !== null" v-loading="personalData_loading">
  203. <el-col :span="4">
  204. <div class="dataItem">
  205. <p class="point">{{personalData.task.reward.point}}</p>
  206. <p>奖分</p>
  207. <p class="target">目标{{personalData.task.reward.target_point}}</p>
  208. </div>
  209. </el-col>
  210. <el-col :span="4">
  211. <div class="dataItem">
  212. <p class="point">{{personalData.task.deduction.point}}</p>
  213. <p>扣分</p>
  214. <p class="target">目标{{personalData.task.deduction.target_point}}</p>
  215. </div>
  216. </el-col>
  217. <el-col :span="5">
  218. <div class="dataItem">
  219. <p class="point">{{personalData.task.ratio.ratio}}:1</p>
  220. <p>奖扣比例</p>
  221. <p class="target">目标>{{personalData.task.ratio.target_ratio}}:1</p>
  222. </div>
  223. </el-col>
  224. <el-col :span="5">
  225. <div class="dataItem">
  226. <p class="point">{{personalData.task.exec.count}}</p>
  227. <p>奖扣人次</p>
  228. <p class="target">目标{{personalData.task.exec.target_count}}</p>
  229. </div>
  230. </el-col>
  231. </el-row>
  232. <div class="chart-legend__wrap">
  233. <span class="fl">月奖扣执行情况</span>
  234. <span class="chart-legend__pink">奖分</span>
  235. <span class="chart-legend__green">扣分</span>
  236. </div>
  237. <div id="situationChart" v-loading="echart_loading" style="height: 300px;"></div>
  238. <div class="chart-legend__wrap">
  239. <div class="fl">月奖扣人次</div>
  240. <span class="chart-legend__pink">奖分人次</span>
  241. <span class="chart-legend__green">扣分人次</span>
  242. </div>
  243. <div id="passengersChart" v-loading="echart_loading" style="height: 300px;"></div>
  244. </div>
  245. </el-drawer>
  246. </el-tab-pane>
  247. </el-tabs>
  248. </div>
  249. </div>
  250. </template>
  251. <script>
  252. import ECharts from "echarts";
  253. export default {
  254. data() {
  255. return {
  256. last: [],
  257. //完成情况
  258. condition: {
  259. month: this.$moment().format("YYYY-MM"),//时间
  260. page: 1,//当前页
  261. page_size: 10,//每页数量
  262. dept_id: 0,//部门id
  263. keyword:'',//关键字
  264. complete:'',//是否达标 1是
  265. },
  266. activeName: "second",
  267. totals: null,
  268. dept_name_xq_xq: "",
  269. //对比
  270. loading: false,
  271. choose_time: "",
  272. input: "",
  273. radio: "1",
  274. formData: {
  275. month: this.$moment().format("YYYY-MM"),
  276. page: 1,
  277. page_size: 10,
  278. dept_id: 0,
  279. },
  280. total: null,
  281. allPass: false,
  282. list: [],
  283. detail_show: false,
  284. echart_loading: false,
  285. item: {},
  286. dept_name_xq: "",
  287. dept_tree: [],
  288. personalData_loading: false,
  289. personalData: null,
  290. };
  291. },
  292. watch: {
  293. //对比
  294. "formData.month"(val, old_val) {
  295. this.formData.page = 1;
  296. this.get_list();
  297. },
  298. //情况
  299. "condition.month"(val, old_val) {
  300. this.condition.page = 1;
  301. this.get_last();
  302. },
  303. //查看全部达标
  304. 'allPass'(val,old_val){
  305. if(val){
  306. this.condition.complete = '1'
  307. }else{
  308. this.condition.complete = '0'
  309. }
  310. this.condition.page = 1
  311. this.get_last()
  312. },
  313. },
  314. methods: {
  315. //情况
  316. get_last() {
  317. this.loading = true;
  318. this.$axios("get","/api/integral/statistics/prize/list",this.condition,'v4').then((res) => {
  319. if (res.data.code == 1) {
  320. this.last = res.data.data.list;
  321. this.totals = res.data.data.total;
  322. } else {
  323. this.$message.error(res.data.data.msg);
  324. }
  325. })
  326. .finally(() => {
  327. this.loading = false;
  328. });
  329. },
  330. //部门
  331. get_last_dept_null(val) {
  332. if (val.length == 0) {
  333. this.condition.dept_id = 0;
  334. } else {
  335. this.condition.dept_id = val[0];
  336. }
  337. this.$nextTick(() => {
  338. this.condition.page = 1;
  339. this.$refs.dept.dropDownVisible = false; //监听值发生变化就关闭它
  340. this.get_last();
  341. });
  342. },
  343. //搜索框
  344. search_box(){
  345. this.get_last();
  346. },
  347. //导出报表
  348. exportExcel() {
  349. let data = "";
  350. //部门
  351. this.condition.dept_id>0?data+="&rule_id="+ this.condition.dept_id:data+="&rule_id=0"
  352. //时间
  353. data+="&month="+this.condition.month
  354. //搜索框
  355. this.condition.keyword==''?data+="&keyword=0":data+="&keyword="+this.condition.keyword
  356. //是否达标
  357. this.condition.complete!=0?data+="&complete="+this.condition.complete:data+="&complete=0"
  358. //当前页数
  359. data+="&page="+this.condition.page
  360. window.open(
  361. process.env.BASE_API +
  362. "/api/download/prize/list/v4?employee_id="+
  363. this.$store.getters.user_info.id +
  364. data,
  365. "_blank"
  366. );
  367. this.dialogVisible = false;
  368. },
  369. //分页选择显示多少条
  370. handleCurrentChange_xq(val) {
  371. this.condition.page = val;
  372. this.get_last();
  373. },
  374. //分页
  375. handleSizeChange_xq(val){
  376. this.condition.page_size = val;
  377. this.get_last();
  378. },
  379. handleSizeChange(val) {
  380. this.formData.page_size =val;
  381. this.get_list();
  382. },
  383. handleCurrentChange(val) {
  384. this.formData.page = val;
  385. this.get_list();
  386. },
  387. get_list() {
  388. this.loading = true;
  389. this.$axios("get","/api/integral/statistics/prize/list",this.formData,'v3').then((res) => {
  390. if (res.data.code == 1) {
  391. this.list = res.data.data.list;
  392. this.total = res.data.data.total;
  393. } else {
  394. this.$message.error(res.data.data.msg);
  395. }
  396. })
  397. .finally(() => {
  398. this.loading = false;
  399. });
  400. },
  401. search() {
  402. this.get_list();
  403. },
  404. open_detail(row, column, event) {
  405. this.detail_show = true;
  406. this.item = row;
  407. this.$nextTick(() => {
  408. this.situationChart = ECharts.init(
  409. document.getElementById("situationChart")
  410. );
  411. this.passengersChart = ECharts.init(
  412. document.getElementById("passengersChart")
  413. );
  414. });
  415. this.getData(() => (this.echart_loading = false));
  416. this.getDataV1(() => (this.personalData_loading = false));
  417. },
  418. getChartOption(xAxisData, rewardData, deductionData) {
  419. return {
  420. tooltip: {
  421. trigger: "axis",
  422. },
  423. grid: {
  424. containLabel: true,
  425. top: "4%",
  426. right: "4%",
  427. bottom: "5%",
  428. left: "7%",
  429. },
  430. xAxis: {
  431. type: "category",
  432. boundaryGap: false,
  433. axisLine: { lineStyle: { color: "#eee" } },
  434. axisLabel: { color: "#333" },
  435. data: xAxisData,
  436. },
  437. yAxis: {
  438. position: "right",
  439. axisLine: { lineStyle: { color: "#eee" } },
  440. axisLabel: { color: "#333" },
  441. type: "value",
  442. splitLine: { lineStyle: { color: "#eee" } },
  443. },
  444. series: [
  445. {
  446. name: "奖分",
  447. type: "line",
  448. data: rewardData,
  449. lineStyle: { normal: { color: "#F56C6C" } },
  450. },
  451. {
  452. name: "扣分",
  453. type: "line",
  454. data: deductionData,
  455. lineStyle: { normal: { color: "#53B87F" } },
  456. },
  457. ],
  458. };
  459. },
  460. // v2
  461. getData(callBack) {
  462. this.echart_loading = true;
  463. const data = {
  464. employee_id: this.item.id || 0,
  465. month: this.formData.month,
  466. };
  467. this.$axios('get',"/api/integral/statistics/prize",data).then((res) => {
  468. if (res.data.code === 1) {
  469. const item = res.data.data;
  470. this.employeeName = item.name;
  471. const deduct = item.chart.deduct;
  472. const situationRewardData = [];
  473. const situationDeductionData = [];
  474. const passengersRewardData = [];
  475. const passengersDeductionData = [];
  476. const xAxisData = item.chart.reward.map((o, i) => {
  477. // 降分分数
  478. situationDeductionData.push(item.chart.reward[i].point);
  479. // 扣分分数
  480. passengersDeductionData.push(item.chart.deduct[i].point);
  481. // 奖分次数
  482. situationRewardData.push(item.chart.reward[i].count);
  483. // 扣分次数
  484. passengersRewardData.push(item.chart.deduct[i].count);
  485. return o.date;
  486. });
  487. this.situationChart.setOption(
  488. this.getChartOption(
  489. xAxisData,
  490. situationDeductionData,
  491. passengersDeductionData
  492. )
  493. ); //奖分数值、扣分数值
  494. this.passengersChart.setOption(
  495. this.getChartOption(
  496. xAxisData,
  497. situationRewardData,
  498. passengersRewardData
  499. )
  500. ); //月奖扣人次
  501. }
  502. }).finally(() => {
  503. this.echart_loading = false;
  504. });
  505. },
  506. // v1
  507. getDataV1(callBack) {
  508. this.personalData_loading = true;
  509. const data = {
  510. employee_id: this.item.id || 0,
  511. month: this.formData.month,
  512. };
  513. this.$axios("get","/api/integral/statistics",data,).then((res) => {
  514. if (res.data.code == 1) {
  515. this.personalData = res.data.data;
  516. } else {
  517. this.$message.error(res.data.data.msg);
  518. }
  519. }).finally(() => {
  520. this.personalData_loading = false;
  521. });
  522. },
  523. dept_null(val) {
  524. if (val.length == 0) {
  525. this.formData.dept_id = 0;
  526. } else {
  527. this.formData.dept_id = this.dept_name_xq[this.dept_name_xq.length - 1];
  528. }
  529. this.$nextTick(() => {
  530. this.formData.page = 1;
  531. this.$refs.depts.dropDownVisible = false;
  532. this.get_list();
  533. });
  534. },
  535. //获取部门
  536. getDepartment() {
  537. this.$axios('get','/api/department/tree').then(res => {
  538. this.dept_tree =this.getTreeData(res.data.data.list);
  539. });
  540. },
  541. // 递归判断列表,把最后的children设为undefined
  542. getTreeData(data) {
  543. for (var i = 0; i < data.length; i++) {
  544. data[i].obj={id:data[i].id,name:data[i].name};
  545. if (data[i]._child.length < 1) {
  546. // children若为空数组,则将children设为undefined
  547. data[i]._child = undefined;
  548. } else {
  549. // children若不为空数组,则继续 递归调用 本方法
  550. this.getTreeData(data[i]._child);
  551. }
  552. }
  553. return data;
  554. }
  555. },
  556. mounted() {
  557. this.getDepartment();
  558. // this.get_list();
  559. // this.get_last();
  560. },
  561. };
  562. </script>
  563. <style scoped lang="scss">
  564. .search_box {
  565. ::v-deep button:active {
  566. background: #26a2ff;
  567. }
  568. ::v-deep button:active .el-icon-search {
  569. color: #fff;
  570. }
  571. }
  572. .date-picker-width {
  573. width: 100% !important;
  574. }
  575. .color_green {
  576. color: #67c23a;
  577. }
  578. .nopoint_box {
  579. display: inline-block;
  580. text-align: center;
  581. width: 100%;
  582. margin-bottom: 10px;
  583. }
  584. .noimg {
  585. display: inline-block;
  586. width: 110px;
  587. height: 110px;
  588. margin: 22px auto 16px;
  589. background-size: 99%;
  590. }
  591. .noperson {
  592. display: inline-block;
  593. width: 110px;
  594. height: 110px;
  595. line-height: none;
  596. margin: 22px auto 16px;
  597. background: url("/static/images/noperson_default.png") no-repeat center;
  598. background-size: 99%;
  599. }
  600. .title {
  601. display: block;
  602. text-align: center;
  603. font-size: 12px !important;
  604. line-height: 30px;
  605. color: #909399 !important;
  606. padding: 0;
  607. }
  608. .nopoint_box a {
  609. color: #26a2ff;
  610. }
  611. .chart_content {
  612. height: 90vh;
  613. overflow-y: auto;
  614. overflow-x: hidden;
  615. .chart-legend__wrap {
  616. text-align: right;
  617. padding: 20px;
  618. padding-right: 50px;
  619. & .chart-legend__pink {
  620. position: relative;
  621. padding-left: 12px;
  622. padding-right: 5px;
  623. &:after {
  624. content: "";
  625. position: absolute;
  626. margin-top: -2px;
  627. top: 35%;
  628. left: 0;
  629. width: 8px;
  630. height: 8px;
  631. background: #f56c6c;
  632. border-radius: 100%;
  633. }
  634. }
  635. & .chart-legend__green {
  636. position: relative;
  637. padding-left: 12px;
  638. &:after {
  639. content: "";
  640. position: absolute;
  641. margin-top: -2px;
  642. top: 35%;
  643. left: 0;
  644. width: 8px;
  645. height: 8px;
  646. background: #53b87f;
  647. border-radius: 100%;
  648. }
  649. }
  650. }
  651. }
  652. // 滚动条样式
  653. .chart_content::-webkit-scrollbar-track {
  654. -webkit-box-shadow: inset 0 0 5px rgb(255, 255, 255);
  655. border-radius: 5px;
  656. background-color: rgb(255, 255, 255);
  657. }
  658. .chart_content::-webkit-scrollbar {
  659. width: 5px;
  660. background-color: rgba(201, 201, 201, 0);
  661. }
  662. .chart_content::-webkit-scrollbar-thumb {
  663. border-radius: 5px;
  664. -webkit-box-shadow: inset 0 0 5px rgb(153, 145, 145) (160, 154, 154);
  665. background-color: rgb(168, 167, 167);
  666. }
  667. .dataItem {
  668. text-align: center;
  669. .point {
  670. font-size: 22px;
  671. color: #26a2ff;
  672. margin: 10px 0;
  673. }
  674. .target {
  675. font-size: 12px;
  676. color: #909399;
  677. }
  678. }
  679. .drawer_title {
  680. font-size: 18px;
  681. padding: 20px;
  682. }
  683. .manager_statistics_box {
  684. background-color: #ffffff;
  685. padding: 20px;
  686. min-height: calc(100vh - 160px);
  687. ::v-deep .el-row .el-checkbox .el-checkbox__label {
  688. line-height: 20px;
  689. }
  690. }
  691. .tips {
  692. background: #409eff;
  693. border-radius: 50%;
  694. width: 14px;
  695. height: 14px;
  696. color: #fff;
  697. display: inline-block;
  698. font-size: 12px;
  699. line-height: 14px;
  700. text-align: center;
  701. }
  702. .el-form-item__label {
  703. width: 0px !important;
  704. }
  705. .wlj{
  706. padding: 20px;
  707. & .color_green{
  708. color: #49d3a7;
  709. }
  710. & .color_red{
  711. color: #f04b56;
  712. }
  713. }
  714. b{
  715. font-size: 14px;
  716. }
  717. .span_h{
  718. font-size: 13px;
  719. color: #898c94;
  720. }
  721. </style>