福州市

索 引 号: FJ00100-0201-2022-00388
发文字号: 福建省人民政府令第227号
发布机构: 福建省人民政府
生成日期: 2022-09-22
有效性:有效

福建省地方政府储备粮安全管理办法

福建省人民政府令第227号
2022-09-30 11:48
| | | |

  《福建省地方政府储备粮安全管理办法》已经2022年9月1日省人民政府第115次常务会议通过,现予公布,自2023年1月1日起施行。

  省长 赵龙

  2022年9月22日

 

福建省地方政府储备粮安全管理办法

第一章  总  则

  第一条 为了加强和规范地方政府储备粮安全管理,发挥地方政府储备粮在宏观调控中的作用,保障粮食供给,维护粮食市场稳定,根据有关法律、法规,结合本省实际,制定本办法。

  第二条 本省行政区域内地方政府储备粮计划、储存、轮换、动用和监督管理等活动,适用本办法。

  本办法所称地方政府储备粮是指县级以上人民政府依法储备用于调节本行政区域粮食供求、稳定粮食市场,以及应对重大自然灾害或者其他突发事件等情况的原粮、成品粮和食用植物油。

  法律、法规对地方政府储备粮安全管理另有规定的,从其规定。

  第三条 地方政府储备粮安全管理应当遵循党政同责、政府主导、规划引领、优储适需、安全高效、绿色发展的原则。

  地方政府粮食储备实行省、设区的市、县(市、区)分级储备、分级管理、分级负责的管理体制。粮食储备规模以省级储备为主,市、县级储备为辅。

  第四条 县级以上人民政府应当加强对地方政府储备粮安全管理工作的领导,落实粮食安全责任制,将粮食储备工作纳入本行政区域国民经济和社会发展规划,建立健全政府储备粮应急保障协调机制,统筹推进本行政区域粮食储备工作,加强地方政府储备粮监督管理和仓储物流设施保护,所需经费列入同级财政预算。

  第五条 县级以上人民政府发展改革、粮食和储备部门会同财政等有关部门负责拟定本行政区域地方政府粮食储备规模、品种结构、总体布局和动用的计划。

  县级以上人民政府粮食和储备部门负责本级地方政府储备粮的监督管理,指导、协调下级地方政府储备粮管理工作。

  县级以上人民政府财政部门会同粮食和储备部门制定本级政府储备粮财务管理办法,对同级地方政府储备粮有关财务执行情况实施监督检查。

  县级以上人民政府审计机关依法对地方政府储备粮政策执行和管理情况以及有关资金筹集分配管理使用等情况实施审计监督。

  第六条 中国农业发展银行福建省分行及其分支机构按照国家有关规定,负责及时、足额安排地方政府储备粮所需贷款,并对发放的贷款实施信贷监督管理。

  第七条 地方政府储备粮承储企业包括县级以上人民政府指定专司政府储备粮运营管理的直属企业及其所辖储粮单位,以及受直属企业委托代储政府储备粮的企业,依法承担政府储备粮储备任务,对所储存的粮食数量、质量和储存安全负主体责任,确保数量真实、质量良好、储存安全、管理规范。

  地方政府储备粮直属企业及其所辖储粮单位不得从事粮食商业经营活动;其他政府储备粮承储企业储备运营业务与企业商业经营实行分离,实物、账务分开管理。

  第八条 任何组织和个人不得擅自动用地方政府储备粮,不得破坏地方政府储备粮的仓储设施,不得偷盗、哄抢或者损毁地方政府储备粮。

第二章  计划管理

  第九条 地方政府储备粮实行计划管理。本省地方政府储备粮计划由省人民政府粮食和储备部门会同发展改革、财政等部门制定,报省人民政府批准后实施。有条件的设区的市、县(市、区)人民政府可以根据实际需要,适当增加政府粮食储备规模。

  第十条 县级以上人民政府应当建立与区域人口、经济社会发展水平相适应的地方政府粮食储备规模、品种结构等动态调整机制,每3至5年调整一次。

  第十一条 地方政府储备粮的原粮品种以稻谷和小麦为主。稻谷、小麦及其成品粮储备所占本级政府储备粮规模的比例不得低于省人民政府规定。

  根据全省粮油应急供应需要,建立适量的省级成品粮油储备。列入国家主要大中城市以及市场易波动地区应当按照国家和本省要求,建立适度规模的成品粮油(含必要小包装)储备;其他设区的市按照要求建立成品粮油(含必要小包装)储备。

  第十二条 县级以上人民政府粮食和储备部门应当会同同级人民政府财政等有关部门,制定地方政府储备粮的收购、销售和轮换计划,报同级人民政府批准后实施。

