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
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://192.168.1.130: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_NODE_ENV=dev

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

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

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

@ -55,21 +55,21 @@ export default [
fixed: false,
block: true,
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'"
:style="{display:column.block?'block':'inline-block'}"
:key="i">
<el-input v-if="column.type === 'input'"
<span v-if="column.type === 'span'"
: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-model="model[column.key]"
:readonly="column.readonly?column.readonly:false"
@ -117,6 +118,7 @@
<el-radio-group v-else-if="column.type === 'radio'"
v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]"
:disabled="column.disabled?column.disabled:false"
:style="{width:column.itemWidth?column.itemWidth:itemWidth}">
<el-radio v-for="item in optionData[column.key]"
:label="item.value"
@ -142,6 +144,7 @@
v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]"
clearable
:disabled="column.disabled?column.disabled:false"
:filterable="column.filterable?column.filterable:false"
:placeholder="column.placeholder?column.placeholder:column.title"
:style="{width:column.itemWidth?column.itemWidth:itemWidth}"
@ -367,6 +370,7 @@
</template>
<script>
/* eslint-disable */
import CUpload from './CUpload'
import CDialog from './CDialog'
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>
<div>
<c-dialog :title="'提交审核'"
<c-dialog :showFooter='false'
:title="'基础信息'"
:visible="diaVisible"
:dialogHeight="1.1"
@cancel="diaCancel"
@ -9,124 +10,6 @@
<el-tabs v-model="activeName"
@tab-click="tabClick"
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信息安全声明"
name="ugc">
@ -213,8 +96,6 @@
<script>
import CDialog from '@c/CDialog'
import CommitForm from './CommitForm'
import SubmitItem from './SubmitItem'
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // Loading
@ -234,8 +115,7 @@ export default {
sceneOtherDisabled: true, //
dataForm: {
versionDesc: '', //
feedbackInfo: '', //
feedbackStuff: '', //
ugcDeclare: { // UGC
scene: [1, 2, 4], // UGC 0,, 1.,2.,3.,4.,5, ,scene0
otherSceneDesc: '', // scene,256
@ -261,7 +141,7 @@ export default {
}
},
components: {
CDialog, CommitForm, SubmitItem
CDialog
},
mounted () {
},
@ -281,8 +161,7 @@ export default {
this.dataForm = {
isSpeed: false, //
versionDesc: '', //
feedbackInfo: '', //
feedbackStuff: '', //
ugcDeclare: { // UGC
scene: [1, 2, 4], // UGC 0,, 1.,2.,3.,4.,5, ,scene0
otherSceneDesc: '', // scene,256
@ -515,81 +394,7 @@ export default {
this.dataForm.ugcDeclare.auditDesc = ''
},
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 () {

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

@ -12,29 +12,6 @@
:method="tempForm.method"
: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}">
<c-table column-type="radio"
@ -65,8 +42,10 @@ let loading // 加载动画
export default {
data () {
return {
params: {},//
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',
dataUrl: [], // //url
data: {
@ -82,9 +61,8 @@ export default {
]
}
},
extJson: {
json: ''
},
optionData: {},
//
selTempId: '',
tableUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/templatelist',
@ -114,27 +92,22 @@ export default {
...mapGetters(['clientHeight'])
},
props: {
optionData: {
type: Object,
default () {
return {}
}
}
// optionData: {
// type: Object,
// default () {
// return {}
// }
// }
},
methods: {
// eslint-disable-next-line
initData (dataForm) {
initData (params, optionData) {
this.diaVisible = true
if (!dataForm) {
dataForm = {
customerId: '',
clientType: 'resi'
}
}
console.log(dataForm)
this.optionData = optionData
this.params = params
this.$nextTick(() => {
this.$refs['ref_form_temp'].assign(dataForm)
this.$refs['ref_form_temp'].assign(params)
this.loadTableData()
})
},
@ -144,46 +117,26 @@ export default {
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) {
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 () {
this.selTempId = ''
this.extJson.json = ''
this.$refs['ref_form_temp'].resetForm()
},
commitCode () {
this.$refs['ref_form_temp'].validate((valid) => {
if (valid) {
// if (this.extJson.json === '') {
// this.$message.warning('')
// return
// }
if (this.selTempId === '') {
this.$message.warning('请选择模板')
return
@ -191,10 +144,7 @@ export default {
this.startLoading()
//
let _data = this.$refs['ref_form_temp'].model
// _data.extJson = this.extJson.json
_data.templateId = this.selTempId
console.log(_data)
window.app.ajax.post(this.tempForm.commitUrl, _data,
(data, rspMsg) => {
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: '',
nowVersion: '',//
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
@ -106,7 +96,8 @@ export default {
this.startLoading()
// 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 = {
customerId: this.customerId,
clientType: this.clientType

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

@ -82,7 +82,8 @@ export default {
params: {},
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: {
type: Object, // table
default () {
@ -135,7 +136,8 @@ export default {
},
//
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 = {
codeId: this.codeId
}

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

@ -14,7 +14,7 @@
label-width="150px"
style="display:block">
<div>{{dataForm.reason}}</div>
<span>{{dataForm.reason}}</span>
</el-form-item>
@ -67,7 +67,8 @@ export default {
this.diaVisible = true
// this.dataForm.reason = ','
// 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 = {
codeId: codeId
}

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

@ -12,50 +12,6 @@
<el-tabs v-model="activeName"
@tab-click="tabClick"
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"
@ -225,7 +181,6 @@ export default {
data () {
return {
loading: false,
feedbackShow: false, //
codeId: '', // id
// tab
@ -236,8 +191,6 @@ export default {
dataForm: {
isSpeed: false, //
versionDesc: '', //
feedbackInfo: '', //
feedbackStuff: '', //
ugcDeclare: { // UGC
scene: [1, 2, 4], // UGC 0,, 1.,2.,3.,4.,5, ,scene0
otherSceneDesc: '', // scene,256
@ -253,7 +206,6 @@ export default {
upload_name: '', //
picList: [], //
videoList: [], //
feedbackPicList: [], //
//
dialog: {
@ -274,19 +226,13 @@ export default {
...mapGetters(['clientHeight'])
},
methods: {
initData (codeId, feedbackShow) {
initData (codeId) {
this.codeId = codeId
this.feedbackShow = feedbackShow
if (this.feedbackShow) {
this.activeName = 'feedback'
}
},
reseatDataForm () {
this.dataForm = {
isSpeed: false, //
versionDesc: '', //
feedbackInfo: '', //
feedbackStuff: '', //
ugcDeclare: { // UGC
scene: [1, 2, 4], // UGC 0,, 1.,2.,3.,4.,5, ,scene0
otherSceneDesc: '', // scene,256
@ -312,10 +258,6 @@ export default {
this.picList.splice(this.picList.findIndex(item => item.uid === file.uid), 1)
// console.log(this.picList)
},
removeFeedbackPic (file) {
this.feedbackPicList.splice(this.feedbackPicList.findIndex(item => item.uid === file.uid), 1)
// console.log(this.feedbackPicList)
},
exceedPic: () => {
this.$message({
message: '最多上传5张预览图片',
@ -328,12 +270,7 @@ export default {
type: 'warning'
})
},
exceedFeedbackPic: () => {
this.$message({
message: '最多上传5张反馈图片',
type: 'warning'
})
},
//
uploadVedio: (params) => {
let file = params.file
@ -434,56 +371,6 @@ export default {
this.$message.error(rspMsg)
}, { 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
scene0 (value) {
if (value) { //
@ -564,26 +451,10 @@ export default {
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'
// 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) => {
@ -591,7 +462,7 @@ export default {
this.$message.success('提交审核成功,请等待审核结果')
this.resetData()
this.activeName = 'desc'
this.$emit('refresh')
this.$emit('okSubmit')
},
(rspMsg, data) => {
this.endLoading()
@ -612,8 +483,6 @@ export default {
//
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 () {
return {
codeId: '',
addressUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/getpage',
categoryUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/getcategory',
// addressUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/getpage',
addressUrl: '/third/code/getpage',
// categoryUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/getcategory',
categoryUrl: '/third/code/getcategory',
addressList: [], //
categoryList: [], //
templateRadio: '',

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

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

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

@ -46,7 +46,10 @@
keyword="MiniProManage"
:operations="operations"
:tableHeight="tableHeight"
@versionManage="versionManage">
@versionManage="versionManage"
@setweappsupportversion="setweappsupportversion"
@getaccountbasicinfo="getaccountbasicinfo"
@getcategory="getcategory">
</c-table>
</div>
@ -56,6 +59,12 @@
@okVersion="okVersion"
@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>
</template>
@ -63,6 +72,10 @@
import CDialog from '@c/CDialog'
import CTable from '@c/CTable'
import VersionItem from './VersionItem'
import LowVersion from './LowVersion'
import BasicInfo from './BasicInfo'
import Category from './Category'
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // Loading
@ -79,7 +92,8 @@ export default {
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: [
{
@ -93,6 +107,42 @@ export default {
isShow: (row) => {
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: {
CDialog, CTable, VersionItem
CDialog, CTable, VersionItem, LowVersion, BasicInfo, Category
},
activated () {
let params = this.$route.params
@ -170,6 +220,20 @@ export default {
cancelVersion () {
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 () { // //
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>
</el-card>
<version ref="ref_version_form"></version>
<!-- <low-version ref="ref_version_form"></low-version>
<basic-info ref="ref_basic_info"></basic-info>
<category ref="ref_catefoty"></category>
<category ref="ref_catefoty"></category> -->
</div>
</template>
@ -66,10 +66,10 @@
<script>
import CDialog from '@c/CDialog'
import CTable from '@c/CTable'
import Version from './Version'
import BasicInfo from './BasicInfo'
// import LowVersion from './LowVersion'
// import BasicInfo from './BasicInfo'
import Category from './Category'
// import Category from './Category'
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // Loading
@ -157,7 +157,7 @@ export default {
}
},
components: {
CDialog, Version, BasicInfo, Category, CTable
CDialog, CTable
},
activated () {
let params = this.$route.params

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

@ -1,8 +1,19 @@
/**
* 配置参考: https://cli.vuejs.org/zh/config/
*/
const IS_PROD = ['production', 'test'].includes(process.env.NODE_ENV)
module.exports = {
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) => {
const svgRule = config.module.rule('svg')
svgRule.uses.clear()
@ -19,15 +30,15 @@ module.exports = {
port: 9001,
overlay: {
errors: true,
warnings: true,
},
warnings: true
}
},
// webpack简单配置
configureWebpack: {
// debuge调试配置
devtool: 'source-map',
externals: {
AMap: 'AMap',
AMap: 'AMap'
},
resolve: {
//配置路径别名
@ -36,8 +47,8 @@ module.exports = {
'@js': '@/js',
'@c': '@/views/components',
'@v': '@/views',
'@m': '@/img',
},
},
},
'@m': '@/img'
}
}
}
}

Loading…
Cancel
Save