dialyze_after.vue 23KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692
  1. <template>
  2. <div class="main-contain">
  3. <div class="position">
  4. <div>
  5. <span>
  6. <el-button @click="return_click" type="text" icon="el-icon-arrow-left">返回</el-button>
  7. </span>&nbsp;&nbsp;
  8. <span>患者透后体重分析</span>
  9. </div>
  10. </div>
  11. <div class="app-container">
  12. <div class="page_patientControlAnalysis">
  13. <div style="display: flex;">
  14. <div>
  15. 日期:
  16. <el-select v-model="date_value" @change="datachange" placeholder="请选择" style="width: 100px;">
  17. <el-option
  18. v-for="item in date_options"
  19. :key="item.value"
  20. :label="item.label"
  21. :value="item.value">
  22. </el-option>
  23. </el-select>
  24. </div>
  25. <div style="margin: 0 10px;">
  26. <el-date-picker
  27. v-model="start_date"
  28. type="date"
  29. value-format="yyyy-MM-dd"
  30. placeholder="选择日期"
  31. style="width: 150px;">
  32. </el-date-picker>
  33. <span>-</span>
  34. <el-date-picker
  35. v-model="end_date"
  36. type="date"
  37. value-format="yyyy-MM-dd"
  38. placeholder="选择日期"
  39. style="width: 150px;">
  40. </el-date-picker>
  41. </div>
  42. <div>
  43. <el-button type="primary" @click="sete_click">查询</el-button>
  44. <el-button type="primary" @click="Download_click">下载</el-button>
  45. </div>
  46. </div>
  47. <!-- 图表 -->
  48. <div ref="mychart">
  49. <div class="echart" id="mychart" style="width:100%;height:60vh"></div>
  50. </div>
  51. <div style="position: fixed;right: 5%;top: 50vh;">
  52. <el-popover
  53. placement="left"
  54. title="提示"
  55. width="500"
  56. trigger="click"
  57. content="1.统计时间段内所有患者每次透析后,透后体重是否在干体重的±0.3范围内。">
  58. <img src="@/assets/img/xiang.png" alt="" style="height: 20px;width: 20px;" slot="reference">
  59. <!-- <el-button slot="reference">click 激活</el-button> -->
  60. </el-popover>
  61. </div>
  62. </div>
  63. </div>
  64. <!-- 弹窗 -->
  65. <div>
  66. <el-dialog
  67. title="详情"
  68. :visible.sync="dialyze_dialog"
  69. width="90%">
  70. <div>
  71. <div style="display: flex;margin-bottom: 20px;">
  72. <div style="flex: 5;display: flex;flex-wrap:wrap">
  73. <div>
  74. 日期:
  75. <el-select v-model="date_value" @change="datachange" placeholder="请选择" style="width: 100px;">
  76. <el-option
  77. v-for="item in date_options"
  78. :key="item.value"
  79. :label="item.label"
  80. :value="item.value">
  81. </el-option>
  82. </el-select>
  83. </div>
  84. <div style="margin:0 10px;">
  85. <el-date-picker
  86. v-model="start_date"
  87. type="date"
  88. value-format="yyyy-MM-dd"
  89. placeholder="选择日期"
  90. style="width: 150px;">
  91. </el-date-picker>
  92. <span>-</span>
  93. <el-date-picker
  94. v-model="end_date"
  95. type="date"
  96. value-format="yyyy-MM-dd"
  97. placeholder="选择日期"
  98. style="width: 150px;">
  99. </el-date-picker>
  100. </div>
  101. <div>
  102. 体重增长:
  103. <el-select v-model="weight_value" placeholder="请选择" style="width: 100px;">
  104. <el-option :key="0" label="不限" :value="0"></el-option>
  105. <el-option
  106. v-for="item in weight_gain"
  107. :key="item.value"
  108. :label="item.label"
  109. :value="item.value">
  110. </el-option>
  111. </el-select>
  112. </div>
  113. <div>
  114. 干体重:
  115. <el-select v-model="dry_value" placeholder="请选择" style="width: 100px;">
  116. <el-option :key="0" label="不限" :value="0"></el-option>
  117. <el-option
  118. v-for="item in status_options"
  119. :key="item.value"
  120. :label="item.label"
  121. :value="item.value">
  122. </el-option>
  123. </el-select>
  124. </div>
  125. <div>
  126. 透后体重:
  127. <el-select v-model="after_value" placeholder="请选择" style="width: 100px;">
  128. <el-option :key="0" label="不限" :value="0"></el-option>
  129. <el-option
  130. v-for="item in after_options"
  131. :key="item.value"
  132. :label="item.label"
  133. :value="item.value">
  134. </el-option>
  135. </el-select>
  136. </div>
  137. <div >
  138. <el-input v-model="Patient_name" placeholder="搜索患者姓名" style="width: 120px;"></el-input>
  139. </div>
  140. </div>
  141. <div style="flex: 1;">
  142. <div>
  143. <el-button type="primary" @click="deil_click">查询</el-button>
  144. <el-button type="primary" @click="exportExcel">导出</el-button>
  145. </div>
  146. </div>
  147. </div>
  148. <el-table :data="tableData" border style="width: 100%"
  149. :header-cell-style="{textAlign: 'center'}"
  150. :cell-style="{ textAlign: 'center' }"
  151. height="380">
  152. <el-table-column
  153. prop="index"
  154. label="序号"
  155. width="">
  156. </el-table-column>
  157. <el-table-column
  158. prop="dialysis_no"
  159. label="透析号"
  160. width="">
  161. </el-table-column>
  162. <el-table-column
  163. prop="name"
  164. label="患者姓名">
  165. </el-table-column>
  166. <el-table-column
  167. prop="sex"
  168. label="性别"
  169. width="">
  170. </el-table-column>
  171. <el-table-column
  172. prop="age"
  173. label="年龄"
  174. width="">
  175. </el-table-column>
  176. <el-table-column
  177. prop="date"
  178. label="透析日期"
  179. width="">
  180. </el-table-column>
  181. <el-table-column
  182. prop="dry_weight"
  183. label="干体重"
  184. width="">
  185. </el-table-column>
  186. <el-table-column
  187. prop="last_weight_after"
  188. label="前次透后体重">
  189. </el-table-column>
  190. <el-table-column
  191. prop="weight_before"
  192. label="透前体重"
  193. width="">
  194. </el-table-column>
  195. <el-table-column
  196. prop="weight_add"
  197. label="体重增加"
  198. width="">
  199. </el-table-column>
  200. <el-table-column
  201. prop="weight_after"
  202. label="透后体重">
  203. </el-table-column>
  204. </el-table>
  205. <div style="text-align: right;margin-top: 10px;">
  206. <el-pagination
  207. @size-change="handleSizeChange"
  208. @current-change="handleCurrentChange"
  209. :current-page="currentPage"
  210. :page-sizes="[50,100, 200, 300, 400]"
  211. :page-size="limit"
  212. layout="total, sizes, prev, pager, next, jumper"
  213. :total="total">
  214. </el-pagination>
  215. </div>
  216. </div>
  217. <span slot="footer" class="dialog-footer">
  218. <el-button @click="dialyze_dialog = false">取 消</el-button>
  219. <el-button type="primary" @click="dialyze_dialog = false">确 定</el-button>
  220. </span>
  221. </el-dialog>
  222. </div>
  223. </div>
  224. </template>
  225. <script>
  226. import * as echarts from 'echarts';
  227. import XLSX from 'xlsx';
  228. import { uParseTime } from "@/utils/tools";
  229. import {Getpatinetweight,Getweightdetail} from '../../../../api/qcd'
  230. import { forEach } from 'jszip';
  231. import html2canvas from "html2canvas"
  232. export default {
  233. components:{
  234. },
  235. data(){
  236. return{
  237. date_value:4,
  238. start_date:'',
  239. end_date:this.getTime(new Date()),
  240. mode:'',
  241. date_mode:'',
  242. source:'',
  243. dialyze_dialog:false,
  244. currentPage:1,
  245. limit:50,
  246. total:0,
  247. tableData:[],
  248. weight_gain:[{value:1,label:'体重增长<=3%'},{value:2,label:'3%<体重增长<5%'},{value:3,label:'体重增长>=5%'}],
  249. weight_value:0,
  250. dry_value:0,
  251. after_value:0,
  252. after_options:[],
  253. Patient_name:'',
  254. date_options:[{value:1,label:'最近七天'},{value:2,label:'本周'},{value:3,label:'上周'},{value:4,label:'本月'},
  255. {value:5,label:'上月'},{value:6,label:'本年'},{value:7,label:'上一年'}
  256. ],
  257. status_options:[{value:1,label:'40~50kg'},{value:2,label:'50~60kg'},{value:3,label:'60~70kg'},
  258. {value:4,label:'大于70kg'},{value:5,label:'小于40kg'},{value:6,label:'未知'}],
  259. date_mode_options:[{value:1,label:'按周'},{value:2,label:'按天'},{value:3,label:'按月'},{value:4,label:'按年'}],
  260. source_options:[{value:1,label:'以开始透析为准'},{value:2,label:'以排班为准'}],
  261. Patient_name:'',
  262. }
  263. },
  264. methods:{
  265. // 返回
  266. return_click(){
  267. this.$router.push('/Dialysisanalysis/qualitycontrol/weightblood')
  268. },
  269. // 数据源
  270. getecharts(){
  271. var chartDom = document.getElementById('mychart')
  272. var myChart = echarts.init(chartDom);
  273. const params ={
  274. start_time:this.start_date,
  275. end_time:this.end_date,
  276. statistics_type:4,
  277. }
  278. Getpatinetweight(params).then(response =>{
  279. console.log('ressponse',response.data.data);
  280. if(response.data.state ==1){
  281. console.log('bbbbbbbbb',response.data.data);
  282. const list = response.data.data.list
  283. const xAxis =[]
  284. const yAxis = []
  285. var weight = []
  286. for(let i in list){
  287. xAxis.push(list[i].name)
  288. yAxis.push(list[i].total)
  289. const obj ={
  290. value:(i*1)+1,
  291. label:list[i].name
  292. }
  293. weight.push(obj)
  294. }
  295. this.after_options = weight
  296. const option = {
  297. xAxis: {
  298. type: 'category',
  299. data: xAxis,
  300. axisLabel:{
  301. interval:0,
  302. }
  303. },
  304. yAxis: {
  305. type: 'value'
  306. },
  307. series: [
  308. {
  309. data:yAxis ,
  310. type: 'bar',
  311. barWidth: '25%',
  312. label: {
  313. normal: {
  314. show: true,
  315. position: 'top',
  316. formatter: '{c}',
  317. textStyle:{
  318. color: 'black',//字体颜色
  319. fontSize: 13//字体大小
  320. }
  321. },
  322. },
  323. itemStyle:{
  324. normal:{
  325. color:function (params){
  326. // const colorarr=['#FFA333','#A155E8','#6D91FF','#A233A2'];
  327. var colorarr = [["#A9E0F3", "#9FBDFC"],["#FFD7C0", "#FF9994"]]
  328. var index = params.dataIndex;
  329. if (params.dataIndex >= colorarr.length) {
  330. index = params.dataIndex % colorarr.length;
  331. }
  332. return new echarts.graphic.LinearGradient(0, 0, 0, 1, [
  333. { offset: 0, color: colorarr[index][0] },
  334. // { offset: 0.5, color: colorList[index][1] },
  335. { offset: 1, color: colorarr[index][1] }
  336. ]);
  337. }
  338. }
  339. }
  340. }
  341. ]
  342. }
  343. myChart.setOption(option);
  344. myChart.on('click',params =>{
  345. this.dialyze_dialog = true
  346. console.log('vvvvv',params,this.after_options);
  347. for(let i in this.after_options){
  348. if(params.name == this.after_options[i].label){
  349. this.after_value = this.after_options[i].value
  350. }
  351. }
  352. this.Getdialyzerdetail(this.after_value)
  353. })
  354. }
  355. })
  356. },
  357. // 导出excel
  358. exportExcel(){
  359. let tableData = [
  360. ['序号', '透析号', '患者姓名','性别','年龄','透析日期','干体重','前次透后体重','透前体重','体重增加','透后体重',]//导出表头
  361. ]
  362. this.tableData.forEach((item,index) =>{
  363. let rowdata=[]
  364. rowdata=[
  365. item.index,
  366. item.dialysis_no,
  367. item.name,
  368. item.sex,
  369. item.age,
  370. item.date,
  371. item.dry_weight,
  372. item.last_weight_after,
  373. item.weight_before,
  374. item.weight_add,
  375. item.weight_after
  376. ]
  377. tableData.push(rowdata)
  378. })
  379. let workSheet = XLSX.utils.aoa_to_sheet(tableData);
  380. let bookNew = XLSX.utils.book_new();
  381. XLSX.utils.book_append_sheet(bookNew, workSheet, '患者透后体重分析') // 工作簿名称
  382. let name = '患者透后体重分析'+ '.xlsx'
  383. XLSX.writeFile(bookNew, name) // 保存的文件名
  384. },
  385. // 查询
  386. sete_click(){
  387. this.getecharts()
  388. },
  389. // 详情查询
  390. deil_click(){
  391. this.currentPage =1
  392. this.Getdialyzerdetail(this.after_value)
  393. },
  394. // 下载
  395. Download_click(){
  396. const options ={
  397. allowTaint: true,
  398. useCORS: true
  399. }
  400. html2canvas(this.$refs.mychart,options).then(canvas =>{
  401. // const imageSrc = canvas.toDataURL();
  402. const imageUrl = canvas.toDataURL("image/png");
  403. // console.log('5555',imageUrl);
  404. // // const base = this.url.split(',')[1]
  405. // // console.log('2222',base);
  406. const blob = this.dataURLtoBlob(imageUrl)
  407. // console.log('4444',blob);
  408. const url = URL.createObjectURL(blob);
  409. // const file = (this.url).blob();
  410. // console.log('1111',url);
  411. var link= document.createElement("a");
  412. // //将生成的图片url赋值给a标签的href属性
  413. link.href = url;
  414. // //设置下载的文件名
  415. link.download = "透析器使用统计.jpg";
  416. // // 将a标签插入dom中
  417. console.log('link',link);
  418. document.body.appendChild(link);
  419. //模拟点击事件触发下载
  420. link.click();
  421. // 完成之后销毁创建的a标签
  422. document.body.removeChild(link);
  423. })
  424. },
  425. // 选择日期
  426. datachange(eve){
  427. if(eve ==1){
  428. this.start_date = this.getPreviousDate(7)
  429. this.end_date = this.getTime(new Date())
  430. }else if(eve==2){
  431. this.start_date = this.getFirstDayOfWeek(new Date())
  432. this.end_date = this.getTime(new Date())
  433. console.log('this.start_date', this.start_date);
  434. }else if(eve ==3){
  435. var date=new Date()
  436. date.setDate(date.getDate()-7 - date.getDay() + 1);
  437. var m =''
  438. var d = ''
  439. if(date.getMonth() + 1<10){
  440. m = '0'+(date.getMonth() + 1)
  441. }else{
  442. m = date.getMonth() + 1
  443. }
  444. if(date.getDate()<10){
  445. d = '0'+date.getDate()
  446. }else{
  447. d = date.getDate()
  448. }
  449. // this.start_date = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() ;
  450. this.start_date = date.getFullYear() + "-" + m + "-" + d ;
  451. date.setDate(date.getDate() +6);
  452. var mm = ''
  453. var dd = ''
  454. if(date.getMonth() + 1<10){
  455. mm = '0'+(date.getMonth() + 1)
  456. }else{
  457. mm = date.getMonth() + 1
  458. }
  459. if(date.getDate()<10){
  460. dd = '0'+date.getDate()
  461. }else{
  462. dd = date.getDate()
  463. }
  464. // if(date.getMonth() + 1<10)
  465. // this.end_date = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
  466. this.end_date = date.getFullYear() + "-" + mm + "-" + dd ;
  467. console.log('this.end_date',this.end_date);
  468. }else if(eve ==4){
  469. this.start_date = this.getFirstDayOfMonth(new Date())
  470. this.end_date = this.getTime(new Date())
  471. }else if(eve ==5){
  472. this.getLastMonthFirstDay()
  473. this.getLastMonthLastDay()
  474. }else if(eve == 6){
  475. this.start_date = this.getFirstDayOfYear(new Date())
  476. this.end_date = this.getTime(new Date())
  477. }else if(eve == 7){
  478. this.getLastYearFirstDay()
  479. this.getLastYearLastDay()
  480. }
  481. console.log('eve',eve);
  482. },
  483. // 详情数据源
  484. Getdialyzerdetail(after){
  485. const params ={
  486. start_time:this.start_date,
  487. end_time:this.end_date,
  488. add_type:this.weight_value,
  489. dry_type:this.dry_value,
  490. after_type:after,
  491. keyword:this.Patient_name,
  492. page:this.currentPage,
  493. limit:this.limit,
  494. }
  495. Getweightdetail(params).then(response =>{
  496. if(response.data.state == 1){
  497. const list = response.data.data.list
  498. const table=[]
  499. if(list.length>0){
  500. list.forEach((item,index)=>{
  501. const obj ={
  502. index:index+1,
  503. dialysis_no:item.dialysis_no,
  504. name:item.patient_name,
  505. sex:this.getgender(item.gender),
  506. age:item.age,
  507. date:this.getTime(item.assessment_date),
  508. dry_weight:item.dry_weight,
  509. last_weight_after:item.last_weight_after,
  510. weight_before:item.weight_before,
  511. weight_add:(item.weight_add*1).toFixed(2),
  512. weight_after:item.weight_after
  513. }
  514. table.push(obj)
  515. })
  516. this.tableData = table
  517. this.total = response.data.data.total
  518. }
  519. }
  520. console.log('77777',response);
  521. })
  522. },
  523. // 首先定义一个getPreviousDate函数,方便调用
  524. getPreviousDate(numOfDays) {
  525. var date = new Date();
  526. date.setDate(date.getDate() - numOfDays);
  527. var year = date.getFullYear();
  528. if(date.getMonth() + 1<10){
  529. var month = '0'+(date.getMonth() + 1);
  530. }else{
  531. var month = date.getMonth() + 1;
  532. }
  533. if(date.getDate()<10){
  534. var day = '0'+date.getDate();
  535. }else{
  536. var day = date.getDate();
  537. }
  538. return year + "-" + month + "-" + day;
  539. },
  540. // 本周
  541. getFirstDayOfWeek(date){
  542. var weekday = date.getDay()
  543. date.setDate(date.getDate()-weekday+1);//往前算(weekday-1)天,年份、月份会自动变化
  544. return this.timeFormat(date);
  545. },
  546. // 本月
  547. getFirstDayOfMonth (date) {
  548. date.setDate(1);
  549. return this.timeFormat(date);
  550. },
  551. //上个月第一天
  552. getLastMonthFirstDay() {
  553. var date = new Date();
  554. date.setDate(0);
  555. var y = date.getFullYear(); //获取年份
  556. var m = date.getMonth() + 1; //获取月份
  557. m = m < 10 ? "0" + m : m;
  558. this.start_date = [y, m, '01'].join("-")
  559. // return [y, m, '01'].join("-");
  560. },
  561. // 上个月最后一天
  562. getLastMonthLastDay() {
  563. var date = new Date();
  564. date.setDate(0);
  565. var y = date.getFullYear(); //获取年份
  566. var m = date.getMonth() + 1; //获取月份
  567. var d = new Date(y, m, 0).getDate(); //获取当月最后一日
  568. m = m < 10 ? "0" + m : m; //月份补 0
  569. d = d < 10 ? "0" + d : d; //日数补 0
  570. this.end_date = [y, m, d].join("-")
  571. // return [y, m, d].join("-");
  572. },
  573. // 本年
  574. getFirstDayOfYear (date) {
  575. date.setDate(1);
  576. date.setMonth(0);
  577. return this.timeFormat(date);
  578. },
  579. // 上一年第一天
  580. getLastYearFirstDay() {
  581. let date = new Date();
  582. const year= date.setFullYear(date.getFullYear() - 1); // 设置年份为前一年
  583. const start_month= date.setMonth(0); // 设置月份为1月(注意月份是从0开始的)
  584. const start_day = date.setDate(1); // 设置日期为1日
  585. // const last_month = date.setMonth(11); // 设置月份为12月
  586. // const last_day = date.setDate(0); // 设置日期为0,这将自动设置为该月的最后一天
  587. // this.start_date = year+ "-" +start_month+ "-" +start_day
  588. this.start_date = this.getTime(start_day)
  589. // return this.start_date
  590. },
  591. // 上一年最后一天
  592. getLastYearLastDay() {
  593. let date = new Date();
  594. const year= date.setFullYear(date.getFullYear() - 1); // 设置年份为前一年
  595. const last_month = date.setMonth(12); // 设置月份为12月
  596. const last_day = date.setDate(0);// 设置日期为0,这将自动设置为该月的最后一天
  597. // this.end_date = year+ "-" +last_month+ "-" +last_day
  598. this.end_date = this.getTime(last_day)
  599. console.log('this.end_date',this.end_date);
  600. // return this.end_date;
  601. },
  602. // 日期格式化
  603. timeFormat(date) {
  604. if (!date || typeof(date) === "string") {
  605. this.error("参数异常,请检查...");
  606. }
  607. var y = date.getFullYear(); //年
  608. if(date.getMonth() + 1<10){
  609. var m ='0'+(date.getMonth() + 1); //月
  610. }else{
  611. var m =date.getMonth() + 1; //月
  612. }
  613. if(date.getDate()<10){
  614. var d ='0'+date.getDate(); //日
  615. }else{
  616. var d = date.getDate(); //日
  617. }
  618. // var d = date.getDate(); //日
  619. return y + "-" + m + "-" + d;
  620. },
  621. handleCurrentChange(val){
  622. this.currentPage = val
  623. this.Getdialyzerdetail(this.after_value)
  624. },
  625. handleSizeChange(val){
  626. this.limit = val
  627. this.Getdialyzerdetail(this.after_value)
  628. },
  629. // 性别
  630. getgender(ids){
  631. if(ids ==1){
  632. return "男"
  633. }else{
  634. return "女"
  635. }
  636. },
  637. // 转换时间
  638. getTime(val) {
  639. if(val < 0){
  640. return ""
  641. }
  642. if(val == ""){
  643. return ""
  644. }else {
  645. return uParseTime(val, '{y}-{m}-{d}')
  646. }
  647. },
  648. dataURLtoBlob(dataURL) {
  649. const arr = dataURL.split(',');
  650. const mime = arr[0].match(/:(.*?);/)[1];
  651. const bstr = atob(arr[1]);
  652. let n = bstr.length;
  653. const u8arr = new Uint8Array(n);
  654. while (n--) {
  655. u8arr[n] = bstr.charCodeAt(n);
  656. }
  657. return new Blob([u8arr], { type: mime });
  658. },
  659. getdialyze(val){
  660. const option = this.dialyze_options
  661. for(let i in option){
  662. if(val == option[i].id){
  663. return option[i].name
  664. }
  665. }
  666. }
  667. },
  668. mounted(){
  669. this.getecharts()
  670. },
  671. created(){
  672. this.start_date = this.getFirstDayOfMonth(new Date())
  673. },
  674. }
  675. </script>