第三章  储存管理

  第十三条 地方政府储备粮应当严格实行专仓储存、专人保管、专账记载,落实数量、质量、品种、地点要求,保证账实相符、账账相符、储存安全。

  第十四条 县级以上人民政府粮食和储备部门应当按照相对集中、调度便利、储存安全的原则,依据本行政区域国土空间规划,对地方政府储备粮的储存库点进行合理布局。具体储存库点由同级人民政府粮食和储备部门确定。

  第十五条 地方政府储备粮原则上应当在本行政区域范围内储存,确有需要在本行政区域范围外储存的,应当报同级人民政府批准,异地储存量不得超过国家和本省有关规定。地方政府储备成品粮油不得跨省储存。

  第十六条 地方政府储备粮承储企业应当具备下列条件:

  (一)具有符合国家、行业标准和技术规范,以及安全生产法律法规规定的仓储场所;

  (二)具有与政府粮食储备规模、粮食品种、储粮周期、储存功能、仓型、进出粮方式、科学储粮要求等相匹配,符合粮食信息化管理要求的仓储设施设备;

  (三)具有符合国家和本省有关要求的粮食质量安全检验检测仪器设备和检验场所;

  (四)具有经过专业培训,掌握相应知识技能的仓储管理、质量检验等专业技术人员;

  (五)经营管理规范、信誉良好,无严重违法经营记录;

  (六)法律、法规、规章规定的其他条件。

  第十七条 在仓容不足的情况下,地方政府储备粮可以采取委托代储的方式,代储企业承担储粮安全直接责任。具体管理办法由粮权所属县级以上人民政府粮食和储备部门制定。

  第十八条 地方政府储备粮承储企业应当执行有关法律、法规、规章以及国家和本省的有关规定,建立健全规范化管理制度,对政府储备粮数量、质量、仓储、轮换、安全生产、保密、资金使用等行为实行内部管控,防范和控制储备运行风险;开展企业安全生产和安全储粮的日常监督检查;发现承储的地方政府储备粮储存安全问题的,应当及时处理,防止损失扩大;发生安全事故的,应当按照规定程序及时上报。

  第十九条 地方政府储备粮承储企业应当按照国家质量安全标准要求,对政府储备粮出入库质量和储存期间的质量进行自行检验或者委托具有资质的粮食检验机构进行检验。

  储存粮食应当符合国家质量安全标准,不得使用国家禁止使用的化学药剂或者超量使用化学药剂;粮食不得与可能对其产生污染的有害物质混存。

  地方政府储备粮承储企业应当建立粮食质量安全档案,并依法纳入原粮追溯体系,如实记录出入库、储存期间粮食质量安全情况。质量安全档案保存期限自销售出库之日起,不少于5年。

  第二十条 地方政府储备粮储存自然损耗在标准定额以内的,由同级财政承担;超过自然损耗标准定额的部分由承储企业承担;因承储企业原因造成政府储备粮损失的,由承储企业承担。因自然灾害等不可抗力原因造成政府储备粮损失的,经同级人民政府粮食和储备、财政部门共同审核认定后据实核减,并由承储企业及时补足库存。

  第二十一条 地方政府储备粮承储企业应当制定储粮安全应急处置方案,在发生各种灾害危及政府储备粮安全时,应当及时采取有效措施减少损失。

  因自然灾害等不可抗力原因,需要紧急处理、转移地方政府储备粮的,承储企业经口头请示同级人民政府粮食和储备部门后可以先行处理,并在3日内补办审批手续。

  第二十二条 地方政府储备粮承储企业不得有下列行为:

  (一)挤占、截留、挪用地方政府储备粮财政补贴和信贷资金;

  (二)虚报、瞒报地方政府储备粮数量;

  (三)质量安全不达标,以陈顶新、掺杂使假、以次充好;

  (四)擅自变更地方政府储备粮的品种和储存库点;

  (五)延误轮换或者因管理不善等造成储粮事故;

  (六)利用地方政府储备粮及其贷款资金从事与储备业务无关的经营活动;

  (七)以地方政府储备粮办理抵质押贷款、提供担保或者清偿债务、进行期货实物交割等;

  (八)随意改变、擅自处置以政府投资为主建设的粮食储备仓储物流设施设备;

  (九)以低价购进高价入账、高价售出低价入账,一粮多用、虚列成本费用或者其他手段,骗取地方政府储备粮财政补贴和信贷资金;

  (十)擅自动用承储的地方政府储备粮;

  (十一)其他违反法律、法规、规章的行为。

  第二十三条 县级以上人民政府及其有关部门应当采取措施,支持地方政府储备粮承储企业应用粮食储存新技术、新设备,推进高标准粮食仓储物流设施和粮库信息化、智能化建设,提高绿色科学储粮水平。

  鼓励高等院校、科研院所、地方政府储备粮承储企业等组织和个人开展储粮技术创新及推广应用,提高储粮安全管理水平。

