1.vue 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767
  1. <template>
  2. <div class="articleMainBox">
  3. <div class="articleTitle">{{templateData.data.title}}</div>
  4. <div class="articleInfo">
  5. <div>来源:{{templateData.data.copyfrom}}</div>
  6. <div>作者:{{templateData.data.author}}</div>
  7. <div>时间:{{templateData.data.updated_at}}</div>
  8. </div>
  9. <div class="articleContent" v-html="templateData.data.content" @click="openPreview"></div>
  10. <div class="statementBox" v-if="templateData.data.copyfrom != '本网'">
  11. <div class="statementBoxLeft">
  12. <div>原文链接:http://nmyj.xlgl.gov.cn/xzxk/zsyz/202112/t20211201_2771045.html</div>
  13. <div>[免责声明] 本文来源于网络转载,仅供学习交流使用,不构成商业目的。版权归原作者所有,如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间处理。</div>
  14. </div>
  15. </div>
  16. <div v-if="articleChoice">
  17. <div :class="['index_3_box_vote', 'voteStyle' + skinId]" v-if="articleChoice">
  18. <div class="voteTitle">投票区</div>
  19. <div class="inquire">
  20. <p v-if="voteList.length > 0">{{ voteList[0].survey_name }}</p>
  21. <div class="radioBox">
  22. <div v-if="!isDisabled">
  23. <div class="radio" v-if="isRadio">
  24. <el-radio-group v-model="radio1" @change="handleRadioChange">
  25. <el-radio
  26. v-for="item in voteList"
  27. :key="item.id"
  28. :value="item.id"
  29. size="large"
  30. >
  31. <span v-if="item.is_other == 0">
  32. {{ item.choice_name }}
  33. </span>
  34. <span v-else>其他</span>
  35. </el-radio>
  36. </el-radio-group>
  37. <el-input v-if="showUserChoice" v-model="userChoice" :rows="2" type="textarea" resize="none" placeholder="请输入.." />
  38. </div>
  39. <div class="checkInputBox" v-else>
  40. <el-checkbox-group v-model="check1" @change="handleCheckboxChange">
  41. <span v-for="item in voteList" :key="item.id">
  42. <span v-if="item.is_other == 0">
  43. <el-checkbox size="large" :label="item.choice_name"
  44. :value="item.id" />
  45. </span>
  46. <span v-else>
  47. <el-checkbox size="large" label="其他" :value="item.id" />
  48. </span>
  49. </span>
  50. </el-checkbox-group>
  51. <el-input v-if="showUserChoice" v-model="userChoice" :rows="2" type="textarea"
  52. resize="none" placeholder="请输入.." />
  53. </div>
  54. </div>
  55. <div class="inquireData" v-else>
  56. <div v-for="item in websiteSurveyData.data" :key="item.id">
  57. <div class="inquireDataItem active" v-if="item.status == 1">
  58. <div class="inquireDataItemTitle">
  59. <span v-if="item.choice_name == ''">其他</span>
  60. <span v-else>{{ item.choice_name }}</span>
  61. </div>
  62. <div class="inquireDataItemNum">{{ item.results }}票</div>
  63. </div>
  64. <div class="inquireDataItem" v-else>
  65. <div class="inquireDataItemTitle">
  66. <span v-if="item.choice_name == ''">其他</span>
  67. <span v-else>{{ item.choice_name }}</span>
  68. </div>
  69. <div class="inquireDataItemNum">{{ item.results }}票</div>
  70. </div>
  71. </div>
  72. </div>
  73. </div>
  74. <div class="btn">
  75. <button :class="['voting', 'votingStyle' + skinId]" @click="addWebsiteSurvey" :disabled="isDisabled" v-if="!isDisabled">投票</button>
  76. </div>
  77. </div>
  78. </div>
  79. </div>
  80. </div>
  81. </template>
  82. <script setup>
  83. import { ElRadio, ElRadioGroup, ElCheckbox, ElCheckboxGroup, ElMessage, ElInput } from 'element-plus'
  84. const props = defineProps({
  85. templateData:Object,//新闻正文
  86. skinId:Number
  87. });
  88. const templateData = {
  89. "code": 200,
  90. "message": "success",
  91. "data": {
  92. "id": 2863,
  93. "catid": 492,
  94. "title": "以生态为内核推动文旅发展海南深山黎寨找到乡村振兴金钥匙",
  95. "introduce": "\t\t新华社北京\t2月25日电 题:勇担先行示范的重任——京津冀十年协同发展",
  96. "tag": "",
  97. "keyword": "以,生态,为,内核,推动,文旅,发展,海南",
  98. "author": "佚名",
  99. "copyfrom": "本网",
  100. "fromurl": "http://sp.lyedc.org.cn/show-56324.html",
  101. "hits": 0,
  102. "ip": "",
  103. "status": 1,
  104. "islink": 0,
  105. "linkurl": "",
  106. "imgurl": "",
  107. "admin_user_id": 87,
  108. "cat_arr_id": "[491,492]",
  109. "created_at": "2025-02-10 15:21:58",
  110. "updated_at": "2025-07-21 14:23:16",
  111. "is_original": 0,
  112. "survey_id": "2025072114231698077885",
  113. "survey_name": "请问“一骑绝尘妃子笑,无人知是荔枝来?”这句诗描写的是哪个朝代?",
  114. "is_survey": 1,
  115. "survey_type": 0,
  116. "web_site_id": "31",
  117. "ignore_ids": null,
  118. "reason": null,
  119. "department_arr_id": "[]",
  120. "department_id": 0,
  121. "city_arr_id": "[]",
  122. "city_id": 0,
  123. "level": "[6,0]",
  124. "commend_id": "[]",
  125. "level_text": "[6, 0]",
  126. "article_id": null,
  127. "content": "<p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">新华社北京</span>\t<span style=\"color: rgb(0, 0, 0);\">2月25日电 </span><strong>题:勇担先行示范的重任——京津冀十年协同发展谱新篇</strong></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">新华社记者</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">2024年是京津冀协同发展上升为国家战略十周年。十年来,习近平总书记亲自谋划、亲自部署、亲自推动京津冀协同发展,指明前进方向、提供根本遵循,推动这一国家战略不断向纵深推进。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">“京津冀如同一朵花上的花瓣,瓣瓣不同,却瓣瓣同心。”落实习近平总书记重大决策部署,京津冀探索人口经济密集地区优化开发的新模式,谋求区域发展的新路子,打造经济社会发展新的增长极。从谋篇布局的“大写意”到精耕细作的“工笔画”,京畿大地发生着深刻变化。</span></p><p class=\"ql-align-justify\">\t<strong>以资源优化配置重构区域发展新格局</strong></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">春节假期后,位于北京地铁动物园站南侧的新动力金融科技中心极具现代感的大厅内,服务团队正在为新一批入驻企业对接最新落地的相关政策。经过疏解腾退,曾经的动物园批发市场,当前已成为金融科技企业的集聚地。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">十年前,动物园批发市场面积最大的世纪天乐大厦,曾聚集近</span>\t<span style=\"color: rgb(0, 0, 0);\">3000家商铺。如今大厦通过改造,最大限度保留建筑结构,内部则是另一番景象:5A甲级写字楼,设有城市会客厅、文化艺术空间等商务服务及社交空间。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">与此同时,一批批市场商户向河北廊坊、保定白沟、沧州黄骅等地疏解,助力河北打造全国现代商贸物流基地。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">“动批”蝶变是首都转变发展模式、推进区域协调发展的生动样本。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">2014年2月26日,习近平总书记主持召开座谈会听取京津冀协同发展专题汇报,明确提出实现京津冀协同发展是一个重大国家战略。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">宏图既定,规划先行。</span>\t<span style=\"color: rgb(0, 0, 0);\">2015年6月9日,中共中央、国务院印发《京津冀协同发展规划纲要》。一张图规划、一盘棋建设、一体化发展,京津冀协同发展不断取得新成效。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">今年春节,来自湖北襄阳的电焊工董天会是在北大人民医院雄安院区项目工地上度过的。这是他从业十几年来,第一次没有回家过年。他说,在建设未来之城中度过一个有意义的春节非常难忘。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">吊臂升降,机器轰鸣,钢筋敲击声不绝于耳</span>\t<span style=\"color: rgb(0, 0, 0);\">……在雄安新区,还有国贸片区、大河片区安置房等多个项目现场,春节不停工,寒风中的建设“热度”不减。记者获悉,雄安新区已有4家央企总部落户,央企已设立子公司及各类分支机构200多家;在京部委所属的4所高校雄安校区和1家医院雄安院区项目已开工……</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">在北京另一翼,城市副中心一批交通、水利、能源等重大基础设施和生态环境综合治理项目逐步建成,锚定数字经济、现代金融、先进制造、商务服务等六大产业,连续保持每年千亿级投资强度。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">在通州,焕新的不只是城市面貌,更在于发展理念和管理机制的提升。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">根据相关政策,符合北京城市副中心发展定位的北京市属国有企事业单位,在疏解至北京城市副中心时,允许其新建或购买办公场所;符合划拨条件的,可以以划拨方式供应土地。这一政策赋予北京城市副中心更大发展自主权。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">2024年1月底,北京市级机关两批集中搬迁工作顺利收官,城市副中心与主城区“以副辅主、主副共兴”的发展格局正有序形成。第七次全国人口普查结果显示,通州区常住人口约184万人,比第六次全国人口普查时增长65万余人。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">十年间,北京市</span>\t<span style=\"color: rgb(0, 0, 0);\">“瘦身提质”效果超出预期,退出一般制造业企业超3000家,疏解提升区域性专业市场和物流中心近1000家,城乡建设用地减量130平方公里。北京中心城区功能布局不断优化,实现城六区常住人口比2014年下降15%的目标,高精尖产业新设经营主体占比由40.7%上升至66.1%,精准补建便民商业网点7700余个。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">随着区域合作日益加强,资源合理流动和配置,天津和河北发展更有活力。河北省十年累计承接京津转入基本单位</span>\t<span style=\"color: rgb(0, 0, 0);\">4.3万余家;天津市滨海—中关村科技园、京津中关村科技城等重点平台,注册科技创新企业约6500家。</span></p><p class=\"ql-align-justify\">\t<strong>以协同创新促进区域产业协作</strong></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">对京津冀协同发展而言,京津两个直辖市是重要的支点。结合北京科技创新优势和天津先进制造研发优势,贯彻落实习近平总书记重要指示,</span>\t<span style=\"color: rgb(0, 0, 0);\">“谱写新时期社会主义现代化的京津‘双城记’”成为这两座城市发展的新方向。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">不久前,一款用于清洁太阳能光伏板的新材料产品在天津滨海</span>\t<span style=\"color: rgb(0, 0, 0);\">—中关村科技园发布。“以全国太阳能装机量约400GW为例,每年可减少约420亿元的经济损失,为清洁能源行业带来广阔的盈利空间。”研发企业京中(天津)纳米科技有限公司负责人那明扬说。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">这是京津冀协同创新在天津市诞生的新成果。京津携手在天津市滨海新区、宝坻区分别建立滨海</span>\t<span style=\"color: rgb(0, 0, 0);\">—中关村科技园、京津中关村科技城,推动创新成果落地开花。截至2023年底,两处新平台累计注册企业突破6500家,大多数是科技型创新企业。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">跟随公司落户天津宝坻京津中关村科技城,张建辉和李丽花这对</span>\t<span style=\"color: rgb(0, 0, 0);\">“80后”夫妻结束了长达9年的“北漂”生活。李丽花说,之前一直在北京的博宇半导体工艺器皿技术有限公司工作,孩子长期在老家。2020年,张建辉夫妇顺利落户天津,把孩子从山东老家接来身边上学,心里踏实多了。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">在雄安新区中关村科技园一期</span>\t<span style=\"color: rgb(0, 0, 0);\">B2栋的二楼,有一间咖啡厅颇为热闹。有时咖啡厅被改成一间会议室,长长的桌子尽头,是一个可移动的大屏。随着不同的会议主题,大屏上播放着不同内容的PPT文件。主讲人有时坐在沙发上向长桌四周的人讲解,有时候起身快步走到大屏前,进行问答和互动。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">河北雄安罗数科技有限公司总经理李亚洲表示,从办公室移步二楼咖啡厅,创业者们可不仅仅是为了一杯饮品。在一间间充满咖啡香的共享空间里,有创新创造的热情、有思想碰撞的火花,也隐藏着数不清的机遇。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">雄安新区中关村科技园自去年</span>\t<span style=\"color: rgb(0, 0, 0);\">8月30日揭牌,一期工程入驻率达到了90%。这些企业以高新技术、专精特新“小巨人”为主,主营业务多为人工智能、智能硬件、生物医药等。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">一个中关村,花开京津冀。十年来,中关村企业在津冀两地累计设立分支机构已超过</span>\t<span style=\"color: rgb(0, 0, 0);\">1万家。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">以协同创新推动产业协作,是京津冀协同发展不断突破的根本动力。北京市发改委主任杨秀玲表示,京津冀正联合编制氢能、生物医药等六大跨区域产业链图谱,实施产业链</span>\t<span style=\"color: rgb(0, 0, 0);\">“织网工程”,为延链、补链、强链、优链提供“导航图”。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">据统计,北京流向津冀技术合同成交额由</span>\t<span style=\"color: rgb(0, 0, 0);\">2013年的71.2亿元增长至2023年的748.7亿元,累计超2800亿元。近日由北京大学首都发展研究院发布的《京津冀协同创新指数2023》显示,2013年至2022年,京津冀协同创新指数从100增长到297.6,年均增速为12.9%。</span></p><p class=\"ql-align-justify\">\t<strong>以共建共享推动公共服务“跨省过河”</strong></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">习近平总书记指出,推进京津冀协同发展,最终要体现到增进人民福祉、促进共同富裕上。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">总面积</span>\t<span style=\"color: rgb(0, 0, 0);\">21.6万平方公里、拥有1亿多人口的京津冀地区,地缘相接、人缘相亲、文化一脉,具备公共服务资源共建共享的天然基础。坚持鲜明的人民立场,让京津冀这片古老又现代的土地幸福底色更浓、成色更足。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">记者在北京儿童医院保定医院见到钟女士时,她正在为身患白血病的</span>\t<span style=\"color: rgb(0, 0, 0);\">9岁孩子办理出院手续。新的治疗阶段已经完成,她计划带孩子回老家看爷爷奶奶。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">去年</span>\t<span style=\"color: rgb(0, 0, 0);\">5月,为给孩子看病,钟女士本打算挂北京儿童医院血液一科的专家号,带着孩子去北京看病。后来才知道,这位专家每周来保定儿童医院坐诊。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">2015年,保定市儿童医院接受北京儿童医院托管,开创了公立医疗机构跨省托管的先河。如今,北京儿童医院将造血干细胞移植专业科室及人员“整体下沉”到保定,合作步步加深。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">作为落地城市副中心的三甲综合医院,北京友谊医院通州院区开诊</span>\t<span style=\"color: rgb(0, 0, 0);\">5年来,医疗服务总量逐年递增,门急诊总量超458.9万人次,其中外埠患者比例超40%,主要来自廊坊北三县和通州周边地区。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">肝硬化患者刘磊是这间医院受益者之一。经过肝移植手术,刘磊的肝功能逐步恢复正常,这意味着一台创造了</span>\t<span style=\"color: rgb(0, 0, 0);\">“活体辅助肝移植最小移植物”纪录的顶尖手术最终成功。通州蜕变为城市副中心过程中快速提升的医疗能力给予了更多像刘磊一样的患者坚强保障。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">户籍改革、医疗改革、公共服务改革</span>\t<span style=\"color: rgb(0, 0, 0);\">……一项项利民之策在京畿大地落地开花。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">寒假期间,雄安新区以财政补贴方式,组织</span>\t<span style=\"color: rgb(0, 0, 0);\">28所中小学开展免费托管服务。记者采访时,在雄安史家胡同小学的塑胶跑道上,体育教师带着孩子们正在进行多形式跑跳训练。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">2017年8月,京冀两省市政府签署协议,北京市以“交钥匙”方式支持雄安新区建设幼儿园、小学、完全中学、综合医院各一所,雄安史家胡同小学是其中之一。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">“我们学校的学生都是雄安建设者子女,寒假托管为他们解除了后顾之忧,让他们能安心工作。”雄安史家胡同小学副校长王映说。</span></p><p class=\"ql-align-justify\">\t\t<span style=\"color: rgb(0, 0, 0);\">十年来,京津冀协同发展彰显鲜明的人民立场,通过创新体制机制和政策,促进公共服务</span>\t<span style=\"color: rgb(0, 0, 0);\">“跨省过河”、全面融合,让群众增强获得感、幸福感。京津冀已有4900余家定点医疗机构实现跨省异地就医住院费用直接结算,200余所京津中小学幼儿园在河北开展跨区域合作办学。</span></p><p class=\"ql-align-justify\">\t京畿大地激荡人心的发展故事还在继续书写。面向未来,习近平总书记的指引清晰而坚定:“努力使京津冀成为中国式现代化建设的先行区、示范区。”(记者 李凤双、张涛、陈炜伟、任丽颖、郭宇靖、毛振华、张骁、白佳丽)</p>",
  128. "website_url": null,
  129. "email": null,
  130. "contacts": null,
  131. "contacts_mobile": null,
  132. "contacts_address": null,
  133. "zip_code": null,
  134. "enterprise_name": null,
  135. "category_id": 492,
  136. "cat_name": "农村新房舍",
  137. "website_name": "农民网-测试专用",
  138. "suffix": "全国政务信息一体化应用平台",
  139. "commendArticle": []
  140. }
  141. }
  142. //投票功能 start ---------------------------------------->
  143. //1.是否展示投票
  144. const articleChoice = ref(false);
  145. const articleId = templateData.data.id;
  146. if (templateData.data.is_survey == 1) {
  147. console.log("本篇文章含有投票!")
  148. articleChoice.value = true;
  149. getVoteList();
  150. }
  151. const radio1 = ref(''); //单选
  152. const check1 = ref([]); //多选
  153. const isDisabled = ref(false);//是否禁用提交按钮
  154. const isRadio = ref(true);//是否渲染单选
  155. const userSurId = ref('');//投票属于哪一篇文章
  156. const userChoice = ref('');//用于判断用户选择了其他选项以后,输入的值
  157. const userIsChoice = ref('');//用于判断其他选项目前是什么值
  158. const showUserChoice = ref(false);//是否显示其他输入框
  159. const websiteSurveyData = ref([]);//投票结果
  160. //2.获得投票列表
  161. let voteList = ref([]);
  162. async function getVoteList() {
  163. const voteData = await requestDataPromise('/web/getWebsiteSurvey', { method: 'GET', query: { 'art_id': articleId } });
  164. console.log(voteData)
  165. if (voteData.code == 200) {
  166. voteList.value = voteData.data;
  167. console.log(voteList.value)
  168. //判断显示单选还是多选
  169. //survey_type 0是单选 1是多选
  170. if (voteData.data[0].survey_type == 0) {
  171. isRadio.value = true;
  172. } else {
  173. isRadio.value = false;
  174. }
  175. //把最后一个的值拿出来 用于判断用户是否选择了其他
  176. for (let item of voteData.data) {
  177. //如果含有其他
  178. if (item.is_other == 1) {
  179. userIsChoice.value = item.id;
  180. }
  181. }
  182. //用户投票属于哪一篇文章
  183. userSurId.value = voteData.data[0].sur_id;
  184. } else {
  185. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  186. console.log("错误位置:首页投票")
  187. console.log("后端错误反馈:", voteData.message)
  188. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  189. }
  190. }
  191. //3.当用户选择了选项,判断是否展示其他输入框
  192. const handleRadioChange = (value) => {
  193. if (value == userIsChoice.value) {
  194. showUserChoice.value = true;
  195. } else {
  196. showUserChoice.value = false;
  197. }
  198. }
  199. const handleCheckboxChange = (value) => {
  200. if (value.includes(userIsChoice.value)) {
  201. showUserChoice.value = true;
  202. } else {
  203. showUserChoice.value = false;
  204. }
  205. }
  206. //4.发起投票
  207. async function addWebsiteSurvey() {
  208. //判断当前是单选还是多选
  209. console.log(isRadio.value)
  210. if (isRadio.value) {
  211. console.log("用户单选!")
  212. if (radio1.value != '') {
  213. //先判断一下是否使用了其他选项
  214. if (showUserChoice.value) {
  215. if (userChoice.value != '') {
  216. //文章id
  217. // console.log(userSurId.value)
  218. // 用户输入的值
  219. // console.log(userChoice.value)
  220. //如果使用了其他,其他的选项需要增加进去
  221. const ChoiceData = await requestHome('/web/addWebsiteSurveyOption', {
  222. method: 'GET',
  223. query: {
  224. 'sur_id': userSurId.value,//投票的新闻id
  225. 'choice_name': userChoice.value,//投票的选项id
  226. }
  227. });
  228. if (ChoiceData.code == 200) {
  229. //提交完其他选项以后,再正式发起投票
  230. const mkData = await requestHome('/web/addWebsiteSurveyVote', {
  231. method: 'GET',
  232. query: {
  233. 'sur_id': userSurId.value,
  234. 'choice_id': ChoiceData.data
  235. }
  236. });
  237. if (mkData.code == 200) {
  238. ElMessage.success('投票成功!')
  239. //把投票结果显示到页面上 禁用投票按钮
  240. isDisabled.value = true;
  241. websiteSurveyData.value = mkData.data;
  242. //遍历一下,把用户选中的那个设置status为1
  243. let data = mkData.data;
  244. //遍历一下,把用户选中的那个设置status为1
  245. for (let item of data.data) {
  246. for (let i of data.choice) {
  247. if (item.id == i) {
  248. console.log(item.id)
  249. item.status = 1;
  250. }
  251. }
  252. }
  253. websiteSurveyData.value = data;
  254. } else {
  255. ElMessage.error(mkData.message)
  256. }
  257. } else {
  258. ElMessage.error('其他投票失败!')
  259. }
  260. } else {
  261. ElMessage.error('请输入选项内容!')
  262. }
  263. } else {
  264. //如果没选择其他,直接提交选择的内容
  265. const mkData = await requestHome('/web/addWebsiteSurveyVote', {
  266. method: 'GET',
  267. query: {
  268. 'sur_id': userSurId.value,
  269. 'choice_id': radio1.value
  270. }
  271. });
  272. if (mkData.code == 200) {
  273. ElMessage.success('投票成功!')
  274. //把投票结果显示到页面上 禁用投票按钮
  275. isDisabled.value = true;
  276. let data = mkData.data;
  277. //遍历一下,把用户选中的那个设置status为1
  278. for (let item of data.data) {
  279. for (let i of data.choice) {
  280. if (item.id == i) {
  281. item.status = 1;
  282. }
  283. }
  284. }
  285. websiteSurveyData.value = data;
  286. } else {
  287. ElMessage.error('投票失败!')
  288. }
  289. }
  290. } else {
  291. ElMessage.error('请选择一个选项')
  292. }
  293. } else {
  294. console.log("多选!")
  295. //多选
  296. if (check1.value != []) {
  297. //先判断一下是否使用了其他选项
  298. if (showUserChoice.value) {
  299. if (userChoice.value != '') {
  300. //判断用户是否只选择了一个其他
  301. if (check1.value.length == 1) {
  302. const ChoiceData = await requestDataPromise('/web/addWebsiteSurveyOption', {
  303. method: 'GET',
  304. query: {
  305. 'sur_id': userSurId.value,//投票的新闻id
  306. 'choice_name': userChoice.value,//用户输入的其他选项文字
  307. }
  308. });
  309. if (ChoiceData.code == 200) {
  310. //提交完其他选项以后,再正式发起投票
  311. const mkData = await requestDataPromise('/web/addWebsiteSurveyVote', {
  312. method: 'GET',
  313. query: {
  314. 'sur_id': userSurId.value,
  315. 'choice_id': ChoiceData.data
  316. }
  317. });
  318. if (mkData.code == 200) {
  319. ElMessage.success('投票成功!')
  320. //把投票结果显示到页面上 禁用投票按钮
  321. isDisabled.value = true;
  322. websiteSurveyData.value = mkData.data;
  323. //遍历一下,把用户选中的那个设置status为1
  324. let data = mkData.data;
  325. //遍历一下,把用户选中的那个设置status为1
  326. for (let item of data.data) {
  327. for (let i of data.choice) {
  328. if (item.id == i) {
  329. console.log(item.id)
  330. item.status = 1;
  331. }
  332. }
  333. }
  334. websiteSurveyData.value = data;
  335. } else {
  336. ElMessage.error(mkData.message)
  337. }
  338. } else {
  339. ElMessage.error('其他投票失败!')
  340. }
  341. } else {
  342. //用户选择了除了其他以外,还包括别的选项
  343. const ChoiceData = await requestDataPromise('/web/addWebsiteSurveyOption', {
  344. method: 'GET',
  345. query: {
  346. 'sur_id': userSurId.value,//投票的新闻id
  347. 'choice_name': userChoice.value,//用户输入的其他选项文字
  348. }
  349. });
  350. if (ChoiceData.code == 200) {
  351. let data = check1.value;
  352. //找到多选的数组,把其他默认值给替换掉
  353. for (let i = 0; i < data.length; i++) {
  354. if (data[i] == userIsChoice.value) {
  355. data[i] = ChoiceData.data;
  356. }
  357. }
  358. let jsonArray = JSON.stringify(data);
  359. //提交完其他选项以后,再正式发起投票
  360. const mkData = await requestDataPromise('/web/addWebsiteSurveyVote', {
  361. method: 'GET',
  362. query: {
  363. 'sur_id': userSurId.value,
  364. 'choice_id': jsonArray
  365. }
  366. });
  367. if (mkData.code == 200) {
  368. ElMessage.success('投票成功!')
  369. //把投票结果显示到页面上 禁用投票按钮
  370. isDisabled.value = true;
  371. websiteSurveyData.value = mkData.data;
  372. //遍历一下,把用户选中的那个设置status为1
  373. let data = mkData.data;
  374. //遍历一下,把用户选中的那个设置status为1
  375. for (let item of data.data) {
  376. for (let i of data.choice) {
  377. if (item.id == i) {
  378. //console.log(item.id)
  379. item.status = 1;
  380. }
  381. }
  382. }
  383. websiteSurveyData.value = data;
  384. } else {
  385. ElMessage.error(mkData.message)
  386. }
  387. } else {
  388. ElMessage.error('其他投票失败!')
  389. }
  390. }
  391. } else {
  392. ElMessage.error('请输入选项内容!')
  393. }
  394. } else {
  395. let jsonArray = JSON.stringify(check1.value);
  396. //如果没选择其他,直接提交选择的内容
  397. const mkData = await requestDataPromise('/web/addWebsiteSurveyVote', {
  398. method: 'GET',
  399. query: {
  400. 'sur_id': userSurId.value,
  401. 'choice_id': jsonArray
  402. }
  403. });
  404. if (mkData.code == 200) {
  405. ElMessage.success('投票成功!')
  406. //把投票结果显示到页面上 禁用投票按钮
  407. isDisabled.value = true;
  408. websiteSurveyData.value = mkData.data;
  409. //遍历一下,把用户选中的那个设置status为1
  410. let data = mkData.data;
  411. //遍历一下,把用户选中的那个设置status为1
  412. for (let item of data.data) {
  413. for (let i of data.choice) {
  414. if (item.id == i) {
  415. console.log(item.id)
  416. item.status = 1;
  417. }
  418. }
  419. }
  420. websiteSurveyData.value = data;
  421. } else {
  422. ElMessage.error('投票失败!')
  423. }
  424. }
  425. } else {
  426. ElMessage.error('请选择一个选项')
  427. }
  428. }
  429. }
  430. //是否展示投票 end ---------------------------------------->
  431. </script>
  432. <style lang="less" scoped>
  433. .articleMainBox {
  434. width: 900px;
  435. margin: 0 auto;
  436. display: block;
  437. .articleTitle {
  438. width: 900px;
  439. font-size:30px;
  440. color:#333333;
  441. font-weight:bold;
  442. }
  443. .articleInfo {
  444. width: 900px;
  445. color:#999999;
  446. font-size:14px;
  447. display: flex;
  448. justify-content: flex-start;
  449. align-items: center;
  450. margin-top: 30px;
  451. div{
  452. margin-right: 40px;
  453. }
  454. }
  455. .articleContent {
  456. width: 900px;
  457. padding-top:60px;
  458. font-size:20px;
  459. margin-bottom: 60px;
  460. img{
  461. display: block;
  462. margin: 0 auto;
  463. margin-bottom: 60px;
  464. }
  465. .fontBold {
  466. font-weight:bold;
  467. }
  468. div {
  469. text-indent: 2em;
  470. margin-bottom: 28px;
  471. }
  472. }
  473. .statementBox {
  474. width: 900px;
  475. height: 143px;
  476. border-top: 1px solid #D9D9D9;
  477. .statementBoxLeft {
  478. width: 900px;
  479. height: 143px;
  480. padding-top: 40px;
  481. text-align: left;
  482. box-sizing: border-box;
  483. font-size:20px;
  484. color:#999999;
  485. }
  486. }
  487. }
  488. //投票 start ---------------------------------------->
  489. .index_3_box_vote {
  490. .voteTitle {
  491. font-size: 20px;
  492. height: 40px;
  493. line-height: 40px;
  494. color: #333333;
  495. padding-left: 20px;
  496. width: 100%;
  497. border-bottom: 1px solid #E7E7E7;
  498. border-top: 1px solid #333;
  499. box-sizing: border-box;
  500. }
  501. width:100%;
  502. box-sizing:border-box;
  503. border:solid 1px #FBFBFB;
  504. background: #FBFBFB;
  505. .inquire {
  506. height: 394px;
  507. margin-top: 20px;
  508. border-radius: 6px 6px 6px 6px;
  509. padding: 4px 40px 4px 6px;
  510. box-sizing: border-box;
  511. p {
  512. font-weight: bold;
  513. height: 69px;
  514. font-family: PingFang SC, PingFang SC;
  515. font-size: 20px;
  516. color: #333333;
  517. line-height: 21px;
  518. text-align: left;
  519. font-style: normal;
  520. text-transform: none;
  521. padding: 12px 20px 0 32px;
  522. }
  523. .radioBox {
  524. height: 250px;
  525. padding-left: 30px;
  526. overflow-y: auto;
  527. box-sizing: border-box;
  528. padding-bottom: 20px;
  529. }
  530. .radio {
  531. /deep/.el-radio {
  532. --el-radio-input-border-color-hover: #dd7d18;
  533. }
  534. /deep/.el-radio-group {
  535. align-items: center;
  536. display: inline-flex;
  537. flex-wrap: wrap;
  538. font-size: 0;
  539. //padding-left: 35px;
  540. }
  541. /deep/.el-radio.el-radio--large {
  542. width: 100%;
  543. height: 29px;
  544. margin-bottom: 15px;
  545. }
  546. /deep/.el-radio.el-radio--large .el-radio__label {
  547. font-family: PingFang SC, PingFang SC;
  548. font-weight: 400;
  549. font-size: 16px;
  550. color: #333333;
  551. white-space: nowrap;
  552. overflow: hidden;
  553. text-overflow: ellipsis;
  554. width: 300px;
  555. }
  556. /deep/.el-radio.el-radio--large .el-radio__inner {
  557. height: 16px;
  558. width: 16px;
  559. }
  560. /deep/.el-radio__input.is-checked+.el-radio__label {
  561. color: #333;
  562. }
  563. /deep/.el-radio__input.is-checked .el-radio__inner {
  564. background: #333;
  565. border-color: #333;
  566. }
  567. }
  568. .checkInputBox {
  569. /deep/.el-checkbox {
  570. --el-radio-input-border-color-hover: #333;
  571. }
  572. /deep/.el-checkbox-group {
  573. align-items: center;
  574. display: inline-flex;
  575. flex-wrap: wrap;
  576. font-size: 0;
  577. }
  578. /deep/.el-checkbox.el-checkbox--large {
  579. width: 330px;
  580. height: 29px;
  581. margin-bottom: 15px;
  582. }
  583. /deep/.el-checkbox.el-checkbox--large .el-checkbox__label {
  584. font-family: PingFang SC, PingFang SC;
  585. font-weight: 400;
  586. font-size: 16px;
  587. color: #333333;
  588. white-space: nowrap;
  589. overflow: hidden;
  590. text-overflow: ellipsis;
  591. width: 300px;
  592. }
  593. /deep/.el-checkbox.el-checkbox--large .el-checkbox__inner {
  594. height: 16px;
  595. width: 16px;
  596. }
  597. /deep/.el-checkbox__input.is-checked+.el-checkbox__label {
  598. color: #333;
  599. }
  600. /deep/.el-checkbox__input.is-checked .el-checkbox__inner {
  601. background: #333;
  602. border-color: #333;
  603. }
  604. }
  605. .btn {
  606. padding-left: 30px;
  607. button {
  608. width: 78px;
  609. height: 37px;
  610. line-height: 37px;
  611. border-radius: 6px;
  612. border: none;
  613. font-family: PingFang SC, PingFang SC;
  614. font-weight: 400;
  615. font-size: 16px;
  616. color: #999999;
  617. }
  618. .voting {
  619. //background-color: #dd7d18;
  620. color: #fff;
  621. margin-right: 44px;
  622. cursor: pointer;
  623. }
  624. .look {
  625. cursor: pointer;
  626. }
  627. }
  628. }
  629. .inquireData {
  630. .inquireDataItem {
  631. width: 100%;
  632. height: 38px;
  633. display: flex;
  634. align-items: center;
  635. justify-content: space-between;
  636. background: #F3F3F3;
  637. border: 1px solid #D2D2D2;
  638. margin-bottom: 10px;
  639. border-radius: 6px;
  640. padding: 0 15px;
  641. box-sizing: border-box;
  642. color: #999999;
  643. .inquireDataItemTitle {
  644. width: 290px;
  645. height: 38px;
  646. font-size: 16px;
  647. line-height: 38px;
  648. white-space: nowrap;
  649. overflow: hidden;
  650. text-overflow: ellipsis;
  651. }
  652. .inquireDataItemNum {
  653. font-size: 16px;
  654. }
  655. }
  656. .active {
  657. color: #dd7d18;
  658. background: #f3e9de;
  659. border: 1px solid #dd7d18;
  660. }
  661. }
  662. }
  663. //样式1
  664. .voteStyle1 {
  665. .voteTitle {
  666. border-bottom: 1px solid #E7E7E7;
  667. border-top: 1px solid #1C5468;
  668. }
  669. border:solid 1px #FBFBFB;
  670. background: #FBFBFB;
  671. .inquire {
  672. .radio {
  673. /deep/.el-radio__input.is-checked+.el-radio__label {
  674. color: #1C5468;
  675. }
  676. /deep/.el-radio__input.is-checked .el-radio__inner {
  677. background: #1C5468;
  678. border-color: #1C5468;
  679. }
  680. }
  681. .checkInputBox {
  682. /deep/.el-checkbox {
  683. --el-radio-input-border-color-hover: #1C5468;
  684. }
  685. /deep/.el-checkbox__input.is-checked+.el-checkbox__label {
  686. color: #1C5468;
  687. }
  688. /deep/.el-checkbox__input.is-checked .el-checkbox__inner {
  689. background: #1C5468;
  690. border-color: #1C5468;
  691. }
  692. }
  693. }
  694. .inquireData {
  695. .active {
  696. color: #1C5468;
  697. background: #f3e9de;
  698. border: 1px solid #1C5468;
  699. }
  700. }
  701. }
  702. .votingStyle1 {
  703. background-color: #1C5468;
  704. }
  705. //样式2
  706. .voteStyle2 {
  707. .voteTitle {
  708. border-bottom: 1px solid #E7E7E7;
  709. border-top: 1px solid #A91B33;
  710. }
  711. border:solid 1px #FBFBFB;
  712. background: #FBFBFB;
  713. .inquire {
  714. .radio {
  715. /deep/.el-radio__input.is-checked+.el-radio__label {
  716. color: #A91B33;
  717. }
  718. /deep/.el-radio__input.is-checked .el-radio__inner {
  719. background: #A91B33;
  720. border-color: #A91B33;
  721. }
  722. }
  723. .checkInputBox {
  724. /deep/.el-checkbox {
  725. --el-radio-input-border-color-hover: #A91B33;
  726. }
  727. /deep/.el-checkbox__input.is-checked+.el-checkbox__label {
  728. color: #A91B33;
  729. }
  730. /deep/.el-checkbox__input.is-checked .el-checkbox__inner {
  731. background: #A91B33;
  732. border-color: #A91B33;
  733. }
  734. }
  735. }
  736. .inquireData {
  737. .active {
  738. color: #A91B33;
  739. background: #f3e9de;
  740. border: 1px solid #A91B33;
  741. }
  742. }
  743. }
  744. .votingStyle2 {
  745. background-color: #A91B33;
  746. }
  747. //投票 end ---------------------------------------->
  748. </style>