You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

ProAnalysis.vue 60 kB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279
  1. <template>
  2. <div style="width: 100%;">
  3. <div id = "pro_main">
  4. <div style="margin-top: 10px;">
  5. <b class="pro_item">项目分析</b> <span class="update_time">数据更新时间:</span> <span style="font-size: 12px;">{{lastUpdatedTime}}&nbsp/&nbsp从{{recordBeginTime}}开始统计</span>
  6. </div>
  7. <bar-label :width="'95%'" :height="'500px'"></bar-label>
  8. <div style="margin-top: 20px;">
  9. <span class="sta_iterm">统计周期:</span>
  10. <button type="button" class='btnFirst' id ="yesterday" v-bind:class="{colorChange:1==dynamic}" @click="resetPage(),getAllProList('yesterday',1)">昨天</button>
  11. <button type="button" class='btn' id = "current_week" v-bind:class="{colorChange:2==dynamic}" @click="resetPage(),getAllProList('current_week',2)">本周</button>
  12. <button type="button" class='btn' id = "current_month" v-bind:class="{colorChange:3==dynamic}" @click="resetPage(),getAllProList('current_month',3)">本月</button>
  13. <button type="button" class='btn' id = "last_month" v-bind:class="{colorChange:4==dynamic}" @click="resetPage(),getAllProList('last_month',4)">上月</button>
  14. <button type="button" class='btn' id = "monthly" v-bind:class="{colorChange:5==dynamic}" @click="resetPage(),getAllProList('monthly',5)">近30天</button>
  15. <button type="button" class='btn' id = "current_year" v-bind:class="{colorChange:6==dynamic}" @click="resetPage(),getAllProList('current_year',6)">今年</button>
  16. <button type="button" class='btnLast' id = "all" v-bind:class="{colorChange:7==dynamic}" @click="resetPage(),getAllProList('all',7)">所有</button>
  17. <span style="margin-left: 20px;">
  18. <el-date-picker
  19. v-model="value_time"
  20. prefix-icon="el-icon-time"
  21. @change="resetPage(),getAllProList('',0)"
  22. type="daterange"
  23. size='small'
  24. range-separator="至"
  25. start-placeholder="开始日期"
  26. end-placeholder="结束日期">
  27. </el-date-picker>
  28. </span>
  29. <span style="float:right; margin-right: 20px;">
  30. <div style="display:inline-block;margin-left: 20px; ">
  31. <a class="el-icon-download" v-if="tableData!=''" :href= "'../api/v1/projectboard/downloadAll/?type='+this.params.type+'&beginTime='+this.params.beginTime+'&endTime='+this.params.endTime+'&q='+this.params.q+'&sort=openi'" ></a>
  32. <i class="el-icon-download" v-else="tableData=''" href="#" style="color:rgba(187, 187, 187, 100);" @click='popMark()'></i>
  33. <!-- <span ><a id = "download_file" :href= "'../api/v1/projectboard/downloadAll/?type='+this.params.type+'&beginTime='+this.params.beginTime+'&endTime='+this.params.endTime+'&q='+this.params.q+'&sort=openi'" >下载报告</a> </span> -->
  34. <span >
  35. <a id = "download_file" v-if="tableData!=''" :href= "'../api/v1/projectboard/downloadAll/?type='+this.params.type+'&beginTime='+this.params.beginTime+'&endTime='+this.params.endTime+'&q='+this.params.q+'&sort=openi'">下载报告</a>
  36. <a id = "download_file" v-else="tableData=''" href= "#" style="color:rgba(187, 187, 187, 100);" @click='popMark()'>下载报告</a>
  37. </span>
  38. </div>
  39. <span style="display:inline-block;margin-left: 20px; ">
  40. <el-input size="small" placeholder="输入项目关键字搜索" v-model="search" class="input-with-select" @keyup.enter.native="searchName() "><i slot="suffix" class="el-input__icon el-icon-search" @click="searchName() "></i>
  41. </el-input>
  42. </span>
  43. </span>
  44. </div>
  45. <div style="margin-top: 30px;">
  46. <el-table
  47. :data="tableData"
  48. style="width: 100%"
  49. :header-cell-style="tableHeaderStyle"
  50. :cell-style='cellStyle'>
  51. <el-table-column
  52. label="ID"
  53. align="center"
  54. prop="repo_id"
  55. stripe
  56. >
  57. </el-table-column>
  58. <el-table-column
  59. label="项目名称"
  60. width="125px"
  61. align="center"
  62. prop="name"
  63. style="color:#0366D6 100%;"
  64. >
  65. <template slot-scope="scope">
  66. <a @click=goToDetailPage(scope.row.repo_id,scope.row.name,scope.row.ownerName)>{{scope.row.name}} </a>
  67. </template>
  68. </el-table-column>
  69. <el-table-column
  70. label="拥有者"
  71. align="center"
  72. prop="ownerName"
  73. stripe
  74. >
  75. </el-table-column>
  76. <el-table-column
  77. prop="isPrivate"
  78. label="私有"
  79. align="center">
  80. <template slot-scope="scope">
  81. {{scope.row.isPrivate|changeType}}
  82. </template>
  83. </el-table-column>
  84. <el-table-column
  85. prop="openi"
  86. label="OpenI指数"
  87. align="center">
  88. <template slot-scope="scope">
  89. {{scope.row.openi | rounding}}
  90. </template>
  91. </el-table-column>
  92. <el-table-column
  93. prop="view"
  94. label="浏览量"
  95. align="center">
  96. </el-table-column>
  97. <el-table-column
  98. prop="download"
  99. label="代码下载量"
  100. align="center">
  101. </el-table-column>
  102. <el-table-column
  103. prop="pr"
  104. label="PR"
  105. align="center">
  106. </el-table-column>
  107. <el-table-column
  108. prop="commit"
  109. label="Commit数"
  110. align="center">
  111. </el-table-column>
  112. <el-table-column
  113. prop="watch"
  114. label="关注数"
  115. align="center">
  116. </el-table-column>
  117. <el-table-column
  118. prop="star"
  119. label="点赞数"
  120. align="center">
  121. </el-table-column>
  122. <el-table-column
  123. prop="fork"
  124. label="派生数"
  125. align="center">
  126. </el-table-column>
  127. <el-table-column
  128. prop="issue"
  129. label="任务数"
  130. align="center">
  131. </el-table-column>
  132. <el-table-column
  133. prop="issueClosed"
  134. label="已解决任务"
  135. align="center">
  136. </el-table-column>
  137. <el-table-column
  138. prop="contributor"
  139. label="贡献者数"
  140. align="center">
  141. </el-table-column>
  142. </el-table>
  143. </div>
  144. <div style="margin-top:50px;text-align:center">
  145. <el-pagination
  146. background
  147. @size-change="handleSizeChange"
  148. @current-change="handleCurrentChange"
  149. :current-page="page"
  150. :page-size="pageSize"
  151. :page-sizes="[5,10,20]"
  152. layout="total, sizes,prev, pager, next,jumper"
  153. :total="totalNum">
  154. </el-pagination>
  155. </div>
  156. </div>
  157. <div id ="pro_detail" style="display:none;width: 100%;">
  158. <div style="margin-top: 10px;">
  159. <a class="pro_item" :href="'../../../'+this.ownerName+'/'+this.pro_name">{{this.ownerName}}&nbsp/&nbsp{{this.pro_name}}</a> <span class="update_time">数据更新时间:</span><span style="font-size: 12px;">{{tableDataIDTotal.lastUpdatedTime}}&nbsp/&nbsp从{{tableDataIDTotal.recordBeginTime}}开始统计</span>
  160. </div>
  161. <div style="margin-top: 10px;">
  162. 项目描述:{{tableDataIDTotal.description | discriptionFun}}
  163. </div>
  164. <div style="margin-top:20px">
  165. <el-row >
  166. <el-col :span='4' class="items">
  167. <el-row>项目创建时间 </el-row>
  168. <el-row class="item_content">{{tableDataIDTotal.creatTime}}</el-row>
  169. </el-col>
  170. <el-col :span='4' class="items">
  171. <el-row>OpenI指数</el-row>
  172. <el-row class="item_content">{{tableDataIDTotal.openi | rounding}}</el-row>
  173. </el-col>
  174. <el-col :span='4' class="items">
  175. <el-row>评论数 </el-row>
  176. <el-row class="item_content">{{tableDataIDTotal.comment}}</el-row>
  177. </el-col>
  178. <el-col :span='4' class="items">
  179. <el-row>浏览量 </el-row>
  180. <el-row class="item_content">{{tableDataIDTotal.view}}</el-row>
  181. </el-col>
  182. <el-col :span='4' class="items">
  183. <el-row>代码下载量</el-row>
  184. <el-row class="item_content">{{tableDataIDTotal.download}}</el-row>
  185. </el-col>
  186. <el-col :span='4' style="text-align: center;">
  187. <el-row>任务完成比例</el-row>
  188. <el-row class="item_content">{{Math.round(tableDataIDTotal.issueClosedRatio * 100) }}%</el-row>
  189. </el-col>
  190. </el-row>
  191. </div>
  192. <div style="margin-top:30px;">
  193. <el-row :gutter="20">
  194. <el-col :span=18 >
  195. <div class="item_l" id="charts">
  196. <div style="font-size:14px;color:#409eff;margin:20px 5px;">OpenI指数:{{tableDataIDTotal.openi | rounding}}</div>
  197. <div >
  198. <el-col :span='8' id="radar_openi" :style="{ height: '300px'}"></el-col>
  199. <el-col :span='16' id="line_openi" :style="{ height: '300px',float:'right'}"></el-col>
  200. </div>
  201. </div>
  202. </el-col>
  203. <el-col :span=6 >
  204. <div class="item_r">
  205. <div style="margin:0 5px;">
  206. <div style="font-size:14px;color:rgb(0,0,0);margin:10px 0px">贡献者TOP10</div>
  207. <div>
  208. <el-table
  209. :data="tableDataContTop10"
  210. style="width: 100%"
  211. stripe
  212. :header-cell-style="tableHeaderStyle"
  213. >
  214. <el-table-column
  215. label="用户名"
  216. align="left"
  217. prop="user">
  218. <template slot-scope="scope">
  219. <a v-if="scope.row.relAvatarLink!=''" :href="AppSubUrl +'../../../'+ scope.row.user"><img class="ui avatar s16 image js-popover-card" :src="scope.row.relAvatarLink">{{scope.row.user}} </a>
  220. <a v-else :href="'mailto:'+ scope.row.email "> <img class="ui avatar s16 image js-popover-card" :avatar="scope.row.email"> {{scope.row.user}}</a>
  221. </template>
  222. </el-table-column>
  223. <el-table-column
  224. label="身份"
  225. align="center"
  226. prop="mode"
  227. v-if='0'>
  228. <template slot-scope="scope">
  229. {{scope.row.mode | showMode}}
  230. </template>
  231. </el-table-column>
  232. <el-table-column
  233. prop="pr"
  234. label="PR"
  235. align="center">
  236. </el-table-column>
  237. <el-table-column
  238. prop="commit"
  239. label="commit"
  240. align="center">
  241. </el-table-column>
  242. </el-table>
  243. </div>
  244. </div>
  245. </div>
  246. </el-col>
  247. </el-row>
  248. </div>
  249. <div style="margin-top: 20px;">
  250. <span class="sta_iterm">统计周期:</span>
  251. <button type="button" class='btnFirst' id ="yesterday_pro" v-bind:class="{colorChange:1==dynamic_pro}" @click="resetCurrentPage(),getOneProList(pro_id,'yesterday',false,1)">昨天</button>
  252. <button type="button" class='btn' id = "current_week_pro" v-bind:class="{colorChange:2==dynamic_pro}" @click="resetCurrentPage(),getOneProList(pro_id,'current_week',false,2)">本周</button>
  253. <button type="button" class='btn' id = "current_month_pro" v-bind:class="{colorChange:3==dynamic_pro}" @click="resetCurrentPage(),getOneProList(pro_id,'current_month',false,3)">本月</button>
  254. <button type="button" class='btn' id = "last_month_pro" v-bind:class="{colorChange:4==dynamic_pro}" @click="resetCurrentPage(),getOneProList(pro_id,'last_month',false,4)">上月</button>
  255. <button type="button" class='btn' id = "monthly_pro" v-bind:class="{colorChange:5==dynamic_pro}" @click="resetCurrentPage(),getOneProList(pro_id,'monthly',false,5)">近30天</button>
  256. <button type="button" class='btn' id = "current_year_pro" v-bind:class="{colorChange:6==dynamic_pro}" @click="resetCurrentPage(),getOneProList(pro_id,'current_year',false,6)">今年</button>
  257. <button type="button" class='btnLast' id = "all_pro" v-bind:class="{colorChange:7==dynamic_pro}" @click="resetCurrentPage(),getOneProList(pro_id,'all',false,7)">所有</button>
  258. <span style="margin-left: 20px;">
  259. <el-date-picker
  260. v-model="create_time_pro"
  261. prefix-icon="el-icon-time"
  262. @change="resetCurrentPage(),getOneProList(pro_id,'',false,0),clickCheckBox"
  263. type="daterange"
  264. size='small'
  265. range-separator="至"
  266. start-placeholder="开始日期"
  267. end-placeholder="结束日期">
  268. </el-date-picker>
  269. </span>
  270. <span style="float:right; margin-right: 20px;">
  271. <div style="display:inline-block;margin-left: 20px;">
  272. <a v-if="tableDataID!=''" @click="exportData()" class="el-icon-download"></a>
  273. <a v-else="tableDataID=''" @click="exportData()" style="color:rgba(187, 187, 187, 100);" class="el-icon-download"></a>
  274. <span >
  275. <a v-if="tableDataID!=''" @click="exportData()">下载报告</a>
  276. <a v-else="tableDataID=''" @click="exportData()" style="color:rgba(187, 187, 187, 100);">下载报告</a>
  277. </span>
  278. </div>
  279. </span>
  280. </div>
  281. <div class="item_echart" id ='linecharts'>
  282. <div style="margin-top:10px;margin-left: 5px;">
  283. <label for="label" @change='clickCheckBox'>
  284. <input type="checkbox" class="checkboxchart" name="checkboxchart" checked="checked" value="浏览量"/>浏览量
  285. <input type="checkbox" class="checkboxchart" name="checkboxchart" checked="checked" value="下载量"/>下载量
  286. <input type="checkbox" class="checkboxchart" name="checkboxchart" checked="checked" value="commit"/>commit
  287. </label>
  288. </div>
  289. <div id ="selectData" style="height: 300px;">
  290. </div>
  291. </div>
  292. <div style="margin-top: 30px;">
  293. <el-table
  294. :data="tableDataID.slice((currentPage-1)*pageSize1,currentPage*pageSize1)"
  295. style="width: 100%"
  296. :header-cell-style="tableHeaderStyle"
  297. :cell-style='cellStyle'>
  298. <el-table-column
  299. label="日期"
  300. align="center"
  301. prop="date"
  302. stripe
  303. >
  304. </el-table-column>
  305. <el-table-column
  306. label="浏览量"
  307. align="center"
  308. prop="view">
  309. </el-table-column>
  310. <el-table-column
  311. prop="download"
  312. label="下载量"
  313. align="center">
  314. </el-table-column>
  315. <el-table-column
  316. prop="commit"
  317. label="commit"
  318. align="center">
  319. </el-table-column>
  320. </el-table>
  321. </div>
  322. <div style="margin-top:50px;text-align:center">
  323. <el-pagination
  324. background
  325. @size-change="handleSizeChangeID"
  326. @current-change="handleCurrentChangeID"
  327. :current-page="currentPage"
  328. :page-size="pageSize1"
  329. :page-sizes="[5,10,20]"
  330. layout="total, sizes,prev, pager, next,jumper"
  331. :total="tableDataID.length">
  332. </el-pagination>
  333. </div>
  334. </div>
  335. </div>
  336. </template>
  337. <script>
  338. // import barLabel from './basic/barLabel.vue';
  339. const {AppSubUrl, StaticUrlPrefix, csrf} = window.config;
  340. import { export2Excel } from '../excel/util.js'
  341. export default{
  342. name:'ProAnalysis',
  343. components: {
  344. // barLabel,
  345. },
  346. data() {
  347. return {
  348. recordBeginTime:'',
  349. lastUpdatedTime:'',
  350. page:1,
  351. pageSize:10,
  352. params:{type:'all',page:1,pagesize:10,beginTime:'',endTime:'',q:'',sort:'openi'},
  353. tableData: [],
  354. totalPage:0,
  355. totalNum:0,
  356. pickerOptions: {
  357. },
  358. value_time: '',
  359. search:'',
  360. dynamic:7,
  361. download_a:"",
  362. downLoadSrc:'',
  363. //单个项目参数
  364. columns: [{title: '日期',key: 'date'},{title: '浏览量',key: 'view'},{title: '下载量',key: 'download'},{title: 'commit',key: 'commit'}],
  365. currentPage:1,
  366. pageSize1:10,
  367. paramsID:{type:'all' ,beginTime:'',endTime:'',openi:'false'},
  368. tableDataIDTotal: [],
  369. tableDataID: [],
  370. tableDataIDOpenI:[],
  371. tableDataContTop10:[],
  372. create_time_pro: '',
  373. dynamic_pro:7,
  374. pro_name:'',
  375. pro_id:'',
  376. ownerName:'',
  377. radarOpenI:'',
  378. echartsOITd:'',
  379. echartsSelectData:'',
  380. option:'',
  381. };
  382. },
  383. methods: {
  384. // download_file(){
  385. // this.params.type='all'
  386. // },
  387. popMark(){
  388. alert("数据为空时,不能下载!")
  389. },
  390. exportData(){
  391. // this.getOneProList(this.pro_id,'all',true,7)
  392. // this.getOneProList(this.pro_id,'all',false,7)
  393. // this.fileName()
  394. if (this.tableDataID!=''){
  395. this.currentPage=1
  396. var saveFileName = this.getFileName()
  397. export2Excel(this.columns,this.tableDataID,saveFileName)
  398. }else{
  399. alert("数据为空时,不能下载!")
  400. }
  401. },
  402. getFileName(){
  403. var now = new Date(); // 当前日期
  404. var nowDayOfWeek = now.getDay(); // 今天本周的第几天
  405. var nowDay = now.getDate(); // 当前日
  406. var nowMonth = now.getMonth(); // 当前月
  407. var nowYear = now.getFullYear(); // 当前年
  408. var today = this.saveFormatDate(nowYear,nowMonth+1,nowDay);
  409. var tmp = new Date(now.setTime(now.getTime()-24*60*60*1000));
  410. var yesterday = this.saveFormatDate(tmp.getFullYear(),tmp.getMonth()+1,tmp.getDate());
  411. var yesterday_tmp = this.formatDate(tmp.getFullYear(),tmp.getMonth()+1,tmp.getDate())
  412. var startDate=''
  413. var endDate=''
  414. var saveFileName = ''
  415. if (typeof this.paramsID.type=="undefined" || this.paramsID.type=="null" || this.paramsID.type==""){
  416. // startDate= this.saveFormatDate(this.create_time_pro[0].getFullYear(),this.create_time_pro[0].getMonth() + 1,this.create_time_pro[0].getDate());
  417. endDate = this.saveFormatDate(this.create_time_pro[1].getFullYear(),this.create_time_pro[1].getMonth() + 1,this.create_time_pro[1].getDate());
  418. var tmp = this.formatDate(this.create_time_pro[0].getFullYear(),this.create_time_pro[0].getMonth() + 1,this.create_time_pro[0].getDate())
  419. startDate = this.comparedate(tmp,this.recordBeginTime)
  420. console.log("comparedate:"+startDate)
  421. saveFileName = this.pro_name+"_"+startDate+'_'+endDate
  422. }else{
  423. switch(this.paramsID.type){
  424. case "yesterday":{
  425. startDate = this.comparedate(yesterday_tmp,this.recordBeginTime)
  426. endDate = startDate
  427. saveFileName = this.pro_name+"_"+startDate+'_'+ endDate
  428. break
  429. }
  430. case "current_week":{
  431. var now = new Date(); // 当前日期
  432. var nowDayOfWeek = now.getDay(); // 今天本周的第几天
  433. var day = nowDayOfWeek || 7;
  434. startDate = this.formatDate(now.getFullYear(), nowMonth+1, nowDay + 1 - day);
  435. startDate = this.comparedate(startDate,this.recordBeginTime)
  436. endDate = yesterday
  437. saveFileName = this.pro_name+"_"+startDate+'_'+ endDate
  438. break
  439. }
  440. case "current_month":{
  441. startDate = this.formatDate(nowYear,nowMonth+1,1);
  442. startDate = this.comparedate(startDate,this.recordBeginTime)
  443. endDate = yesterday
  444. saveFileName = this.pro_name+"_"+startDate+'_'+ endDate
  445. break
  446. }
  447. case "last_month":{
  448. let lastMonthDate = new Date(); // 上月日期
  449. lastMonthDate.setDate(1);
  450. lastMonthDate.setMonth(lastMonthDate.getMonth()-1);
  451. let lastYear = lastMonthDate.getFullYear();
  452. let lastMonth = lastMonthDate.getMonth();
  453. startDate=this.formatDate(lastYear, lastMonth+1, 1);
  454. startDate = this.comparedate(startDate,this.recordBeginTime)
  455. var monthStartDate = new Date(lastYear, lastMonth, 1);
  456. var monthEndDate = new Date(lastYear, lastMonth+1, 1);
  457. var days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24)
  458. endDate=this.saveFormatDate(lastYear, lastMonth+1, days); //月份从0开始,所以+1保存月份
  459. saveFileName = this.pro_name+"_"+startDate+'_'+ endDate
  460. break
  461. }
  462. case "monthly":{
  463. var temp=new Date(now - 1000 * 60 * 60 * 24 * 30)
  464. startDate = this.formatDate(temp.getFullYear(),temp.getMonth()+1,temp.getDate());
  465. startDate = this.comparedate(startDate,this.recordBeginTime)
  466. endDate = yesterday
  467. saveFileName = this.pro_name+"_"+startDate+'_'+ endDate
  468. break
  469. }
  470. case "current_year":{
  471. startDate = this.formatDate(now.getFullYear(), 1, 1);
  472. startDate = this.comparedate(startDate,this.recordBeginTime)
  473. endDate = yesterday
  474. saveFileName = this.pro_name+"_"+startDate+'_'+ endDate
  475. break
  476. }
  477. case "all":{
  478. console.log("e:"+today)
  479. startDate = 'all'
  480. endDate = yesterday
  481. saveFileName = this.pro_name+'_所有'
  482. break
  483. }
  484. }
  485. }
  486. return saveFileName
  487. },
  488. resetPage(){
  489. this.page=1
  490. this.params.page = 1
  491. },
  492. resetCurrentPage(){
  493. this.currentPage=1
  494. },
  495. handleSizeChange(val){
  496. this.params.pagesize = val
  497. this.resetPage()
  498. this.getAllProList(this.params.type, this.dynamic)
  499. },
  500. handleCurrentChange(val){
  501. console.log(val)
  502. this.params.page = val
  503. this.page = val
  504. switch(this.params.type){
  505. case "yesterday":{
  506. this.value_time=''
  507. this.getAllProList(this.params.type,1)
  508. break
  509. }
  510. case "current_week":{
  511. this.value_time=''
  512. this.getAllProList(this.params.type,2)
  513. break
  514. }
  515. case "current_month":{
  516. this.value_time=''
  517. this.getAllProList(this.params.type,3)
  518. break
  519. }
  520. case "last_month":{
  521. this.value_time=''
  522. this.getAllProList(this.params.type,4)
  523. break
  524. }
  525. case "monthly":{
  526. this.value_time=''
  527. this.getAllProList(this.params.type,5)
  528. break
  529. }
  530. case "current_year":{
  531. this.value_time=''
  532. this.getAllProList(this.params.type,6)
  533. break
  534. }
  535. case "all":{
  536. this.value_time=''
  537. this.getAllProList(this.params.type,7)
  538. break
  539. }
  540. case "":{
  541. // this.value_time=''
  542. this.getAllProList(this.params.type,0)
  543. break
  544. }
  545. }
  546. },
  547. saveFormatDate(myyear,mymonth,myweekday) {
  548. // var myyear = this.date.getFullYear();
  549. // var mymonth = this.date.getMonth() + 1;
  550. // var myweekday = this.date.getDate();
  551. if (mymonth < 10) {
  552. mymonth = "0" + mymonth;
  553. }
  554. if (myweekday < 10) {
  555. myweekday = "0" + myweekday;
  556. }
  557. console.log((myyear +''+ mymonth +''+ myweekday))
  558. return (myyear +''+ mymonth +''+ myweekday);
  559. },
  560. formatDate(myyear,mymonth,myweekday) {
  561. // var myyear = this.date.getFullYear();
  562. // var mymonth = this.date.getMonth() + 1;
  563. // var myweekday = this.date.getDate();
  564. if (mymonth < 10) {
  565. mymonth = "0" + mymonth;
  566. }
  567. if (myweekday < 10) {
  568. myweekday = "0" + myweekday;
  569. }
  570. return (myyear +'-'+ mymonth +'-'+ myweekday);
  571. },
  572. //获得某月的天数
  573. getAllProList(type_val,index){
  574. console.log("类型:"+type_val)
  575. this.dynamic = index
  576. if (typeof type_val=="undefined" || type_val=="null" || type_val==""){
  577. this.params.type=''
  578. this.params.beginTime=this.formatDate(this.value_time[0].getFullYear(),this.value_time[0].getMonth() + 1,this.value_time[0].getDate())
  579. this.params.endTime=this.formatDate(this.value_time[1].getFullYear(),this.value_time[1].getMonth() + 1,this.value_time[1].getDate())
  580. }else{
  581. this.params.type=type_val
  582. this.params.beginTime=''
  583. this.params.endTime=''
  584. this.value_time=[]
  585. }
  586. this.$axios.get('../api/v1/projectboard/project',{
  587. params:this.params
  588. }).then((res)=>{
  589. this.recordBeginTime=res.data.recordBeginTime
  590. this.lastUpdatedTime=res.data.lastUpdatedTime
  591. this.tableData = res.data.pageRecords
  592. this.totalPage=res.data.totalPage
  593. this.totalNum = res.data.totalCount//this.totalPage*this.params.pagesize
  594. console.log("this.totalPage:"+this.totalPage)
  595. })
  596. },
  597. searchName(){
  598. this.params.q = this.search
  599. this.params.page = 1
  600. this.page=1
  601. this.getAllProList(this.params.type, this.dynamic)
  602. },
  603. goToDetailPage(pro_id,pro_name,ownerName){
  604. this.currentPage=1
  605. document.getElementById("pro_main").style.display="none";
  606. document.getElementById("pro_detail").style.display="block";
  607. console.log(pro_id)
  608. console.log(pro_name)
  609. this.pro_name=pro_name;
  610. this.pro_id=pro_id;
  611. this.ownerName=ownerName
  612. this.getOneProData(pro_id);
  613. this.getOneProList(pro_id,"current_year",true,0);
  614. this.getOneProList(pro_id,"monthly",false,5);
  615. },
  616. tableHeaderStyle({row,column,rowIndex,columnIndex}){
  617. if(rowIndex===0){
  618. return 'background:#f5f5f6;color:#606266'
  619. }
  620. },
  621. cellStyle({row,column,rowIndex,columnIndex}){
  622. if(rowIndex%2 === 1){
  623. return 'background:#f5f5f6;color:#606266'
  624. }
  625. },
  626. handleSizeChangeID(val){
  627. this.pageSize1=val
  628. },
  629. handleCurrentChangeID(currentPage){
  630. this.currentPage = currentPage;
  631. },
  632. getOneProData(pro_id){
  633. this.$axios.get('../api/v1/projectboard/project/'+pro_id,{
  634. }).then((res)=>{
  635. this.tableDataIDTotal = res.data
  636. this.tableDataContTop10=res.data.top10
  637. // this.drawLine()
  638. this.drawRadarOpenI()
  639. })
  640. },
  641. getOneProList(pro_id,type_val,bool_val,index){
  642. this.dynamic_pro=index
  643. console.log("日期类型:"+type_val)
  644. if (typeof type_val=="undefined" || type_val=="null" || type_val==""){
  645. this.paramsID.type=''
  646. this.paramsID.beginTime= this.formatDate(this.create_time_pro[0].getFullYear(),this.create_time_pro[0].getMonth() + 1,this.create_time_pro[0].getDate())
  647. this.paramsID.endTime=this.formatDate(this.create_time_pro[1].getFullYear(),this.create_time_pro[1].getMonth() + 1,this.create_time_pro[1].getDate())
  648. }else{
  649. this.create_time_pro=[]
  650. this.paramsID.type=type_val
  651. this.paramsID.beginTime=''
  652. this.paramsID.endTime=''
  653. }
  654. this.paramsID.openi=bool_val
  655. this.$axios.get('../api/v1/projectboard/project/'+pro_id+"/period",{
  656. params:this.paramsID
  657. }).then((res)=>{
  658. if (bool_val){
  659. this.tableDataIDOpenI = res.data
  660. this.drawOpenItrend()
  661. }else{
  662. this.tableDataID = res.data
  663. this.drawSelectData()
  664. }
  665. })
  666. },
  667. drawRadarOpenI(){
  668. var ydata = [this.roundingF(this.tableDataIDTotal.impact),this.roundingF(this.tableDataIDTotal.completeness),this.roundingF(this.tableDataIDTotal.liveness),this.roundingF(this.tableDataIDTotal.projectHealth),this.roundingF(this.tableDataIDTotal.teamHealth),this.roundingF(this.tableDataIDTotal.growth)]
  669. console.log("ydata:",ydata)
  670. var i = -1;
  671. var option = {
  672. titile:{
  673. text:""
  674. },
  675. tooltip: {
  676. trigger: 'item',
  677. backgroundColor:'rgba(255,255,255,0.8)',
  678. color:'black',
  679. borderWidth:'1',
  680. borderColor:'gray',
  681. textStyle:{
  682. color:'black'
  683. },
  684. position: 'right',
  685. // formatter: function (params) {
  686. // console.log('params:',params)
  687. // console.log('params.data:',params[0])
  688. // let str = params.data.name + "<br />";
  689. // params.data.forEach((item) => {
  690. // str +=
  691. // '<span style="display:inline-block;margin-right:5px;border-radius:50%;width:10px;height:10px;left:5px;background-color:'+params.color+'"></span>' + item.seriesName + " : " + '<span style="float:right">'+item.data[1] +'</span>'+ "<br />";
  692. // });
  693. // return str;
  694. // },
  695. // formatter: function (params, ticket, callback) {
  696. // console.log(params);
  697. // var showHtm="";
  698. // var data = params.data.value
  699. // for(var i=0;i<data.length;i++){
  700. // //x轴名称
  701. // var name = data[i];
  702. // //值
  703. // var value = params[i][2];
  704. // showHtm+= text+ '--' + name + ' :' + value+'<br>'
  705. // }
  706. // return showHtm;
  707. // }
  708. },//提示层
  709. legend: {
  710. // data: ['']
  711. },
  712. radar: {
  713. name: {
  714. textStyle: {
  715. color: 'rgb(0,0,0)', //字体颜色
  716. borderRadius: 3, //圆角
  717. padding: [3, 5] //padding
  718. }
  719. },
  720. slpitNumber:5,
  721. center: ['50%', '50%'],
  722. splitArea: { // 坐标轴在 grid 区域中的分隔区域
  723. show: false,
  724. },
  725. indicator: [{
  726. name: '社区影响力',
  727. max: 100
  728. },
  729. {
  730. name: '项目成熟度',
  731. max: 100
  732. },
  733. {
  734. name: '开发活跃度',
  735. max: 100
  736. },
  737. {
  738. name: '项目健康度',
  739. max: 100
  740. },
  741. {
  742. name: '团队健康度',
  743. max: 100
  744. },
  745. {
  746. name: '项目发展趋势',
  747. max: 100
  748. }
  749. ],
  750. },
  751. series: [{
  752. type: 'radar',
  753. lineStyle:{
  754. width:2,
  755. color: '#409effd6',
  756. normal:{
  757. color:'#409effd6 '
  758. }
  759. },
  760. itemStyle : {
  761. normal : {
  762. color:'#409effd6'
  763. }
  764. },
  765. data: [{
  766. value: ydata,
  767. name:"数据"
  768. }]
  769. }]
  770. }
  771. this.radarOpenI.setOption(option)
  772. },
  773. drawOpenItrend(){
  774. var xdata_openI=[]
  775. var ydata_openI=[]
  776. for(var i =0;i<this.tableDataIDOpenI.length;i++){
  777. xdata_openI.push(this.tableDataIDOpenI[i].date);
  778. ydata_openI.push(this.roundingF(this.tableDataIDOpenI[i].openi))
  779. }
  780. console.log("ydata_openI:"+ydata_openI)
  781. console.log(xdata_openI)
  782. var option = {
  783. title : {
  784. text: 'OpenI指数趋势',
  785. textStyle: {
  786.                 fontSize: 12,
  787.             },
  788. left:'center',
  789. top:'bottom',
  790. subtext: '',
  791. },
  792. tooltip : {
  793. trigger: 'axis',
  794. backgroundColor:'rgba(255,255,255,0.8)',
  795. color:'black',
  796. borderWidth:'1',
  797. borderColor:'#DCE7FB',
  798. textStyle:{
  799. color:'black'
  800. },
  801. },
  802. legend: {
  803. orient: 'vertical',
  804. top:'top',  
  805. },
  806. // calculable : true,
  807. xAxis : [
  808. {
  809. type : 'category',
  810. boundaryGap: false,
  811. data : xdata_openI,
  812. }
  813. ],
  814. yAxis : [
  815. {
  816. type : 'value',
  817. }
  818. ],
  819. series : [
  820. {
  821. data: ydata_openI,
  822. type: 'line',
  823. areaStyle: {
  824. type:'linear',
  825. color:'#DCE7FB',
  826. opacity: 0.3,
  827. origin:"start",
  828. normal:{
  829. color:'#DCE7FB'
  830. }
  831. },
  832. lineStyle:{
  833. width:1,
  834. normal:{
  835. color:'#409effd6'
  836. }
  837. },
  838. itemStyle : {
  839. normal : {
  840. color:'#409effd6'
  841. }
  842. },
  843. }
  844. ]
  845. };
  846. this.echartsOITd.setOption(option)
  847. // setTimeout(function (){
  848. // window.onresize = function () {
  849. // this.echartsOITd.resize();
  850. // }
  851. // },200)
  852. },
  853. drawSelectData(){
  854. // $("#selectData").removeAttr("selectData").empty();
  855. var xdata=[]
  856. var ydata_view=[]
  857. var ydata_download=[]
  858. var ydata_commit=[]
  859. // if ()
  860. for(var i =0;i<this.tableDataID.length;i++){
  861. xdata.push(this.tableDataID[this.tableDataID.length-1-i].date);
  862. ydata_view.push(this.tableDataID[this.tableDataID.length-1-i].view)
  863. ydata_download.push(this.tableDataID[this.tableDataID.length-1-i].download)
  864. ydata_commit.push(this.tableDataID[this.tableDataID.length-1-i].commit)
  865. }
  866. console.log("ydata_openI:"+ydata_download)
  867. console.log(xdata)
  868. this.option = {
  869. title : {
  870. text: '',
  871. textStyle: {
  872.                 fontSize: 12,
  873.             },
  874. left:'center',
  875. top:'bottom',
  876. subtext: '',
  877. },
  878. tooltip : {
  879. trigger: 'axis',
  880. backgroundColor:'rgba(255,255,255,0.8)',
  881. color:'black',
  882. borderWidth:'1',
  883. borderColor:'gray',
  884. textStyle:{
  885. color:'black'
  886. },
  887. },
  888. legend: {
  889. data:['浏览量','下载量','commit'],
  890. // orient: 'vertical',
  891. // top:'top',  
  892. },
  893. toolbox: {
  894. show : false,
  895. feature : {
  896. mark : {show: true},
  897. dataView : {show: false, readOnly: false},
  898. magicType : {show: true, type: ['line', 'bar']},
  899. restore : {show: false},
  900. saveAsImage : {show: true}
  901. }
  902. },
  903. calculable : true,
  904. xAxis : [
  905. {
  906. type : 'category',
  907. data : xdata,
  908. }
  909. ],
  910. yAxis : [
  911. {
  912. type : 'value',
  913. }
  914. ],
  915. series : [
  916. { name:"浏览量",
  917. data: ydata_view,
  918. type: 'line',
  919. areaStyle: {},
  920. },
  921. {
  922. name:"下载量",
  923. data: ydata_download,
  924. type: 'line',
  925. areaStyle: {},
  926. },
  927. {
  928. name:"commit",
  929. data: ydata_commit,
  930. type: 'line',
  931. areaStyle: {},
  932. },
  933. ]
  934. };
  935. this.echartsSelectData.setOption(this.option)
  936. // setTimeout(function (){
  937. // window.onresize = function () {
  938. // this.echartsSelectData.resize;
  939. // }
  940. // },200)
  941. // // 使用刚指定的选择项数据显示图表。
  942. // var selectArr = this.echartsSelectData.getOption().legend[0].data;//legend所有值
  943. // var checkboxs=document.getElementsByName('checkboxchart');
  944. // $(".checkboxchart").click(function(){
  945. // var obj = {};
  946. // for(var i=0; i<checkboxs.length; i++){
  947. // if(checkboxs[i].checked){
  948. // obj[selectArr[i]] = true;
  949. // }else{
  950. // obj[selectArr[i]] = false;
  951. // }
  952. // }
  953. // option.legend.selected = obj;
  954. // this.echartsSelectData.setOption(option);
  955. // });
  956. },
  957. roundingF(value){
  958. return Number(value).toFixed(2)
  959. },
  960. clickCheckBox(){
  961. // 使用刚指定的选择项数据显示图表。
  962. var selectArr = this.echartsSelectData.getOption().legend[0].data;//legend所有值
  963. var checkboxs=document.getElementsByName('checkboxchart');
  964. // $(".checkboxchart").click(function(){
  965. var obj = {};
  966. for(var i=0; i<checkboxs.length; i++){
  967. if(checkboxs[i].checked){
  968. obj[selectArr[i]] = true;
  969. }else{
  970. obj[selectArr[i]] = false;
  971. }
  972. }
  973. this.option.legend.selected = obj;
  974. this.echartsSelectData.setOption(this.option);
  975. // });
  976. },
  977. comparedate(date1,date2){
  978. console.log("date1:"+date1)
  979. console.log("date1:"+date2)
  980. var oDate1 = new Date(date1);
  981. var oDate2 = new Date(date2);
  982. if(oDate1.getTime() < oDate2.getTime()){
  983. var data = date2.split('-')
  984. return data[0]+''+data[1]+''+data[2]
  985. } else {
  986. var data = date1.split('-')
  987. return data[0]+''+data[1]+''+data[2]
  988. }
  989. },
  990. },
  991. filters:{
  992. rounding (value) {
  993. return Number(value).toFixed(2)
  994. },
  995. changeType(value){
  996. if(value==false){
  997. return "否"
  998. }else{
  999. return "是"
  1000. }
  1001. },
  1002. discriptionFun(value){
  1003. if(value==''){
  1004. return "暂无描述"
  1005. }
  1006. },
  1007. showMode(value){
  1008. if(value==1){
  1009. return "可读权限"
  1010. }else if(value==2){
  1011. return "可写权限"
  1012. }else if(value==3){
  1013. return "管理员"
  1014. }else if(value==4){
  1015. return "所有者"
  1016. }else{
  1017. return "未定义"
  1018. }
  1019. },
  1020. showContext(value){
  1021. if (value.mode!=-1){
  1022. return " <img class=\"ui avatar image\" src= \" "+ value.RelAvatarLink+ " \" > "+" <a href= \" " + AppSubUrl+"/"+value.user+ "\">"+value.user+" </a>"
  1023. }
  1024. else{
  1025. return " <a href=\" mailto:" + value.email + "class=\"circular ui button\">" +value.user+ "</a>"
  1026. }
  1027. },
  1028. },
  1029. mounted() {
  1030. this.getAllProList("all",7)
  1031. console.log("id:"+this.pro_id);
  1032. document.getElementById('radar_openi').style.width = document.getElementById('pro_main').offsetWidth*0.22+'px'
  1033. document.getElementById('line_openi').style.width = document.getElementById('pro_main').offsetWidth*0.33+'px'
  1034. document.getElementById('selectData').style.width = document.getElementById('pro_main').offsetWidth*0.8+'px'
  1035. this.radarOpenI = this.$echarts.init(document.getElementById('radar_openi'))
  1036. this.echartsOITd = this.$echarts.init(document.getElementById('line_openi'))
  1037. this.echartsSelectData = this.$echarts.init(document.getElementById('selectData'))
  1038. // window.onresize=function(){
  1039. // this.radarOpenI.resize();
  1040. // this.echartsOITd.resize();
  1041. // this.echartsSelectData.resize();
  1042. // }
  1043. // console.log("this.radarOpenI:"+this.radarOpenI)
  1044. },
  1045. watch:{
  1046. search(val){
  1047. if(!val){
  1048. this.params.q = this.search
  1049. this.params.page = 1
  1050. this.page=1
  1051. this.getAllProList(this.params.type, this.dynamic)
  1052. }
  1053. }
  1054. },
  1055. created() {
  1056. // this.download_a=document.getElementById("download_file")
  1057. },
  1058. updated(){
  1059. if(document.querySelectorAll('img[avatar]').length!==0){
  1060. window.LetterAvatar.transform()
  1061. }
  1062. }
  1063. }
  1064. </script>
  1065. <style scoped>
  1066. .pro_item{
  1067. font-size: 16px;
  1068. color: rgba(16, 16, 16, 100);
  1069. font-family: SourceHanSansSC-bold;
  1070. }
  1071. .sta_item{
  1072. font-size: 14px;
  1073. color: rgb(0 0 0);
  1074. font-family: SourceHanSansSC-bold;
  1075. }
  1076. .update_time{
  1077. line-height: 17px;
  1078. font-size: 12px;
  1079. color:rgba(187, 187, 187, 100);
  1080. margin-left: 10px;
  1081. }
  1082. .btnFirst{
  1083. line-height: 1.5;
  1084. margin: -3.5px;
  1085. border: 1px solid #409eff;
  1086. border-right: none;
  1087. background: #FFFF;
  1088. color: #409eff;
  1089. width: 60px;
  1090. height: 30px;
  1091. border-radius:4px 0px 0px 4px;
  1092. }
  1093. .btn{
  1094. line-height: 1.5;
  1095. margin: -3.5px;
  1096. border: 1px solid #409eff;
  1097. border-right: none;
  1098. background: #FFFF;
  1099. color: #409eff;
  1100. width: 60px;
  1101. height: 30px;
  1102. }
  1103. .btnLast{
  1104. line-height: 1.5;
  1105. margin: -3.5px;
  1106. border: 1px solid #409eff;
  1107. /* border-right: none; */
  1108. background: #FFFF;
  1109. color: #409eff;
  1110. width: 60px;
  1111. height: 30px;
  1112. border-radius:0px 4px 4px 0px;
  1113. }
  1114. .btnFirst, .btn, .btnLast {
  1115. cursor: pointer;
  1116. }
  1117. /*
  1118. .btn:focus,
  1119. .btn:active{
  1120. background-color:#409effd6 ;
  1121. } */
  1122. /* /deep/ .el-date-picker {
  1123. width: 250px;
  1124. } */
  1125. /deep/ .el-table tbody tr:hover>td {
  1126. background-color:#D3D3D3!important;
  1127. opacity:1
  1128. }
  1129. /deep/ .el-table {
  1130. font-size: 12px;
  1131. }
  1132. /deep/ .el-range-separator{
  1133. width: 20% !important;
  1134. }
  1135. .colorChange {
  1136. background-color: #409effd6;
  1137. color: #FFFF;
  1138. cursor: default;
  1139. }
  1140. .items{
  1141. text-align: center;
  1142. border-right:1px solid rgba(219, 219, 219, 100);
  1143. }
  1144. .item_l{
  1145. margin-right: 5px;
  1146. border:1px solid rgba(219, 219, 219, 100);
  1147. height: 370px;
  1148. width: 100%;
  1149. }
  1150. .item_r{
  1151. margin-right:5px;
  1152. border:1px solid rgba(219, 219, 219, 100);
  1153. height: 370px;
  1154. overflow:auto
  1155. }
  1156. .item_echart{
  1157. margin-top: 10px;
  1158. margin-right: 5px;
  1159. border:1px solid rgba(219, 219, 219, 100);
  1160. height: 350px;
  1161. width: 100%;
  1162. }
  1163. .item_content{
  1164. color: #409eff;
  1165. margin-top: 10px;
  1166. font-weight:bold;
  1167. }
  1168. </style>