Browse Source

版本管理

preview
jiangyy 5 years ago
parent
commit
53a80aaf24
  1. 4
      epmet-oper-web/.env.development
  2. 110
      epmet-oper-web/src/js/columns/code/commitCode.js
  3. 32
      epmet-oper-web/src/js/columns/customer/miniProManage.js
  4. 8
      epmet-oper-web/src/views/components/CForm.vue
  5. 0
      epmet-oper-web/src/views/modules/code/BasicInfo.vue
  6. 205
      epmet-oper-web/src/views/modules/code/Category.vue
  7. 100
      epmet-oper-web/src/views/modules/code/CommitForm.vue
  8. 15
      epmet-oper-web/src/views/modules/code/LowVersion.vue
  9. 6
      epmet-oper-web/src/views/modules/code/OperHistory.vue
  10. 5
      epmet-oper-web/src/views/modules/code/SubmitFailReason.vue
  11. 141
      epmet-oper-web/src/views/modules/code/SubmitForm.vue
  12. 255
      epmet-oper-web/src/views/modules/code/SubmitFormReject.vue
  13. 6
      epmet-oper-web/src/views/modules/code/SubmitItem.vue
  14. 276
      epmet-oper-web/src/views/modules/code/VersionItem.vue
  15. 70
      epmet-oper-web/src/views/modules/code/VersionManage.vue
  16. 346
      epmet-oper-web/src/views/modules/customer-manage/MiniProManage/Category.vue
  17. 12
      epmet-oper-web/src/views/modules/customer-manage/MiniProManage/MiniProManage.vue
  18. 25
      epmet-oper-web/vue.config.js

4
epmet-oper-web/.env.development

@ -1,5 +1,5 @@
NODE_ENV=development NODE_ENV=development
VUE_APP_API_SERVER = http://192.168.1.130:8080/api # VUE_APP_API_SERVER = http://192.168.1.130:8080/api
# VUE_APP_API_SERVER = http://10.10.10.98:8080/api VUE_APP_API_SERVER = http://10.10.10.207:8080/api
# VUE_APP_API_SERVER = https://epmet-dev.elinkservice.cn/api # VUE_APP_API_SERVER = https://epmet-dev.elinkservice.cn/api
VUE_APP_NODE_ENV=dev VUE_APP_NODE_ENV=dev

110
epmet-oper-web/src/js/columns/code/commitCode.js