第四章  轮换管理

  第二十四条 地方政府储备粮轮换按照推陈储新、均衡有序、确保质量和节约费用的原则,结合本地实际,加强管理,择机轮换,减少轮换差价。鼓励创新轮换方式,实现常储常新。

  第二十五条 地方政府储备粮的年度轮换计划应当包括轮换数量、质量、品种、库点等内容。地方政府储备粮承储企业应当按照轮换计划,在规定时间内完成,并将完成情况报同级人民政府粮食和储备部门备案。

  在批准的年度轮换计划之外需要追加或者推迟轮换的,应当报同级人民政府粮食和储备部门批准并向同级人民政府报告。

  第二十六条 地方政府储备粮轮换应当遵循公开、公平、公正原则,通过规范的粮食交易平台以公开竞价交易、直接向粮食生产者收购的方式进行,经同级人民政府粮食和储备部门批准,也可以采取邀标竞价销售等方式进行。有关凭证、资料保存期限不少于6年。

  第二十七条 地方政府储备粮轮换应当以储存品质指标为依据,以储存年限为参考,原则上应当采取同库点、同品种、等量轮换方式。

  在常规储存条件下,参考储存年限为:稻谷3年,小麦5年,玉米2年,食用植物油2年。市场畅销优质品种的轮换周期可以为1年。

  达到参考储存年限且储存品质指标接近轻度不宜存,或者虽未达到参考储存年限但储存品质指标已接近轻度不宜存时,地方政府储备粮承储企业应当及时提出轮换申请。达到参考储存年限但储存品质指标仍为宜存的,可以适当延长储存年限,期间应当加强品质管理,确保储粮安全。

  第二十八条 轮入的地方政府储备粮应当是最近粮食生产季生产的新粮,各项常规质量指标符合国家标准中等以上质量标准,储存品质指标符合宜存标准,食品安全指标符合食品安全国家标准限量规定。

  因特殊原因,无法采购或者轮入最近粮食生产季生产的新粮,经同级人民政府粮食和储备部门批准,可以轮入上一粮食生产季生产的粮食,但常规质量指标、储存品质指标、食品安全指标应当符合前款规定。

  粮食入库结束后,应当按照有关规定进行验收检验,包括常规质量指标、储存品质指标和食品安全指标。验收检验合格的,方可作为地方政府储备粮。

  第二十九条 地方政府储备粮自轮出次月起至轮入结束,轮换架空的时间按照本省有关规定执行;超过轮换架空期的,不得享受相应保管费用和利息补贴。

  除紧急动用等特殊情况外,各级地方政府储备粮各月末实际库存量不得低于国家和本省有关规定。

  因重大自然灾害、重大公共卫生事件或者其他突发事件等不可抗力原因,省人民政府可以调整地方政府储备粮各月最低实际库存量、品种结构,延长或者缩短轮换架空的时间。延长期内,不扣除保管费用和利息补贴。

  第三十条 实行同品种等量轮换的,可以采取库存结算价不变、实物兑换的方式进行;实行不同品种轮换的,其轮入品种的入库结算价格由同级人民政府粮食和储备、财政部门确定。

  第三十一条 地方政府储备成品粮油在确保粮权明确、依规轮换、常储常新、库存充足的前提下,可以在年度内多次轮换。

