pdf.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426
  1. <template>
  2. <div>
  3. <!-- 封面 -->
  4. <div class="cd_box">
  5. <div class="cb_db adf">
  6. <div class="cb_db_l">{{ datetime }}</div>
  7. <div class="cb_db_r">欢迎使用CCMI的PERILL</div>
  8. </div>
  9. <img class="fm_img" src="">
  10. <div class="fm_title">诊断总结:</div>
  11. <div class="fm_pre adfac">
  12. <div class="fmp_l">报告撰写人:</div>
  13. <div class="fmp_r">{{ reportData?.cover?.realName }}</div>
  14. </div>
  15. <div class="fm_pre adfac">
  16. <div class="fmp_l">客户名称:</div>
  17. <div class="fmp_r">{{ reportData?.cover?.enterpriseName }}</div>
  18. </div>
  19. <div class="fm_pre adfac">
  20. <div class="fmp_l">团队名称:</div>
  21. <div class="fmp_r">{{ reportData?.cover?.teamName }}</div>
  22. </div>
  23. <div class="fm_pre adfac">
  24. <div class="fmp_l">团队成员人数:</div>
  25. <div class="fmp_r">{{ reportData?.cover?.userNum }}</div>
  26. </div>
  27. <div class="fm_pre adfac">
  28. <div class="fmp_l">报告时间:</div>
  29. <div class="fmp_r">{{ reportData?.cover?.genDate }}</div>
  30. </div>
  31. <div class="fm_pre adfac">
  32. <div class="fmp_l">问卷名称:</div>
  33. <div class="fmp_r">{{ reportData?.cover?.title }}</div>
  34. </div>
  35. <div class="cd_page">1/{{ 53 }}</div>
  36. </div>
  37. <!-- 第二页 -->
  38. <div class="cd_box">
  39. <div class="cb_db adf">
  40. <div class="cb_db_l">{{ datetime }}</div>
  41. <div class="cb_db_r">欢迎使用CCMI的PERILL</div>
  42. </div>
  43. <div class="mddj_title">介绍</div>
  44. <p>PERILL模型由发展辅导领域的先驱、世界领先的教练及管理思维和团队绩效的作者大卫·克勒特巴克教授开发。该模型运用复杂的适应性思维,通过6个PERILL支柱来指导团队。这6个关键因素相互作用,共同推动或阻碍团队绩效。</p>
  45. <p>以下报告提取了参与PERILL诊断问卷的团队成员提供的分数,并将其应用于PERILL模型。本报告的目的是总结团队中高功能和潜在功能障碍的领域,以帮助推动团队的整体表现。</p>
  46. <p>该PERILL报告的结果可以帮助企业与团队更好地了解其优势、问题和差距,或需要克服的潜在挑战,以提高团队绩效、声誉和协作。</p>
  47. <div class="big_title">PERILL的六大支柱</div>
  48. <p>PERILL诊断提供了一个复杂的概述,不是离散的问题,也不是简单的优点和缺点,而是团队系统的复杂性。它询问了6个影响因素(如下所述)的问题,以找出团队系统元素之间的联系,以及它们如何可能影响团队高效运作的能力。</p>
  49. <div class="cd_page">2/{{ 53 }}</div>
  50. </div>
  51. <!-- 第三页 -->
  52. <div class="cd_box">
  53. <div class="cb_db adf">
  54. <div class="cb_db_l">{{ datetime }}</div>
  55. <div class="cb_db_r">欢迎使用CCMI的PERILL</div>
  56. </div>
  57. <div class="mddj_title">整体团队职能</div>
  58. <p style="margin-top: 50px;">本报告的核心是PERILL诊断分析下的整体团队表现。这包括团队在PERILL模型每个关键要素上的综合得分,通过结合得分和置信指数,我们能够展示出高功能领域和低功能领域。</p>
  59. <p>下面的条形图上的位置标记显示了团队在各个支柱上的总分。</p>
  60. <div ref="zttdznRef" style="width: 100%; height: 500px;margin-top: 20px;"></div>
  61. <div class="cd_page">3/{{ 53 }}</div>
  62. </div>
  63. <!-- 团队成员评分目的和动机 -->
  64. <div class="cd_box">
  65. <div class="cb_db adf">
  66. <div class="cb_db_l">{{ datetime }}</div>
  67. <div class="cb_db_r">欢迎使用CCMI的PERILL</div>
  68. </div>
  69. <div class="mddj_title">团队成员评分目的和动机</div>
  70. <div class="mddj_tip">下表显示了每个团队成员对每个问题的得分,以及最终的总分和方差。</div>
  71. <div class="mddj_top adf">
  72. <div class="tt_pre adf">
  73. <div class="ttp_l tl1"></div>
  74. <div class="ttp_r">在个体和总分下,这表示功能得分较低。在方差下,这表示个体得分之间的差异较大。</div>
  75. </div>
  76. <div class="tt_pre adf">
  77. <div class="ttp_l tl2"></div>
  78. <div class="ttp_r">在个体和总分下,这表明一个中等功能的分数。在方差下,这表明个体分数之间的中等方差。</div>
  79. </div>
  80. <div class="tt_pre adf">
  81. <div class="ttp_l tl3"></div>
  82. <div class="ttp_r">在个体和总分下,这表示高功能得分。在方差下,这表示个体得分之间的低方差。</div>
  83. </div>
  84. </div>
  85. <div class="mddj_table">
  86. <div class="mt_top adf">
  87. <div class="mt_l adfac">问题</div>
  88. <div class="mt_r adf">
  89. <div class="mr_pre">玛丽</div>
  90. <div class="mr_pre">千斤顶</div>
  91. <div class="mr_pre">汤姆</div>
  92. <div class="mr_pre">阿尔法</div>
  93. <div class="mr_pre">总评分</div>
  94. <div class="mr_pre">Variance</div>
  95. </div>
  96. </div>
  97. <div class="mt_list">
  98. <div class="ml_pre adf" v-for="(item,index) in mddjTableDatas.slice(0,6)" :key="index">
  99. <div class="mt_l adfac">{{ item.title }}</div>
  100. <div class="mt_r adfac">
  101. <div class="mp_pre adffcacjc" :class="{'mp1':pre.status==1,'mp2':pre.status==2,'mp3':pre.status==3}" v-for="(pre,idx) in item.datas" :key="idx">{{ pre.score }}</div>
  102. </div>
  103. </div>
  104. </div>
  105. </div>
  106. <div class="cd_page">2/{{ 53 }}</div>
  107. </div>
  108. <div class="cd_box" v-if="mddjTableDatas.length>6">
  109. <div class="cb_db adf">
  110. <div class="cb_db_l">{{ datetime }}</div>
  111. <div class="cb_db_r">欢迎使用CCMI的PERILL</div>
  112. </div>
  113. <div class="mddj_table">
  114. <div class="mt_top adf">
  115. <div class="mt_l adfac">问题</div>
  116. <div class="mt_r adf">
  117. <div class="mr_pre">玛丽</div>
  118. <div class="mr_pre">千斤顶</div>
  119. <div class="mr_pre">汤姆</div>
  120. <div class="mr_pre">阿尔法</div>
  121. <div class="mr_pre">总评分</div>
  122. <div class="mr_pre">Variance</div>
  123. </div>
  124. </div>
  125. <div class="mt_list">
  126. <div class="ml_pre adf" v-for="(item,index) in mddjTableDatas.slice(6,mddjTableDatas.length)" :key="index">
  127. <div class="mt_l adfac">{{ item.title }}</div>
  128. <div class="mt_r adfac">
  129. <div class="mp_pre adffcacjc" :class="{'mp1':pre.status==1,'mp2':pre.status==2,'mp3':pre.status==3}" v-for="(pre,idx) in item.datas" :key="idx">{{ pre.score }}</div>
  130. </div>
  131. </div>
  132. </div>
  133. </div>
  134. <div class="cd_page">3/{{ 53 }}</div>
  135. </div>
  136. <!-- 绩效评级关系 -->
  137. <div class="cd_box">
  138. <div class="mddj_title">绩效评级关系</div>
  139. <div class="pjgx_title">按主题列出的功能评级</div>
  140. <div class="pjgx_chart">
  141. <div ref="pjgxRef" style="width: 100%; height: 250px;margin-top: 20px;"></div>
  142. </div>
  143. <div class="pjgx_title">高/低性能指标</div>
  144. </div>
  145. </div>
  146. </template>
  147. <script setup name="">
  148. const props = defineProps({
  149. reportData:{
  150. type: Object,
  151. default: () => {}
  152. }
  153. })
  154. import * as echarts from "echarts";
  155. import { ref, getCurrentInstance, onMounted } from 'vue'
  156. const { proxy } = getCurrentInstance();
  157. const reportData = ref(props.reportData);
  158. const zttdznRef = ref(null)
  159. const pjgxRef = ref(null);
  160. const datetime = proxy.parseTime(new Date(), '{yy}-{mm}-{dd} {hh}:{ii}');
  161. const mddjTableDatas = ref([
  162. {
  163. title: '我们可以集体明确地表达我们的共同目标',
  164. datas: [
  165. { name: '玛丽', score: 1, status:1 },
  166. { name: '千斤顶', score: 16, status:2 },
  167. { name: '汤姆', score: 16, status:2 },
  168. { name: '阿尔法', score: 20, status:2 },
  169. { name: '总评分', score: 13, status:1 },
  170. { name: 'Variance', score: 19, status:2 }
  171. ]
  172. },
  173. {
  174. title: '我们对团队在这里要做的事情高度一致',
  175. datas: [
  176. { name: '玛丽', score: 1, status:1 },
  177. { name: '千斤顶', score: 9, status:1 },
  178. { name: '汤姆', score: 12, status:1 },
  179. { name: '阿尔法', score: 16, status:2 },
  180. { name: '总评分', score: 10, status:1 },
  181. { name: 'Variance', score: 15, status:2 }
  182. ]
  183. },
  184. {
  185. title: '我们善于将团队优先事项置于个人优先事项之前',
  186. datas: [
  187. { name: '玛丽', score: 1, status:1 },
  188. { name: '千斤顶', score: 12, status:1 },
  189. { name: '汤姆', score: 36, status:3 },
  190. { name: '阿尔法', score: 18, status:2 },
  191. { name: '总评分', score: 17, status:2 },
  192. { name: 'Variance', score: 35, status:1 }
  193. ]
  194. },
  195. {
  196. title: '我们可以集体明确地表达我们的共同目标',
  197. datas: [
  198. { name: '玛丽', score: 1, status:1 },
  199. { name: '千斤顶', score: 16, status:2 },
  200. { name: '汤姆', score: 16, status:2 },
  201. { name: '阿尔法', score: 20, status:2 },
  202. { name: '总评分', score: 13, status:1 },
  203. { name: 'Variance', score: 19, status:2 }
  204. ]
  205. },
  206. {
  207. title: '我们对团队在这里要做的事情高度一致',
  208. datas: [
  209. { name: '玛丽', score: 1, status:1 },
  210. { name: '千斤顶', score: 9, status:1 },
  211. { name: '汤姆', score: 12, status:1 },
  212. { name: '阿尔法', score: 16, status:2 },
  213. { name: '总评分', score: 10, status:1 },
  214. { name: 'Variance', score: 15, status:2 }
  215. ]
  216. },
  217. {
  218. title: '我们善于将团队优先事项置于个人优先事项之前',
  219. datas: [
  220. { name: '玛丽', score: 1, status:1 },
  221. { name: '千斤顶', score: 12, status:1 },
  222. { name: '汤姆', score: 36, status:3 },
  223. { name: '阿尔法', score: 18, status:2 },
  224. { name: '总评分', score: 17, status:2 },
  225. { name: 'Variance', score: 35, status:1 }
  226. ]
  227. },
  228. {
  229. title: '我们可以集体明确地表达我们的共同目标',
  230. datas: [
  231. { name: '玛丽', score: 1, status:1 },
  232. { name: '千斤顶', score: 16, status:2 },
  233. { name: '汤姆', score: 16, status:2 },
  234. { name: '阿尔法', score: 20, status:2 },
  235. { name: '总评分', score: 13, status:1 },
  236. { name: 'Variance', score: 19, status:2 }
  237. ]
  238. },
  239. {
  240. title: '我们对团队在这里要做的事情高度一致',
  241. datas: [
  242. { name: '玛丽', score: 1, status:1 },
  243. { name: '千斤顶', score: 9, status:1 },
  244. { name: '汤姆', score: 12, status:1 },
  245. { name: '阿尔法', score: 16, status:2 },
  246. { name: '总评分', score: 10, status:1 },
  247. { name: 'Variance', score: 15, status:2 }
  248. ]
  249. },
  250. {
  251. title: '我们善于将团队优先事项置于个人优先事项之前',
  252. datas: [
  253. { name: '玛丽', score: 1, status:1 },
  254. { name: '千斤顶', score: 12, status:1 },
  255. { name: '汤姆', score: 36, status:3 },
  256. { name: '阿尔法', score: 18, status:2 },
  257. { name: '总评分', score: 17, status:2 },
  258. { name: 'Variance', score: 35, status:1 }
  259. ]
  260. },
  261. {
  262. title: '我们可以集体明确地表达我们的共同目标',
  263. datas: [
  264. { name: '玛丽', score: 1, status:1 },
  265. { name: '千斤顶', score: 16, status:2 },
  266. { name: '汤姆', score: 16, status:2 },
  267. { name: '阿尔法', score: 20, status:2 },
  268. { name: '总评分', score: 13, status:1 },
  269. { name: 'Variance', score: 19, status:2 }
  270. ]
  271. },
  272. {
  273. title: '我们对团队在这里要做的事情高度一致',
  274. datas: [
  275. { name: '玛丽', score: 1, status:1 },
  276. { name: '千斤顶', score: 9, status:1 },
  277. { name: '汤姆', score: 12, status:1 },
  278. { name: '阿尔法', score: 16, status:2 },
  279. { name: '总评分', score: 10, status:1 },
  280. { name: 'Variance', score: 15, status:2 }
  281. ]
  282. },
  283. {
  284. title: '我们善于将团队优先事项置于个人优先事项之前',
  285. datas: [
  286. { name: '玛丽', score: 1, status:1 },
  287. { name: '千斤顶', score: 12, status:1 },
  288. { name: '汤姆', score: 36, status:3 },
  289. { name: '阿尔法', score: 18, status:2 },
  290. { name: '总评分', score: 17, status:2 },
  291. { name: 'Variance', score: 35, status:1 }
  292. ]
  293. },
  294. {
  295. title: '我们可以集体明确地表达我们的共同目标',
  296. datas: [
  297. { name: '玛丽', score: 1, status:1 },
  298. { name: '千斤顶', score: 16, status:2 },
  299. { name: '汤姆', score: 16, status:2 },
  300. { name: '阿尔法', score: 20, status:2 },
  301. { name: '总评分', score: 13, status:1 },
  302. { name: 'Variance', score: 19, status:2 }
  303. ]
  304. },
  305. {
  306. title: '我们对团队在这里要做的事情高度一致',
  307. datas: [
  308. { name: '玛丽', score: 1, status:1 },
  309. { name: '千斤顶', score: 9, status:1 },
  310. { name: '汤姆', score: 12, status:1 },
  311. { name: '阿尔法', score: 16, status:2 },
  312. { name: '总评分', score: 10, status:1 },
  313. { name: 'Variance', score: 15, status:2 }
  314. ]
  315. },
  316. {
  317. title: '我们善于将团队优先事项置于个人优先事项之前',
  318. datas: [
  319. { name: '玛丽', score: 1, status:1 },
  320. { name: '千斤顶', score: 12, status:1 },
  321. { name: '汤姆', score: 36, status:3 },
  322. { name: '阿尔法', score: 18, status:2 },
  323. { name: '总评分', score: 17, status:2 },
  324. { name: 'Variance', score: 35, status:1 }
  325. ]
  326. },
  327. ])
  328. const initZttdznChart = () => {
  329. let myChart = echarts.init(zttdznRef.value);
  330. let option = {
  331. tooltip: {
  332. trigger: 'axis',
  333. axisPointer: {
  334. type: 'shadow'
  335. }
  336. },
  337. legend: {},
  338. grid: {
  339. left: '3%',
  340. right: '8%',
  341. bottom: '3%',
  342. containLabel: true
  343. },
  344. xAxis: {
  345. type: 'value',
  346. boundaryGap: [0, 0.01]
  347. },
  348. yAxis: {
  349. type: 'category',
  350. data: ['Brazil', 'Indonesia', 'USA', 'India', 'China', 'World']
  351. },
  352. series: [
  353. {
  354. name: '2011',
  355. type: 'bar',
  356. data: [18203, 23489, 29034, 104970, 131744, 630230],
  357. itemStyle:{
  358. color: function(params) {
  359. var colorList = ['#c23531','#2f4554', '#61a0a8', '#d48265', '#91c7ae','#749f83'];
  360. return colorList[params.dataIndex]
  361. }
  362. }
  363. }
  364. ]
  365. };
  366. myChart.setOption(option)
  367. }
  368. const initPlgxChart = () => {
  369. let myChart = echarts.init(pjgxRef.value);
  370. let option = {
  371. color:['#F9CE7F'],
  372. legend: {
  373. data: ['Allocated Budget']
  374. },
  375. radar: {
  376. indicator: [
  377. { name: 'Sales', max: 6500,
  378. axisLabel : {
  379. show: true
  380. }
  381. },
  382. { name: 'Administration', max: 16000 },
  383. { name: 'Information Technology', max: 30000 },
  384. { name: 'Customer Support', max: 38000 },
  385. { name: 'Development', max: 52000 },
  386. { name: 'Marketing', max: 25000 }
  387. ],
  388. radius:'55%',
  389. },
  390. series: [
  391. {
  392. name: 'Budget vs spending',
  393. type: 'radar',
  394. areaStyle: {},
  395. data: [
  396. {
  397. value: [4200, 3000, 20000, 35000, 50000, 18000],
  398. name: 'Allocated Budget'
  399. }
  400. ]
  401. }
  402. ]
  403. }
  404. myChart.setOption(option)
  405. }
  406. onMounted(() => {
  407. initZttdznChart();
  408. initPlgxChart();
  409. })
  410. </script>
  411. <style scoped lang="scss">
  412. @import url(./pdf.scss);
  413. .cd_box{
  414. width: 100%;
  415. height: 891px;
  416. color: #A1A1A1;
  417. }
  418. </style>