Browse Source

补充提交

Zn 1 year ago
parent
commit
5ebcf62d28

+ 5 - 3
ruoyi-ui/src/layout/index.vue

@@ -146,9 +146,11 @@ export default {
     },
     },
   },
   },
   mounted() {
   mounted() {
-    var user = sessionStorage.getItem("sessionObj");
-    var user = JSON.parse(user);
-    this.userName = JSON.parse(user.data).username;
+    if(user){
+      var user = sessionStorage.getItem("sessionObj");
+      var user = JSON.parse(user);
+      this.userName = JSON.parse(user.data).username;
+    }
   },
   },
 };
 };
 </script>
 </script>

+ 23 - 19
ruoyi-ui/src/views/relateTable/components/RelateTableCard.vue

@@ -91,13 +91,10 @@ import {
   getInfoBySqlKey,
   getInfoBySqlKey,
   addTableData,
   addTableData,
   batchEdit,
   batchEdit,
-  getStatisticList
 } from "@/api/tablelist/commonTable";
 } from "@/api/tablelist/commonTable";
 import {inputDisableComplete} from "@/utils/other";
 import {inputDisableComplete} from "@/utils/other";
-import {dragGroupTableInfo} from "@/api/relateTable/index"
 
 
 import {camelCase} from "@/utils";
 import {camelCase} from "@/utils";