第五章  动用管理

  第三十二条 县级以上人民政府发展改革、粮食和储备部门应当加强粮食市场监测,建立健全地方政府储备粮动用预警机制。有下列情形之一的,县级以上人民政府可以依法批准动用同级政府储备粮:

  (一)粮食明显供不应求或者市场价格显著上涨;

  (二)发生重大自然灾害、重大公共卫生事件或者其他突发事件;

  (三)县级以上人民政府认为需要动用政府储备粮的其他情形。

  第三十三条 县级以上人民政府根据市场供求变化、宏观调控和突发事件应急响应等需要,遵循有利于稳定市场、提高效率的原则,按照规定依次动用县级政府储备粮、设区的市级政府储备粮和省级政府储备粮。

  第三十四条 县级以上人民政府发展改革、粮食和储备部门根据同级人民政府批准的动用计划下达动用指令,由地方政府储备粮承储企业具体实施。紧急情况下,上级人民政府可以根据粮食调控和应急需要,直接指令下级人民政府动用地方政府储备粮。

  任何组织和个人不得拒绝执行或者擅自改变地方政府储备粮动用指令。

  第三十五条 地方政府储备粮动用情况,由县级以上人民政府发展改革、粮食和储备部门会同财政部门向同级人民政府报告,并及时逐级报省人民政府发展改革、粮食和储备、财政部门备案。

  第三十六条 地方政府储备粮动用后,政府储备粮承储企业应当按照同级人民政府粮食和储备等有关部门的安排及时恢复储备库存。

  第三十七条 依法动用地方政府储备粮产生的价差亏损和有关费用,由同级财政承担。

第六章  费用管理

  第三十八条 县级以上人民政府财政部门应当按照确定的粮食储备规模,将本级地方政府储备粮所需费用以及贷款利息纳入当年财政预算和粮食风险基金使用范围。

  第三十九条 各级地方政府储备粮的保管、轮换等费用标准由同级人民政府粮食和储备、财政部门商定,并根据当地物价水平和储粮成本等的变动情况适时调整。

  第四十条 地方政府储备粮的保管、轮换等费用按照同级人民政府财政、粮食和储备部门确定的标准和拨付方式,及时足额拨付。

  第四十一条 地方政府储备粮贷款实行与粮食库存值增减挂钩、专户专款专用的封闭运行管理;政府储备粮收购、销售回笼资金应当在农业发展银行账户内核算。

  地方政府储备粮的利息开支,由同级人民政府财政部门根据实际储存粮食占用贷款和当期贷款利率据实结算。

第七章  监督管理

  第四十二条 建立健全地方政府储备粮安全管理监督检查机制。县级以上人民政府粮食和储备、财政、审计等部门,按照各自职责组织实施地方政府储备粮安全管理监督检查,任何组织和个人不得拒绝、阻挠、干涉。

  第四十三条 县级以上人民政府粮食和储备、财政、审计等部门在对地方政府储备粮进行监督检查时,发现问题的,可以依法采取以下措施:

  (一)责令改正;

  (二)约谈;

  (三)出具警示函;

  (四)法律、法规、规章规定的其他措施。

  第四十四条 加强地方政府储备粮信息化、智能化建设,建立健全统一的粮食储备信息网络平台,对地方政府储备粮实行动态远程监管、粮情在线监控,并与有关部门实现信息共享。

  第四十五条 任何组织和个人可以对地方政府储备粮管理工作提出意见建议,有权向县级以上人民政府粮食和储备等部门举报违法行为。

  县级以上人民政府粮食和储备等部门对意见建议应当及时予以处理,对收到的举报应当依法予以查处;举报事项属于其他部门职责范围的,应当及时移送其他部门处理,并为举报人保密。

