From 6e4293b29e6bd439ac36945ce8d0e012126103eb Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期一, 06 十一月 2023 17:23:13 +0800
Subject: [PATCH] 	new file:   node_modules.7z 	modified:   src/api/quality/rawMaterial.js 	modified:   src/api/quality/unqualifiedprocess.js 	modified:   src/views/common/rawMaterial-part.vue 	modified:   src/views/common/ztt-table.vue 	modified:   src/views/quality/processconfiguration/index.vue 	deleted:    src/views/quality/rawMaterial/ExportMaterial.vue 	modified:   src/views/quality/rawMaterial/index.vue 	modified:   src/views/quality/rawMaterial/rawMaterial-form.vue

---
 src/views/quality/rawMaterial/rawMaterial-form.vue |   88 ++++++--------
 src/api/quality/unqualifiedprocess.js              |    9 +
 /dev/null                                          |   93 ---------------
 node_modules.7z                                    |    0 
 src/views/quality/processconfiguration/index.vue   |   39 ++++++
 src/views/common/rawMaterial-part.vue              |    2 
 src/api/quality/rawMaterial.js                     |    9 +
 src/views/quality/rawMaterial/index.vue            |   87 +++++++-------
 src/views/common/ztt-table.vue                     |    1 
 9 files changed, 134 insertions(+), 194 deletions(-)

diff --git a/node_modules.7z b/node_modules.7z
new file mode 100644
index 0000000..621a7b5
--- /dev/null
+++ b/node_modules.7z
Binary files differ
diff --git a/src/api/quality/rawMaterial.js b/src/api/quality/rawMaterial.js
index a19ccb2..74c5001 100644
--- a/src/api/quality/rawMaterial.js
+++ b/src/api/quality/rawMaterial.js
@@ -77,3 +77,12 @@
   })
 }
 
+export function exportRawMaterial(data) {
+  return request({
+    url: '/mes/rawInspect/export',
+    method: 'get',
+    responseType: 'blob',
+    params: data
+  })
+}
+
diff --git a/src/api/quality/unqualifiedprocess.js b/src/api/quality/unqualifiedprocess.js
index 729751c..d40ab95 100644
--- a/src/api/quality/unqualifiedprocess.js
+++ b/src/api/quality/unqualifiedprocess.js
@@ -8,6 +8,15 @@
   })
 }
 
+export function exportData(query) {
+  return request({
+    url: '/mes/qualityInspectUnaccepted/export',
+    method: 'get',
+    responseType: 'blob',
+    params: query
+  })
+}
+
 export function pullInsUnapi(query) {
   return request({
     url: '/mes/qualityInspectUnaccepted/pullInsUn',
diff --git a/src/views/common/rawMaterial-part.vue b/src/views/common/rawMaterial-part.vue
index 9a29d28..16ba844 100644
--- a/src/views/common/rawMaterial-part.vue
+++ b/src/views/common/rawMaterial-part.vue
@@ -210,9 +210,7 @@
         this.$parent.costPlannedAmountChange(this.currentRow)
       },
       handleCurrentChange(row) {
-        console.log(row);
         this.currentRow = row
-        console.log(this.currentRow);
       },
       handleSelectionChange(val) {
         // 澶氳閫変腑
diff --git a/src/views/common/ztt-table.vue b/src/views/common/ztt-table.vue
index 5750421..6367bee 100644
--- a/src/views/common/ztt-table.vue
+++ b/src/views/common/ztt-table.vue
@@ -819,6 +819,7 @@
             this.isCleanInfo = true
           }
         }
+        this.$emit("queryParam",this.queryParam)
       },
       deep: true
     },
diff --git a/src/views/quality/processconfiguration/index.vue b/src/views/quality/processconfiguration/index.vue
index 2f21df8..b4aaf27 100644
--- a/src/views/quality/processconfiguration/index.vue
+++ b/src/views/quality/processconfiguration/index.vue
@@ -9,6 +9,7 @@
         :prelang="prelang"
         :options="options"
         :ajaxFun="ajaxFun"
+        @queryParam="getQueryParam($event)"
         ref="processconfiguration"
       >
         <template #toolbar></template>
@@ -63,7 +64,11 @@
 </template>
 
 <script>
