time.vue 10KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357
  1. <template>
  2. <div class="main-contain">
  3. <div class="position">
  4. <bread-crumb :crumbs="crumbs"></bread-crumb>
  5. </div>
  6. <div class="app-container">
  7. <el-tabs v-model="activeName" @tab-click="handleClick">
  8. <el-tab-pane label="按时间分组" name="first"></el-tab-pane>
  9. <el-tab-pane label="按项目分组" name="second"></el-tab-pane>
  10. </el-tabs>
  11. <div class="cell clearfix">
  12. <el-select v-model="value" placeholder="请选择" style="width:120px;margin-right:20px">
  13. <el-option
  14. v-for="item in options"
  15. :key="item.value"
  16. :label="item.label"
  17. :value="item.value"
  18. ></el-option>
  19. </el-select>
  20. <el-select v-model="type" placeholder="请选择" @change="chooseType" style="margin-right:20px">
  21. <el-option
  22. v-for="item in options1"
  23. :key="item.value"
  24. :label="item.label"
  25. :value="item.value"
  26. ></el-option>
  27. </el-select>
  28. <div v-if="type == '自定义'">
  29. <label class="title">
  30. <span class="name">日期查询</span> :
  31. </label>
  32. <el-date-picker
  33. v-model="listQuery.start_time"
  34. prefix-icon="el-icon-date"
  35. @change="changeTime"
  36. :editable="false"
  37. style="width: 196px;"
  38. type="date"
  39. placeholder="选择日期时间"
  40. align="right"
  41. format="yyyy-MM-dd"
  42. value-format="yyyy-MM-dd"
  43. ></el-date-picker>
  44. <span class>-</span>
  45. <el-date-picker
  46. v-model="listQuery.end_time"
  47. prefix-icon="el-icon-date"
  48. @change="changeEndTime"
  49. :editable="false"
  50. style="width: 196px;"
  51. type="date"
  52. placeholder="选择日期时间"
  53. align="right"
  54. format="yyyy-MM-dd"
  55. value-format="yyyy-MM-dd"
  56. ></el-date-picker>
  57. </div>
  58. </div>
  59. <div class="cell clearfix">
  60. <div class="time newLi" v-if="type == '按季度对比统计'">
  61. <ul class>
  62. <li
  63. :class="item.state == quarterType ? 'active' : ''"
  64. @click="chooseQuarter(item.state)"
  65. v-for="item in quarter"
  66. :key="item.value"
  67. >{{ item.label }}</li>
  68. </ul>
  69. </div>
  70. <div class="time newLi" v-if="type == '按月份对比统计'">
  71. <ul class>
  72. <li
  73. :class="item.state == monthType ? 'active' : ''"
  74. @click="chooseMonth(item.state)"
  75. v-for="item in month"
  76. :key="item.value"
  77. >{{ item.label }}</li>
  78. </ul>
  79. </div>
  80. </div>
  81. <div class="cell clearfix">
  82. <p class="chartTitle">统计图</p>
  83. </div>
  84. <div>
  85. <line-chart :options="chart"></line-chart>
  86. </div>
  87. <div class="cell clearfix">
  88. <p class="point"></p>
  89. <p class="pointTitle">指标正常范围值</p>
  90. </div>
  91. <div class="cell clearfix newDisplay">
  92. <span class="index">钙(2.25-2.75)</span>
  93. <span class="index">钙(2.25-2.75)</span>
  94. <span class="index">钙(2.25-2.75)</span>
  95. <span class="index">钙(2.25-2.75)</span>
  96. <span class="index">钙(2.25-2.75)</span>
  97. <span class="index">钙(2.25-2.75)</span>
  98. <span class="index">钙(2.25-2.75)</span>
  99. <span class="index">钙(2.25-2.75)</span>
  100. <span class="index">钙(2.25-2.75)</span>
  101. <span class="index">钙(2.25-2.75)</span>
  102. <span class="index">钙(2.25-2.75)</span>
  103. <span class="index">钙(2.25-2.75)</span>
  104. <span class="index">钙(2.25-2.75)</span>
  105. <span class="index">钙(2.25-2.75)</span>
  106. <span class="index">钙(2.25-2.75)</span>
  107. <span class="index">钙(2.25-2.75)</span>
  108. <span class="index">钙(2.25-2.75)</span>
  109. <span class="index">钙(2.25-2.75)</span>
  110. </div>
  111. </div>
  112. </div>
  113. </template>
  114. <script>
  115. import echarts from "echarts";
  116. import { GetOICData } from "@/api/qcd";
  117. import LineChart from "../../qcd/components/LineChart";
  118. import { uParseTime } from "@/utils/tools";
  119. import BreadCrumb from "@/xt_pages/components/bread-crumb";
  120. export default {
  121. components: {
  122. LineChart,
  123. BreadCrumb
  124. },
  125. data() {
  126. return {
  127. activeName: "first",
  128. crumbs: [
  129. { path: false, name: "科室质控" },
  130. { path: false, name: "科室质控达标统计" },
  131. { path: false, name: "按时间分组" }
  132. ],
  133. listQuery: {
  134. start_time: "",
  135. end_time: "",
  136. page: 1,
  137. limit: 10
  138. },
  139. options: [
  140. {
  141. value: "选项1",
  142. label: "黄金糕"
  143. },
  144. {
  145. value: "选项2",
  146. label: "双皮奶"
  147. },
  148. {
  149. value: "选项3",
  150. label: "蚵仔煎"
  151. },
  152. {
  153. value: "选项4",
  154. label: "龙须面"
  155. },
  156. {
  157. value: "选项5",
  158. label: "北京烤鸭"
  159. }
  160. ],
  161. value: "请选项",
  162. options1: [
  163. {
  164. value: "按季度对比统计",
  165. label: "按季度对比统计"
  166. },
  167. {
  168. value: "按月份对比统计",
  169. label: "按月份对比统计"
  170. },
  171. {
  172. value: "自定义",
  173. label: "自定义"
  174. }
  175. ],
  176. type: "按季度对比统计",
  177. quarter: [
  178. { value: 0, label: "第一季度", state: 0 },
  179. { value: 1, label: "第二季度", state: 1 },
  180. { value: 2, label: "第三季度", state: 2 },
  181. { value: 3, label: "第四季度", state: 3 }
  182. ],
  183. quarterType: 0,
  184. month: [
  185. { value: 0, label: "一月", state: 0 },
  186. { value: 1, label: "二月", state: 1 },
  187. { value: 2, label: "三月", state: 2 },
  188. { value: 3, label: "四月", state: 3 },
  189. { value: 4, label: "五月", state: 4 },
  190. { value: 5, label: "六月", state: 5 },
  191. { value: 6, label: "七月", state: 6 },
  192. { value: 7, label: "八月", state: 7 },
  193. { value: 8, label: "九月", state: 8 },
  194. { value: 9, label: "十月", state: 9 },
  195. { value: 10, label: "十一月", state: 10 },
  196. { value: 11, label: "十二月", state: 11 }
  197. ],
  198. monthType: 0,
  199. chart: {
  200. title: {
  201. text: "ECharts 入门示例"
  202. },
  203. tooltip: {},
  204. legend: {
  205. data: ["次数"],
  206. left: 0
  207. },
  208. xAxis: {
  209. data: ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
  210. },
  211. yAxis: {
  212. axisLabel: {
  213. formatter: "{value} %"
  214. },
  215. show: false
  216. },
  217. series: [
  218. {
  219. name: "次数",
  220. type: "bar",
  221. data: [
  222. "78.57",
  223. "50",
  224. "80",
  225. "93.33",
  226. "92.86",
  227. "100",
  228. "12",
  229. "77",
  230. "37"
  231. ],
  232. barWidth: 30,
  233. label: {
  234. normal: {
  235. show: true,
  236. position: "top",
  237. formatter: "{c}次"
  238. }
  239. },
  240. //配置样式
  241. itemStyle: {
  242. //通常情况下:
  243. //每个柱子的颜色即为colorList数组里的每一项,如果柱子数目多于colorList的长度,则柱子颜色循环使用该数组
  244. normal: {
  245. color: function(params) {
  246. //我这边就两个柱子,大体就两个柱子颜色渐变,所以数组只有两个值,多个颜色就多个值
  247. var colorList = [
  248. ["#A9E0F3", "#9FBDFC"],
  249. ["#A9E0F3", "#9FBDFC"],
  250. ["#A9E0F3", "#9FBDFC"],
  251. ["#FFD7C0", "#FF9994"],
  252. ["#FFD7C0", "#FF9994"],
  253. ["#FFD7C0", "#FF9994"],
  254. ["#D7C3FD", "#B3A8F7"],
  255. ["#D7C3FD", "#B3A8F7"],
  256. ["#D7C3FD", "#B3A8F7"]
  257. ];
  258. var index = params.dataIndex;
  259. if (params.dataIndex >= colorList.length) {
  260. index = params.dataIndex % colorList.length;
  261. }
  262. return new echarts.graphic.LinearGradient(0, 0, 0, 1, [
  263. { offset: 0, color: colorList[index][0] },
  264. // { offset: 0.5, color: colorList[index][1] },
  265. { offset: 1, color: colorList[index][1] }
  266. ]);
  267. },
  268. barBorderRadius: [5, 5, 0, 0] //柱状角成椭圆形
  269. },
  270. //鼠标悬停时:
  271. emphasis: {
  272. shadowBlur: 10,
  273. shadowOffsetX: 0,
  274. shadowColor: "rgba(0, 0, 0, 0.5)"
  275. }
  276. }
  277. }
  278. ]
  279. }
  280. };
  281. },
  282. methods: {
  283. handleClick() {
  284. if (this.activeName == "second") {
  285. this.$router.push({ path: "/qcd/officesControlAnalysis/project" });
  286. }
  287. },
  288. changeTime() {},
  289. changeEndTime(val) {
  290. var time =
  291. this.getTimestamp(val) - this.getTimestamp(this.listQuery.start_time);
  292. if (time < 0) {
  293. this.$message.error("结束时间不能小于开始时间");
  294. this.listQuery.end_time = "";
  295. } else {
  296. }
  297. },
  298. selectLapseTo(state) {
  299. this.stateType = state;
  300. this.listQuery.state = state;
  301. },
  302. chooseType(val) {
  303. console.log(val);
  304. this.type = val;
  305. },
  306. chooseQuarter(quarter) {
  307. this.quarterType = quarter;
  308. },
  309. chooseMonth(month) {
  310. this.monthType = month;
  311. }
  312. }
  313. };
  314. </script>
  315. <style lang="scss" scoped>
  316. .newLi {
  317. li {
  318. background: #f5f5f6;
  319. }
  320. }
  321. .chartTitle {
  322. font-size: 16px;
  323. font-weight: bold;
  324. color: #000000;
  325. }
  326. .point {
  327. width: 13px;
  328. height: 13px;
  329. background: linear-gradient(
  330. 0deg,
  331. rgba(169, 224, 243, 1),
  332. rgba(159, 189, 252, 1)
  333. );
  334. border-radius: 7px;
  335. margin-right: 8px;
  336. }
  337. .pointTitle {
  338. font-size: 13px;
  339. }
  340. .index {
  341. color: #a09ba3;
  342. font-size: 13px;
  343. margin-right: 36px;
  344. margin-bottom: 20px;
  345. }
  346. .newDisplay {
  347. flex-wrap: wrap;
  348. }
  349. </style>