第八章  法律责任

  第四十六条 违反本办法规定,法律、法规已有处罚规定的,从其规定。

  第四十七条 县级以上人民政府有关部门违反本办法规定,有下列行为之一的,由有权机关责令改正、通报批评,并可对有关责任人依法给予处分;构成犯罪的,依法追究刑事责任:

  (一)未及时下达地方政府储备粮收购、销售、轮换计划;

  (二)未及时足额拨付地方政府储备粮的管理费用、贷款利息等有关财政补贴;

  (三)确定不具备承储条件的库点承储地方政府储备粮;

  (四)发现地方政府储备粮承储企业存在生产安全、储粮安全问题,未及时采取措施责令改正;

  (五)接到举报、投诉,发现违法行为未及时查处;

  (六)其他徇私舞弊、玩忽职守、滥用职权的行为。

  第四十八条 地方政府储备粮承储企业违反本办法,未具备第十六条规定条件之一的,由县级以上人民政府粮食和储备部门责令限期改正;逾期未改正的,处3000元以上1万元以下罚款;情节严重的,处1万元以上3万元以下罚款。

  第四十九条 代储企业违反本办法有关规定,造成地方政府储备粮损失的,由委托储存的政府储备粮直属企业承担赔偿责任。直属企业可以按照合同约定,依法要求代储企业承担违约责任。

  第五十条 地方政府储备粮承储企业违反本办法规定,有下列情形之一的,由县级以上人民政府有关部门依照职责责令限期改正;逾期未改正的,处1万元以上3万元以下罚款,并可对有关责任人依法给予处分;构成犯罪的,依法追究刑事责任:

  (一)政策性职能和商业性经营职能未实质性分开或者违规从事商业经营活动;

  (二)未执行粮食储存管理规定和有关规范标准;

  (三)未执行地方政府储备粮轮换计划;

  (四)未按照规定进行常规质量指标、储存品质指标、食品安全指标检测;

  (五)对监督检查发现的问题未按时落实整改;

  (六)拒绝、阻挠、干涉行政机关监督检查人员依法履行职责;

  (七)其他违反地方政府储备粮管理规定的行为。

第九章  附  则

  第五十一条 县级以上人民政府可以依照本办法结合当地实际制定实施细则和政府储备粮轮换、成品粮油储备管理的具体办法。

  第五十二条 本办法自2023年1月1日起施行。

附件:

来源:福建省人民政府门户网站

扫一扫在手机上查看当前页面

纠错 评论