-import { UnqualifiedList,pullInsUnapi,AuditSuggestion
+import { 
+  UnqualifiedList,
+  pullInsUnapi,
+  AuditSuggestion,
+  exportData
 } from '@/api/quality/unqualifiedprocess'
 import TableForm from './table-form'
 import { mapGetters } from 'vuex'
@@ -72,6 +77,7 @@
 export default {
   data() {
     return {
+      queryParam: {},
       checkList: "",
       // WayIdea:'',
       UserId:{},
@@ -283,7 +289,7 @@
           {
             text: '瀵煎嚭',
             type: 'primary',
-            // fun: this.addOrUpdateHandle
+            fun: this.handleExport
           },
         ],
         operator: [
@@ -330,12 +336,39 @@
     // this.getType()
   },
   methods: {
+    getQueryParam(data){
+      this.queryParam = data
+    },
+    handleExport(){
+      exportData(this.queryParam).then(res=>{
+          console.log(res)
+          this.downloadFun(res)
+      }).catch(error=>{
+          console.log(error);
+      })
+    },
+    downloadFun(result){
+        if(result == null || result == undefined){
+            return;
+        }
+        var nameList = result.headers['content-disposition'];
+        nameList = decodeURI(nameList);
+        var fileName = nameList.split('=')[1];
+        const blob = new Blob([result.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
+        const downloadElement = document.createElement('a') // 鏂板缓涓�涓狣OM鑺傜偣
+        const href = window.URL.createObjectURL(blob) // 鍒涘缓涓嬭浇鐨勯摼鎺�
+        downloadElement.href = href
+        downloadElement.download = fileName // 涓嬭浇鍚庢枃浠跺悕
+        document.body.appendChild(downloadElement) // 灏嗘柊澧炵殑鑺傜偣鎸傝浇鍒伴〉闈笂
+        downloadElement.click() // 鐐瑰嚮涓嬭浇
+        document.body.removeChild(downloadElement) // 涓嬭浇瀹屾垚绉婚櫎鍏冪礌
+        window.URL.revokeObjectURL(href)
+    },
     //瀹℃牳缁撴灉
     AuditResult(row){
       this.UserId = row.id
       this.type = row.type
       this.dialogVisible = true;
-
     },
     WaySure(){
       AuditSuggestion({id:this.UserId,way:this.checkList}).then(
diff --git a/src/views/quality/rawMaterial/ExportMaterial.vue b/src/views/quality/rawMaterial/ExportMaterial.vue
deleted file mode 100644
index 131802e..0000000
--- a/src/views/quality/rawMaterial/ExportMaterial.vue
+++ /dev/null
@@ -1,93 +0,0 @@
-<template>
-    <div style="width:400px">
-   <el-button type="primary" @click="handleExcel">涓嬭浇 excel</el-button>
-   <el-button type="success" @click="handleExcel1">涓嬭浇 澶氱骇琛ㄥごexcel</el-button>
-  </div>
-    
-  </template>
-  
-  <script>
-  export default {
-    name: 'HelloWorld',
-    data(){
-      return {}
-    },
-    methods: {
-       handleExcel() {
-        let opt = {
-          title: '鏂囨。鏍囬',
-          column: [{
-            label: '鏍囬',
-            prop: 'title'
-          }],
-          data: [{
-            title: "娴嬭瘯鏁版嵁1"
-          }, {
-            title: "娴嬭瘯鏁版嵁2"
-          }]
-        }
-        console.log(this.$Export);
-        this.$Export.excel({
-          title: opt.title ,
-          columns: opt.column,
-          data: opt.data
-        });
-      },
-      handleExcel1() {
-        let opt = {
-          title: '鏂囨。鏍囬',
-          column: [{
-            label:'澶氱骇琛ㄥご',
-            prop:'header',
-            children:[
-              {
-                label: '鏍囬1',
-                prop: 'title1'
-              },{
-                label: '鏍囬2',
-                prop: 'title2'
-              }
-            ]
-          }],
-          data: [{
-            title1: "娴嬭瘯鏁版嵁1",
-            title2: "娴嬭瘯鏁版嵁2"
-          }, {
-            title1: "娴嬭瘯鏁版嵁2",
-            title2: "娴嬭瘯鏁版嵁2"
-          }]
-        }
-        this.$Export.excel({
-          title: opt.title,
-          columns: opt.column,
-          data: opt.data
-        });
-      }
-    },
-  
-    props: {
-      msg: String
-      
-      
-    }
-  }
-  </script>
-  
-  <!-- Add "scoped" attribute to limit CSS to this component only -->
-  <style scoped>
-  h3 {
-    margin: 40px 0 0;
-  }
-  ul {
-    list-style-type: none;
-    padding: 0;
-  }
-  li {
-    display: inline-block;
-    margin: 0 10px;
-  }
-  a {
-    color: #42b983;
-  }
-  </style>
-  
\ No newline at end of file
diff --git a/src/views/quality/rawMaterial/index.vue b/src/views/quality/rawMaterial/index.vue
index 3e33e70..297bd4e 100644
--- a/src/views/quality/rawMaterial/index.vue
+++ b/src/views/quality/rawMaterial/index.vue
@@ -20,13 +20,15 @@
             <ttable 
             :table="table"
             :resultData="resultData"
-            @change ="costPlannedAmountChange"
             @handleSelectionChange="handleSelectionChange"
             :prelang="prelang"
             :options="options"
             :ajaxFun="ajaxFun"
+            @queryParam="getQueryParam($event)"
             ref="rawMaterialTable">
-            <template #toolbar></template>
+            <template #toolbar>
+                <el-button @click="exportRawMaterial" type="primary" >瀵煎嚭</el-button>
+            </template>
             </ttable>
         </basic-container>
         <!-- 寮圭獥, 鏂板 / 淇敼 -->
@@ -38,15 +40,15 @@
     </div>
 </template>
 <script>
-import ExportMaterial from './ExportMaterial.vue'
 import ttable from '@/views/common/ztt-table.vue'
-import { getRawInspectList,delObj } from '@/api/quality/rawMaterial'
+import { getRawInspectList,delObj,exportRawMaterial } from '@/api/quality/rawMaterial'
 import RawMaterialForm from './rawMaterial-form'
 import * as fecha from 'element-ui/lib/utils/date'
 import { mapGetters } from 'vuex'
   export default {
     data() {
         return {
+            queryParam: {},
             resultData:[],
             addOrUpdateVisible: false,
             type: [1],
@@ -64,14 +66,13 @@
                 isRefresh: true, // 鏄惁鏄剧ず鍒锋柊鎸夐挳
                 isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H
                 isSearch: true, // 楂樼骇鏌ヨ鎸夐挳
-                defaultOrderBy: { column: 'formTime', direction: 'desc' },
+                defaultOrderBy: { column: 'createTime', direction: 'desc' },
             },
             table: {
                 total: 0,
                 currentPage: 1,
                 pageSize: 20,
                 data: [],
-                isExport:true,
                 // 鏍囬
                 column: [
                     {
@@ -139,6 +140,7 @@
                         prop: 'createTime',
                         label: '鎶ユ鏃ユ湡',
                         isTrue: true,
+                        sort: true,
                         isSearch: true,
                         searchInfoType: 'text',
                         formatter: this.formatDateTime,
@@ -190,13 +192,7 @@
                     text: '鏂板',
                     type: 'primary',
                     fun: this.addOrUpdateHandle
-                },
-                {
-                    text: '瀵煎嚭',
-                    type: 'primary',
-                    fun: this.handleExcel
-                }
-                ],
+                }],
                 operator: [{
                     text: '浣滃簾',
                     type: 'text',
@@ -214,10 +210,17 @@
             StateList: [{label:'鍏ㄩ儴',value:''},{label:'宸插悎鏍�',value:'1'},{label:'涓嶅悎鏍�',value:'0'}],
         }
     },
+    // props:{
+    //     queryParam:{
+    //         type: Object,
+    //         default: ()=>{
+    //             return {}
+    //         }
+    //     }
+    // },
     components: {
         ttable,
         RawMaterialForm,
-        ExportMaterial,
     },
     created() {
 
@@ -226,38 +229,34 @@
         ...mapGetters(['permissions'])
     },
     methods:{
-        async costPlannedAmountChange(value){
-            this.resultData= value
+        getQueryParam(data){
+            this.queryParam = data
         },
-    
-      handleExcel() {
-        console.log(this.resultData);
-        console.log(this.table.column);
-        // let arr = this.table.column.map(el = el.isTrue == true)
-        // console.log(arr);
-        let arr = this.table.column.filter(item => item.isTrue == true).map(item => {
-                    return{
-                        prop:item.prop,
-                        label:item.label
-                }
+        exportRawMaterial(){
+            exportRawMaterial(this.queryParam).then(res=>{
+                console.log(res)
+                this.downloadFun(res)
+            }).catch(error=>{
+                console.log(error);
             })
-        let opt = {
-          title: '鏂囨。鏍囬',
-          column: [{
-            label:'',
-            prop:'header',
-            children:arr
-          }],
-          data: this.resultData
-        }
-        this.$Export.excel({
-          title: opt.title,
-          columns: opt.column,
-          data: opt.data
-        });
-        // console.log(this.table);
-
-      },
+        },
+        downloadFun(result){
+            if(result == null || result == undefined){
+                return;
+            }
+            var nameList = result.headers['content-disposition'];
+            nameList = decodeURI(nameList);
+            var fileName = nameList.split('=')[1];
+            const blob = new Blob([result.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
+            const downloadElement = document.createElement('a') // 鏂板缓涓�涓狣OM鑺傜偣
+            const href = window.URL.createObjectURL(blob) // 鍒涘缓涓嬭浇鐨勯摼鎺�
+            downloadElement.href = href
+            downloadElement.download = fileName // 涓嬭浇鍚庢枃浠跺悕
+            document.body.appendChild(downloadElement) // 灏嗘柊澧炵殑鑺傜偣鎸傝浇鍒伴〉闈笂
+            downloadElement.click() // 鐐瑰嚮涓嬭浇
+            document.body.removeChild(downloadElement) // 涓嬭浇瀹屾垚绉婚櫎鍏冪礌
+            window.URL.revokeObjectURL(href)
+        },
         // 鍒犻櫎
         deleteHandle(row) {
         this.$confirm('鏄惁纭鍒犻櫎璇ユ暟鎹細' + row.code , '鎻愮ず', {
diff --git a/src/views/quality/rawMaterial/rawMaterial-form.vue b/src/views/quality/rawMaterial/rawMaterial-form.vue
index b5923d0..0bd79dc 100644
--- a/src/views/quality/rawMaterial/rawMaterial-form.vue
+++ b/src/views/quality/rawMaterial/rawMaterial-form.vue
@@ -75,23 +75,24 @@
                   </el-form-item>
                 </el-col>
                 <el-col :span="6">
+                  <el-form-item  prop="projectName" label="椤圭洰鍚嶇О">
+                    <el-tooltip :disabled="dataForm.projectName==null" :content="dataForm.projectName">
+                      <el-input v-model="dataForm.projectName" disabled ></el-input>
+                    </el-tooltip>
+                  </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="6">
                   <el-form-item label="鎶ユ鏃ユ湡" prop="createTime" v-if="dataForm.id!=null">
                       <el-input v-model="dataForm.createTime" disabled />
                   </el-form-item>
-                </el-col>
-            </el-row>
-            <el-row>
+              </el-col>
               <el-col :span="6">
                 <el-form-item label="鎶ユ浜�" prop="createUser" v-if="dataForm.id!=null">
                       <el-input v-model="dataForm.createUser" disabled />
                 </el-form-item>
               </el-col>
-              <el-col :span="6">
-                <el-form-item prop="projectName" label="椤圭洰鍚嶇О">
-                <el-input v-model="dataForm.projectName" disabled >
-                </el-input>
-                </el-form-item>
-            </el-col>
             </el-row>
         </el-form>
       </div>
@@ -120,7 +121,7 @@
                       filterable allow-create placeholder="璇疯緭鍏ユ垨閫夋嫨椤圭洰鍚嶇О" style="width:100%" @change="changeName(scope.$index,scope.row)">
                         <el-option v-for="(item,index) in projectList" :key="index" :label="item.name" :value="item.name"/>
                     </el-select>  
-                      <el-input v-else :disabled="dataForm.id != null" class="inline-input" v-model="list.name"
+                      <el-input v-else :disabled="dataForm.id != null" class="inline-input" v-model="scope.row.name"
                         placeholder="璇疯緭鍏ラ」鐩悕绉�"></el-input>
                     </template>
                   </el-table-column>
@@ -140,18 +141,19 @@
                   <el-table-column prop="testValue" label="妫�娴嬪��" min-width="260" v-for="(item, index) in empiricalValueAdd"
                     :key="index">
                     <template slot-scope="scope">
-                      <el-tooltip :disabled="scope.row.equipmentId != null" class="item" effect="dark" content="璇峰厛閫夋嫨璁惧锛�"
+                      <el-tooltip :disabled="scope.row.deviceId != null" class="item" effect="dark" content="璇峰厛閫夋嫨璁惧锛�"
                         placement="top-start">
 
                         <!-- <el-input :disabled="scope.row.equipmentId == null ||  (dataForm.id!=null&&resultVal!=null)" v-model="scope.row.testValueList[index]"
                           @blur="updateTestValue(scope.row,index)" placeholder="璇疯緭鍏ユ娴嬪��"></el-input> -->
 
                         <el-autocomplete
-                          :disabled="scope.row.equipmentId == null ||  (dataForm.id!=null&&resultVal!=null)"
+                          style="width:100%"
+                          :disabled="scope.row.deviceId == null ||  (dataForm.id!=null&&resultVal!=null)"
                           class="inline-input"
                           v-model="scope.row.testValueList[index]"
                           :fetch-suggestions="querySearch"
-                          placeholder="璇疯緭鍏ュ唴瀹�"
+                          placeholder="璇疯緭鍏ユ娴嬪��"
                           @select="handleSelect"
                         ></el-autocomplete>
 
@@ -162,9 +164,9 @@
                   <el-table-column prop="deviceName" label="璇曢獙璁惧" min-width="260">
                     <template slot-scope="scope">
                         <el-select :disabled="resultVal!=null && dataForm.id!=null" style="width:100%" 
-                        v-model="scope.row.equipmentId" filterable @change="updateDevice(scope.row,scope.$index)">
+                        v-model="scope.row.deviceId" filterable @change="updateDevice(scope.row,scope.$index)">
                             <el-option v-for="(item,index) in deviceList" 
-                            :key="index" :value="item.id" :label="item.number +'-'+ item.name"></el-option>
+                            :key="index" :value="item.id" :label="item.code +'-'+ item.name"></el-option>
                         </el-select>
                     </template>
                   </el-table-column>
@@ -223,17 +225,12 @@
           <span>涓嶅悎鏍兼暟閲�:</span>
           <el-input type="number" v-model="unqualifiedNum" placeholder="璇疯緭鍏ヤ笉鍚堟牸鏁伴噺"/>
         </el-col>
-        <el-col>
-          <span>瀹炴鏁伴噺:</span>
-          <el-input type="number" placeholder="璇疯緭鍏ュ疄妫�鏁伴噺" v-model="fiedNum"/>
-        </el-col>
       </el-row>
       <span slot="footer" class="dialog-footer">
         <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
         <el-button type="primary" @click="submitSave()">纭� 瀹�</el-button>
       </span>
     </el-dialog>
-    <!-- <rawMaterialPartDialog :currentRow ="currentRow" @costPlannedAmountChange="costPlannedAmountChange"/> -->
   </div>
 </template>
 
@@ -246,7 +243,6 @@
   updateRawInspectsById,
   updateDeviceById, } from '@/api/quality/rawMaterial'
   import rawMaterialPartDialog from '@/views/common/rawMaterial-part'
-import { log } from 'util'
 export default {
     // props:['currentRow'],
     computed:{},
@@ -255,9 +251,8 @@
     },
     data(){
         return{
-          currentRow:[],
-          userlist:[],
-            fiedNum: null,
+            currentRow:[],
+            userlist:[],
             unqualifiedNum: null,
             dialogVisible:false,
             resultVal: null,
@@ -282,7 +277,7 @@
                 number: '',
                 supplier: '',
                 rawInsProducts: [{
-                  equipmentId: 0,
+                  deviceId: 0,
                   name: '',
                   required: '',
                   testValue: '',
@@ -320,30 +315,16 @@
       this.init()
       this.getDeviceList()
       this.restaurants = this.loadAll();
-      // this.costPlannedAmountChange()
     },
     watch:{
       dialogVisible(newVal){
         if(newVal){
           this.unqualifiedNum = null
-          this.fiedNum = null
         }
       },
       
     },
     methods:{
-      //椤圭洰
-      // xxxx(){
-      //   console.log(currentRow);
-      // },
-      // 浜嬩欢澶勭悊鍑芥暟
-        // costPlannedAmountChange(value) {
-        //   console.log("==>");
-        //   console.log(value.rawInsProducts);
-        //   this.userlist = value.rawInsProducts
-        //   this.list = this.userlist
-        //   console.log(this.list);
-        // },
       querySearch(queryString, cb) {
         var restaurants = this.restaurants;
         var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
@@ -373,7 +354,6 @@
       },
       // 纭鍥炶皟
       selectPart(param, nodePart, index) {
-        console.log("鎴愬姛--",param);
         if (typeof param !== 'undefined') {
           this.dataForm.code = param.code
           this.dataForm.name = param.name
@@ -385,21 +365,20 @@
           this.dataForm.message = param.message
           this.dataForm.projectName = param.projectName
           this.projectList = param.rawInsProducts == null ? [] : param.rawInsProducts
-          // param.rawInsProducts.forEach(item=>{
-          //   this.list.push(item)
-          // })
+          param.rawInsProducts.forEach(o=>{
+            this.clickAddLine(o)
+          })
         }
       },
       queryCode(){
         this.paramObj = {
           code: this.dataForm.code
         }
-        console.log(this.paramObj);
         this.showPart = true
       },
       updateDevice(row,index){
         if(this.dataForm.id != null){
-          updateDeviceById({equiomentId:row.equipmentId,rpId:row.rpId}).then(res=>{
+          updateDeviceById({deviceId:row.deviceId,rpId:row.rpId}).then(res=>{
             this.list[index].testValue = ''
             this.list[index].testState = null
             this.list[index].testValueList = []
@@ -436,24 +415,24 @@
         let data = {
           id: this.dataForm.id,
           number: this.unqualifiedNum,
-          toLocationNo: this.fiedNum
+          // toLocationNo: this.fiedNum
         }
         updateRawInspectsById(data).then(res => {
           if(res.data.code == 0){
             sessionStorage.setItem("raw-resultVal-"+this.dataForm.id,res.data.data)
             this.$message.success("涓婃姤鎴愬姛");
             this.dialogVisible = false
+            this.checkTestState()
           }
         });
-        this.checkTestState()
       },
       addTeatValueColumn(){
         this.empiricalValueAdd = this.empiricalValueAdd + 1;
       },
       // 娣诲姞琛�
-      clickAddLine() {
+      clickAddLine(row) {
         let obj = {
-          equipmentId: null,
+          deviceId: null,
           name: "",
           required: "",
           testValue: "",
@@ -461,6 +440,11 @@
           testState: null,
           testValueList: [],
         };
+        if(row!=undefined){
+          obj.name = row.name
+          obj.unit = row.unit
+          obj.required = row.required
+        }
         this.list.push(obj);
       },
       // 鍒犻櫎琛�
@@ -482,7 +466,7 @@
           return
         }
         let obj = {
-          equiomentId: row.equipmentId,
+          deviceId: row.deviceId,
           rpId: row.rpId,
           testValue: row.testValueList.join(",")
         }
@@ -508,9 +492,9 @@
             this.dataForm.unit = data.runit
             this.dataForm.supplier = data.supplier
             this.dataForm.number = data.number
+            this.dataForm.projectName = data.projectName
             this.dataForm.createTime = data.creatTime
             this.dataForm.createUser = data.createUser
-            // this.dataForm.judgeState = data.judgeState
             let userNameList = []
             this.list = []
             data.children.forEach(item=>{
@@ -523,7 +507,7 @@
                 }
               }
               this.list.push({
-                equipmentId: item.equiomentId,
+                deviceId: item.deviceId,
                 deviceName: item.deviceName,
                 name: item.rpName,
                 required: item.required,

--
Gitblit v1.9.3