userNewWageDetailsList.jsp 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@include file="/context/mytags.jsp"%>
  3. <link rel="stylesheet" type="text/css" href="css/commoncss.css"/>
  4. <t:base type="jquery,easyui,tools,DatePicker"></t:base>
  5. <div class="easyui-layout" fit="true">
  6. <div region="center" style="padding:0px;border:0px">
  7. <t:datagrid name="userWageList" pageSize="20" checkbox="false" fitColumns="false" title="员工月度工资明细" actionUrl="userNewWageController.do?datagrid_detail" idField="id" fit="true" queryMode="group">
  8. <t:dgCol title="主键" field="id" hidden="true" queryMode="single" width="120"></t:dgCol>
  9. <t:dgCol title="员工id" hidden="true" field="userid" queryMode="single" width="120"></t:dgCol>
  10. <t:dgCol title="员工工号" sortable="false" frozenColumn="true" query="false" field="username" queryMode="single" width="80"></t:dgCol>
  11. <t:dgCol title="员工姓名" sortable="false" frozenColumn="true" query="false" field="realname" queryMode="single" width="80"></t:dgCol>
  12. <t:dgCol title="所属单位" sortable="false" frozenColumn="true" field="belongUnitName" queryMode="single" width="220"></t:dgCol>
  13. <%-- <t:dgCol title="职务层级" align="center" sortable="false" field="pduname" queryMode="single" width="120"></t:dgCol> --%>
  14. <t:dgCol title="身份证号" align="center" sortable="false" field="pduname" queryMode="single" width="160"></t:dgCol>
  15. <t:dgCol title="职务" sortable="false" field="duname" queryMode="single" width="120"></t:dgCol>
  16. <t:dgCol title="开户银行" sortable="false" field="belongBank" query="false" queryMode="single" width="80"></t:dgCol>
  17. <t:dgCol title="工资卡号" sortable="false" field="cardNumber" queryMode="single" width="170"></t:dgCol>
  18. <t:dgCol title="缴金单位" sortable="false" field="socialSecurityUnit" queryMode="single" width="120"></t:dgCol>
  19. <t:dgCol title="工资月度" align="center" sortable="false" field="monthly" queryMode="single" width="120"></t:dgCol>
  20. <t:dgCol title="基本工资" style="text-align:right," sortable="false" field="basicWage" queryMode="single" width="120"></t:dgCol>
  21. <t:dgCol title="岗位津贴" style="text-align:right," sortable="false" field="postAllowance" queryMode="single" width="120"></t:dgCol>
  22. <t:dgCol title="职务津贴" style="text-align:right," sortable="false" field="dutiesAllowance" queryMode="single" width="120"></t:dgCol>
  23. <t:dgCol title="等级津贴" style="text-align:right," sortable="false" field="dutieslevelAllowance" queryMode="single" width="120"></t:dgCol>
  24. <t:dgCol title="人才津贴" style="text-align:right," sortable="false" field="talentAllowance" queryMode="single" width="120"></t:dgCol>
  25. <t:dgCol title="司龄津贴" style="text-align:right," sortable="false" field="comyearAllowance" queryMode="single" width="120"></t:dgCol>
  26. <t:dgCol title="其它工作补贴" style="text-align:right," sortable="false" field="otherworkSubsidy" queryMode="single" width="120"></t:dgCol>
  27. <t:dgCol title="月度奖金" style="text-align:right," sortable="false" field="projectPerformance" queryMode="single" width="120"></t:dgCol>
  28. <t:dgCol title="主管项目工资" style="text-align:right," sortable="false" field="xianchangBonus" queryMode="single" width="120"></t:dgCol>
  29. <t:dgCol title="监管项目工资" style="text-align:right," sortable="false" field="jianguanBonus" queryMode="single" width="120"></t:dgCol>
  30. <t:dgCol title="证书补贴" style="text-align:right," sortable="false" field="certificateSubsidy" queryMode="single" width="120"></t:dgCol>
  31. <t:dgCol title="交通补贴" style="text-align:right," sortable="false" field="trafficSubsidy" queryMode="single" width="120"></t:dgCol>
  32. <t:dgCol title="高温补贴" style="text-align:right," sortable="false" field="megathermalSubsidy" queryMode="single" width="120"></t:dgCol>
  33. <t:dgCol title="独生子女费" style="text-align:right," sortable="false" field="onlyChildCost" queryMode="single" width="120"></t:dgCol>
  34. <%-- <t:dgCol title="其他补贴" style="text-align:right," sortable="false" field="otherSubsidy" queryMode="single" width="120"></t:dgCol> --%>
  35. <t:dgCol title="奖金" style="text-align:right," sortable="false" field="bonus" queryMode="single" width="120"></t:dgCol>
  36. <t:dgCol title="处罚扣除" style="text-align:right," sortable="false" field="fakuan" queryMode="single" width="120"></t:dgCol>
  37. <t:dgCol title="餐补白班津贴" style="text-align:right," sortable="false" field="mealsSubsidyDay" queryMode="single" width="120"></t:dgCol>
  38. <t:dgCol title="餐补夜班津贴" style="text-align:right," sortable="false" field="mealsSubsidyNight" queryMode="single" width="120"></t:dgCol>
  39. <t:dgCol title="餐费补助" style="text-align:right," sortable="false" field="mealsSubsidy" queryMode="single" width="120"></t:dgCol>
  40. <t:dgCol title="加班超时费" style="text-align:right," sortable="false" field="overtimepayTimeout" queryMode="single" width="120"></t:dgCol>
  41. <t:dgCol title="国定加班费" style="text-align:right," sortable="false" field="overtimepayFixed" queryMode="single" width="120"></t:dgCol>
  42. <t:dgCol title="值班费" style="text-align:right," sortable="false" field="duty" queryMode="single" width="120"></t:dgCol>
  43. <t:dgCol title="特殊加班费" style="text-align:right," sortable="false" field="specialOvertime" queryMode="single" width="120"></t:dgCol>
  44. <t:dgCol title="病假扣" style="text-align:right," sortable="false" field="sickLeaveDebit" queryMode="single" width="120"></t:dgCol>
  45. <t:dgCol title="事假扣" style="text-align:right," sortable="false" field="thingLeaveDebit" queryMode="single" width="120"></t:dgCol>
  46. <t:dgCol title="缺勤扣" style="text-align:right," sortable="false" field="absenceDebit" queryMode="single" width="120"></t:dgCol>
  47. <t:dgCol title="代扣款" style="text-align:right," sortable="false" field="daikouDebit" queryMode="single" width="120"></t:dgCol>
  48. <t:dgCol title="其他扣除" style="text-align:right," sortable="false" field="otherDebit" queryMode="single" width="120"></t:dgCol>
  49. <t:dgCol title="缴金补贴" style="text-align:right," sortable="false" field="paymentSubsidy" queryMode="single" width="120"></t:dgCol>
  50. <t:dgCol title="补发调整" style="text-align:right," sortable="false" field="reissue" queryMode="single" width="120"></t:dgCol>
  51. <t:dgCol title="应发金额" style="text-align:right," sortable="false" field="preTaxMone" queryMode="single" width="120"></t:dgCol>
  52. <t:dgCol title="社保扣除" style="text-align:right," sortable="false" field="socialSecurityDebit" queryMode="single" width="120"></t:dgCol>
  53. <t:dgCol title="公积金扣除" style="text-align:right," sortable="false" field="providentFundDebit" queryMode="single" width="120"></t:dgCol>
  54. <t:dgCol title="扣税金额" style="text-align:right," sortable="false" field="taxMoney" queryMode="single" width="120"></t:dgCol>
  55. <t:dgCol title="实发金额" style="text-align:right," sortable="false" field="actualMoney" queryMode="single" width="120"></t:dgCol>
  56. <t:dgCol title="企业社保" style="text-align:right," sortable="false" field="comSocialSecurityDebit" queryMode="single" width="120"></t:dgCol>
  57. <t:dgCol title="企业公积金" style="text-align:right," sortable="false" field="comProvidentFundDebit" queryMode="single" width="120"></t:dgCol>
  58. <t:dgCol title="企业成本合计" style="text-align:right," sortable="false" field="comCost" queryMode="single" width="120"></t:dgCol>
  59. <t:dgCol title="备注说明" sortable="false" field="remark" extendParams="editor:'text'" queryMode="single" width="400"></t:dgCol>
  60. <t:dgToolBar title="核算" icon="icon-calculation" url="userNewWagePayrollController.do?userPayroll" funname="userPayroll"></t:dgToolBar>
  61. <%-- <t:dgToolBar title="修改" icon="icon-edit" operationCode="edit" funname="editRow"></t:dgToolBar> --%>
  62. <%-- <t:dgToolBar title="保存" icon="icon-save" url="userWageController.do?saveRows" funname="saveData"></t:dgToolBar> --%>
  63. <%-- <t:dgToolBar title="取消编辑" icon="icon-cancel1" funname="reject"></t:dgToolBar> --%>
  64. <%-- <t:dgToolBar title="确认" url="userWageController.do?updateStatus" icon="icon-confirm" funname="updateStatus"></t:dgToolBar> --%>
  65. <t:dgToolBar title="导出" icon="icon-put" operationCode="put" funname="ExportXls"></t:dgToolBar>
  66. </t:datagrid>
  67. <script>
  68. $(function() {
  69. var datagrid = $("#userWageListtb");
  70. datagrid.children("div:first").before($("#pinjie1 div[name='pinjie11']").html());
  71. // datagrid.children("div:first").after($("#pinjie2 div[name='pinjie21']").html());
  72. // datagrid.children(".datagrid-toolbar").children("span:first").after($("#pinjie2 div[name='pinjie21']").html());
  73. // datagrid.append($("#pinjie2 div[name='pinjie21']").html());
  74. $("#pinjie12").next("div").attr("style","border-bottom-width:0;height:auto;");
  75. $("#pinjie12").next("div").attr("class","datagrid-toolbar");
  76. datagrid.children(".datagrid-toolbar").children("span:first").after($("#pinjie2 div[name='pinjie21']").html());
  77. $("#pinjie1").html('');
  78. $("#pinjie2").html('');
  79. isCss();
  80. });
  81. function isCss(){
  82. $("td[field='preTaxMone']").css({"background":"#d65653"});
  83. $("td[field='preTaxMone']").css({"color":"#ffffff"});
  84. $("td[field='actualMoney']").css({"background":"#d65653"});
  85. $("td[field='actualMoney']").css({"color":"#ffffff"});
  86. $("td[field='comCost']").css({"background":"#d65653"});
  87. $("td[field='comCost']").css({"color":"#ffffff"});
  88. }
  89. </script>
  90. <div id="pinjie1" style="display: none;">
  91. <div name="pinjie11">
  92. <div id="pinjie12" style="margin:23px 0 18px 0;" >
  93. <table style="padding:0px;width: 100%;" cellpadding="0" cellspacing="1" border='0'>
  94. <tbody >
  95. <tr>
  96. <td align="right" style="width: 74px;">
  97. <label class="Validform_label">
  98. 员工姓名:
  99. </label>
  100. </td>
  101. <td class="value" style="width: 74px;">
  102. <input id="realname" name="realname" type="text" style="width: 120px; " class="inputxt" placeholder="">
  103. </td>
  104. <td align="right" style="width: 74px;">
  105. <label class="Validform_label">
  106. 开户银行:
  107. </label>
  108. </td>
  109. <td class="value" style="width: 74px;">
  110. <input id="belongBank" name="belongBank" type="text" style="width: 120px; " class="inputxt" placeholder="">
  111. </td>
  112. <td align="right" style="width: 74px;">
  113. <label class="Validform_label">
  114. <span color="red" class="requiredIcon">*</span>
  115. 工资月度:
  116. </label>
  117. </td>
  118. <td class="value" style="width: 74px;">
  119. <input class="Wdate" name="monthlys" style="width: 120px;height: 28px; border-radius: 3px;" onClick="WdatePicker({readOnly:true,enableKeyboard:false,enableInputMask:false,dateFmt: 'yyyy-MM'})"/>
  120. </td>
  121. <td align="right" style="width: 74px;">
  122. <label class="Validform_label">
  123. 项目名称:
  124. </label>
  125. </td>
  126. <td class="value" >
  127. <input readonly="true" type="text" id="departname" name="departname" style="width: 120px" placeholder="" onclick="openDepartmentSelect()">
  128. <input id="orgIds" name="orgIds" type="hidden" value="">
  129. <a href="#" class="easyui-linkbutton" plain="true" icon="icon-select" id="departSearch" onclick="openDepartmentSelect()">选择</a>
  130. <a href="#" class="easyui-linkbutton" plain="true" icon="icon-clean" id="departRedo" onclick="callbackClean()">清空</a>
  131. </td>
  132. </tr>
  133. <!-- <tr>
  134. <td colspan="10"></td>
  135. <td >
  136. <span>
  137. <a href="#" style="float: right;" class="easyui-linkbutton" plain="true" icon="icon-reload " id="personnelBaseArchivesManageRedo" onclick="searchReset('userWageList')">重置</a>
  138. </span>
  139. <span>
  140. <a href="#" style="float: right;" class="easyui-linkbutton" plain="true" icon="icon-search" id="personnelBaseArchivesManageSearch" onclick="userWageListsearch()">查询</a>
  141. </span>
  142. </td>
  143. </tr> -->
  144. </tbody>
  145. </table>
  146. </div>
  147. </div>
  148. </div>
  149. <div id="pinjie2" style="display: none;">
  150. <div name="pinjie21">
  151. <span style="float:right;margin-bottom:4px;">
  152. <a href="#" style="float: right;" class="easyui-linkbutton" plain="true" icon="icon-reload " id="personnelBaseArchivesManageRedo" onclick="searchReset('userWageList')">重置</a>&nbsp;&nbsp;&nbsp;
  153. <a href="#" style="float: right;" class="easyui-linkbutton" plain="true" icon="icon-search" id="personnelBaseArchivesManageSearch" onclick="userWageListsearch()">查询</a>
  154. </span>
  155. </div>
  156. </div>
  157. </div>
  158. </div>
  159. <script src = "webpage/cn/com/lzt/userwage/userWageList.js"></script>
  160. <script type="text/javascript">
  161. //核算
  162. function userPayroll(title,addurl,gname){
  163. var rows=$('#'+gname).datagrid("getChecked");
  164. var date = $(".Wdate").val();
  165. var pid = $("#orgIds").val();
  166. var monthly = $("#monthlys").val();
  167. var realname = $("#realname").val();
  168. var belongBank = $("#belongBank").val();
  169. if(rows.length==0){
  170. layer.alert("请选择需要重新核算工资的员工!");
  171. //tip("请选择需要重新核算工资的员工!");
  172. return;
  173. }
  174. var result = "";
  175. for(var i=0;i<rows.length;i++){
  176. if(rows[i].status == '2'){
  177. layer.alert("员工【"+rows[i].realname+"】的工资已确认,不可再点击核算");
  178. //tip("员工【"+rows[i].realname+"】的工资已确认,不可再点击核算");
  179. return;
  180. }
  181. if(rows[i].duname == ''){
  182. layer.alert("员工【"+rows[i].realname+"】没有职务,请先设定职务");
  183. //tip("员工【"+rows[i].realname+"】的工资已确认,不可再点击核算");
  184. return;
  185. }
  186. result += rows[i].userid+",";
  187. }
  188. $.ajax({
  189. url:"<%=basePath%>/"+addurl,
  190. type:"post",
  191. data:{ids:result,status:true,moth:date},
  192. dataType:"json",
  193. success:function(data){
  194. tip(data.msg);
  195. userWageListsearch();
  196. //layer.alert(data.msg);
  197. //tip(data.msg);
  198. }
  199. });
  200. }
  201. //手动核算员工选择
  202. function userPayrollBySelectUser(){
  203. //项目id
  204. var pid = $("#orgIds").val();
  205. var monthly = $("#monthlys").val();
  206. // var date = new Date();
  207. // var day = date.getDate();
  208. // if(day> 1 && day <6){
  209. // layer.alert("每月2日~5日为考勤和工资核算期, 不能手工核算工资");
  210. // return false;
  211. // }
  212. $.dialog({content: 'url:userPayrollController.do?personnelBaseArchivesManageSelectList&pid='+pid, zIndex: getzIndex(), title: '员工选择', lock: true, width: '650px', height: '400px',
  213. opacity: 0.4, button: [
  214. {name: '<t:mutiLang langKey="common.confirm"/>', callback: function (){
  215. //var postGeneralId=$("#id").val();
  216. //父页面接子页面传值
  217. //获得子页面getReason()方法中的值
  218. var iframe = this.iframe.contentWindow;
  219. var userid="";
  220. if(iframe.getReason().length>0){
  221. var strData=eval(iframe.getReason());
  222. for(var key in strData[0]){
  223. if(key=="strUserId"){
  224. userid = strData[0][key];
  225. }
  226. }
  227. $.ajax({
  228. url:"userPayrollController.do?userPayrollByUserId",
  229. async:true,
  230. type:"post",
  231. data: {
  232. userid : userid,
  233. pid : pid,
  234. monthly : monthly
  235. },
  236. cache : false,
  237. success:function(aj){
  238. data=JSON.parse(aj);
  239. if (data.success) {
  240. // layer.alert("手动核算完成");
  241. var refreshURL= 'userWageController.do?goview&orgid='+pid+'&monthly='+'${monthly}';
  242. layer.msg('手动核算完成', {
  243. time: 2000, //2s后自动关闭
  244. btn: ['确定']
  245. ,yes: function(index, layero){
  246. window.location.href=refreshURL;
  247. }
  248. });
  249. //刷新表格数据
  250. //refresh();
  251. window.location.href=refreshURL;
  252. } else {
  253. layer.alert(data.msg);
  254. }
  255. }
  256. });
  257. }
  258. }, focus: true},
  259. {name: '<t:mutiLang langKey="common.cancel"/>', callback: function (){}}
  260. ]}).zindex();
  261. }
  262. //保存数据
  263. function saveData(title,addurl,gname){
  264. if(!endEdit(gname))
  265. return false;
  266. var rows=$('#'+gname).datagrid("getChanges","inserted");
  267. var uprows=$('#'+gname).datagrid("getChanges","updated");
  268. rows=rows.concat(uprows);
  269. if(rows.length<=0){
  270. layer.alert("没有需要保存的数据!");
  271. //tip("没有需要保存的数据!");
  272. return false;
  273. }
  274. var result={};
  275. for(var i=0;i<rows.length;i++){
  276. for(var d in rows[i]){
  277. result["userWageList["+i+"]."+d]=rows[i][d];
  278. }
  279. }
  280. $.ajax({
  281. url:"<%=basePath%>/"+addurl,
  282. type:"post",
  283. data:result,
  284. dataType:"json",
  285. success:function(data){
  286. tip(data.msg);
  287. reloadTable();
  288. }
  289. })
  290. }
  291. //结束编辑
  292. function endEdit(gname){
  293. var editIndex = $('#'+gname).datagrid('getRows').length-1;
  294. for(var i=0;i<=editIndex;i++){
  295. if($('#'+gname).datagrid('validateRow', i))
  296. $('#'+gname).datagrid('endEdit', i);
  297. else
  298. return false;
  299. }
  300. return true;
  301. }
  302. //编辑行
  303. function editRow(title,addurl,gname){
  304. var rows=$('#'+gname).datagrid("getChecked");
  305. if(rows.length==0){
  306. layer.alert("请选择条目");
  307. //tip("请选择条目");
  308. return false;
  309. }
  310. for(var i=0;i<rows.length;i++){
  311. var index= $('#'+gname).datagrid('getRowIndex', rows[i]);
  312. $('#'+gname).datagrid('beginEdit', index);
  313. }
  314. }
  315. //update-begin--Author:张忠亮 Date:20150709 for:修正 取消编辑后再次点击录入不进入编辑状态
  316. //取消编辑
  317. function reject(title,addurl,gname){
  318. $('#'+gname).datagrid('clearChecked');
  319. $('#'+gname).datagrid('rejectChanges');
  320. }
  321. function returnGopage(){
  322. window.location.href="userWageController.do?listView";
  323. }
  324. //导入
  325. function ImportXls() {
  326. openuploadwin('Excel导入', 'userWageController.do?upload', "userWageList");
  327. }
  328. //导出
  329. function ExportXls() {
  330. JeecgExcelExport("userWageController.do?exportXls3","userWageList");
  331. }
  332. //模板下载
  333. function ExportXlsByT() {
  334. JeecgExcelExport("userWageController.do?exportXlsByT","userWageList");
  335. }
  336. //新增
  337. function add(title,url,id){
  338. window.location.href=url
  339. }
  340. //修改
  341. function update(title,url, id){
  342. updateNotCreateWin("修改",url, "userWageList",false);
  343. }
  344. //查看
  345. function view(title,url, id){
  346. viewNotCreateWin("查看",url, "userWageList",false)
  347. }
  348. //选择项目名称,列表================
  349. function openDepartmentSelect() {
  350. //$.dialog.setting.zIndex = getzIndex();
  351. var orgIds = $("#belongUnitid").val();
  352. $.dialog({
  353. content: 'url:userWageController.do?projectDepartTableAll&ids='+orgIds, zIndex: getzIndex(), title: '项目名称列表', lock: true, width: '600px', height: '350px', opacity: 0.4, button: [
  354. {name: '<t:mutiLang langKey="common.confirm"/>', callback: function (){
  355. var iframe = this.iframe.contentWindow;
  356. if(iframe.getReason().length>0){
  357. var strData=eval(iframe.getReason());
  358. for(var key in strData[0]){
  359. if(key=="strPId"){
  360. $("#orgIds").val(strData[0][key]);
  361. }else if(key=="strDepartName"){
  362. $("#departname").val(strData[0][key]);
  363. }
  364. }
  365. }
  366. }, focus: true},
  367. {name: '<t:mutiLang langKey="common.cancel"/>', callback: function (){}}
  368. ]}).zindex();
  369. }
  370. function callbackClean(){
  371. $('#departname').val('');
  372. $('#orgIds').val('');
  373. }
  374. function userWageListsearch() {
  375. try {
  376. if (!$("#userWageListForm").Validform({
  377. tiptype : 3
  378. }).check()) {
  379. return false;
  380. }
  381. } catch (e) {
  382. }
  383. if (true) {
  384. var queryParams = $('#userWageList').datagrid('options').queryParams;
  385. $('#userWageListtb').find('*').each(function() {
  386. queryParams[$(this).attr('name')] = $(this).val();
  387. });
  388. if(queryParams.monthlys ==null||queryParams.monthlys ==''){
  389. layer.alert('请选择工资月度');
  390. return false;
  391. }
  392. var orgIds = $("#belongUnitid").val();
  393. // if(orgIds ==null||orgIds ==''){
  394. // layer.alert('请选择项目');
  395. // return false;
  396. // }
  397. $('#userWageList')
  398. .datagrid(
  399. {
  400. url : 'userNewWageController.do?datagrid_detail&field=id,userid,username,realname,belongUnitName,pduname,duname,belongBank,socialSecurityUnit,cardNumber,monthly,basicWage,postAllowance,dutiesAllowance,dutieslevelAllowance,talentAllowance,comyearAllowance,xianchangBonus,jianguanBonus,certificateSubsidy,trafficSubsidy,megathermalSubsidy,onlyChildCost,otherSubsidy,bonus,fakuan,projectPerformance,mealsSubsidyDay,mealsSubsidyNight,mealsSubsidy,overtimepayTimeout,overtimepayFixed,duty,specialOvertime,sickLeaveDebit,thingLeaveDebit,absenceDebit,paymentSubsidy,socialSecurityDebit,providentFundDebit,comSocialSecurityDebit,comProvidentFundDebit,comCost,daikouDebit,otherDebit,reissue,preTaxMone,taxMoney,actualMoney,remark,',
  401. pageNumber : 1
  402. });
  403. }
  404. }
  405. </script>