政策文件
文字解读
图片解读
在线访谈
相关报道
视频解读
媒体解读
新闻发布会
媒体评论
”进行咨询,后续会有业务部门人员进行回复哦。"; //模拟sessionid var rondom = ""; //默认300秒超时 var outTime = 300; //定时器计数 var count = 140; //用户无响应时间定时器 用于超期退出 var ref; //热点问题显示个数 var rows = 18; var status = 200; var siteUrl = ""; var index = -1; var size = ""; var rec; var voiceRefMap = new Map(); var secs = 20; //倒计时 var param; var num = 0; var switch2Text = false; var timeliness = 0;//响应及时性 var accuracy = 0;//答案准确性 var experience = 0;//互动体验性 var knowledgeNum = 0;//业务知识量 var suggest = "";//意见 var userLastInput = ""; var isRstSearch = false; var evaluateShow = true;//是否显示评价 // var listener = new window.keypress.Listener(); var queTemplate = Handlebars.compile($("#que_template").html()); var li = 0 var keyStatus = 0 //点击按键状态 1代表上键 2代表下键 var userOldInput = ""; //语音 $('#start_record').on('click', function () { startRec(); ifs="0"; $("#answerList").html(" ") if(window.bf && window.bf._voice) { if(window.bf._voice.closeState == 0) { window.bf._voice.closeState = 1; window.bf.getState('voiceClose', 1) } } }) //语音 $('#stop_record').on('click', function () { ifs=""; uploadRec(); $(".h-start1").hide() if(window.bf && window.bf._voice) { if(window.bf._voice.closeState == 1) { window.bf._voice.closeState = 0; window.bf.getState('voiceClose', 0) } } }) function onmouseover_(obj, e) { if (e == 1) { $(obj).css('color', 'blue'); $(obj.childNodes[0]).attr('src', 'img/ishelp1.png'); } else { $(obj).css('color', 'black'); $(obj.childNodes[0]).attr('src', 'img/ishelp3.png'); } } function onmouseout_(obj, e) { if (e == 1) { $(obj).css('color', '#999'); $(obj.childNodes[0]).attr('src', 'img/ishelp.png'); } else { $(obj).css('color', '#999'); $(obj.childNodes[0]).attr('src', 'img/ishelp2.png'); } } function timecount() { $('#lisening').html("(点击结束 " + secs + " 秒)"); secs = secs - 1; if (secs < 0) { uploadRec(); clearTimeout(param); } param = setTimeout(function () { timecount(); }, 1000); } var btnStartRecording = document.getElementById('start_record'); var btnStopRecording = document.getElementById('stop_record'); var isEdge = navigator.userAgent.indexOf('Edge') !== -1 && (!!navigator.msSaveOrOpenBlob || !!navigator.msSaveBlob); var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); var recorder; // globally accessible var microphone; // 语音调用的方法 function startRec() { $("#voice-label").html("(录音功能正在准备中)") // initVoice(); $("audio").each(function (index, item) { $(this)[0].pause(); }); $('.yy_btn_close').each(function (index, item) { $(this).removeClass().addClass("yy_btn"); }); clearTimeout(param); secs = 20; timecount(); if (!microphone) { captureMicrophone(function (mic) { //捕获传声器captureMicrophone microphone = mic; click(btnStartRecording); }); return; } var options = { type: 'audio', numberOfAudioChannels: 1, checkForInactiveTracks: false, bufferSize: 4096, recorderType: StereoAudioRecorder }; if (recorder) { recorder.destroy(); recorder = null; } $('.h-start2').hide(); $('.h-close').show(); $("#voice-label").text("(点击开始说话)"); recorder = RecordRTC(microphone, options); recorder.startRecording(); }; //停止录音的回调 function stopRecordingCallback() { if (!switch2Text) { var internalRecorder = recorder.getInternalRecorder(); var leftchannel = internalRecorder.leftchannel; var rightchannel = internalRecorder.rightchannel; // ------------------------------------------------------------ mergeLeftRightBuffers({ desiredSampRate: 8000, sampleRate: internalRecorder.sampleRate, numberOfAudioChannels: internalRecorder.numberOfAudioChannels, internalInterleavedLength: internalRecorder.recordingLength, leftBuffers: leftchannel, rightBuffers: internalRecorder.numberOfAudioChannels === 1 ? [] : rightchannel }, function (buffer, view) { var wavBlob = new Blob([buffer], { type: 'audio/wav' }); var blob = changeFormat(buffer); clearTimeout(param); var form = new FormData(); var filleName = rondomNum(true, 32, 32); form.append("siteId", siteId); form.append("random", rondom); form.append("upfile", blob, filleName + ".mp3"); //和普通form表单并无二致,后端接收到upfile参数的文件,文件名为recorder.mp3 var audio = document.createElement("audio"); audio.id = filleName + "_"; audio.style.cssFloat = "right"; audio.style.height = "32px"; audio.controls = true; audio.style.display = "none"; audio.src=/zwgk/zxwj/szfwj/202209/URL.createObjectURL(wavBlob); $("#answerList").append(audio); var values = {value: filleName, isvoice: true}; appendHtml(queTemplate(values), 3); // audio.play(); isVoiceAsk = true; $.ajax({ type: 'POST', url: "/isr/public/talk/uploadMp3?siteId=2c9bc5436f844983016f84499f1b00ac", data: form, cache: false, processData: false, contentType: false, success: function (ret) { //console.log("resresres",ret); //console.log(importVoice,"2202"); var json = $.parseJSON(ret); $("#" + json.id).val(json.result); if (json.qastatus == 1) { qaResult(json.result); } } }); count = outTime; }); } else { switch2Text = false; } // if (isSafari) { // click(btnReleaseMicrophone); // } } function uploadRec() { $('.h-start2').show(); $('.h-close').hide(); recorder.stopRecording(stopRecordingCallback); }; function isSolve(e) { var status = e; $.ajax({ headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, type: "POST", url: isSolveSessionUrl, async: true, data: "{\"status\":\"" + status + "\",\"rondom\":\"" + rondom + "\"}", success: function (result) { }, }) } function captureMicrophone(callback) { // btnReleaseMicrophone.disabled = false; if (microphone) { callback(microphone); return; } if (typeof navigator.mediaDevices === 'undefined' || !navigator.mediaDevices.getUserMedia) { $('.h-start2').show(); $('.h-close').hide(); var sys = isAndroidOrIOSOrPc(); if (sys == "pc") { alert("该浏览器不支持语音录入,
请使用谷歌、火狐等主流浏览器。", {area: ['320px', '80px']}); } else if (sys == "ios") { alert("该浏览器不支持语音录入,
请将您的IOS操作系统升级最新版本,并使用safari浏览器打开使用。", {area: ['320px', '80px']}); } else if (sys == "android") { alert("该浏览器不支持语音录入,
请使用系统自带浏览器打开使用。", {area: ['320px', '80px']}); } else { alert("您当前的操作系统不支持语音录入。", {area: ['300px', '50px']}); } } navigator.mediaDevices.getUserMedia( { audio: isEdge ? true : {echoCancellation: false} } ).then(function (mic) { callback(mic); }).catch(function (error) { alert("该浏览器不支持语音录入。
或您拒绝了语音授权", {area: ['300px', '60px']}); $("#voice-label").html("(点击开始说话)"); $('.h-start2').show(); $('.h-close').hide(); }) } /** * randomWord 产生任意长度随机字母数字组合 * randomFlag-是否任意长度 min-任意长度最小位[固定位数] max-任意长度最大位 * @param randomFlag * @param min * @param max * @returns {string} */ function rondomNum(randomFlag, min, max) { var str = "", range = min, arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'U', 'V', 'W', 'X', 'Y', 'Z']; // 随机产生 if (randomFlag) { range = Math.round(Math.random() * (max - min)) + min; } for (var i = 0; i < range; i++) { pos = Math.round(Math.random() * (arr.length - 1)); str += arr[pos]; } return str; } function qaResult(keyWord) { $("#completionQues").html(""); $("#tc_Big_box").hide(); $("#keyLength").html(50); var url = answerUrl; if (isRstSearch) { url = rstAnswerUrl; } $.ajax({ headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, //请求方式 type: "POST", //请求地址 url: url, dataType: "json", //数据,json字符串 data: "{\"question\":\"" + keyWord + "\",\"siteId\":\"" + siteId + "\",\"rondom\":\"" + rondom + "\"}", //请求成功 success: function (data) { // console.log(data); if (!data.error) { if (data.msg) { appendHtml(data.msg, 1); return; } recordId = data.recordId; var isVoice = data.isVoice; //匹配答案 var match = data.result.matchQuestions; //相似问题 var like = data.result.likeQuestions; var fill = data.result.fillQuestions; //敏感词 var filter = data.result.filterList; var ischat = data.result.ischat; var rstdata = data.result.rstdata; parseData(match, like, filter, ischat, keyWord, rstdata, isVoice); } }, //请求失败,包含具体的错误信息 error: function (e) { if (e.responseText.indexOf('script') > 0) { var msg = e.responseText.substring(e.responseText.indexOf('\'') + 1, e.responseText.lastIndexOf('\'')); appendHtml(msg, 1) } } }); $("#keyWord").val(""); } /** * 后端返回值解析 * @param match * @param like * @param filter */ function parseData(match, like, filter, ischat, textValue, rstdata, isVoice) { voiceBtnId = genUuid(); isRstData = false; $("#tc_Big_box").hide(); if (rstdata && rstdata.list.length > 0) { var values = { robotName: robotName, img: robotImage, rstdata: rstdata, unknow: unknow, index: ++num, isWebSearch: isRstSearch, voiceBtnId: voiceBtnId }; appendHtml(rstTemplate(values), 8); var smartAnswer = rstDataAddIndex(rstdata.list); smartList = getSmartList(smartAnswer); isRstData = true; isRstSearch = false; playVoiceAsk(); return; } //敏感词 if (filter && filter.length > 0) { var words = ""; jQuery.each(filter, function (i, item) { var obj = JSON.parse(item); words += obj.word + ","; }); if (words.length > 0) words = words.substring(0, words.length - 1); var values = { robotName: robotName, isVoice: isVoice, img: robotImage, value: words, index: ++num, isSen: true, voiceBtnId: voiceBtnId }; appendHtml(othTemplate(values), 8); playVoiceAsk(); return; } //智能问答 if (match) { if (match.length > 0 && ischat == 1) { var values = { question: match[0].question, robotName: robotName, img: robotImage, answer: match[0].answer, answerId: match[0].answerId, uuid: match[0].uuid, index: ++num, voiceTime: match[0].voiceTime, isVoice: isVoice, isTime: match[0].voiceTime === "undefined" || match[0].voiceTime === "" ? false : true, iswenda: true, like: like, voiceBtnId: voiceBtnId }; appendHtml(ansTemplate(values), 8); //寒暄 } else if (match.length > 0 && ischat == 0) { var values = { robotName: robotName, img: robotImage, answer: match[0].answer, answerId: match[0].answerId, uuid: match[0].uuid, isVoice: isVoice, index: ++num, voiceTime: match[0].voiceTime, isTime: match[0].voiceTime === "undefined" || match[0].voiceTime === "" ? false : true, iswenda: false, voiceBtnId: voiceBtnId }; appendHtml(ansTemplate(values), 8); } else if (match.length == 0 && like.length > 0) { if (textValue != null) { if (textValue == like[0].question.replace(/\n/g, "")) { // console.log("匹配第一条:" + like[0].question.replace(/\n/g, "")); var values = { robotName: robotName, img: robotImage, answer: like[0].answer, uuid: like[0].uuid, index: ++num, isVoice: isVoice, iswenda: true, voiceBtnId: voiceBtnId, }; appendHtml(ansTemplate(values), 8); playVoiceAsk(); return; } } var values = { robotName: robotName, img: robotImage, like: like, keyWord: textValue, isVoice: isVoice, index: ++num, voiceBtnId: voiceBtnId, webSearch: webSearchOn }; var smartAnswer = likeDataAddIndex(like); smartList = getSmartList(smartAnswer); appendHtml(simTemplate(values), 8); } else if (match.length == 0 && like.length == 0) { var values = { robotName: robotName, isVoice: isVoice, isUnknow: true, unknow: unknow, index: ++num, img: robotImage, voiceBtnId: voiceBtnId }; appendHtml(othTemplate(values), 8); } } else { var values = { robotName: robotName, isVoice: isVoice, isUnknow: true, index: ++num, unknow: "真的非常抱歉,从网站也未能检索到您需要的信息,您可以前往福建省12345平台进行咨询。", img: robotImage, voiceBtnId: voiceBtnId }; appendHtml(othTemplate(values), 8); } playVoiceAsk(); } /** * * @param html 追加的html * @param type 类型 1:欢迎及警告 3:用户 8:完全匹配及寒暄库 * @param isvoice 是否语音 */ function appendHtml(value, type) { var commonHtml = ""; if (type == 1) { var values = {robotName: robotName, isSys: true, value: value, img: robotImage}; commonHtml = othTemplate(values); } else if (type == 8) { commonHtml = value; } else if (type == 3) { commonHtml = value; } else { commonHtml = value; } $("#answerList").html(" ") $("#answerList").append(commonHtml); var div = document.getElementById('answerList'); div.scrollTop = div.scrollHeight; } $(window).keydown(function (e) { if (e.keyCode == 38) { index = (index-- < 0 ? size - 1 : index); $(".completionQues").find("li").each(function (_index, item) { if (index == _index) { $(this).addClass("li_hover"); } else { $(this).removeClass("li_hover"); } }) } else if (e.keyCode == 40) { index = (index++ > size - 1 ? 0 : index); $(".completionQues").find("li").each(function (_index, item) { if (index == _index) { $(this).addClass("li_hover"); } else { $(this).removeClass("li_hover"); } }) } else if (e.keyCode == 13) { return; } }) function play(id, ele) { $("audio").each(function (index, item) { $(this)[0].pause(); }); var audio = document.getElementById(id); console.log(audio,"0202");//测试 audio.loop = false; audio.addEventListener('ended', function () { $(ele).find("span").eq(0).removeClass().addClass("yy_btn"); }, false); audio.load(); var _class = $(ele).find("span").eq(0).attr("class"); if (_class == "yy_btn") { $(".yy_btn_close").each(function (index, item) { $(this).removeClass().addClass("yy_btn"); }) $(ele).find("span").eq(0).removeClass().addClass("yy_btn_close"); audio.play(); } else if (_class == "yy_btn_close") { $(ele).find("span").eq(0).removeClass().addClass("yy_btn"); audio.pause(); } } function isAndroidOrIOSOrPc() { var u = navigator.userAgent, app = navigator.appVersion; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //Android终端 var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // ios终端 if (IsPC()) { return "pc"; } else if (isAndroid) { return "android"; } else if (isIOS) { return "ios"; } else { return "other"; } } function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod", "MicroMessenger"]; var flag = true; for (var v = 0; v < Agents.length; v++) { if (userAgentInfo.indexOf(Agents[v]) > 0) { flag = false; break; } } return flag; } $("#yuyin").click(function(){ $(".h-start1").show(); }) $("#jianpan").click(function(){ if(ifs){uploadRec()} $(".h-start1").hide() })