@ -4,11 +4,13 @@ export default {
key: 'customerName', key: 'customerName',
title: '客户名称', title: '客户名称',
type: 'select', type: 'select',
rule: [{ rule: [
{
required: true, required: true,
message: '请选择客户', message: '请选择客户',
trigger: 'blur' trigger: 'blur'
}], }
],
display: ['formA', 'formU', 'table', 'model'], display: ['formA', 'formU', 'table', 'model'],
fixed: false, fixed: false,
block: false, block: false,
@ -18,16 +20,18 @@ export default {
key: 'clientType', key: 'clientType',
title: '类型', title: '类型',
type: 'radio', type: 'radio',
rule: [{ rule: [
{
required: true, required: true,
message: '请选择类型', message: '请选择类型',
trigger: 'blur' trigger: 'blur'
}], }
],
display: ['formA', 'formU', 'table', 'model'], display: ['formA', 'formU', 'table', 'model'],
fixed: false, fixed: false,
block: false, block: false,
width: 80, width: 80,
format: function (cellValue, index) { format: (cellValue, index) => {
if (cellValue === 'resi') { if (cellValue === 'resi') {
return '居民端' return '居民端'
} else if (cellValue === 'work') { } else if (cellValue === 'work') {
@ -41,11 +45,13 @@ export default {
key: 'appId', key: 'appId',
title: 'appId', title: 'appId',
type: 'radio', type: 'radio',
rule: [{ rule: [
{
required: true, required: true,
message: '请输入appId', message: '请输入appId',
trigger: 'blur' trigger: 'blur'
}], }
],
display: ['formA', 'formU', 'table', 'model'], display: ['formA', 'formU', 'table', 'model'],
fixed: false, fixed: false,
block: true, block: true,
@ -55,11 +61,13 @@ export default {
key: 'version', key: 'version',
title: '版本号', title: '版本号',
type: 'input', type: 'input',
rule: [{ rule: [
{
required: true, required: true,
message: '请输入版本号', message: '请输入版本号',
trigger: 'blur' trigger: 'blur'
}], }
],
display: ['formA', 'formU', 'table', 'model'], display: ['formA', 'formU', 'table', 'model'],
fixed: false, fixed: false,
block: true, block: true,
@ -69,11 +77,13 @@ export default {
key: 'codeInfo', key: 'codeInfo',
title: '代码描述', title: '代码描述',
type: 'textarea', type: 'textarea',
rule: [{ rule: [
{
required: true, required: true,
message: '请输入代码描述', message: '请输入代码描述',
trigger: 'blur' trigger: 'blur'
}], }
],
display: ['formA', 'formU', 'table', 'model'], display: ['formA', 'formU', 'table', 'model'],
block: true block: true
}, },
@ -81,15 +91,17 @@ export default {
key: 'status', key: 'status',
title: '状态', title: '状态',
type: 'input', type: 'input',
rule: [{ rule: [
{
required: true, required: true,
message: '请输入代码描述', message: '请输入代码描述',
trigger: 'blur' trigger: 'blur'
}], }
],
display: ['formA', 'formU', 'table', 'model'], display: ['formA', 'formU', 'table', 'model'],
block: true, block: true,
width: 80, width: 80,
format: function (cellValue, index) { format: (cellValue, index) => {
// 状态 未审核:unaudited;审核中:auditing;审核成功:audit_success;审核被拒绝:audit_failed;已撤回:withdrawn;审核延后:delay; // 状态 未审核:unaudited;审核中:auditing;审核成功:audit_success;审核被拒绝:audit_failed;已撤回:withdrawn;审核延后:delay;
// 发布成功:release_success;发布失败:release_failed // 发布成功:release_success;发布失败:release_failed
if (cellValue === 'unaudited') { if (cellValue === 'unaudited') {
@ -117,11 +129,13 @@ export default {
key: 'uploadTime', key: 'uploadTime',
title: '上传时间', title: '上传时间',
type: 'input', type: 'input',
rule: [{ rule: [
{
required: true, required: true,
message: '请输入代码描述', message: '请输入代码描述',
trigger: 'blur' trigger: 'blur'
}], }
],
display: ['formA', 'formU', 'table', 'model'], display: ['formA', 'formU', 'table', 'model'],
block: true block: true
}, },
@ -129,53 +143,73 @@ export default {
key: 'auditTime', key: 'auditTime',
title: '提交审核时间', title: '提交审核时间',
type: 'input', type: 'input',
rule: [{ rule: [
{
required: true, required: true,
message: '请输入代码描述', message: '请输入代码描述',
trigger: 'blur' trigger: 'blur'
}], }
],
display: ['formA', 'formU', 'table', 'model'], display: ['formA', 'formU', 'table', 'model'],
block: true block: true
} }
], ],
form: [ form: [
{ {
key: 'clientType', key: 'customerId',
title: '类型', title: '客户',
type: 'radio', type: 'select',
rule: [{ rule: [
{
required: true, required: true,
message: '请选择类型', message: '请选择客户',
trigger: 'blur' trigger: 'blur'
}], }
],
display: ['formA', 'formU', 'table', 'model'], display: ['formA', 'formU', 'table', 'model'],
disabled: ['formA', 'formU'],
fixed: true, fixed: true,
block: false, block: false,
width: 100 width: 100
}, },
{ {
key: 'customerId', key: 'clientType',
title: '客户', title: '类型',
type: 'select', type: 'span',
rule: [{ rule: [
{
required: true, required: true,
message: '请选择客户', message: '请选择类型',
trigger: 'blur' trigger: 'blur'
}], }
],
display: ['formA', 'formU', 'table', 'model'], display: ['formA', 'formU', 'table', 'model'],
disabled: ['formA', 'formU'],
fixed: true, fixed: true,
block: false, block: false,
width: 100 width: 100,
format: (cellValue) => {
if (cellValue === 'resi') {
return '居民端'
} else if (cellValue === 'work') {
return '工作端'
} else {
return '未知'
}
}
}, },
{ {
key: 'userVersion', key: 'userVersion',
title: '版本号', title: '版本号',
type: 'input', type: 'input',
rule: [{ rule: [
{
required: true, required: true,
message: '请输入版本号', message: '请输入版本号',
trigger: 'blur' trigger: 'blur'
}], }
],
display: ['formA', 'formU', 'table', 'model'], display: ['formA', 'formU', 'table', 'model'],
fixed: true, fixed: true,
block: false, block: false,
@ -185,14 +219,14 @@ export default {
key: 'userDesc', key: 'userDesc',
title: '代码描述', title: '代码描述',
type: 'textarea', type: 'textarea',
rule: [{ rule: [
{
required: true, required: true,
message: '请输入代码描述', message: '请输入代码描述',
trigger: 'blur' trigger: 'blur'
}], }
option: { ],
option: {},
},
display: ['formA', 'formU', 'model'], display: ['formA', 'formU', 'model'],
block: false, block: false,
width: 120 width: 120

32
epmet-oper-web/src/js/columns/customer/miniProManage.js

@ -55,21 +55,21 @@ export default [
fixed: false, fixed: false,
block: true, block: true,
width: 120 width: 120
},
{
key: 'version',
title: '版本号',
type: 'input',
rule: [
{
required: true,
message: '请输入版本号',
trigger: 'blur'
}
],
display: ['formA', 'formU', 'table', 'model'],
fixed: false,
block: true,
width: 80
} }
// {
// key: 'version',
// title: '版本号',
// type: 'input',
// rule: [
// {
// required: true,
// message: '请输入版本号',
// trigger: 'blur'
// }
// ],
// display: ['formA', 'formU', 'table', 'model'],
// fixed: false,
// block: true,
// width: 80
// }
] ]

8
epmet-oper-web/src/views/components/CForm.vue

@ -15,8 +15,9 @@
:label-width="(column.LabelWidth?column.LabelWidth:labelWidth) + 'px'" :label-width="(column.LabelWidth?column.LabelWidth:labelWidth) + 'px'"
:style="{display:column.block?'block':'inline-block'}" :style="{display:column.block?'block':'inline-block'}"
:key="i"> :key="i">
<span v-if="column.type === 'span'"
<el-input v-if="column.type === 'input'" :style="{width:column.itemWidth?column.itemWidth:itemWidth}">{{column.format?column.format(model[column.key]):model[column.key]}}</span>
<el-input v-else-if="column.type === 'input'"
v-show="column.showFlag==='1' ? column.show : true" v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]" v-model="model[column.key]"
:readonly="column.readonly?column.readonly:false" :readonly="column.readonly?column.readonly:false"
@ -117,6 +118,7 @@
<el-radio-group v-else-if="column.type === 'radio'" <el-radio-group v-else-if="column.type === 'radio'"
v-show="column.showFlag==='1' ? column.show : true" v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]" v-model="model[column.key]"
:disabled="column.disabled?column.disabled:false"
:style="{width:column.itemWidth?column.itemWidth:itemWidth}"> :style="{width:column.itemWidth?column.itemWidth:itemWidth}">
<el-radio v-for="item in optionData[column.key]" <el-radio v-for="item in optionData[column.key]"
:label="item.value" :label="item.value"
@ -142,6 +144,7 @@
v-show="column.showFlag==='1' ? column.show : true" v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]" v-model="model[column.key]"
clearable clearable
:disabled="column.disabled?column.disabled:false"
:filterable="column.filterable?column.filterable:false" :filterable="column.filterable?column.filterable:false"
:placeholder="column.placeholder?column.placeholder:column.title" :placeholder="column.placeholder?column.placeholder:column.title"
:style="{width:column.itemWidth?column.itemWidth:itemWidth}" :style="{width:column.itemWidth?column.itemWidth:itemWidth}"
@ -367,6 +370,7 @@
</template> </template>
<script> <script>
/* eslint-disable */
import CUpload from './CUpload' import CUpload from './CUpload'
import CDialog from './CDialog' import CDialog from './CDialog'
import CTree from './CTree' import CTree from './CTree'

0
epmet-oper-web/src/views/modules/customer-manage/MiniProManage/BasicInfo.vue → epmet-oper-web/src/views/modules/code/BasicInfo.vue

205
epmet-oper-web/src/views/modules/code/SubmitForm copy.vue → epmet-oper-web/src/views/modules/code/Category.vue

@ -1,6 +1,7 @@
<template> <template>
<div> <div>
<c-dialog :title="'提交审核'" <c-dialog :showFooter='false'
:title="'基础信息'"
:visible="diaVisible" :visible="diaVisible"
:dialogHeight="1.1" :dialogHeight="1.1"
@cancel="diaCancel" @cancel="diaCancel"
@ -9,124 +10,6 @@
<el-tabs v-model="activeName" <el-tabs v-model="activeName"
@tab-click="tabClick" @tab-click="tabClick"
class="el-tabs"> class="el-tabs">
<el-tab-pane v-if="feedbackShow"
label="反馈信息"
name="feedback">
<el-form :inline="true"
:model="dataForm"
class="form">
<el-form-item label="反馈内容"
prop="feedbackInfo"
label-width="150px"
style="display:block">
<el-input type="textarea"
:autosize="{ minRows: 5, maxRows: 8}"
:rows="5"
resize="none"
style="width:600px"
placeholder='请输入反馈内容'
v-model="dataForm.feedbackInfo">
</el-input>
<div slot="tip"
class="el-upload__tip">反馈内容至多200字只有上个版本被驳回才可填写</div>
</el-form-item>
<el-form-item label="反馈图片"
label-width="150px"
style="display:block">
<el-upload class="avatar-uploader"
ref="uploadFeedbackPic"
:action="upload_url"
list-type="picture-card"
:name="upload_name"
:on-exceed="exceedFeedbackPic"
:on-remove="removeFeedbackPic"
:file-list="feedbackPicList"
:limit="5"
:http-request="uploadFeedbackPic">
<span class="font-14">选择图片</span>
<div slot="tip"
class="el-upload__tip">反馈图片最多5张大小2M以内</div>
</el-upload>
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane label="功能说明"
name="desc">
<el-form :inline="true"
:model="dataForm"
class="form">
<el-form-item label="版本功能说明"
prop="versionDesc"
label-width="150px"
style="display:block">
<el-input type="textarea"
:autosize="{ minRows: 5, maxRows: 8}"
:rows="5"
resize="none"
style="width:500px"
placeholder='请输入版本功能说明'
v-model="dataForm.versionDesc">
</el-input>
<div class="el-upload__tip">小程序版本说明和功能解释</div>
</el-form-item>
<el-form-item label="图片预览"
label-width="150px"
style="display:block">
<el-upload class="avatar-uploader"
ref="uploadPic"
:action="upload_url"
list-type="picture-card"
:name="upload_name"
:on-exceed="exceedPic"
:on-remove="removePic"
:file-list="picList"
:limit="10"
:http-request="uploadPic">
<span class="font-14">选择图片</span>
<div slot="tip"
class="el-upload__tip">可上传小程序截图最多上传10张图片图片支持jpgjpegbmpgit或png格式图片大小不超过5M</div>
</el-upload>
</el-form-item>
<el-form-item label="视频预览"
label-width="150px"
style="display:block">
<el-upload class="avatar-uploader"
ref="uploadVedio"
:action="upload_url"
:name="upload_name"
:on-exceed="exceedVedio"
:on-remove="removeVedio"
:file-list="videoList"
:limit="1"
:http-request="uploadVedio">
<el-button size="small"
type="primary">选择视频</el-button>
<div slot="tip"
class="el-upload__tip">可上传小程序使用录屏最多上传1个视频视频支持mp4格式视频大小不超过20M</div>
</el-upload>
</el-form-item>
<el-form-item label="审核加急"
label-width="150px"
style="display:block">
<el-radio-group v-model="dataForm.isSpeed">
<el-radio :label=false>不加急 </el-radio>
<el-radio :label=true>加急 </el-radio>
</el-radio-group>
<div class="el-upload__tip">一年3次不加急预计在1-7天内完成加急预计再2-12小时内完成</div>
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane label="审核项"
name="item">
<submit-item ref="ref_submit_item"></submit-item>
</el-tab-pane>
<el-tab-pane label="UGC信息安全声明" <el-tab-pane label="UGC信息安全声明"
name="ugc"> name="ugc">
@ -213,8 +96,6 @@
<script> <script>
import CDialog from '@c/CDialog' import CDialog from '@c/CDialog'
import CommitForm from './CommitForm'
import SubmitItem from './SubmitItem'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // Loading import { Loading } from 'element-ui' // Loading
@ -234,8 +115,7 @@ export default {
sceneOtherDisabled: true, // sceneOtherDisabled: true, //
dataForm: { dataForm: {
versionDesc: '', // versionDesc: '', //
feedbackInfo: '', //
feedbackStuff: '', //
ugcDeclare: { // UGC ugcDeclare: { // UGC
scene: [1, 2, 4], // UGC 0,, 1.,2.,3.,4.,5, ,scene0 scene: [1, 2, 4], // UGC 0,, 1.,2.,3.,4.,5, ,scene0
otherSceneDesc: '', // scene,256 otherSceneDesc: '', // scene,256
@ -261,7 +141,7 @@ export default {
} }
}, },
components: { components: {
CDialog, CommitForm, SubmitItem CDialog
}, },
mounted () { mounted () {
}, },
@ -281,8 +161,7 @@ export default {
this.dataForm = { this.dataForm = {
isSpeed: false, // isSpeed: false, //
versionDesc: '', // versionDesc: '', //
feedbackInfo: '', //
feedbackStuff: '', //
ugcDeclare: { // UGC ugcDeclare: { // UGC
scene: [1, 2, 4], // UGC 0,, 1.,2.,3.,4.,5, ,scene0 scene: [1, 2, 4], // UGC 0,, 1.,2.,3.,4.,5, ,scene0
otherSceneDesc: '', // scene,256 otherSceneDesc: '', // scene,256
@ -515,81 +394,7 @@ export default {
this.dataForm.ugcDeclare.auditDesc = '' this.dataForm.ugcDeclare.auditDesc = ''
}, },
submitCode () { submitCode () {
let params = {
codeId: this.codeId,
ugcDeclare: this.dataForm.ugcDeclare //
}
//
//
let picIdList = []
let videoIdList = []
this.picList.forEach(element => {
picIdList.push(element.mediaid)
})
// // eslint-disable-next-line
// debugger
this.videoList.forEach(element => {
videoIdList.push(element.mediaid)
})
//
if (picIdList.length > 0 || videoIdList.length > 0) {
params.previewInfo = {}
if (picIdList.length > 0) {
params.previewInfo.picIdList = picIdList
}
if (videoIdList.length > 0) {
params.previewInfo.videoIdList = videoIdList
}
// console.log('')
// console.log(params.previewInfo.picIdList)
// console.log('')
// console.log(params.previewInfo.videoIdList)
}
//
if (this.dataForm.versionDesc !== '') {
params.versionDesc = this.dataForm.versionDesc
}
//
const itemList = this.$refs['ref_submit_item'].getItemList()
if (itemList.length > 0) {
params.itemList = itemList
}
//
if (this.dataForm.feedbackInfo !== '') {
params.feedbackInfo = this.dataForm.feedbackInfo
}
this.dataForm.feedbackStuff = ''
this.feedbackPicList.forEach(element => {
this.dataForm.feedbackStuff = this.dataForm.feedbackStuff + element.mediaid + '|'
})
if (this.dataForm.feedbackStuff !== '') {
this.dataForm.feedbackStuff = this.dataForm.feedbackStuff.slice(0, this.dataForm.feedbackStuff.length - 1)
params.feedbackStuff = this.dataForm.feedbackStuff
}
console.log(params)
// console.log('')
// console.log(params.feedbackStuff)
const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/audit'
this.startLoading()
window.app.ajax.post(url, params,
(data, rspMsg) => {
this.endLoading()
this.$message.success('提交审核成功,请等待审核结果')
this.diaCancel()
this.$emit('refresh')
},
(rspMsg, data) => {
this.endLoading()
this.$message.error(rspMsg)
})
}, },
// //
diaCancel () { diaCancel () {

100
epmet-oper-web/src/views/modules/code/CommitForm.vue

@ -12,29 +12,6 @@
:method="tempForm.method" :method="tempForm.method"
:option-data="optionData"></c-form> :option-data="optionData"></c-form>
<!-- <el-form :inline="true"
:model="extJson"
:style="{margin:'0 auto',width:'100%',textAlign:'left'}">
<el-form-item label="小程序配置"
prop="json"
label-width="100px"
style="display:block">
<el-input type="textarea"
:autosize="{ minRows:3, maxRows: 6}"
:rows="3"
resize="none"
style="width:700px"
placeholder='请获取小程序配置'
v-model="extJson.json">
</el-input>
<el-button type="primary"
style="margin-left:10px"
size="small"
@click="getExtJson">获取配置</el-button>
</el-form-item>
</el-form> -->
<div class="mod-demo__demo}"> <div class="mod-demo__demo}">
<c-table column-type="radio" <c-table column-type="radio"
@ -65,8 +42,10 @@ let loading // 加载动画
export default { export default {
data () { data () {
return { return {
params: {},//
tempForm: { tempForm: {
commitUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/upload', // commitUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/upload',
commitUrl: '/third/code/upload',
method: 'A', method: 'A',
dataUrl: [], // //url dataUrl: [], // //url
data: { data: {
@ -82,9 +61,8 @@ export default {
] ]
} }
}, },
extJson: { optionData: {},
json: ''
},
// //
selTempId: '', selTempId: '',
tableUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/templatelist', tableUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/templatelist',
@ -114,27 +92,22 @@ export default {
...mapGetters(['clientHeight']) ...mapGetters(['clientHeight'])
}, },
props: { props: {
optionData: { // optionData: {
type: Object, // type: Object,
default () { // default () {
return {} // return {}
} // }
} // }
}, },
methods: { methods: {
// eslint-disable-next-line // eslint-disable-next-line
initData (dataForm) { initData (params, optionData) {
this.diaVisible = true this.diaVisible = true
if (!dataForm) { this.optionData = optionData
dataForm = { this.params = params
customerId: '',
clientType: 'resi'
}
}
console.log(dataForm)
this.$nextTick(() => { this.$nextTick(() => {
this.$refs['ref_form_temp'].assign(dataForm) this.$refs['ref_form_temp'].assign(params)
this.loadTableData() this.loadTableData()
}) })
}, },
@ -144,46 +117,26 @@ export default {
this.$refs.table.loadData() // this.$refs.table.loadData() //
}) })
}, },
//
getExtJson () {
const _data = this.$refs['ref_form_temp'].model
if (_data.customerId === '') {
this.$message.warning('请选择客户')
return false
}
this.startLoading()
const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/getextjson'
const param = {
customerId: _data.customerId,
clientType: _data.clientType
}
window.app.ajax.post(url, param,
(data, rspMsg) => {
this.endLoading()
this.extJson.json = data
// this.$message.success('')
// eslint-disable-next-line
},
(rspMsg, data) => {
this.endLoading()
this.$message.error(rspMsg)
})
},
selectRadioRow (row) { selectRadioRow (row) {
this.selTempId = row.id this.selTempId = row.id
let dataForm = {
customerId: this.params.customerId,
clientType: this.params.clientType,
userVersion: row.userVersion,
userDesc: row.userDesc,
}
this.$refs['ref_form_temp'].assign(dataForm)
}, },
resetData () { resetData () {
this.selTempId = '' this.selTempId = ''
this.extJson.json = ''
this.$refs['ref_form_temp'].resetForm() this.$refs['ref_form_temp'].resetForm()
}, },
commitCode () { commitCode () {
this.$refs['ref_form_temp'].validate((valid) => { this.$refs['ref_form_temp'].validate((valid) => {
if (valid) { if (valid) {
// if (this.extJson.json === '') {
// this.$message.warning('')
// return
// }
if (this.selTempId === '') { if (this.selTempId === '') {
this.$message.warning('请选择模板') this.$message.warning('请选择模板')
return return
@ -191,10 +144,7 @@ export default {
this.startLoading() this.startLoading()
// //
let _data = this.$refs['ref_form_temp'].model let _data = this.$refs['ref_form_temp'].model
// _data.extJson = this.extJson.json
_data.templateId = this.selTempId _data.templateId = this.selTempId
console.log(_data)
window.app.ajax.post(this.tempForm.commitUrl, _data, window.app.ajax.post(this.tempForm.commitUrl, _data,
(data, rspMsg) => { (data, rspMsg) => {
this.endLoading() this.endLoading()

15
epmet-oper-web/src/views/modules/customer-manage/MiniProManage/Version.vue → epmet-oper-web/src/views/modules/code/LowVersion.vue

@ -62,17 +62,7 @@ export default {
templateRadio: '', templateRadio: '',
nowVersion: '',// nowVersion: '',//
selVersion: '',// selVersion: '',//
// tableUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/getweappsupportversion',
tableUrl: 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/third/pacustomer/getweappsupportversion',
tableParams: {
type: Object, // table
default () {
return {}
}
},
//
operations: [
],
// //
diaVisible: false diaVisible: false
@ -106,7 +96,8 @@ export default {
this.startLoading() this.startLoading()
// const url = 'https://epmet-cloud.elinkservice.cn/api/third/pacustomer/getweappsupportversion' // const url = 'https://epmet-cloud.elinkservice.cn/api/third/pacustomer/getweappsupportversion'
const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/third/pacustomer/getweappsupportversion' // const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/third/pacustomer/getweappsupportversion'
const url = '/third/pacustomer/getweappsupportversion'
const param = { const param = {
customerId: this.customerId, customerId: this.customerId,
clientType: this.clientType clientType: this.clientType

6
epmet-oper-web/src/views/modules/code/OperHistory.vue

@ -82,7 +82,8 @@ export default {
params: {}, params: {},
codeId: '', codeId: '',
// //
tableUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/history', // tableUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/history',
tableUrl: '/third/code/history',
tableParams: { tableParams: {
type: Object, // table type: Object, // table
default () { default () {
@ -135,7 +136,8 @@ export default {
}, },
// //
loadSubmitFailHistory () { loadSubmitFailHistory () {
const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/reason' // const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/reason'
const url = '/third/code/reason'
const param = { const param = {
codeId: this.codeId codeId: this.codeId
} }

5
epmet-oper-web/src/views/modules/code/SubmitFailReason.vue

@ -14,7 +14,7 @@
label-width="150px" label-width="150px"
style="display:block"> style="display:block">
<div>{{dataForm.reason}}</div> <span>{{dataForm.reason}}</span>
</el-form-item> </el-form-item>
@ -67,7 +67,8 @@ export default {
this.diaVisible = true this.diaVisible = true
// this.dataForm.reason = ',' // this.dataForm.reason = ','
// this.dataForm.screenshotUrl = ['https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg', 'https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg'] // this.dataForm.screenshotUrl = ['https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg', 'https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg']
const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/reason' // const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/reason'
const url = '/third/code/reason'
const param = { const param = {
codeId: codeId codeId: codeId
} }

141
epmet-oper-web/src/views/modules/code/SubmitForm.vue

@ -12,50 +12,6 @@
<el-tabs v-model="activeName" <el-tabs v-model="activeName"
@tab-click="tabClick" @tab-click="tabClick"
class="el-tabs"> class="el-tabs">
<el-tab-pane v-if="feedbackShow"
label="反馈信息"
name="feedback">
<el-form :inline="true"
:model="dataForm"
class="form">
<el-form-item label="反馈内容"
prop="feedbackInfo"
label-width="150px"
style="display:block">
<el-input type="textarea"
:autosize="{ minRows: 5, maxRows: 8}"
:rows="5"
resize="none"
style="width:600px"
placeholder='请输入反馈内容'
v-model="dataForm.feedbackInfo">
</el-input>
<div slot="tip"
class="el-upload__tip">反馈内容至多200字只有上个版本被驳回才可填写</div>
</el-form-item>
<el-form-item label="反馈图片"
label-width="150px"
style="display:block">
<el-upload class="avatar-uploader"
ref="uploadFeedbackPic"
:action="upload_url"
list-type="picture-card"
:name="upload_name"
:on-exceed="exceedFeedbackPic"
:on-remove="removeFeedbackPic"
:file-list="feedbackPicList"
:limit="5"
:http-request="uploadFeedbackPic">
<span class="font-14">选择图片</span>
<div slot="tip"
class="el-upload__tip">反馈图片最多5张大小2M以内</div>
</el-upload>
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane label="功能说明" <el-tab-pane label="功能说明"
name="desc"> name="desc">
<el-form :inline="true" <el-form :inline="true"
@ -225,7 +181,6 @@ export default {
data () { data () {
return { return {
loading: false, loading: false,
feedbackShow: false, //
codeId: '', // id codeId: '', // id
// tab // tab
@ -236,8 +191,6 @@ export default {
dataForm: { dataForm: {
isSpeed: false, // isSpeed: false, //
versionDesc: '', // versionDesc: '', //
feedbackInfo: '', //
feedbackStuff: '', //
ugcDeclare: { // UGC ugcDeclare: { // UGC
scene: [1, 2, 4], // UGC 0,, 1.,2.,3.,4.,5, ,scene0 scene: [1, 2, 4], // UGC 0,, 1.,2.,3.,4.,5, ,scene0
otherSceneDesc: '', // scene,256 otherSceneDesc: '', // scene,256
@ -253,7 +206,6 @@ export default {
upload_name: '', // upload_name: '', //
picList: [], // picList: [], //
videoList: [], // videoList: [], //
feedbackPicList: [], //
// //
dialog: { dialog: {
@ -274,19 +226,13 @@ export default {
...mapGetters(['clientHeight']) ...mapGetters(['clientHeight'])
}, },
methods: { methods: {
initData (codeId, feedbackShow) { initData (codeId) {
this.codeId = codeId this.codeId = codeId
this.feedbackShow = feedbackShow
if (this.feedbackShow) {
this.activeName = 'feedback'
}
}, },
reseatDataForm () { reseatDataForm () {
this.dataForm = { this.dataForm = {
isSpeed: false, // isSpeed: false, //
versionDesc: '', // versionDesc: '', //
feedbackInfo: '', //
feedbackStuff: '', //
ugcDeclare: { // UGC ugcDeclare: { // UGC
scene: [1, 2, 4], // UGC 0,, 1.,2.,3.,4.,5, ,scene0 scene: [1, 2, 4], // UGC 0,, 1.,2.,3.,4.,5, ,scene0
otherSceneDesc: '', // scene,256 otherSceneDesc: '', // scene,256
@ -312,10 +258,6 @@ export default {
this.picList.splice(this.picList.findIndex(item => item.uid === file.uid), 1) this.picList.splice(this.picList.findIndex(item => item.uid === file.uid), 1)
// console.log(this.picList) // console.log(this.picList)
}, },
removeFeedbackPic (file) {
this.feedbackPicList.splice(this.feedbackPicList.findIndex(item => item.uid === file.uid), 1)
// console.log(this.feedbackPicList)
},
exceedPic: () => { exceedPic: () => {
this.$message({ this.$message({
message: '最多上传5张预览图片', message: '最多上传5张预览图片',
@ -328,12 +270,7 @@ export default {
type: 'warning' type: 'warning'
}) })
}, },
exceedFeedbackPic: () => {
this.$message({
message: '最多上传5张反馈图片',
type: 'warning'
})
},
// //
uploadVedio: (params) => { uploadVedio: (params) => {
let file = params.file let file = params.file
@ -434,56 +371,6 @@ export default {
this.$message.error(rspMsg) this.$message.error(rspMsg)
}, { headers: { 'Content-Type': 'multipart/form-data' } }) }, { headers: { 'Content-Type': 'multipart/form-data' } })
}, },
//
uploadFeedbackPic: (params) => {
let file = params.file
let fileType = file.type
let isImage = fileType.indexOf('image') !== -1
let fileUrl = this.$refs.uploadFeedbackPic.uploadFiles[this.feedbackPicList.length].url
file.url = fileUrl
this.feedbackPicList.push(file)
let isLt2M = file.size / 1024 / 1024 < 2
if (!isLt2M) {
this.$message({
message: '上传图片大小不能超过 2MB!',
type: 'warning'
})
this.feedbackPicList.pop()
return
}
if (!isImage) {
this.$message({
message: '请选择图片!',
type: 'warning'
})
this.feedbackPicList.pop()
return
}
this.upload_name = 'file_img[]'
let formData = new FormData()
formData.append('type', fileType)
formData.append('media', file)
formData.append('codeId', this.codeId)
this.startLoading()
window.app.ajax.post2(this.dialogImageUrl, formData,
(data, rspMsg) => {
this.endLoading()
if (data.code === 0) {
this.feedbackPicList[this.feedbackPicList.length - 1].mediaid = data.data
} else {
this.feedbackPicList.pop()
this.$message.error(rspMsg)
}
},
(rspMsg, data) => {
this.feedbackPicList.pop()
this.endLoading()
this.$message.error(rspMsg)
}, { headers: { 'Content-Type': 'multipart/form-data' } })
},
// UGC0 // UGC0
scene0 (value) { scene0 (value) {
if (value) { // if (value) { //
@ -564,26 +451,10 @@ export default {
params.itemList = itemList params.itemList = itemList
} }
//
if (this.dataForm.feedbackInfo !== '') {
params.feedbackInfo = this.dataForm.feedbackInfo
}
this.dataForm.feedbackStuff = ''
this.feedbackPicList.forEach(element => {
this.dataForm.feedbackStuff = this.dataForm.feedbackStuff + element.mediaid + '|'
})
if (this.dataForm.feedbackStuff !== '') {
this.dataForm.feedbackStuff = this.dataForm.feedbackStuff.slice(0, this.dataForm.feedbackStuff.length - 1)
params.feedbackStuff = this.dataForm.feedbackStuff
}
console.log(params) console.log(params)
// console.log('') // const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/audit'
// console.log(params.feedbackStuff) const url = '/third/code/audit'
const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/audit'
this.startLoading() this.startLoading()
window.app.ajax.post(url, params, window.app.ajax.post(url, params,
(data, rspMsg) => { (data, rspMsg) => {
@ -591,7 +462,7 @@ export default {
this.$message.success('提交审核成功,请等待审核结果') this.$message.success('提交审核成功,请等待审核结果')
this.resetData() this.resetData()
this.activeName = 'desc' this.activeName = 'desc'
this.$emit('refresh') this.$emit('okSubmit')
}, },
(rspMsg, data) => { (rspMsg, data) => {
this.endLoading() this.endLoading()
@ -612,8 +483,6 @@ export default {
// //
this.$refs['ref_submit_item'].reseatData() this.$refs['ref_submit_item'].reseatData()
//
this.feedbackPicList = []
// //
}, },
// //

255
epmet-oper-web/src/views/modules/code/SubmitFormReject.vue

@ -0,0 +1,255 @@
<template>
<div style=" position: relative;">
<el-button type="default"
@click="diaCancel">取消返回</el-button>
<el-button type="primary"
@click="submitCode">提交</el-button>
<el-form :inline="true"
:model="dataForm"
class="form">
<el-form-item label="反馈内容"
prop="feedbackInfo"
label-width="150px"
style="display:block">
<el-input type="textarea"
:autosize="{ minRows: 5, maxRows: 8}"
:rows="5"
resize="none"
style="width:600px"
placeholder='请输入反馈内容'
v-model="dataForm.feedbackInfo">
</el-input>
<div slot="tip"
class="el-upload__tip">反馈内容至多200字只有上个版本被驳回才可填写</div>
</el-form-item>
<el-form-item label="反馈图片"
label-width="150px"
style="display:block">
<el-upload class="avatar-uploader"
ref="uploadFeedbackPic"
:action="upload_url"
list-type="picture-card"
:name="upload_name"
:on-exceed="exceedFeedbackPic"
:on-remove="removeFeedbackPic"
:file-list="feedbackPicList"
:limit="5"
:http-request="uploadFeedbackPic">
<span class="font-14">选择图片</span>
<div slot="tip"
class="el-upload__tip">反馈图片最多5张大小2M以内</div>
</el-upload>
</el-form-item>
</el-form>
</div>
</template>
<script>
import CDialog from '@c/CDialog'
import CommitForm from './CommitForm'
import SubmitItem from './SubmitItem'
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // Loading
let loading //
export default {
data () {
return {
loading: false,
codeId: '', // id
dataForm: {
feedbackInfo: '', //
feedbackStuff: '' //
},
//
dialogImageUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/mediaupload',
upload_url: '', // URL
upload_name: '', //
feedbackPicList: [], //
//
dialog: {
title: '',
visible: false
}
}
},
components: {
CDialog, CommitForm, SubmitItem
},
mounted () {
},
computed: {
tableHeight () {
return this.clientHeight * 0.56 - 100
},
...mapGetters(['clientHeight'])
},
methods: {
initData (codeId) {
this.codeId = codeId
},
reseatDataForm () {
this.dataForm = {
feedbackInfo: '', //
feedbackStuff: '' //
}
},
removeFeedbackPic (file) {
this.feedbackPicList.splice(this.feedbackPicList.findIndex(item => item.uid === file.uid), 1)
// console.log(this.feedbackPicList)
},
exceedFeedbackPic: () => {
this.$message({
message: '最多上传5张反馈图片',
type: 'warning'
})
},
//
uploadFeedbackPic: (params) => {
let file = params.file
let fileType = file.type
let isImage = fileType.indexOf('image') !== -1
let fileUrl = this.$refs.uploadFeedbackPic.uploadFiles[this.feedbackPicList.length].url
file.url = fileUrl
this.feedbackPicList.push(file)
let isLt2M = file.size / 1024 / 1024 < 2
if (!isLt2M) {
this.$message({
message: '上传图片大小不能超过 2MB!',
type: 'warning'
})
this.feedbackPicList.pop()
return
}
if (!isImage) {
this.$message({
message: '请选择图片!',
type: 'warning'
})
this.feedbackPicList.pop()
return
}
this.upload_name = 'file_img[]'
let formData = new FormData()
formData.append('type', fileType)
formData.append('media', file)
formData.append('codeId', this.codeId)
this.startLoading()
window.app.ajax.post2(this.dialogImageUrl, formData,
(data, rspMsg) => {
this.endLoading()
if (data.code === 0) {
this.feedbackPicList[this.feedbackPicList.length - 1].mediaid = data.data
} else {
this.feedbackPicList.pop()
this.$message.error(rspMsg)
}
},
(rspMsg, data) => {
this.feedbackPicList.pop()
this.endLoading()
this.$message.error(rspMsg)
}, { headers: { 'Content-Type': 'multipart/form-data' } })
},
submitCode () {
let params = {
codeId: this.codeId,
isSpeed: false
}
//
if (this.dataForm.feedbackInfo !== '') {
params.feedbackInfo = this.dataForm.feedbackInfo
}
this.dataForm.feedbackStuff = ''
this.feedbackPicList.forEach(element => {
this.dataForm.feedbackStuff = this.dataForm.feedbackStuff + element.mediaid + '|'
})
if (this.dataForm.feedbackStuff !== '') {
this.dataForm.feedbackStuff = this.dataForm.feedbackStuff.slice(0, this.dataForm.feedbackStuff.length - 1)
params.feedbackStuff = this.dataForm.feedbackStuff
}
console.log(params)
// console.log('')
// console.log(params.feedbackStuff)
// const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/audit'
const url = '/third/code/audit'
this.startLoading()
window.app.ajax.post(url, params,
(data, rspMsg) => {
this.endLoading()
this.$message.success('提交审核成功,请等待审核结果')
this.resetData()
this.$emit('okSubmit')
},
(rspMsg, data) => {
this.endLoading()
this.$message.error(rspMsg)
})
},
//
diaCancel () {
this.resetData()
this.$emit('cancleSubmit')
},
resetData () {
this.reseatDataForm()
//
this.feedbackPicList = []
},
//
startLoading () {
loading = Loading.service({
lock: true, //
text: '正在加载……', //
background: 'rgba(0,0,0,.7)' //
})
},
//
endLoading () {
// clearTimeout(timer);
if (loading) {
loading.close()
}
}
},
props: {
}
}
</script>
<style scoped >
.el-tabs {
margin: 0 20px;
}
.el-upload__tip {
color: rgb(155, 155, 155);
margin: 0;
}
.form {
margin-top: 30px;
}
.div_btn {
z-index: 10;
position: absolute;
top: 5px;
right: 30px;
}
</style>

6
epmet-oper-web/src/views/modules/code/SubmitItem.vue

@ -190,8 +190,10 @@ export default {
data () { data () {
return { return {
codeId: '', codeId: '',
addressUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/getpage', // addressUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/getpage',
categoryUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/getcategory', addressUrl: '/third/code/getpage',
// categoryUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/getcategory',
categoryUrl: '/third/code/getcategory',
addressList: [], // addressList: [], //
categoryList: [], // categoryList: [], //
templateRadio: '', templateRadio: '',

276
epmet-oper-web/src/views/modules/code/VersionItem.vue

@ -1,9 +1,11 @@
<template> <template>
<div> <div>
<div v-show="!showSubmit"> <div v-show="showSubmit==='0'">
<div> <div>
<el-button type="default" <el-button type="default"
@click="versionCancel">返回</el-button> @click="versionCancel">返回</el-button>
<el-button type="primary"
@click="loadData">刷新</el-button>
<el-button type="primary" <el-button type="primary"
@click="operHistoryShow">操作历史</el-button> @click="operHistoryShow">操作历史</el-button>
</div> </div>
@ -14,12 +16,20 @@
<div slot="header" <div slot="header"
class="clearfix"> class="clearfix">
<span>线上版本</span> <span>线上版本</span>
<div v-if="release"
style="float:right">
<el-button class="btn_card" <el-button class="btn_card"
type="text" size="mini"
@click="commitCodeShow">版本回退</el-button> type="primary"
@click="revertcoderelease">版本回退</el-button>
</div>
</div> </div>
<div> <div>
<el-form :style="{height:rowHeight}" <div class="div_nodata"
:style="{height:rowHeight}"
v-if="release===null">当前客户没有线上版本</div>
<el-form v-else
:style="{height:rowHeight}"
label-position="left" label-position="left"
block block
class="form"> class="form">
@ -65,31 +75,43 @@
<div slot="header" <div slot="header"
class="clearfix"> class="clearfix">
<span>审核版本</span> <span>审核版本</span>
<div v-if="audit"
style="float:right">
<el-button v-if="audit.status==='auditing'||audit.status==='delay'" <el-button v-if="audit.status==='auditing'||audit.status==='delay'"
class="btn_card" class="btn_card"
type="text" size="mini"
type="primary"
@click="submitRecall">审核撤回</el-button> @click="submitRecall">审核撤回</el-button>
<el-button v-if="audit.status==='auditing'||audit.status==='delay'" <el-button v-if="audit.status==='auditing'||audit.status==='delay'"
class="btn_card" class="btn_card"
type="text" size="mini"
type="primary"
@click="speedupaudit">加急申请</el-button> @click="speedupaudit">加急申请</el-button>
<el-button v-if="audit.status==='audit_success'" <el-button v-if="audit.status==='audit_success'"
class="btn_card" class="btn_card"
type="text" size="mini"
type="primary"
@click="issueCode">发布</el-button> @click="issueCode">发布</el-button>
<el-button v-if="audit.status==='audit_failed'" <el-button v-if="audit.status==='audit_failed'"
style="float: right; padding: 3px 0" class="btn_card"
type="text" size="mini"
type="primary"
@click="submitFailReasonShow">审核失败原因</el-button> @click="submitFailReasonShow">审核失败原因</el-button>
<el-button v-if="audit.status==='audit_failed'||audit.status==='withdrawn'" <el-button v-if="audit.status==='audit_failed'||audit.status==='withdrawn'"
style="float: right; padding: 3px 0" class="btn_card"
type="text" size="mini"
@click="submitFailCodeShow">重新提审</el-button> type="primary"
@click="submitCodeRejectShow">重新提审</el-button>
</div>
</div> </div>
<div> <div>
<el-form :style="{height:rowHeight}" <div v-if="audit===null"
class="div_nodata"
:style="{height:rowHeight}">当前客户没有审核版本</div>
<el-form v-else
:style="{height:rowHeight}"
label-position="left" label-position="left"
block block
class="form"> class="form">
@ -126,31 +148,40 @@
class="clearfix"> class="clearfix">
<span>开发版本</span> <span>开发版本</span>
<el-button class="btn_card" <el-button class="btn_card"
type="text" size="mini"
type="primary"
@click="commitCodeShow">上传代码</el-button> @click="commitCodeShow">上传代码</el-button>
<el-button class="btn_card" <el-button v-if="commit"
type="text" class="btn_card"
size="mini"
type="primary"
@click="QRCodeShow">二维码</el-button> @click="QRCodeShow">二维码</el-button>
<el-button class="btn_card" <el-button v-if="commit"
type="text" class="btn_card"
size="mini"
type="primary"
@click="submitCodeShow">提交审核</el-button> @click="submitCodeShow">提交审核</el-button>
</div> </div>
<div> <div>
<el-form :style="{height:rowHeight}" <div v-if="commit===null"
class="div_nodata"
:style="{height:rowHeight}">当前客户没有开发版本</div>
<el-form v-else
:style="{height:rowHeight}"
label-position="left" label-position="left"
block block
class="form"> class="form">
<el-form-item :label-width="labelWidth" <el-form-item :label-width="labelWidth"
label="版本号"> label="版本号">
<span>{{ audit.version }}</span> <span>{{ commit.version }}</span>
</el-form-item> </el-form-item>
<el-form-item :label-width="labelWidth" <el-form-item :label-width="labelWidth"
label="上传时间"> label="上传时间">
<span>{{ audit.commitTime }}</span> <span>{{ commit.commitTime }}</span>
</el-form-item> </el-form-item>
<el-form-item :label-width="labelWidth" <el-form-item :label-width="labelWidth"
label="版本说明"> label="版本说明">
<span>{{ audit.codeInfo }}</span> <span>{{ commit.codeInfo }}</span>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -165,10 +196,15 @@
:optionData="optionData" :optionData="optionData"
@refresh="refresh"></commit-form> @refresh="refresh"></commit-form>
<submit-form v-show="showSubmit" <submit-form v-show="showSubmit==='1'"
ref="ref_submit_form" ref="ref_submit_form"
@refresh="refresh" @okSubmit="okSubmit('0')"
@cancleSubmit="cancleSubmit"></submit-form> @cancleSubmit="cancleSubmit('0')"></submit-form>
<submit-form-reject v-show="showSubmit==='2'"
ref="ref_submit_form_reject"
@okSubmit="okSubmit('0')"
@cancleSubmit="cancleSubmit('0')"></submit-form-reject>
<oper-history ref="ref_oper_history"></oper-history> <oper-history ref="ref_oper_history"></oper-history>
@ -208,6 +244,7 @@
<script> <script>
import CDialog from '@c/CDialog' import CDialog from '@c/CDialog'
import SubmitForm from './SubmitForm' import SubmitForm from './SubmitForm'
import SubmitFormReject from './SubmitFormReject'
import CommitForm from './CommitForm' import CommitForm from './CommitForm'
import OperHistory from './OperHistory' import OperHistory from './OperHistory'
import SubmitFailReason from './SubmitFailReason' import SubmitFailReason from './SubmitFailReason'
@ -228,35 +265,38 @@ export default {
}, },
optionData: {}, optionData: {},
release: { // release: {
codeId: '', // codeId: '',
version: '1.0.3', // version: '1.0.3',
codeInfo: '版本1111111已经上线的版本版本1111111已经上线的版本版本1111111已经上线的版本版本1111111已经上线的版本版本1111111已经上线的版本版本1111111已经上线的版本', // codeInfo: '1111111线1111111线1111111线1111111线1111111线1111111线',
commitTime: '2020-08-07 10:00:00', // commitTime: '2020-08-07 10:00:00',
auditTime: '2020-08-07 10:00:00', // auditTime: '2020-08-07 10:00:00',
releaseTime: '2020-08-07 10:00:00', // releaseTime: '2020-08-07 10:00:00',
releaseType: 'step', // releaseType: 'step',
releaseTypeShow: '全量', // releaseTypeShow: '',
grayPercentage: 10 // grayPercentage: 10
}, // },
audit: { release: null,
codeId: '', // audit: {
version: '1.0.2', // codeId: '',
codeInfo: '版本1111111已经上线的版本', // version: '1.0.2',
commitTime: '2020-08-07 10:00:00', // codeInfo: '1111111线',
auditTime: '2020-08-07 10:00:00', // commitTime: '2020-08-07 10:00:00',
status: 'auditing', // auditTime: '2020-08-07 10:00:00',
statusShow: '审核中' // status: 'auditing',
}, // statusShow: ''
commit: { // },
codeId: '', audit: null,
version: '1.0.2', // commit: {
codeInfo: '版本1111111已经上线的版本', // codeId: '',
commitTime: '2020-08-07 10:00:00' // version: '1.0.2',
}, // codeInfo: '1111111线',
// commitTime: '2020-08-07 10:00:00'
// // },
showSubmit: false, commit: null,
// 0 1 2
showSubmit: '0',
// //
operDia: { operDia: {
visible: false visible: false
@ -274,14 +314,14 @@ export default {
} }
}, },
components: { components: {
CDialog, SubmitForm, CommitForm, OperHistory, SubmitFailReason CDialog, SubmitForm, CommitForm, OperHistory, SubmitFailReason, SubmitFormReject
}, },
mounted () { mounted () {
}, },
computed: { computed: {
rowHeight () { rowHeight () {
return (this.clientHeight - 270) + 'px' return (this.clientHeight - 280) + 'px'
}, },
...mapGetters(['clientHeight']) ...mapGetters(['clientHeight'])
}, },
@ -290,9 +330,6 @@ export default {
this.params = { customerId, clientType } this.params = { customerId, clientType }
this.optionData = optionData this.optionData = optionData
// this.customerId = customerId
// this.clientType = clientType
this.loadData() this.loadData()
}, },
@ -303,28 +340,31 @@ export default {
// //
loadData () { loadData () {
const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/third/code/version' const url = '/third/code/version'
// const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/third/code/version'
// const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/version' // const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/version'
this.startLoading() this.startLoading()
window.app.ajax.post(url, this.params, window.app.ajax.post(url, this.params,
(data, rspMsg) => { (data, rspMsg) => {
// // eslint-disable-next-line // eslint-disable-next-line
// debugger // debugger
this.release = data.release
this.release = data.release
if (this.release) {
if (this.release.releaseType === 'step') { if (this.release.releaseType === 'step') {
this.release.releaseTypeShow = '分阶段' this.release.releaseTypeShow = '分阶段'
} else { } else {
this.release.releaseTypeShow = '全量' this.release.releaseTypeShow = '全量'
} }
}
this.audit = data.audit this.audit = data.audit
this.audit.status = 'audit_failed' // this.audit.status = 'audit_failed'
if (this.audit) {
// :auditing;;audit_success;;audit_failed;:withdrawn;:delay // :auditing;;audit_success;;audit_failed;:withdrawn;:delay
if (this.audit.status === 'auditing') { if (this.audit.status === 'auditing') {
this.audit.statusShow = '分阶段' this.audit.statusShow = '审核中'
} else if (this.audit.status === 'audit_success') { } else if (this.audit.status === 'audit_success') {
this.audit.statusShow = '审核成功' this.audit.statusShow = '审核成功'
} else if (this.audit.status === 'audit_failed') { } else if (this.audit.status === 'audit_failed') {
@ -334,6 +374,7 @@ export default {
} else { } else {
this.audit.statusShow = '审核延后' this.audit.statusShow = '审核延后'
} }
}
this.commit = data.commit this.commit = data.commit
this.endLoading() this.endLoading()
@ -354,13 +395,13 @@ export default {
this.$refs['ref_oper_history'].initData(this.params, this.audit.codeId) this.$refs['ref_oper_history'].initData(this.params, this.audit.codeId)
}, },
// //
commitCodeShow (customerId) { commitCodeShow () {
this.$nextTick(() => { this.$nextTick(() => {
let dataForm = { // let dataForm = {
clientType: 'resi', // clientType: 'resi',
customerId: customerId // customerId: customerId
} // }
this.$refs['ref_commit_form'].initData(dataForm, this.optionData) this.$refs['ref_commit_form'].initData(this.params, this.optionData)
}) })
}, },
@ -368,7 +409,8 @@ export default {
QRCodeShow () { QRCodeShow () {
this.qrCodeDia.visible = true this.qrCodeDia.visible = true
// const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/qrcode' // const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/qrcode'
const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/third/code/qrcode' // const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/third/code/qrcode'
const url = '/third/code/qrcode'
const param = { const param = {
codeId: this.commit.codeId codeId: this.commit.codeId
} }
@ -379,7 +421,6 @@ export default {
// debugger // debugger
this.endLoading() this.endLoading()
if (data) { if (data) {
// console.log(data.qrcode)
this.src = data.qrcode this.src = data.qrcode
} }
}, },
@ -390,22 +431,29 @@ export default {
}, },
// //
submitCodeShow () { submitCodeShow () {
let feedbackShow = false this.showSubmit = '1'
this.$refs['ref_submit_form'].initData(this.commit.codeId)
this.showSubmit = true },
this.$refs['ref_submit_form'].initData(this.audit.codeId, feedbackShow) //
submitCodeRejectShow () {
if (this.audit.status === 'audit_failed') {
this.showSubmit = '2'
this.$refs['ref_submit_form_reject'].initData(this.audit.codeId)
} else {
this.showSubmit = '1'
this.$refs['ref_submit_form'].initData(this.audit.codeId)
}
}, },
//
submitFailCodeShow () {
let feedbackShow = true
this.showSubmit = true //
this.$refs['ref_submit_form'].initData(this.audit.codeId, feedbackShow) okSubmit (type) {
this.showSubmit = type
this.refresh()
}, },
// //
cancleSubmit () { cancleSubmit (type) {
this.showSubmit = false this.showSubmit = type
}, },
// //
@ -416,9 +464,10 @@ export default {
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
// const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/undo' // const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/undo'
const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/third/code/undo' // const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/third/code/undo'
const url = '/third/code/undo'
const param = { const param = {
codeId: this.auditTime.codeId codeId: this.audit.codeId
} }
window.app.ajax.post(url, param, window.app.ajax.post(url, param,
(data, rspMsg) => { (data, rspMsg) => {
@ -435,13 +484,14 @@ export default {
// //
issueCode () { issueCode () {
this.$confirm('确认撤回审核?', '提示', { this.$confirm('确认发布?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
// const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/release' // const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/release'
const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/third/code/release' // const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/third/code/release'
const url = '/third/code/release'
const param = { const param = {
codeId: this.audit.codeId codeId: this.audit.codeId
} }
@ -482,7 +532,6 @@ export default {
this.endLoading() this.endLoading()
this.refresh() this.refresh()
if (data) { if (data) {
// console.log(data.qrcode)
this.src = data.qrcode this.src = data.qrcode
} }
}, },
@ -493,7 +542,47 @@ export default {
}, },
// //
speedupaudit () { speedupaudit () {
this.$confirm('加急审核一年3次,不加急:预计在1-7天内完成,加急:预计再2-12小时内完成,确认加急审核?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
// const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/release'
const url = '/third/code/speedupaudit'
const param = {
codeId: this.audit.codeId
}
window.app.ajax.post(url, param,
(data, rspMsg) => {
this.$message.success('加急申请成功' + rspMsg)
this.refresh()
},
(rspMsg, data) => {
this.$message.error(rspMsg)
})
}).catch(() => { })
},
// 退
revertcoderelease () {
this.$confirm('确认回退到上一版本?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
// const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/release'
const url = '/third/code/revertcoderelease'
const param = {
codeId: this.release.codeId
}
window.app.ajax.post(url, param,
(data, rspMsg) => {
this.$message.success('回退成功' + rspMsg)
this.refresh()
},
(rspMsg, data) => {
this.$message.error(rspMsg)
})
}).catch(() => { })
}, },
operDiaCancel () { operDiaCancel () {
@ -528,7 +617,12 @@ export default {
<style scoped > <style scoped >
.btn_card { .btn_card {
float: right; float: right;
padding: 3px 0 3px 5px; margin: 0 0 0 5px;
}
/* .div_nodata {
} */
.clearfix {
height: 25px;
} }
.clearfix:before, .clearfix:before,
.clearfix:after { .clearfix:after {

70
epmet-oper-web/src/views/modules/code/VersionManage.vue

@ -46,7 +46,10 @@
keyword="MiniProManage" keyword="MiniProManage"
:operations="operations" :operations="operations"
:tableHeight="tableHeight" :tableHeight="tableHeight"
@versionManage="versionManage"> @versionManage="versionManage"
@setweappsupportversion="setweappsupportversion"
@getaccountbasicinfo="getaccountbasicinfo"
@getcategory="getcategory">
</c-table> </c-table>
</div> </div>
@ -56,6 +59,12 @@
@okVersion="okVersion" @okVersion="okVersion"
@cancelVersion="cancelVersion"></version-item> @cancelVersion="cancelVersion"></version-item>
<low-version ref="ref_version_form"></low-version>
<basic-info ref="ref_basic_info"></basic-info>
<category ref="ref_catefoty"></category>
</div> </div>
</template> </template>
@ -63,6 +72,10 @@
import CDialog from '@c/CDialog' import CDialog from '@c/CDialog'
import CTable from '@c/CTable' import CTable from '@c/CTable'
import VersionItem from './VersionItem' import VersionItem from './VersionItem'
import LowVersion from './LowVersion'
import BasicInfo from './BasicInfo'
import Category from './Category'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // Loading import { Loading } from 'element-ui' // Loading
@ -79,7 +92,8 @@ export default {
source: this.env source: this.env
}, },
// //
tableUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/uploadlist', // tableUrl: 'https://epmet-cloud.elinkservice.cn/api/third/pacustomer/miniprolist',
tableUrl: '/third/pacustomer/miniprolist',
// //
operations: [ operations: [
{ {
@ -93,6 +107,42 @@ export default {
isShow: (row) => { isShow: (row) => {
return true return true
} }
},
{
lable: '基本信息', //
size: 'mini',
style: 'margin: 0 6px;',
type: 'text',
slot: '',
plain: false,
methodName: 'getaccountbasicinfo', //
isShow: (row) => {
return true
}
},
{
lable: '设置基础库版本', //
size: 'mini',
style: 'margin: 0 6px;',
type: 'text',
slot: '',
plain: false,
methodName: 'setweappsupportversion', //
isShow: (row) => {
return true
}
},
{
lable: '类目', //
size: 'mini',
style: 'margin: 0 6px;',
type: 'text',
slot: '',
plain: false,
methodName: 'getcategory', //
isShow: (row) => {
return true
}
} }
], ],
// //
@ -118,7 +168,7 @@ export default {
} }
}, },
components: { components: {
CDialog, CTable, VersionItem CDialog, CTable, VersionItem, LowVersion, BasicInfo, Category
}, },
activated () { activated () {
let params = this.$route.params let params = this.$route.params
@ -170,6 +220,20 @@ export default {
cancelVersion () { cancelVersion () {
this.showVersion = false this.showVersion = false
}, },
//
setweappsupportversion (row) {
this.$refs['ref_version_form'].initData(row.customerId, row.clientType)
},
//
getaccountbasicinfo (row) {
this.$refs['ref_basic_info'].initData(row.customerId, row.clientType)
},
//
getcategory (row) {
this.$refs['ref_catefoty'].initData(row.customerId, row.clientType)
},
async renderSelData () { // // async renderSelData () { // //
const customerUrl = ' https://epmet-cloud.elinkservice.cn/api/third/pacustomer/registerbyauth' const customerUrl = ' https://epmet-cloud.elinkservice.cn/api/third/pacustomer/registerbyauth'

346
epmet-oper-web/src/views/modules/customer-manage/MiniProManage/Category.vue

@ -1,346 +0,0 @@
<!--审核项-->
<template>
<div>
<el-form :inline="true"
:model="dataForm"
style="width:1300px">
<el-form-item label="页面列表"
prop="versionDesc"
label-width="100px">
<el-select v-model="dataForm.address"
placeholder="页面列表"
style="width:300px"
filterable>
<el-option v-for="item in addressList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<div class="el-upload__tip">小程序版本说明和功能解释</div>
</el-form-item>
<el-form-item label="标签"
prop="tag"
label-width="80px">
<el-input placeholder='请输入标签'
style="width:300px"
type="textarea"
:autosize="{ minRows: 2, maxRows: 4}"
:rows="3"
maxlength="20"
show-word-limit
v-model="dataForm.tag">
</el-input>
<div class="el-upload__tip">小程序的标签用空格分隔标签至多10个标签长度至多20</div>
</el-form-item>
<el-form-item label="标题"
prop="title"
label-width="80px">
<el-input placeholder='请输入标题'
style="width:300px"
type="textarea"
:autosize="{ minRows: 2, maxRows: 4}"
:rows="3"
maxlength="32"
show-word-limit
v-model="dataForm.title">
</el-input>
<div class="el-upload__tip">小程序页面的标题标题长度至多32</div>
</el-form-item>
<el-form-item label="可选类目"
prop="title"
label-width="100px">
<el-table id="out-table"
ref="table_category"
:header-cell-style="{color:'#000'}"
:data="categoryList"
style="width: 1000px"
border>
<el-table-column label=""
width="35"
center>
<template slot-scope="scope">
<el-radio :label="scope.row.id"
v-model="templateRadio"
@change.native="getRadioRow(scope.$index,scope.row)">&nbsp;</el-radio>
</template>
</el-table-column>
<el-table-column prop="firstClass"
label="一级名称"
min-width="100"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="firstId"
label="一级ID"
min-width="100"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="secondClass"
label="二级名称"
min-width="70"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="secondId"
label="二级ID"
min-width="100"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="thirdClass"
label="三级名称"
min-width="70"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="thirdId"
label="三级ID"
header-align="center"
min-width="100"
align="center"></el-table-column>
</el-table>
</el-form-item>
</el-form>
<div style="margin-top:10px">
<el-button type="primary"
style="margin:0 10px 10px 10px"
@click="addItem()">增加</el-button>
</div>
<el-table id="out-table"
ref="table"
:header-cell-style="{color:'#000'}"
:data="itemTableData"
:style="{width: '100%'}"
border>
<el-table-column prop="address"
label="页面"
min-width="100"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="tag"
label="标签"
min-width="100"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="title"
label="标题"
min-width="100"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="firstClass"
label="一级名称"
min-width="100"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="firstId"
label="一级ID"
min-width="100"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="secondClass"
label="二级名称"
min-width="70"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="secondId"
label="二级ID"
min-width="100"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="thirdClass"
label="三级名称"
min-width="70"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="thirdId"
label="三级ID"
header-align="center"
min-width="100"
align="center"></el-table-column>
<!--操作列-->
<el-table-column label="操作"
fixed="right"
:min-width="80"
header-align="center"
class="operate">
<template slot-scope="scope">
<el-button size="mini"
type="text"
@click.stop="deleteItem(scope.$index, scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
import CTable from '@c/CTableNoPage'
import CForm from '@c/CForm'
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // Loading
let loading //
export default {
data () {
return {
codeId: '',
addressUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/getpage',
categoryUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/getcategory',
addressList: [], //
categoryList: [], //
templateRadio: '',
selCategory: {},
dataForm: {
address: '',
tag: '',
title: ''
},
//
tableParams: {},
operations: [],
//
itemTableData: []
}
},
components: {
CTable, CForm
},
mounted () {
},
computed: {
tableHeight () {
return this.clientHeight - 60 - 80 - 80 - 50 - 400
},
...mapGetters(['clientHeight'])
},
props: {
optionData: {
type: Object,
default () {
return {}
}
}
},
methods: {
initData (codeId) {
this.reseatData()
this.codeId = codeId
const params = {
codeId: this.codeId
}
window.app.ajax.post(this.addressUrl, params,
(data, rspMsg) => {
data.forEach(item => {
let obj = {}
obj.label = item
obj.value = item
this.addressList.push(obj)
})
},
(rspMsg, data) => {
this.$message.error(rspMsg)
})
window.app.ajax.post(this.categoryUrl, params,
(data, rspMsg) => {
// data = [
// {
// 'first_class': '',
// 'second_class': '/',
// 'first_id': 684,
// 'second_id': 794
// },
// {
// 'first_class': '1',
// 'second_class': '/1',
// 'first_id': 685,
// 'second_id': 796
// }
// ]
data.forEach((item, index) => {
item.id = index
})
this.categoryList = data
},
(rspMsg, data) => {
this.$message.error(rspMsg)
})
},
getRadioRow (index, row) {
this.selCategory = row
},
//
addItem () {
if (this.itemTableData.length === 5) {
this.$message.warning('最多填写5项审核项')
return false
}
// eslint-disable-next-line
// debugger
//
const that = this
let result = this.itemTableData.some((value) => {
return value.address === that.dataForm.address
})
if (result) {
this.$message.warning('当前页面已添加,请更换页面后重新添加')
return false
}
let oneObj = {}
oneObj.address = this.dataForm.address
oneObj.title = this.dataForm.title
oneObj.tag = this.dataForm.tag
oneObj.firstClass = this.selCategory.firstClass
oneObj.firstId = this.selCategory.firstId
oneObj.secondClass = this.selCategory.secondClass
oneObj.secondId = this.selCategory.secondId
oneObj.thirdClass = this.selCategory.thirdClass
oneObj.thirdId = this.selCategory.thirdId
this.itemTableData.push(oneObj)
},
deleteItem (index) {
this.itemTableData.splice(index, 1)
},
getItemList () {
return this.itemTableData
},
reseatData () {
this.dataForm = {
address: '',
tag: '',
title: ''
}
this.templateRadio = ''
this.addressList = []
this.categoryList = []
this.itemTableData = []
this.selCategory = {}
},
//
startLoading () {
loading = Loading.service({
lock: true, //
text: '正在加载……', //
background: 'rgba(0,0,0,.7)' //
})
},
//
endLoading () {
// clearTimeout(timer);
if (loading) {
loading.close()
}
}
}
}
</script>

12
epmet-oper-web/src/views/modules/customer-manage/MiniProManage/MiniProManage.vue

@ -54,11 +54,11 @@
</div> </div>
</el-card> </el-card>
<version ref="ref_version_form"></version> <!-- <low-version ref="ref_version_form"></low-version>
<basic-info ref="ref_basic_info"></basic-info> <basic-info ref="ref_basic_info"></basic-info>
<category ref="ref_catefoty"></category> <category ref="ref_catefoty"></category> -->
</div> </div>
</template> </template>
@ -66,10 +66,10 @@
<script> <script>
import CDialog from '@c/CDialog' import CDialog from '@c/CDialog'
import CTable from '@c/CTable' import CTable from '@c/CTable'
import Version from './Version' // import LowVersion from './LowVersion'
import BasicInfo from './BasicInfo' // import BasicInfo from './BasicInfo'
import Category from './Category' // import Category from './Category'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // Loading import { Loading } from 'element-ui' // Loading
@ -157,7 +157,7 @@ export default {
} }
}, },
components: { components: {
CDialog, Version, BasicInfo, Category, CTable CDialog, CTable
}, },
activated () { activated () {
let params = this.$route.params let params = this.$route.params

25
epmet-oper-web/vue.config.js

@ -1,8 +1,19 @@
/** /**
* 配置参考: https://cli.vuejs.org/zh/config/ * 配置参考: https://cli.vuejs.org/zh/config/
*/ */
const IS_PROD = ['production', 'test'].includes(process.env.NODE_ENV)
module.exports = { module.exports = {
baseUrl: process.env.NODE_ENV === 'production' ? '' : '/epmet-oper', baseUrl: process.env.NODE_ENV === 'production' ? '' : '/epmet-oper',
css: {
// 是否使用css分离插件 ExtractTextPlugin
extract: IS_PROD,
// 开启 CSS source maps?
sourceMap: false,
// css预设器配置项
loaderOptions: {},
// 启用 CSS modules for all css / pre-processor files.
modules: false
},
chainWebpack: (config) => { chainWebpack: (config) => {
const svgRule = config.module.rule('svg') const svgRule = config.module.rule('svg')
svgRule.uses.clear() svgRule.uses.clear()
@ -19,15 +30,15 @@ module.exports = {
port: 9001, port: 9001,
overlay: { overlay: {
errors: true, errors: true,
warnings: true, warnings: true
}, }
}, },
// webpack简单配置 // webpack简单配置
configureWebpack: { configureWebpack: {
// debuge调试配置 // debuge调试配置
devtool: 'source-map', devtool: 'source-map',
externals: { externals: {
AMap: 'AMap', AMap: 'AMap'
}, },
resolve: { resolve: {
//配置路径别名 //配置路径别名
@ -36,8 +47,8 @@ module.exports = {
'@js': '@/js', '@js': '@/js',
'@c': '@/views/components', '@c': '@/views/components',
'@v': '@/views', '@v': '@/views',
'@m': '@/img', '@m': '@/img'
}, }
}, }
}, }
} }

Loading…
Cancel
Save