From 4e2bb29096ac63837f8d2c5e25766ee094f45d6c Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期三, 27 十二月 2023 14:35:49 +0800
Subject: [PATCH] modified: src/page/index/top/index.vue modified: src/views/common/part.vue modified: src/views/equipment/equipment/index.vue modified: src/views/equipment/metering/index.vue modified: src/views/plan/manufacturingorder/auto-operationtask.vue modified: src/views/plan/operationtask/operationtask-form.vue modified: src/views/quality/Packaging_ledger/index.vue modified: src/views/quality/packageinspect/index.vue modified: src/views/quality/processconfiguration/index.vue modified: src/views/quality/teststandard/index.vue modified: vue.config.js
---
src/views/quality/packageinspect/index.vue | 23 +
src/views/equipment/equipment/index.vue | 79 +++++---
src/views/quality/processconfiguration/index.vue | 39 ++--
vue.config.js | 4
src/views/plan/manufacturingorder/auto-operationtask.vue | 33 ++-
src/views/quality/teststandard/index.vue | 144 ++++++++-------
src/page/index/top/index.vue | 3
src/views/equipment/metering/index.vue | 62 ++++--
src/views/quality/Packaging_ledger/index.vue | 73 +++++---
src/views/common/part.vue | 2
src/views/plan/operationtask/operationtask-form.vue | 20 +
11 files changed, 277 insertions(+), 205 deletions(-)
diff --git a/src/page/index/top/index.vue b/src/page/index/top/index.vue
index 81d23d2..fadf7a5 100644
--- a/src/page/index/top/index.vue
+++ b/src/page/index/top/index.vue
@@ -25,7 +25,7 @@
</div>
</el-tooltip> -->
<el-tooltip
- v-if="showLock"
+ v-if="showLock && permissions.product_work_bench"
effect="dark"
content="宸ヤ綔鍙�"
placement="bottom">
@@ -139,6 +139,7 @@
showColor: state => state.common.showColor
}),
...mapGetters([
+ 'permissions',
'userInfo',
'isFullScreen',
'tagWel',
diff --git a/src/views/common/part.vue b/src/views/common/part.vue
index dd03a4d..f860d17 100644
--- a/src/views/common/part.vue
+++ b/src/views/common/part.vue
@@ -1,7 +1,7 @@
<template>
<el-dialog
v-diadrag
- width="70%"
+ width="75%"
title="闆朵欢"
top="5vh"
:visible.sync="innerVisible"
diff --git a/src/views/equipment/equipment/index.vue b/src/views/equipment/equipment/index.vue
index 083640d..462fdcc 100644
--- a/src/views/equipment/equipment/index.vue
+++ b/src/views/equipment/equipment/index.vue
@@ -225,40 +225,8 @@
searchInfoType: 'text'
}
],
- toolbar: [
- {
- text: '鏂板',
- type: 'primary',
- fun: this.addOrUpdateHandle
- },
- {
- text: '鏍囩鎵撳嵃',
- type: 'primary',
- fun: this.labelPrint
- },
- {
- text: '鍚屾',
- type: 'primary',
- loading: false,
- fun: this.pullEquipFun
- }
- ],
- operator: [
- {
- text: '淇敼',
- icon: 'el-icon-edit',
- type: 'text',
- size: 'small',
- fun: this.addOrUpdateHandle
- },
- {
- text: '鍒犻櫎',
- icon: 'el-icon-delete',
- type: 'text',
- size: 'small',
- fun: this.deleteHandle
- }
- ],
+ toolbar: [],
+ operator: null,
operatorConfig: {
fixed: 'right',
label: '鎿嶄綔',
@@ -279,6 +247,49 @@
...mapGetters(['permissions'])
},
created() {
+ this.uploadInfo.isShow = this.permissions.equipment_equipment_upload
+ if(this.permissions.equipment_equipment_add){
+ this.table.toolbar.push({
+ text: '鏂板',
+ type: 'primary',
+ fun: this.addOrUpdateHandle
+ })
+ }
+ if(this.permissions.equipment_equipment_labelprint){
+ this.table.toolbar.push({
+ text: '鏍囩鎵撳嵃',
+ type: 'primary',
+ fun: this.labelPrint
+ })
+ }
+ if(this.permissions.equipment_equipment_sync){
+ this.table.toolbar.push({
+ text: '鍚屾',
+ type: 'primary',
+ loading: false,
+ fun: this.pullEquipFun
+ })
+ }
+ let arr = []
+ if(this.permissions.equipment_equipment_edit){
+ arr.push({
+ text: '淇敼',
+ icon: 'el-icon-edit',
+ type: 'text',
+ size: 'small',
+ fun: this.addOrUpdateHandle
+ })
+ }
+ if(this.permissions.equipment_equipment_del){
+ arr.push({
+ text: '鍒犻櫎',
+ icon: 'el-icon-delete',
+ type: 'text',
+ size: 'small',
+ fun: this.deleteHandle
+ })
+ }
+ this.table.operator = arr.length>0 ? arr : null
remote('work_shop').then((response) => {
if (response.data.code === 0) {
this.workshopList = response.data.data
diff --git a/src/views/equipment/metering/index.vue b/src/views/equipment/metering/index.vue
index 1fdc251..7660b19 100644
--- a/src/views/equipment/metering/index.vue
+++ b/src/views/equipment/metering/index.vue
@@ -261,16 +261,6 @@
},
],
toolbar: [
- {
- text: '鏂板',
- type: 'primary',
- fun: this.addOrUpdateHandle
- },
- {
- text: '鏍囩鎵撳嵃',
- type: 'primary',
- fun: this.labelPrint
- },
// {
// text: '鍚屾',
// type: 'primary',
@@ -278,22 +268,7 @@
// fun: this.pullEquipFun
// }
],
- operator: [
- {
- text: '淇敼',
- icon: 'el-icon-edit',
- type: 'text',
- size: 'small',
- fun: this.addOrUpdateHandle
- },
- {
- text: '鍒犻櫎',
- icon: 'el-icon-delete',
- type: 'text',
- size: 'small',
- fun: this.deleteHandle
- }
- ],
+ operator: null,
operatorConfig: {
fixed: 'right',
label: '鎿嶄綔',
@@ -315,6 +290,41 @@
...mapGetters(['permissions'])
},
created() {
+ this.uploadInfo.isShow = this.permissions.equipment_metering_upload
+ if(this.permissions.equipment_metering_add){
+ this.table.toolbar.push({
+ text: '鏂板',
+ type: 'primary',
+ fun: this.addOrUpdateHandle
+ })
+ }
+ if(this.permissions.equipment_metering_labelprint){
+ this.table.toolbar.push({
+ text: '鏍囩鎵撳嵃',
+ type: 'primary',
+ fun: this.labelPrint
+ })
+ }
+ let arr = []
+ if(this.permissions.equipment_metering_edit){
+ arr.push({
+ text: '淇敼',
+ icon: 'el-icon-edit',
+ type: 'text',
+ size: 'small',
+ fun: this.addOrUpdateHandle
+ })
+ }
+ if(this.permissions.equipment_metering_del){
+ arr.push({
+ text: '鍒犻櫎',
+ icon: 'el-icon-delete',
+ type: 'text',
+ size: 'small',
+ fun: this.deleteHandle
+ })
+ }
+ this.table.operator = arr.length>0 ? arr : null
remote('work_shop').then((response) => {
if (response.data.code === 0) {
this.workshopList = response.data.data
diff --git a/src/views/plan/manufacturingorder/auto-operationtask.vue b/src/views/plan/manufacturingorder/auto-operationtask.vue
index 79dfcbd..ad4cf17 100644
--- a/src/views/plan/manufacturingorder/auto-operationtask.vue
+++ b/src/views/plan/manufacturingorder/auto-operationtask.vue
@@ -25,7 +25,7 @@
prop="operationName"
label="宸ュ簭"
align="center"
- width="80px"
+ min-width="80px"
show-overflow-tooltip
>
</el-table-column>
@@ -33,8 +33,7 @@
prop="workCenter"
label="宸ヤ綔涓績"
align="center"
- width="200px"
- show-overflow-tooltip
+ min-width="220px"
>
<template slot-scope="scope">
<el-select
@@ -54,11 +53,12 @@
</el-select>
</template>
</el-table-column>
- <el-table-column prop="workstationId" label="宸ヤ綔绔�" align="center">
+ <el-table-column prop="workstationId" min-width="150" label="宸ヤ綔绔�" align="center">
<template slot-scope="scope">
<el-select
v-model="scope.row.workstationId"
filterable
+ :visible-change="initWorkStation"
placeholder="璇烽�夋嫨宸ヤ綔绔�"
style="width:100%"
clearable
@@ -97,6 +97,7 @@
prop="partNo"
label="闆朵欢鍙�"
align="center"
+ min-width="150"
show-overflow-tooltip
>
</el-table-column>
@@ -104,10 +105,11 @@
prop="partName"
label="闆朵欢鍚嶇О"
align="center"
+ min-width="150"
show-overflow-tooltip
>
</el-table-column>
- <el-table-column prop="plannedQuantity" label="璁″垝鏁伴噺" align="center">
+ <el-table-column prop="plannedQuantity" min-width="100" label="璁″垝鏁伴噺" align="center">
<template slot-scope="scope">
<el-input
v-model="scope.row.plannedQuantity"
@@ -134,7 +136,7 @@
<el-input v-model="scope.row.discNum"></el-input>
</template>
</el-table-column> -->
- <el-table-column prop="remark" label="澶囨敞" align="center">
+ <el-table-column prop="remark" min-width="150" label="澶囨敞" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.remark"></el-input>
</template>
@@ -143,7 +145,7 @@
prop="plannedStartDate"
label="璁″垝寮�濮嬫椂闂�"
align="center"
- width="200px"
+ min-width="200px"
>
<template slot-scope="scope">
<el-date-picker
@@ -160,7 +162,7 @@
prop="plannedFinishDate"
label="璁″垝瀹屾垚鏃堕棿"
align="center"
- width="200px"
+ min-width="200px"
>
<template slot-scope="scope">
<el-date-picker
@@ -177,7 +179,7 @@
prop="manufactureAttr"
label="鍒堕�犲睘鎬�"
align="center"
- width="100px"
+ min-width="150px"
show-overflow-tooltip
>
<template slot-scope="scope">
@@ -197,7 +199,7 @@
</el-select>
</template>
</el-table-column>
- <el-table-column label="鎿嶄綔" width="100" align="center">
+ <el-table-column label="鎿嶄綔" fixed="right" width="100" align="center">
<template slot-scope="scope">
<el-button @click="copyTask(scope.row)" type="text" size="small"
>澶嶅埗</el-button
@@ -274,6 +276,15 @@
this.getManufactureAttrs('manufacture_attr_type')
},
methods: {
+ initWorkStation(opName,arr){
+ let workId = null
+ arr.forEach(ele=>{
+ if(ele.name.indexOf(opName)>-1){
+ workId = ele.id
+ }
+ })
+ return workId
+ },
getManufactureAttrs(type) {
remote(type).then((response) => {
const code = response.data.code
@@ -544,7 +555,7 @@
this.operationData.push({
operationName: item.operationName,
workCenter: item.workCenter,
- workstationId: item.workstationId,
+ workstationId: item.workstationId ? item.workstationId : this.initWorkStation(item.operationName,item.workstations),
locationId: item.locationId,
partNo: item.partNo,
partName: item.partName,
diff --git a/src/views/plan/operationtask/operationtask-form.vue b/src/views/plan/operationtask/operationtask-form.vue
index 35c8694..e57cdc9 100644
--- a/src/views/plan/operationtask/operationtask-form.vue
+++ b/src/views/plan/operationtask/operationtask-form.vue
@@ -671,7 +671,7 @@
}
})
},
- changeWorkCenter() {
+ changeWorkCenter(opName) {
this.workstations = []
this.dataForm.workstationId = null
this.locationOptions = []
@@ -681,17 +681,26 @@
this.$refs.ganttIndex.init(this.workCenter)
})
- this.changeWorkCenterAction()
+ this.changeWorkCenterAction(opName)
},
- changeWorkCenterAction() {
+ changeWorkCenterAction(opName) {
if (this.dataForm.workCenter) {
const queryParamStation = Object.assign({
workCenter: this.dataForm.workCenter
})
-
+
getAllWorkstationList(queryParamStation).then((response) => {
const resData = response.data.data
if (resData && resData.length > 0) {
+ let obj = null
+ resData.forEach((ele)=>{
+ if(ele.name.indexOf(opName)>-1){
+ obj = ele
+ }
+ })
+ if(obj){
+ this.dataForm.workstationId = obj.id
+ }
this.workstations = resData
}
})
@@ -945,11 +954,10 @@
this.dataForm.operationName = routingOperation.operationName
this.dataForm.workCenter = routingOperation.workCenter
- this.changeWorkCenter()
+ this.changeWorkCenter(routingOperation.operationName)
this.dataForm.routingOperationId =
routingOperation.technologyRoutingOperationId
},
-
// 鏍规嵁宸ヤ綔绔欏垏鎹㈠簱浣�
selectLocationByWorkstation() {
this.locationOptions = []
diff --git a/src/views/quality/Packaging_ledger/index.vue b/src/views/quality/Packaging_ledger/index.vue
index c465c2d..718fb62 100644
--- a/src/views/quality/Packaging_ledger/index.vue
+++ b/src/views/quality/Packaging_ledger/index.vue
@@ -33,6 +33,7 @@
</el-col>
<el-col :span="2">
<el-button
+ v-if="permissions.quality_packaging_ledger_info_save"
style="float: right; padding: 3px 0"
type="text"
@click="addpreserve"
@@ -41,7 +42,7 @@
</el-col>
<el-col :span="2">
<el-button
- v-if="!isCheck"
+ v-if="!isCheck && permissions.quality_packaging_ledger_info_add"
style="float: right; padding: 3px 0"
type="text"
@click="relateOperationParam()"
@@ -110,6 +111,7 @@
width="80"
></el-table-column>
<el-table-column
+ v-if="permissions.quality_packaging_ledger_info_operate"
fixed="right"
label="鎿嶄綔"
align="center"
@@ -171,6 +173,7 @@
import packfromadd from './pack-fromadd.vue'
import vueQr from 'vue-qr'
import PrintJS from 'print-js'
+import { mapGetters } from 'vuex'
export default {
data(){
return {
@@ -270,33 +273,8 @@
searchInfoType: 'datetimerange',
},
],
- toolbar: [
- {
- text: '鏂板',
- type: 'primary',
- fun: this.addOrUpdateHandle
- },
- {
- text: '鏍囩鎵撳嵃',
- type: 'primary',
- fun: this.printLabel
- },
- ],
- operator: [
- {
- text: '妫�楠�',
- icon: 'el-icon-position',
- type: 'text',
- size: 'small',
- fun: this.check
- },{
- text: '鍒犻櫎',
- icon: 'el-icon-delete',
- type: 'text',
- size: 'small',
- fun: this.deleteHandle
- }
- ],
+ toolbar: [],
+ operator: null,
operatorConfig: {
fixed: 'right',
label: '鎿嶄綔',
@@ -312,6 +290,45 @@
packfromadd,
vueQr
},
+ created(){
+ if(this.permissions.quality_packaging_ledger_add){
+ this.table.toolbar.push({
+ text: '鏂板',
+ type: 'primary',
+ fun: this.addOrUpdateHandle
+ })
+ }
+ if(this.permissions.quality_packaging_ledger_labelprint){
+ this.table.toolbar.push({
+ text: '鏍囩鎵撳嵃',
+ type: 'primary',
+ fun: this.printLabel
+ })
+ }
+ let arr = []
+ if(this.permissions.quality_packaging_ledger_inspect){
+ arr.push({
+ text: '妫�楠�',
+ icon: 'el-icon-position',
+ type: 'text',
+ size: 'small',
+ fun: this.check
+ })
+ }
+ if(this.permissions.quality_packaging_ledger_del){
+ arr.push({
+ text: '鍒犻櫎',
+ icon: 'el-icon-delete',
+ type: 'text',
+ size: 'small',
+ fun: this.deleteHandle
+ })
+ }
+ this.table.operator = arr.length>0 ? arr : null
+ },
+ computed:{
+ ...mapGetters(['permissions'])
+ },
watch: {
diaPrintTab(newVal){
if(!newVal){
diff --git a/src/views/quality/packageinspect/index.vue b/src/views/quality/packageinspect/index.vue
index 3cc33c5..e8a924d 100644
--- a/src/views/quality/packageinspect/index.vue
+++ b/src/views/quality/packageinspect/index.vue
@@ -142,13 +142,7 @@
},
],
toolbar: [],
- operator: [
- {
- text: '浣滃簾',
- type: 'text',
- size: 'small',
- fun: this.deleteHandle
- }],
+ operator: null,
operatorConfig: {
fixed: 'right',
label: '鎿嶄綔',
@@ -161,7 +155,16 @@
components: {
ttable,
},
- created() { },
+ created() {
+ if(this.permissions.quality_packageinspect_del){
+ this.table.operator = [{
+ text: '浣滃簾',
+ type: 'text',
+ size: 'small',
+ fun: this.deleteHandle
+ }]
+ }
+ },
computed: {
...mapGetters(['permissions'])
},
@@ -193,6 +196,10 @@
},
// 鏂板 / 淇敼
addOrUpdateHandle(row) {
+ if(!this.permissions.quality_packageinspect_edit && row.id!=null){
+ this.$message.error("璇ヨ鑹叉病鏈夋搷浣滄潈闄�")
+ return
+ }
this.$router.push({
name: 'packageInspectForm',
query: {
diff --git a/src/views/quality/processconfiguration/index.vue b/src/views/quality/processconfiguration/index.vue
index 2802435..b364506 100644
--- a/src/views/quality/processconfiguration/index.vue
+++ b/src/views/quality/processconfiguration/index.vue
@@ -272,26 +272,7 @@
// fun: this.handleExport
// },
],
- operator: [
- // {
- // text: '鍒犻櫎',
- // type: 'text',
- // size: 'small',
- // fun: this.deleteHandle
- // },
- {
- text: '鎻愪氦瀹℃牳',
- type: 'text',
- size: 'small',
- fun: this.Submitreview
- },
- {
- text: '瀹℃牳缁撴灉',
- type: 'text',
- size: 'small',
- fun: this.AuditResult
- }
- ],
+ operator: null,
operatorConfig: {
fixed: 'right',
label: '鎿嶄綔',
@@ -314,6 +295,24 @@
},
created() {
// this.getType()
+ let arr = []
+ if(this.permissions.quality_processconfiguration_submit){
+ arr.push({
+ text: '鎻愪氦瀹℃牳',
+ type: 'text',
+ size: 'small',
+ fun: this.Submitreview
+ })
+ }
+ if(this.permissions.quality_processconfiguration_result){
+ arr.push({
+ text: '瀹℃牳缁撴灉',
+ type: 'text',
+ size: 'small',
+ fun: this.AuditResult
+ })
+ }
+ this.table.operator = arr.length>0 ? arr : null
},
methods: {
getQueryParam(data){
diff --git a/src/views/quality/teststandard/index.vue b/src/views/quality/teststandard/index.vue
index 4be8c9b..27c09ec 100644
--- a/src/views/quality/teststandard/index.vue
+++ b/src/views/quality/teststandard/index.vue
@@ -26,6 +26,7 @@
</el-col>
<el-col :span="8" :offset="4">
<el-button
+ v-if="permissions.quality_teststandard_layout"
style="float: right; padding: 3px 0"
type="text"
@click="beginItemLayOut"
@@ -39,7 +40,7 @@
type="text"
:disabled="isSubmit"
v-thinclick="`dataFormTestStandardParam`"
- v-if="editable"
+ v-if="editable && permissions.quality_teststandard_save"
>淇濆瓨
</el-button>
</el-col>
@@ -48,7 +49,7 @@
style="float: right; padding: 3px 0"
type="text"
@click="relateOperationParam()"
- v-if="editable"
+ v-if="editable && permissions.quality_teststandard_insert"
>娣诲姞
</el-button>
</el-col>
@@ -232,7 +233,7 @@
</el-table-column> -->
<el-table-column label="鍗曚綅" prop="unit" align="center" />
<!--<el-table-column label="鍙傛暟绫诲瀷" prop="type" align="center" :formatter="getParam"/>-->
- <el-table-column label="鎿嶄綔" align="center">
+ <el-table-column label="鎿嶄綔" align="center" v-if="permissions.quality_teststandard_table_operate">
<template slot-scope="scope">
<el-button
type="text"
@@ -308,6 +309,7 @@
import { copyTestStandard } from '../../../api/quality/teststandard'
import EditParamForm from './edit-param-form'
import itemLayout from './item-layout'
+import { mapGetters } from 'vuex'
export default {
data() {
return {
@@ -424,71 +426,8 @@
searchInfoType: 'text'
}
],
- toolbar: [
- {
- text: '鏂板',
- type: 'primary',
- fun: this.addOrUpdateHandle
- },
- {
- text: '澶嶅埗',
- type: 'primary',
- fun: this.copy
- },
- {
- text: '鎵瑰噯',
- fun: () => {
- this.changeState('accept')
- },
- disabled: false,
- permitArr: []
- },
- {
- text: '鎷掔粷',
- fun: () => {
- this.changeState('reject')
- },
- disabled: false,
- permitArr: []
- },
- {
- text: '鎾ら攢',
- fun: () => {
- this.changeState('cancel')
- },
- disabled: false,
- permitArr: []
- },
- {
- text: '澶辨晥',
- fun: () => {
- this.changeState('disabled')
- },
- disabled: false,
- permitArr: []
- },
- {
- text: '鍒犻櫎',
- fun: () => {
- this.deleteAll()
- },
- disabled: false,
- permitArr: []
- }
- ],
- operator: [
- {
- text: '鍒犻櫎',
- icon: 'el-icon-delete',
- type: 'text',
- size: 'small',
- fun: this.deleteHandle
- // show: {
- // val: ['01draft'],
- // key: 'state'
- // }
- }
- ],
+ toolbar: [],
+ operator: null,
operatorConfig: {
fixed: 'right',
label: '鎿嶄綔',
@@ -557,6 +496,7 @@
itemLayout
},
computed: {
+ ...mapGetters(['permissions']),
editable: function() {
if (!this.currentTestStandard) {
return true
@@ -575,6 +515,74 @@
this.rowDrop()
},
created() {
+ if(this.permissions.quality_teststandard_add){
+ this.table.toolbar.push({
+ text: '鏂板',
+ disabled: false,
+ type: 'primary',
+ fun: ()=>{this.addOrUpdateHandle()},
+ permitArr: []
+ })
+ }
+ if(this.permissions.quality_teststandard_copy){
+ this.table.toolbar.push({
+ text: '澶嶅埗',
+ type: 'primary',
+ disabled: false,
+ fun: ()=>{this.copy()},
+ permitArr: []
+ })
+ }
+ if(this.permissions.quality_teststandard_accept){
+ this.table.toolbar.push({
+ text: '鎵瑰噯',
+ disabled: false,
+ fun: ()=>{this.changeState('accept')},
+ permitArr: [],
+ })
+ }
+ if(this.permissions.quality_teststandard_revoke){
+ this.table.toolbar.push({
+ text: '鎷掔粷',
+ disabled: false,
+ fun: ()=>{this.changeState('reject')},
+ permitArr: [],
+ })
+ }
+ if(this.permissions.quality_teststandard_cancel){
+ this.table.toolbar.push({
+ text: '鎾ら攢',
+ disabled: false,
+ fun: () => {this.changeState('cancel')},
+ permitArr: [],
+ })
+ }
+ if(this.permissions.quality_teststandard_lose){
+ this.table.toolbar.push({
+ text: '澶辨晥',
+ disabled: false,
+ fun: () => {this.changeState('disabled')},
+ permitArr: [],
+ })
+ }
+ if(this.permissions.quality_teststandard_del){
+ this.table.toolbar.push({
+ text: '鎵归噺鍒犻櫎',
+ type:'primary',
+ disabled: false,
+ permitArr: [],
+ fun: ()=>{this.deleteAll()},
+ })
+ }
+ if(this.permissions.quality_teststandard_del){
+ this.table.operator = [{
+ text: '鍒犻櫎',
+ icon: 'el-icon-delete',
+ type: 'text',
+ size: 'small',
+ fun: this.deleteHandle
+ }]
+ }
this.initDirParamType()
this.initDirInspectionType()
},
diff --git a/vue.config.js b/vue.config.js
index e5ad73d..6e02942 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -5,9 +5,9 @@
// const url = 'http://192.168.32.45:9999'
-const url = 'http://192.168.2.7:9999'
+// const url = 'http://192.168.2.7:9999'
-// const url = 'http://localhost:9999'
+const url = 'http://localhost:9999'
const localUrl = 'http://localhost:8089'
--
Gitblit v1.9.3