-import { async } from "@/components/updateModule/k-form-design/lib/k-form-design.common";
 export default {
 export default {
   name: "RelateTableCard",
   name: "RelateTableCard",
   props: ["cardData", "index", "tableKey", "sort"],
   props: ["cardData", "index", "tableKey", "sort"],
@@ -196,11 +193,12 @@ export default {
   mounted() {
   mounted() {
   },
   },
   methods: {
   methods: {
-    // 请求数据
+    // 根据tablekey请求数据表头数据
     async gettableListHandler(tableKey, paramsContion = [], defaultVal ={}){
     async gettableListHandler(tableKey, paramsContion = [], defaultVal ={}){
       const res = await dragTableInfo({queryMap: {tableKey : tableKey }})
       const res = await dragTableInfo({queryMap: {tableKey : tableKey }})
       this.getTableHandle(res, paramsContion = [],defaultVal = {})
       this.getTableHandle(res, paramsContion = [],defaultVal = {})
     },
     },
+    // 处理表格表头
     async getTableHandle(res){
     async getTableHandle(res){
         this.columns = []
         this.columns = []
         // 得到当前模版信息 --- sql columns queryWhere
         // 得到当前模版信息 --- sql columns queryWhere
@@ -215,7 +213,7 @@ export default {
 
 
         // 得到查询条件
         // 得到查询条件
         this.queryFromWhere = res.data.resultMap.where;
         this.queryFromWhere = res.data.resultMap.where;
-        //  得到当前列表信息
+        //  得到当前列表表头信息
         this.columns = this.columnsHandler(
         this.columns = this.columnsHandler(
           JSON.parse(this.templateInfo.template.dtColumnName)
           JSON.parse(this.templateInfo.template.dtColumnName)
         );
         );
@@ -237,16 +235,16 @@ export default {
 
 
             this.$nextTick(async ()=>{
             this.$nextTick(async ()=>{
               if(this.newsort == 0){
               if(this.newsort == 0){
+                // 第一张表请求表数据不需要条件
              await this.getDataHandler()
              await this.getDataHandler()
             }else{
             }else{
               if(this.myContion){
               if(this.myContion){
                 await this.getDataHandler(this.myContion,this.preRow)
                 await this.getDataHandler(this.myContion,this.preRow)
-              } else {
-                // this.$emit('getDefaultCardData', this.index)
-              } 
+              }
             }
             }
             })
             })
             
             
+            //处理三张不同表的依赖关系
             // let k;
             // let k;
             // this.tableCondition.forEach((item, i) => {
             // this.tableCondition.forEach((item, i) => {
             //   let val = item.split('=')
             //   let val = item.split('=')
@@ -263,12 +261,13 @@ export default {
             
             
         }  
         }  
     },
     },
-    // 获取表数据
+    // 获取表数据
     async getDataHandler(contion, list){
     async getDataHandler(contion, list){
       // console.log(contion);
       // console.log(contion);
       this.myContion=contion;
       this.myContion=contion;
       this.preRow=list;
       this.preRow=list;
       // console.log(list);
       // console.log(list);
+      // 处理请求下一张表数据的依赖条件
       if(contion){
       if(contion){
         let key = contion.split('.')
         let key = contion.split('.')
         this.queryParams.queryMap['#{' + contion] = "'" + list[key[1]] + "'";
         this.queryParams.queryMap['#{' + contion] = "'" + list[key[1]] + "'";
@@ -278,10 +277,12 @@ export default {
       this.tableList = [];
       this.tableList = [];
       let tableLists = await unionListTableData(this.queryParams)
       let tableLists = await unionListTableData(this.queryParams)
       if(tableLists.code == 200){
       if(tableLists.code == 200){
+        // 默认根据这张表的第一条数据请求下一张表的数据
         this.$emit('getDefaultCardData', this.index)
         this.$emit('getDefaultCardData', this.index)
-          tableLists.rows.forEach((item) => {
-            this.tableList.push(item.resultMap);
-          });
+
+        tableLists.rows.forEach((item) => {
+          this.tableList.push(item.resultMap);
+        });
         
         
           // 驼峰转换
           // 驼峰转换
           this.tableList = this.tableList.map((item) => {
           this.tableList = this.tableList.map((item) => {
@@ -342,9 +343,11 @@ export default {
         });
         });
       });
       });
     },
     },
+    // 下一表数据
     getNextCardData(){
     getNextCardData(){
       this.handleCurrentChange(this.row)
       this.handleCurrentChange(this.row)
     },
     },
+    // 根据表格第一条数据请求下一个表格的数据
     getDefaultCard(){
     getDefaultCard(){
       this.handleCurrentChange(this.tableList[0])
       this.handleCurrentChange(this.tableList[0])
     },
     },
@@ -358,7 +361,7 @@ export default {
           console.log("验证未通过,获取失败");
           console.log("验证未通过,获取失败");
         });
         });
     },
     },
-     //提交编辑结果按钮回调
+    //提交编辑结果按钮回调
     editConfirmHandler() {
     editConfirmHandler() {
       this.$refs.addFromRef
       this.$refs.addFromRef
         .getData()
         .getData()
@@ -406,10 +409,13 @@ export default {
           if(this.index == 0){
           if(this.index == 0){
             this.getDataHandler()
             this.getDataHandler()
           } else {
           } else {
-            this.$emit('getChildData', this.index)
+            // 判断修改是否点击了上一表格的数据
+            if(this.row){
+              this.$emit('getChildData', this.index)
+            } else {
+              this.$emit('getEditHandle', this.index)
+            }
           }
           }
-          // this.getDataHandler(this.contion, this.row)
-          // this.gettableListHandler(this.tableKey)
           this.defaultValue = {};
           this.defaultValue = {};
           this.open = false;
           this.open = false;
 
 
@@ -439,14 +445,12 @@ export default {
           return;
           return;
         }
         }
         Object.assign(this.defaultValue, obj);
         Object.assign(this.defaultValue, obj);
-        console.log(this.defaultValue)
+        // console.log(this.defaultValue)
         this.jsonData = JSON.parse(data.dfVueTemplate);
         this.jsonData = JSON.parse(data.dfVueTemplate);
-        console.log('123', this.jsonData)
         this.open = true;
         this.open = true;
         this.title = "修改信息";
         this.title = "修改信息";
         // this.form.password = this.initPassword;
         // this.form.password = this.initPassword;
         this.$nextTick(() => {
         this.$nextTick(() => {
-          console.log(this.$refs.addFromRef);
           this.$refs.addFromRef.setData(obj);
           this.$refs.addFromRef.setData(obj);
         });
         });
       });
       });

+ 16 - 44
ruoyi-ui/src/views/relateTable/index.vue

@@ -471,8 +471,7 @@
   </div>
   </div>
 </template>
 </template>
 <script>
 <script>
-import { listTable, removeTableList } from "@/api/dragform/tableList";
-import { getFormName, getListName, dragTablePreview, } from "@/api/dragform/form.js";
+import { getFormName, getListName, } from "@/api/dragform/form.js";
 import { delMenu } from "@/api/system/menu";
 import { delMenu } from "@/api/system/menu";
 import { getMenuList, addMenu, getRouters} from "@/api/menu.js";
 import { getMenuList, addMenu, getRouters} from "@/api/menu.js";
 import { getParticMenu, updateMenu } from "@/api/system/menu.js";
 import { getParticMenu, updateMenu } from "@/api/system/menu.js";
@@ -481,7 +480,6 @@ import { mapGetters, mapState } from "vuex";
 import { v4 as uuidv4 } from "uuid";
 import { v4 as uuidv4 } from "uuid";
 import Treeselect from "@riophae/vue-treeselect";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
-import json from "highlight.js/lib/languages/json";
 import { getTableInfo } from "@/api/system/table.js";
 import { getTableInfo } from "@/api/system/table.js";
 
 
 export default {
 export default {
@@ -490,10 +488,11 @@ export default {
   dicts: ["sys_time_format", "table_statistic_type"],
   dicts: ["sys_time_format", "table_statistic_type"],
   data() {
   data() {
     return {
     return {
+      // 输入框验证规则
       isInputInvalid: false,
       isInputInvalid: false,
-
       // 包含查询依赖字段dialog
       // 包含查询依赖字段dialog
       isSearchDialog: false,
       isSearchDialog: false,
+      // 选择依赖条件
       isSearchIndex: null,
       isSearchIndex: null,
       // 依赖方式
       // 依赖方式
       relyOption: null,
       relyOption: null,
@@ -610,9 +609,6 @@ export default {
       tableName: "", // 当前表名称
       tableName: "", // 当前表名称
       selectFields: '', //关联字段
       selectFields: '', //关联字段
       relateTitle: true,
       relateTitle: true,
-      relateTableName: "", //关联表名称
-      relateFields: "", //子集关联字段
-      relateFieldList: [], //子集关联字段数据
       groupTitle: true,
       groupTitle: true,
       tableItemForm: {
       tableItemForm: {
         tId: "",
         tId: "",
@@ -644,13 +640,6 @@ export default {
     await this.getMenuList();
     await this.getMenuList();
   },
   },
   computed: {
   computed: {
-    selectRelate(){
-      if(this.tableItemForm.tableName =='') return
-      return this.tableList.filter(item => item.tableName !== this.tableItemForm.tableName)
-    },
-    dataArr() {
-      return this.tableFieldList.filter((item) => item.isShow);
-    },
     ...mapGetters(["addRoutes"]),
     ...mapGetters(["addRoutes"]),
     ...mapState({
     ...mapState({
       databaseName: (state) => state.user.dataSource.databaseName,
       databaseName: (state) => state.user.dataSource.databaseName,
@@ -683,9 +672,11 @@ export default {
     },
     },
   },
   },
   methods: {
   methods: {
+    // 解决回显数据输入框不能输入问题
     iptChange(){
     iptChange(){
 	    this.$forceUpdate();  //强制刷新
 	    this.$forceUpdate();  //强制刷新
     },
     },
+    // 表格列表
     async getTableList(){
     async getTableList(){
       let res = await listGroup(this.queryParams);
       let res = await listGroup(this.queryParams);
       this.total = res.total;
       this.total = res.total;
@@ -719,6 +710,7 @@ export default {
       this.isSearchDialog = false
       this.isSearchDialog = false
       this.tableFieldList[this.serachIndex].isSearch = false
       this.tableFieldList[this.serachIndex].isSearch = false
     },
     },
+    // 是否包含查询开关
     isSearchBtn(){
     isSearchBtn(){
       if(this.relyOption == 0){
       if(this.relyOption == 0){
         this.conditionDefault[this.isSearchIndex] = this.conditionDefaultValueMap
         this.conditionDefault[this.isSearchIndex] = this.conditionDefaultValueMap
@@ -1213,7 +1205,7 @@ export default {
     // 修改表格回显数据
     // 修改表格回显数据
     async initTableData(tId) {
     async initTableData(tId) {
       let res = await getTableInfo(tId);
       let res = await getTableInfo(tId);
-      console.log('回显数据', res);
+      // console.log('回显数据', res);
       if (res.code == 200) {
       if (res.code == 200) {
         if (!this.formData.routePath) {
         if (!this.formData.routePath) {
           this.$message.warning("该表格菜单路由已经删除,请重新配置");
           this.$message.warning("该表格菜单路由已经删除,请重新配置");
@@ -1230,7 +1222,6 @@ export default {
     },
     },
     // 新增动态表格组
     // 新增动态表格组
     addTableGroup(formName){
     addTableGroup(formName){
-      
       this.$refs[formName].validate(async (valid) => {
       this.$refs[formName].validate(async (valid) => {
           if (valid) { 
           if (valid) { 
             // console.log('groupList', this.groupList);
             // console.log('groupList', this.groupList);
@@ -1261,6 +1252,7 @@ export default {
               };
               };
               let result;
               let result;
              
              
+              // 新增菜单
               result = await addMenu(payLoad);
               result = await addMenu(payLoad);
 
 
               if(result.code == 200){
               if(result.code == 200){
@@ -1292,7 +1284,7 @@ export default {
 
 
                 // 添加表格组
                 // 添加表格组
                 let res = await addGroup(data)
                 let res = await addGroup(data)
-                console.log(res);
+                // console.log(res);
                 if(res.code == 200){
                 if(res.code == 200){
                   this.$message.success("创建成功");
                   this.$message.success("创建成功");
 
 
@@ -1314,10 +1306,7 @@ export default {
                 id: this.groupId
                 id: this.groupId
               }
               }
               this.addDragData.forEach((item, index) => {
               this.addDragData.forEach((item, index) => {
-                // item.sqlKey = tableKeyObj.tableKey
                 let echo = JSON.parse(item.echoData)
                 let echo = JSON.parse(item.echoData)
-                // echo.formData = this.groupForm
-                // console.log(echo);
                 item.echoData = JSON.stringify(echo)
                 item.echoData = JSON.stringify(echo)
                 data.groupTableInfo.push({
                 data.groupTableInfo.push({
                   tableKey: item.tableKey,
                   tableKey: item.tableKey,
@@ -1330,7 +1319,7 @@ export default {
                 data.groupDescription = this.groupForm.groupDescription
                 data.groupDescription = this.groupForm.groupDescription
                 data.groupTableInfo = JSON.stringify(data.groupTableInfo)
                 data.groupTableInfo = JSON.stringify(data.groupTableInfo)
                 data.dragTables = this.addDragData
                 data.dragTables = this.addDragData
-                console.log(data);
+                // console.log(data);
               let res = await updataGroup(data)
               let res = await updataGroup(data)
 
 
               if(res.code == 200){
               if(res.code == 200){
@@ -1348,6 +1337,7 @@ export default {
                   visible: "0",
                   visible: "0",
                   tenantId: this.tenantId,
                   tenantId: this.tenantId,
               };
               };
+              // 修改菜单
                 let result = await updateMenu(payLoad);
                 let result = await updateMenu(payLoad);
 
 
                 if(result.code == 200){
                 if(result.code == 200){
@@ -1483,18 +1473,17 @@ export default {
     },
     },
     // 多选框选中数据
     // 多选框选中数据
     handleSelectionChange(selection) {
     handleSelectionChange(selection) {
-      console.log(selection);
+      // console.log(selection);
       this.ids = selection.map((item) => item.id);
       this.ids = selection.map((item) => item.id);
       this.Keys = selection.map((item) => item.sqlKey);
       this.Keys = selection.map((item) => item.sqlKey);
       selection.forEach(vals => {
       selection.forEach(vals => {
         this.menuIds = vals.groupTableInfo.map(item => item.menuId)
         this.menuIds = vals.groupTableInfo.map(item => item.menuId)
-          console.log( this.menuIds);
+          // console.log( this.menuIds);
       })
       })
       this.selection = selection;
       this.selection = selection;
       this.single = selection.length !== 1;
       this.single = selection.length !== 1;
       this.multiple = !selection.length;
       this.multiple = !selection.length;
-    },
-    
+    }, 
     /** 修改按钮操作 */
     /** 修改按钮操作 */
     async handleUpdate(row) {
     async handleUpdate(row) {
       // 兼容勾选单个的修改
       // 兼容勾选单个的修改
@@ -1528,7 +1517,7 @@ export default {
     },
     },
     /** 删除按钮操作 */
     /** 删除按钮操作 */
     handleDelete(row) {
     handleDelete(row) {
-      console.log(row);
+      // console.log(row);
       this.tableDataList.forEach((item, index) => {
       this.tableDataList.forEach((item, index) => {
         if(row.tableKey == item.tableKey) {
         if(row.tableKey == item.tableKey) {
           this.tableDataList.splice(index, 1);
           this.tableDataList.splice(index, 1);
@@ -1541,7 +1530,7 @@ export default {
         this.$router.addRoutes(accessRoutes); // 动态添加可访问路由表
         this.$router.addRoutes(accessRoutes); // 动态添加可访问路由表
       });
       });
     },
     },
-    // 新增一个联动表格
+    // 新增一个表格
     addOneTable() {
     addOneTable() {
       this.relateTitle = true
       this.relateTitle = true
       if(this.relateTitle){
       if(this.relateTitle){
@@ -1562,23 +1551,6 @@ export default {
       // 注意校验最后一条数据是否合法
       // 注意校验最后一条数据是否合法
       this.isShowForm = true;
       this.isShowForm = true;
     },
     },
-
-    // 重置表单
-    // tableItemFormReset() {
-    //   Object.assign(this.tableItemForm, {
-    //     title: "",
-    //     tableId: "",
-    //     tableName: "",
-    //     showFields: [],
-    //     theRelateField: "",
-    //     executeOptions: [],
-    //   });
-    // },
-    // handlePreview() {
-    //   this.$router.push({
-    //     path: "/system/fromModel/index/relateTableEdit",
-    //   });
-    // },
   },
   },
 };
 };
 </script>
 </script>

+ 22 - 98
ruoyi-ui/src/views/relateTable/relateTableEdit.vue

@@ -13,6 +13,7 @@
               @updateData="updateDataList"
               @updateData="updateDataList"
               @getChildData="getChildData"
               @getChildData="getChildData"
               @getDefaultCardData="getDefaultCardData"
               @getDefaultCardData="getDefaultCardData"
+              @getEditHandle="getEditHandle"
               :tableKey="cardData.tableKey"
               :tableKey="cardData.tableKey"
               :sort="cardData.sort"
               :sort="cardData.sort"
               :cardData="cardData"
               :cardData="cardData"
@@ -29,17 +30,6 @@
 <script>
 <script>
 import TableCard from "./components/RelateTableCard.vue";
 import TableCard from "./components/RelateTableCard.vue";
 import {dragGroupTableInfo} from "@/api/relateTable/index"
 import {dragGroupTableInfo} from "@/api/relateTable/index"
-import {
-  delTableData,
-  dragTableInfo,
-  listTable,
-  unionListTableData,
-  getInfoBySqlKey,
-  addTableData,
-  batchEdit,
-  getStatisticList
-} from "@/api/tablelist/commonTable";
-import {camelCase} from "@/utils";
 
 
 export default {
 export default {
   name: "relateTableEdit",
   name: "relateTableEdit",
@@ -48,86 +38,6 @@ export default {
   data() {
   data() {
     return {
     return {
       tableLists:[],
       tableLists:[],
-      // dataList: [
-      //   {
-      //     tableId: "1",
-      //     title: "一级表格",
-      //     tableData: [
-      //       {
-      //         date: "2016-05-02",
-      //         name: "王小虎",
-      //         address: "上海市普陀区金沙江路 1518 弄",
-      //       },
-      //       {
-      //         date: "2016-05-04",
-      //         name: "王小虎",
-      //         address: "上海市普陀区金沙江路 1517 弄",
-      //       },
-      //       {
-      //         date: "2016-05-01",
-      //         name: "王小虎",
-      //         address: "上海市普陀区金沙江路 1519 弄",
-      //       },
-      //       {
-      //         date: "2016-05-03",
-      //         name: "王小虎",
-      //         address: "上海市普陀区金沙江路 1516 弄",
-      //       },
-      //     ],
-      //   },
-      //   {
-      //     tableId: "2",
-      //     title: "二级表格",
-      //     tableData: [
-      //       {
-      //         date: "2016-05-02",
-      //         name: "王小虎",
-      //         address: "上海市普陀区金沙江路 1518 弄",
-      //       },
-      //       {
-      //         date: "2016-05-04",
-      //         name: "王小虎",
-      //         address: "上海市普陀区金沙江路 1517 弄",
-      //       },
-      //       {
-      //         date: "2016-05-01",
-      //         name: "王小虎",
-      //         address: "上海市普陀区金沙江路 1519 弄",
-      //       },
-      //       {
-      //         date: "2016-05-03",
-      //         name: "王小虎",
-      //         address: "上海市普陀区金沙江路 1516 弄",
-      //       },
-      //     ],
-      //   },
-      //   {
-      //     tableId: "3",
-      //     title: "三级表格三级表格三级表格三级表格",
-      //     tableData: [
-      //       {
-      //         date: "2016-05-02",
-      //         name: "王小虎",
-      //         address: "上海市普陀区金沙江路 1518 弄",
-      //       },
-      //       {
-      //         date: "2016-05-04",
-      //         name: "王小虎",
-      //         address: "上海市普陀区金沙江路 1517 弄",
-      //       },
-      //       {
-      //         date: "2016-05-01",
-      //         name: "王小虎",
-      //         address: "上海市普陀区金沙江路 1519 弄",
-      //       },
-      //       {
-      //         date: "2016-05-03",
-      //         name: "王小虎",
-      //         address: "上海市普陀区金沙江路 1516 弄",
-      //       },
-      //     ],
-      //   },
-      // ],
       // 共通查询参数接受子组件的参数
       // 共通查询参数接受子组件的参数
       queryParams: {
       queryParams: {
         pageNum: 1, // 第几页
         pageNum: 1, // 第几页
@@ -157,10 +67,12 @@ export default {
     this.getLists()
     this.getLists()
   },
   },
   methods: { 
   methods: { 
+    // 获取相关表格信息
     async getLists(){
     async getLists(){
       let res = await dragGroupTableInfo({queryMap: {groupKey: this.groupKey}})
       let res = await dragGroupTableInfo({queryMap: {groupKey: this.groupKey}})
       this.tableLists = JSON.parse(res.msg)
       this.tableLists = JSON.parse(res.msg)
     },
     },
+    // 子组件触发点击事件 获得下一表格数据
     updateDataList(row,index) {
     updateDataList(row,index) {
       if(index == 0){
       if(index == 0){
         this.tableLists.forEach((item, i) => {
         this.tableLists.forEach((item, i) => {
@@ -172,9 +84,12 @@ export default {
       }
       }
       let beforeChild = this.$refs['childComponent'+index][0]
       let beforeChild = this.$refs['childComponent'+index][0]
       index++
       index++
-      const chlid = this.$refs['childComponent'+index][0]
-      if(!chlid) return
-      chlid.getDataHandler(beforeChild.contion,row)
+      // 判断是不是最后一个表格触发点击事件
+      if(this.$refs['childComponent'+index]){
+        const chlid = this.$refs['childComponent'+index][0]
+        if(!chlid) return
+        chlid.getDataHandler(beforeChild.contion,row)
+      }
     },
     },
     // 新增数据调用
     // 新增数据调用
     getChildData(index) {
     getChildData(index) {
@@ -189,16 +104,25 @@ export default {
         this.$refs[targetRef][0].getNextCardData()
         this.$refs[targetRef][0].getNextCardData()
       })
       })
     },
     },
+    // 默认不点击获取表格数据
     getDefaultCardData(index){
     getDefaultCardData(index){
       let currentChild = this.$refs['childComponent'+index][0]
       let currentChild = this.$refs['childComponent'+index][0]
-
       this.$nextTick(() => {
       this.$nextTick(() => {
-        
-        let nextChild = this.$refs['childComponent' + (index+1)][0]
+        if(this.$refs['childComponent' + (index+1)]){
+          let nextChild = this.$refs['childComponent' + (index+1)][0]
+          nextChild.getDataHandler(currentChild.contion, currentChild.tableList[0])
+        }
 
 
-        nextChild.getDataHandler(currentChild.contion, currentChild.tableList[0])
       })
       })
     },
     },
+    // 不点击上一表格数据时修改调用函数
+    getEditHandle(index){
+      let beforeChild = this.$refs['childComponent'+(index - 1)][0]
+
+      let currentRef = this.$refs['childComponent'+index][0]
+
+      currentRef.getDataHandler(beforeChild.contion, beforeChild.tableList[0])
+    }
   },
   },
 };
 };
 </script>
 </script>