17 changed files with 3410 additions and 334 deletions
@ -0,0 +1,75 @@ |
|||
export default [ |
|||
{ |
|||
key: 'customerName', |
|||
title: '客户名称', |
|||
type: 'select', |
|||
rule: [ |
|||
{ |
|||
required: true, |
|||
message: '请选择客户', |
|||
trigger: 'blur' |
|||
} |
|||
], |
|||
display: ['formA', 'formU', 'table', 'model'], |
|||
fixed: false, |
|||
block: false, |
|||
width: 120 |
|||
}, |
|||
{ |
|||
key: 'clientType', |
|||
title: '类型', |
|||
type: 'radio', |
|||
rule: [ |
|||
{ |
|||
required: true, |
|||
message: '请选择类型', |
|||
trigger: 'blur' |
|||
} |
|||
], |
|||
display: ['formA', 'formU', 'table', 'model'], |
|||
fixed: false, |
|||
block: false, |
|||
width: 80, |
|||
format: (cellValue, index) => { |
|||
if (cellValue === 'resi') { |
|||
return '居民端' |
|||
} else if (cellValue === 'work') { |
|||
return '工作端' |
|||
} else { |
|||
return '未知' |
|||
} |
|||
} |
|||
}, |
|||
{ |
|||
key: 'appId', |
|||
title: 'appId', |
|||
type: 'radio', |
|||
rule: [ |
|||
{ |
|||
required: true, |
|||
message: '请输入appId', |
|||
trigger: 'blur' |
|||
} |
|||
], |
|||
display: ['formA', 'formU', 'table', 'model'], |
|||
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 |
|||
} |
|||
] |
|||
@ -0,0 +1,20 @@ |
|||
export default [ |
|||
{ |
|||
key: 'percentage', |
|||
title: '百分比', |
|||
type: 'select', |
|||
display: ['formA', 'formU', 'table', 'model'], |
|||
fixed: false, |
|||
block: false, |
|||
width: 120 |
|||
}, |
|||
{ |
|||
key: 'version', |
|||
title: '版本', |
|||
type: 'radio', |
|||
display: ['formA', 'formU', 'table', 'model'], |
|||
fixed: false, |
|||
block: false, |
|||
width: 80 |
|||
} |
|||
] |
|||
@ -0,0 +1,643 @@ |
|||
<template> |
|||
<div> |
|||
<c-dialog :title="'提交审核'" |
|||
:visible="diaVisible" |
|||
:dialogHeight="1.1" |
|||
@cancel="diaCancel" |
|||
@ok="submitCode"> |
|||
|
|||
<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张图片,图片支持jpg、jpeg、bmp、git或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"> |
|||
<div class="el-upload__tip">当小程序第一次提交审核且类目包含社交-社区/论坛、社交-笔记、社交-问答其中之一时需填写UGC场景信息</div> |
|||
<el-form :inline="true" |
|||
:model="dataForm.ugcDeclare" |
|||
class="form"> |
|||
<el-form-item label="UGC场景" |
|||
label-width="150px" |
|||
style="display:block"> |
|||
<el-checkbox-group v-model="dataForm.ugcDeclare.scene"> |
|||
<el-checkbox @change="scene0" |
|||
:label="0">不涉及用户生成内容</el-checkbox> |
|||
<el-checkbox :label="1" |
|||
:disabled="sceneDisabled">用户资料</el-checkbox> |
|||
<el-checkbox :label="2" |
|||
:disabled="sceneDisabled">图片</el-checkbox> |
|||
<el-checkbox :label="3" |
|||
:disabled="sceneDisabled">视频</el-checkbox> |
|||
<el-checkbox :label="4" |
|||
:disabled="sceneDisabled">文本</el-checkbox> |
|||
<el-checkbox :label="5" |
|||
:disabled="sceneDisabled" |
|||
@change="sceneOther">其他</el-checkbox> |
|||
</el-checkbox-group> |
|||
</el-form-item> |
|||
<div v-if="!sceneDisabled"> |
|||
<el-form-item label="其他场景" |
|||
label-width="150px" |
|||
style="display:block"> |
|||
<el-input type="textarea" |
|||
:disabled="sceneOtherDisabled" |
|||
:autosize="{ minRows: 2, maxRows: 4}" |
|||
:rows="3" |
|||
resize="none" |
|||
style="width:500px" |
|||
placeholder='请输入其他场景' |
|||
v-model="dataForm.ugcDeclare.otherSceneDesc"> |
|||
</el-input> |
|||
<div class="el-upload__tip">当scene选其他时的说明,不超时256字</div> |
|||
</el-form-item> |
|||
<el-form-item label="内容安全机制" |
|||
label-width="150px" |
|||
style="display:block"> |
|||
<el-checkbox-group v-model="dataForm.ugcDeclare.method"> |
|||
<el-checkbox :label="1">使用平台建议的内容安全API</el-checkbox> |
|||
<el-checkbox :label="2">使用其他的内容审核产品</el-checkbox> |
|||
<el-checkbox :label="3">通过人工审核把关</el-checkbox> |
|||
<el-checkbox :label="4">未做内容审核把关</el-checkbox> |
|||
</el-checkbox-group> |
|||
<!-- <div class="el-upload__tip">1.使用平台建议的内容安全API,2.使用其他的内容审核产品,3.通过人工审核把关,4.未做内容审核把关</div> --> |
|||
</el-form-item> |
|||
<el-form-item label="是否有审核团队" |
|||
label-width="150px" |
|||
style="display:block"> |
|||
<el-radio-group v-model="dataForm.ugcDeclare.hasAuditTeam"> |
|||
<el-radio :label="0">无 </el-radio> |
|||
<el-radio :label="1">有 </el-radio> |
|||
</el-radio-group> |
|||
</el-form-item> |
|||
<el-form-item label="审核机制" |
|||
label-width="150px" |
|||
style="display:block"> |
|||
<el-input type="textarea" |
|||
:autosize="{ minRows: 2, maxRows: 4}" |
|||
:rows="3" |
|||
resize="none" |
|||
style="width:500px" |
|||
placeholder='请输入审核机制' |
|||
v-model="dataForm.ugcDeclare.auditDesc"> |
|||
</el-input> |
|||
<div class="el-upload__tip">说明当前对UGC内容的审核机制,不超过256字</div> |
|||
</el-form-item> |
|||
</div> |
|||
</el-form> |
|||
|
|||
</el-tab-pane> |
|||
|
|||
</el-tabs> |
|||
</c-dialog> |
|||
|
|||
</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, |
|||
feedbackShow: false, // 是否显示反馈信息,父组件传 |
|||
codeId: '', // 上传代码id,父组件传 |
|||
diaVisible: false, |
|||
|
|||
// tab页相关 |
|||
activeName: 'desc', |
|||
|
|||
sceneDisabled: true, // 场景是否禁用 |
|||
sceneOtherDisabled: true, // 其他场景是否禁用 |
|||
dataForm: { |
|||
versionDesc: '', // 小程序版本说明和功能解释 |
|||
feedbackInfo: '', // 反馈内容 |
|||
feedbackStuff: '', // 反馈素材 |
|||
ugcDeclare: { // 用户生成内容场景(UGC)信息安全声明 |
|||
scene: [1, 2, 4], // UGC场景 0,不涉及用户生成内容, 1.用户资料,2.图片,3.视频,4.文本,5其他, 可多选,当scene填0时无需填写下列字段 |
|||
otherSceneDesc: '', // 当scene选其他时的说明,不超时256字 |
|||
method: [2], // 内容安全机制 1.使用平台建议的内容安全API,2.使用其他的内容审核产品,3.通过人工审核把关,4.未做内容审核把关 |
|||
hasAuditTeam: 1, // 是否有审核团队, 0.无,1.有,默认0 |
|||
auditDesc: '严重色情内容、轻微色情内容、涉政负面内容、严重辱骂、涉政暴恐(恶搞领导人、特殊标识、特殊着装、枪支、利器、血腥场景)' // 说明当前对UGC内容的审核机制,不超过256字 |
|||
} |
|||
}, |
|||
|
|||
// 上传素材 |
|||
dialogImageUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/mediaupload', |
|||
upload_url: '', // 上传URL |
|||
upload_name: '', // 图片或视频名称 |
|||
picList: [], // 预览列表 |
|||
videoList: [], // 预览列表 |
|||
feedbackPicList: [], // 预览列表 |
|||
|
|||
// 弹出框相关 |
|||
dialog: { |
|||
title: '', |
|||
visible: false |
|||
} |
|||
} |
|||
}, |
|||
components: { |
|||
CDialog, CommitForm, SubmitItem |
|||
}, |
|||
mounted () { |
|||
}, |
|||
computed: { |
|||
tableHeight () { |
|||
return this.clientHeight * 0.56 - 100 |
|||
}, |
|||
...mapGetters(['clientHeight']) |
|||
}, |
|||
methods: { |
|||
initData (codeId, feedbackShow) { |
|||
this.codeId = codeId |
|||
this.feedbackShow = feedbackShow |
|||
this.diaVisible = true |
|||
}, |
|||
reseatDataForm () { |
|||
this.dataForm = { |
|||
isSpeed: false, // 是否加急 |
|||
versionDesc: '', // 小程序版本说明和功能解释 |
|||
feedbackInfo: '', // 反馈内容 |
|||
feedbackStuff: '', // 反馈素材 |
|||
ugcDeclare: { // 用户生成内容场景(UGC)信息安全声明 |
|||
scene: [1, 2, 4], // UGC场景 0,不涉及用户生成内容, 1.用户资料,2.图片,3.视频,4.文本,5其他, 可多选,当scene填0时无需填写下列字段 |
|||
otherSceneDesc: '', // 当scene选其他时的说明,不超时256字 |
|||
method: [2], // 内容安全机制 1.使用平台建议的内容安全API,2.使用其他的内容审核产品,3.通过人工审核把关,4.未做内容审核把关 |
|||
hasAuditTeam: 1, // 是否有审核团队, 0.无,1.有,默认0 |
|||
auditDesc: '严重色情内容、轻微色情内容、涉政负面内容、严重辱骂、涉政暴恐(恶搞领导人、特殊标识、特殊着装、枪支、利器、血腥场景)' // 说明当前对UGC内容的审核机制,不超过256字 |
|||
} |
|||
} |
|||
}, |
|||
tabClick (tab) { |
|||
if (tab.name === 'item') { |
|||
this.$refs['ref_submit_item'].initData(this.codeId) |
|||
} |
|||
if (tab.name === 'ugc') { |
|||
this.scene0(false) |
|||
} |
|||
}, |
|||
removeVedio (file) { |
|||
this.videoList.splice(this.videoList.findIndex(item => item.uid === file.uid), 1) |
|||
// console.log(this.videoList) |
|||
}, |
|||
removePic (file) { |
|||
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张预览图片', |
|||
type: 'warning' |
|||
}) |
|||
}, |
|||
exceedVedio: () => { |
|||
this.$message({ |
|||
message: '最多上传2个预览视频', |
|||
type: 'warning' |
|||
}) |
|||
}, |
|||
exceedFeedbackPic: () => { |
|||
this.$message({ |
|||
message: '最多上传5张反馈图片', |
|||
type: 'warning' |
|||
}) |
|||
}, |
|||
// 上传视频 |
|||
uploadVedio: (params) => { |
|||
let file = params.file |
|||
let fileType = file.type |
|||
let isVideo = fileType.indexOf('video') !== -1 |
|||
let fileUrl = this.$refs.uploadVedio.uploadFiles[this.videoList.length].url |
|||
file.url = fileUrl |
|||
this.videoList.push(file) |
|||
|
|||
let isLt20M = file.size / 1024 / 1024 < 20 |
|||
if (!isLt20M) { |
|||
this.$message({ |
|||
message: '上传视频大小不能超过 20MB!', |
|||
type: 'warning' |
|||
}) |
|||
this.videoList.pop() |
|||
return |
|||
} |
|||
let isMP4 = file.type === 'video/mp4' |
|||
if (!isVideo || !isMP4) { |
|||
this.$message({ |
|||
message: '请选择mp4格式的视频!', |
|||
type: 'warning' |
|||
}) |
|||
this.videoList.pop() |
|||
return |
|||
} |
|||
this.startLoading() |
|||
this.upload_name = 'file_video[]' |
|||
let formData = new FormData() |
|||
|
|||
formData.append('type', fileType) |
|||
formData.append('media', file) |
|||
formData.append('codeId', this.codeId) |
|||
window.app.ajax.post2(this.dialogImageUrl, formData, |
|||
(data, rspMsg) => { |
|||
this.endLoading() |
|||
if (data.code === 0) { |
|||
this.videoList[this.videoList.length - 1].mediaid = data.data |
|||
} else { |
|||
this.videoList.pop() |
|||
this.$message.error(rspMsg) |
|||
} |
|||
}, |
|||
(rspMsg, data) => { |
|||
this.videoList.pop() |
|||
this.endLoading() |
|||
this.$message.error(rspMsg) |
|||
}) |
|||
}, |
|||
// 上传图片 |
|||
uploadPic: (params) => { |
|||
let file = params.file |
|||
let fileType = file.type |
|||
let isImage = fileType.indexOf('image') !== -1 |
|||
let fileUrl = this.$refs.uploadPic.uploadFiles[this.picList.length].url |
|||
file.url = fileUrl |
|||
this.picList.push(file) |
|||
|
|||
let isLt5M = file.size / 1024 / 1024 < 5 |
|||
if (!isLt5M) { |
|||
this.$message({ |
|||
message: '上传图片大小不能超过 5MB!', |
|||
type: 'warning' |
|||
}) |
|||
this.picList.pop() |
|||
return |
|||
} |
|||
if (!isImage) { |
|||
this.$message({ |
|||
message: '请选择图片!', |
|||
type: 'warning' |
|||
}) |
|||
this.picList.pop() |
|||
return |
|||
} |
|||
// console.log(this.picList) |
|||
|
|||
this.upload_name = 'file_img[]' |
|||
let formData = new FormData() |
|||
this.startLoading() |
|||
formData.append('type', fileType) |
|||
formData.append('media', file) |
|||
formData.append('codeId', this.codeId) |
|||
window.app.ajax.post2(this.dialogImageUrl, formData, |
|||
(data, rspMsg) => { |
|||
this.endLoading() |
|||
if (data.code === 0) { |
|||
this.picList[this.picList.length - 1].mediaid = data.data |
|||
} else { |
|||
this.picList.pop() |
|||
this.$message.error(rspMsg) |
|||
} |
|||
}, |
|||
(rspMsg, data) => { |
|||
this.picList.pop() |
|||
this.endLoading() |
|||
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' } }) |
|||
}, |
|||
// UGC场景选中0以后的事件 |
|||
scene0 (value) { |
|||
if (value) { // 选中 |
|||
this.sceneDisabled = true |
|||
this.UGCSence0() |
|||
} else { |
|||
this.sceneDisabled = false |
|||
} |
|||
}, |
|||
// UGC场景选中其他以后的事件 |
|||
sceneOther (value) { |
|||
if (value) { // 选中 |
|||
this.sceneOtherDisabled = false |
|||
} else { |
|||
this.sceneOtherDisabled = true |
|||
this.dataForm.ugcDeclare.otherSceneDesc = '' |
|||
} |
|||
}, |
|||
// 重置UGC场景数据 |
|||
resetUGC () { |
|||
this.dataForm.ugcDeclare.scene = [1, 2, 4] |
|||
this.dataForm.ugcDeclare.otherSceneDesc = '' |
|||
this.dataForm.ugcDeclare.method = [2] |
|||
this.dataForm.ugcDeclare.hasAuditTeam = 1 |
|||
this.dataForm.ugcDeclare.auditDesc = '严重色情内容、轻微色情内容、涉政负面内容、严重辱骂、涉政暴恐(恶搞领导人、特殊标识、特殊着装、枪支、利器、血腥场景)' |
|||
}, |
|||
// UGC场景选择0的初始化 |
|||
UGCSence0 () { |
|||
this.dataForm.ugcDeclare.scene = [0] |
|||
this.dataForm.ugcDeclare.otherSceneDesc = '' |
|||
this.dataForm.ugcDeclare.method = [1] |
|||
this.dataForm.ugcDeclare.hasAuditTeam = 0 |
|||
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 () { |
|||
this.resetData() |
|||
this.activeName = 'desc' |
|||
this.diaVisible = false |
|||
}, |
|||
resetData () { |
|||
this.reseatDataForm() |
|||
// 功能说明 |
|||
this.picList = [] |
|||
this.videoList = [] |
|||
|
|||
// 审核项 |
|||
this.$refs['ref_submit_item'].reseatData() |
|||
// 反馈说明 |
|||
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-left: 50px; |
|||
margin-right: 50px; |
|||
} |
|||
.el-upload__tip { |
|||
color: rgb(155, 155, 155); |
|||
} |
|||
.form { |
|||
margin-top: 30px; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,551 @@ |
|||
<template> |
|||
<div> |
|||
<div v-show="!showSubmit"> |
|||
<div> |
|||
<el-button type="default" |
|||
@click="versionCancel">返回</el-button> |
|||
<el-button type="primary" |
|||
@click="operHistoryShow">操作历史</el-button> |
|||
</div> |
|||
<el-row class="row" |
|||
:gutter="20"> |
|||
<el-col :span="8"> |
|||
<el-card> |
|||
<div slot="header" |
|||
class="clearfix"> |
|||
<span>线上版本</span> |
|||
<el-button class="btn_card" |
|||
type="text" |
|||
@click="commitCodeShow">版本回退</el-button> |
|||
</div> |
|||
<div> |
|||
<el-form :style="{height:rowHeight}" |
|||
label-position="left" |
|||
block |
|||
class="form"> |
|||
<el-form-item :label-width="labelWidth" |
|||
label="版本号"> |
|||
<span>{{ release.version }}</span> |
|||
</el-form-item> |
|||
<el-form-item :label-width="labelWidth" |
|||
label="发布时间"> |
|||
<span>{{ release.releaseTime }}</span> |
|||
</el-form-item> |
|||
<el-form-item :label-width="labelWidth" |
|||
label="发布模式"> |
|||
<span>{{ release.releaseTypeShow }}</span> |
|||
|
|||
</el-form-item> |
|||
<el-form-item v-if="release.releaseType==='step'" |
|||
:label-width="labelWidth" |
|||
label="灰度值"> |
|||
<span>{{ release.grayPercentage }}</span> |
|||
</el-form-item> |
|||
<el-form-item :label-width="labelWidth" |
|||
label="提审时间"> |
|||
<span>{{ release.auditTime }}</span> |
|||
</el-form-item> |
|||
<el-form-item :label-width="labelWidth" |
|||
label="上传时间"> |
|||
<span>{{ release.commitTime }}</span> |
|||
</el-form-item> |
|||
<el-form-item :label-width="labelWidth" |
|||
label="版本说明"> |
|||
<span>{{ release.codeInfo }}</span> |
|||
</el-form-item> |
|||
|
|||
</el-form> |
|||
</div> |
|||
|
|||
</el-card> |
|||
</el-col> |
|||
|
|||
<el-col :span="8"> |
|||
<el-card> |
|||
<div slot="header" |
|||
class="clearfix"> |
|||
<span>审核版本</span> |
|||
<el-button v-if="audit.status==='auditing'||audit.status==='delay'" |
|||
class="btn_card" |
|||
type="text" |
|||
@click="submitRecall">审核撤回</el-button> |
|||
<el-button v-if="audit.status==='auditing'||audit.status==='delay'" |
|||
class="btn_card" |
|||
type="text" |
|||
@click="speedupaudit">加急申请</el-button> |
|||
|
|||
<el-button v-if="audit.status==='audit_success'" |
|||
class="btn_card" |
|||
type="text" |
|||
@click="issueCode">发布</el-button> |
|||
|
|||
<el-button v-if="audit.status==='audit_failed'" |
|||
style="float: right; padding: 3px 0" |
|||
type="text" |
|||
@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> |
|||
</div> |
|||
<div> |
|||
<el-form :style="{height:rowHeight}" |
|||
label-position="left" |
|||
block |
|||
class="form"> |
|||
<el-form-item :label-width="labelWidth" |
|||
label="版本号"> |
|||
<span>{{ audit.version }}</span> |
|||
</el-form-item> |
|||
|
|||
<el-form-item :label-width="labelWidth" |
|||
label="提审时间"> |
|||
<span>{{ audit.auditTime }}</span> |
|||
</el-form-item> |
|||
<el-form-item :label-width="labelWidth" |
|||
label="上传时间"> |
|||
<span>{{ audit.commitTime }}</span> |
|||
</el-form-item> |
|||
<el-form-item :label-width="labelWidth" |
|||
label="审核状态"> |
|||
<span>{{ audit.statusShow }}</span> |
|||
</el-form-item> |
|||
<el-form-item :label-width="labelWidth" |
|||
label="版本说明"> |
|||
<span>{{ audit.codeInfo }}</span> |
|||
</el-form-item> |
|||
|
|||
</el-form> |
|||
</div> |
|||
</el-card> |
|||
</el-col> |
|||
|
|||
<el-col :span="8"> |
|||
<el-card> |
|||
<div slot="header" |
|||
class="clearfix"> |
|||
<span>开发版本</span> |
|||
<el-button class="btn_card" |
|||
type="text" |
|||
@click="commitCodeShow">上传代码</el-button> |
|||
<el-button class="btn_card" |
|||
type="text" |
|||
@click="QRCodeShow">二维码</el-button> |
|||
<el-button class="btn_card" |
|||
type="text" |
|||
@click="submitCodeShow">提交审核</el-button> |
|||
</div> |
|||
<div> |
|||
<el-form :style="{height:rowHeight}" |
|||
label-position="left" |
|||
block |
|||
class="form"> |
|||
<el-form-item :label-width="labelWidth" |
|||
label="版本号"> |
|||
<span>{{ audit.version }}</span> |
|||
</el-form-item> |
|||
<el-form-item :label-width="labelWidth" |
|||
label="上传时间"> |
|||
<span>{{ audit.commitTime }}</span> |
|||
</el-form-item> |
|||
<el-form-item :label-width="labelWidth" |
|||
label="版本说明"> |
|||
<span>{{ audit.codeInfo }}</span> |
|||
</el-form-item> |
|||
|
|||
</el-form> |
|||
</div> |
|||
</el-card> |
|||
|
|||
</el-col> |
|||
|
|||
</el-row> |
|||
</div> |
|||
<commit-form ref="ref_commit_form" |
|||
:optionData="optionData" |
|||
@refresh="refresh"></commit-form> |
|||
|
|||
<submit-form v-show="showSubmit" |
|||
ref="ref_submit_form" |
|||
@refresh="refresh" |
|||
@cancleSubmit="cancleSubmit"></submit-form> |
|||
|
|||
<oper-history ref="ref_oper_history"></oper-history> |
|||
|
|||
<submit-fail-reason ref="ref_submit_fail_reason"></submit-fail-reason> |
|||
|
|||
<c-dialog :showFooter="false" |
|||
:title="'二维码'" |
|||
:width="40" |
|||
:visible="qrCodeDia.visible" |
|||
@cancel="qrCodeDiaCancel"> |
|||
<div style="text-align:center"> |
|||
<el-image style="width: 300px; height: 300px" |
|||
:src="src"></el-image> |
|||
<div class="el-upload__tip">请用微信扫描二维码</div> |
|||
</div> |
|||
</c-dialog> |
|||
|
|||
<c-dialog :title="'分阶段发布'" |
|||
:width="40" |
|||
:dialogHeight="0.5" |
|||
:visible="grayreleaseDia.visible" |
|||
@cancel="grayreleaseDiaCancel" |
|||
@ok="grayreleaseOk"> |
|||
<div style="text-align:center;margin-top:40px">灰度(%): |
|||
<el-input-number v-model="grayPercentage" |
|||
:min="0" |
|||
:max="100" |
|||
label="灰度百分比"></el-input-number> |
|||
|
|||
<div class="el-upload__tip" |
|||
style="margin-top:20px">灰度的百分比 1 ~ 100 的整数,控制发布的节奏,避免一上线就影响到所有的用户</div> |
|||
</div> |
|||
</c-dialog> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import CDialog from '@c/CDialog' |
|||
import SubmitForm from './SubmitForm' |
|||
import CommitForm from './CommitForm' |
|||
import OperHistory from './OperHistory' |
|||
import SubmitFailReason from './SubmitFailReason' |
|||
import { mapGetters } from 'vuex' |
|||
import { Loading } from 'element-ui' // 引入Loading服务 |
|||
|
|||
let loading // 加载动画 |
|||
export default { |
|||
data () { |
|||
return { |
|||
loading: false, |
|||
labelWidth: '100px', |
|||
// customerId: '', // 客户id 父组件传 |
|||
// clientType: '', // 小程序类型 父组件传 |
|||
params: { |
|||
customerId: '', |
|||
clientType: '' |
|||
}, |
|||
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, |
|||
// 操作历史弹出框相关 |
|||
operDia: { |
|||
visible: false |
|||
}, |
|||
// 二维码弹出框相关 |
|||
qrCodeDia: { |
|||
visible: false |
|||
}, |
|||
src: '', |
|||
// 分阶段发布弹出框相关 |
|||
grayreleaseDia: { |
|||
visible: false |
|||
}, |
|||
grayPercentage: 50 // 灰度的百分比 1 ~ 100 的整数 |
|||
} |
|||
}, |
|||
components: { |
|||
CDialog, SubmitForm, CommitForm, OperHistory, SubmitFailReason |
|||
}, |
|||
mounted () { |
|||
|
|||
}, |
|||
computed: { |
|||
rowHeight () { |
|||
return (this.clientHeight - 270) + 'px' |
|||
}, |
|||
...mapGetters(['clientHeight']) |
|||
}, |
|||
methods: { |
|||
initData (customerId, clientType, optionData) { |
|||
this.params = { customerId, clientType } |
|||
this.optionData = optionData |
|||
|
|||
// this.customerId = customerId |
|||
// this.clientType = clientType |
|||
|
|||
this.loadData() |
|||
}, |
|||
|
|||
// 刷新 |
|||
refresh () { |
|||
this.loadData() |
|||
}, |
|||
|
|||
// 加载数据 |
|||
loadData () { |
|||
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 |
|||
// debugger |
|||
this.release = data.release |
|||
|
|||
if (this.release.releaseType === 'step') { |
|||
this.release.releaseTypeShow = '分阶段' |
|||
} else { |
|||
this.release.releaseTypeShow = '全量' |
|||
} |
|||
|
|||
this.audit = data.audit |
|||
this.audit.status = 'audit_failed' |
|||
|
|||
// 审核状态 审核中:auditing;审核成功;audit_success;审核被拒绝;audit_failed;已撤回:withdrawn;审核延后:delay |
|||
if (this.audit.status === 'auditing') { |
|||
this.audit.statusShow = '分阶段' |
|||
} else if (this.audit.status === 'audit_success') { |
|||
this.audit.statusShow = '审核成功' |
|||
} else if (this.audit.status === 'audit_failed') { |
|||
this.audit.statusShow = '审核被拒绝' |
|||
} else if (this.audit.status === 'withdrawn') { |
|||
this.audit.statusShow = '已撤回' |
|||
} else { |
|||
this.audit.statusShow = '审核延后' |
|||
} |
|||
|
|||
this.commit = data.commit |
|||
this.endLoading() |
|||
}, |
|||
(rspMsg, data) => { |
|||
this.endLoading() |
|||
this.$message.error(rspMsg) |
|||
}) |
|||
}, |
|||
|
|||
// 取消 |
|||
versionCancel () { |
|||
this.$emit('cancelVersion') |
|||
}, |
|||
|
|||
// 打开操作历史 |
|||
operHistoryShow () { |
|||
this.$refs['ref_oper_history'].initData(this.params, this.audit.codeId) |
|||
}, |
|||
// 打开上传代码窗口 |
|||
commitCodeShow (customerId) { |
|||
this.$nextTick(() => { |
|||
let dataForm = { |
|||
clientType: 'resi', |
|||
customerId: customerId |
|||
} |
|||
this.$refs['ref_commit_form'].initData(dataForm, this.optionData) |
|||
}) |
|||
}, |
|||
|
|||
// 打开体验版二维码 |
|||
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 param = { |
|||
codeId: this.commit.codeId |
|||
} |
|||
this.startLoading() |
|||
window.app.ajax.post(url, param, |
|||
(data, rspMsg) => { |
|||
// // eslint-disable-next-line |
|||
// debugger |
|||
this.endLoading() |
|||
if (data) { |
|||
// console.log(data.qrcode) |
|||
this.src = data.qrcode |
|||
} |
|||
}, |
|||
(rspMsg, data) => { |
|||
this.endLoading() |
|||
this.$message.error(rspMsg) |
|||
}, { headers: { 'Content-Type': 'image/jpeg' } }) |
|||
}, |
|||
// 打开提交审核窗口 |
|||
submitCodeShow () { |
|||
let feedbackShow = false |
|||
|
|||
this.showSubmit = true |
|||
this.$refs['ref_submit_form'].initData(this.audit.codeId, feedbackShow) |
|||
}, |
|||
// 打开提交审核窗口 |
|||
submitFailCodeShow () { |
|||
let feedbackShow = true |
|||
|
|||
this.showSubmit = true |
|||
this.$refs['ref_submit_form'].initData(this.audit.codeId, feedbackShow) |
|||
}, |
|||
|
|||
// 提交审核取消返回 |
|||
cancleSubmit () { |
|||
this.showSubmit = false |
|||
}, |
|||
|
|||
// 审核撤回 |
|||
submitRecall () { |
|||
this.$confirm('单个帐号每天审核撤回次数最多不超过 1 次,一个月不超过 10 次,确认撤回审核?', '提示', { |
|||
confirmButtonText: '确定', |
|||
cancelButtonText: '取消', |
|||
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 param = { |
|||
codeId: this.auditTime.codeId |
|||
} |
|||
window.app.ajax.post(url, param, |
|||
(data, rspMsg) => { |
|||
this.$message.success('审核撤回成功' + rspMsg) |
|||
this.refresh() |
|||
}, |
|||
(rspMsg, data) => { |
|||
this.$message.error(rspMsg) |
|||
}) |
|||
}).catch(() => { |
|||
|
|||
}) |
|||
}, |
|||
|
|||
// 发布 |
|||
issueCode () { |
|||
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 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(() => { }) |
|||
}, |
|||
// 打开审核失败原因 |
|||
submitFailReasonShow () { |
|||
this.$refs['ref_submit_fail_reason'].initData(this.audit.codeId) |
|||
}, |
|||
|
|||
// 分阶段发布 |
|||
grayrelease () { |
|||
this.selCodeId = this.release.codeId |
|||
this.grayreleaseDia.visible = true |
|||
}, |
|||
grayreleaseOk () { |
|||
// eslint-disable-next-line |
|||
// debugger |
|||
// const url = 'https://epmet-cloud.elinkservice.cn/api/third/code/grayrelease' |
|||
const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/third/code/grayrelease' |
|||
const param = { |
|||
codeId: this.selCodeId, |
|||
grayPercentage: this.grayPercentage |
|||
} |
|||
this.startLoading() |
|||
window.app.ajax.post(url, param, |
|||
(data, rspMsg) => { |
|||
this.grayreleaseDia.visible = false |
|||
|
|||
this.endLoading() |
|||
this.refresh() |
|||
if (data) { |
|||
// console.log(data.qrcode) |
|||
this.src = data.qrcode |
|||
} |
|||
}, |
|||
(rspMsg, data) => { |
|||
this.endLoading() |
|||
this.$message.error(rspMsg) |
|||
}, { headers: { 'Content-Type': 'image/jpeg' } }) |
|||
}, |
|||
// 加急申请 |
|||
speedupaudit () { |
|||
|
|||
}, |
|||
|
|||
operDiaCancel () { |
|||
this.operDia.visible = false |
|||
}, |
|||
qrCodeDiaCancel () { |
|||
this.qrCodeDia.visible = false |
|||
}, |
|||
grayreleaseDiaCancel () { |
|||
this.grayreleaseDia.visible = false |
|||
}, |
|||
// 开启加载动画 |
|||
startLoading () { |
|||
loading = Loading.service({ |
|||
lock: true, // 是否锁定 |
|||
text: '正在加载……', // 加载中需要显示的文字 |
|||
background: 'rgba(0,0,0,.7)' // 背景颜色 |
|||
}) |
|||
}, |
|||
// 结束加载动画 |
|||
endLoading () { |
|||
// clearTimeout(timer); |
|||
if (loading) { |
|||
loading.close() |
|||
} |
|||
} |
|||
}, |
|||
props: { |
|||
} |
|||
} |
|||
</script> |
|||
<style scoped > |
|||
.btn_card { |
|||
float: right; |
|||
padding: 3px 0 3px 5px; |
|||
} |
|||
.clearfix:before, |
|||
.clearfix:after { |
|||
display: table; |
|||
content: ""; |
|||
} |
|||
.clearfix:after { |
|||
clear: both; |
|||
} |
|||
.el-row { |
|||
/* margin-bottom: 20px; */ |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
margin-top: 10px; |
|||
margin-right: 50px; |
|||
} |
|||
.form { |
|||
overflow-y: auto; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,236 @@ |
|||
<!-- 客户小程序管理 --> |
|||
<template> |
|||
<div> |
|||
|
|||
<div v-show="!showVersion" |
|||
class="mod-demo__demo}"> |
|||
|
|||
<el-form :inline="true" |
|||
:model="tableParams"> |
|||
<el-form-item> |
|||
<el-select v-model="tableParams.customerId" |
|||
placeholder="客户" |
|||
clearable> |
|||
<el-option v-for="item in form.data['customerId']" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-select v-model="tableParams.clientType" |
|||
placeholder="类型" |
|||
clearable> |
|||
<el-option v-for="item in form.data['clientType']" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
|
|||
<el-form-item> |
|||
<el-button @click="loadTableData()">查询</el-button> |
|||
</el-form-item> |
|||
<!-- <el-form-item> |
|||
<el-button type="primary" |
|||
@click="commitCodeDiaShow('')">上传代码</el-button> |
|||
</el-form-item> --> |
|||
</el-form> |
|||
|
|||
<c-table column-type="index" |
|||
ref="table" |
|||
:url="tableUrl" |
|||
:params="tableParams" |
|||
keyword="MiniProManage" |
|||
:operations="operations" |
|||
:tableHeight="tableHeight" |
|||
@versionManage="versionManage"> |
|||
</c-table> |
|||
|
|||
</div> |
|||
|
|||
<version-item v-show="showVersion" |
|||
ref="ref_version_item" |
|||
@okVersion="okVersion" |
|||
@cancelVersion="cancelVersion"></version-item> |
|||
|
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import CDialog from '@c/CDialog' |
|||
import CTable from '@c/CTable' |
|||
import VersionItem from './VersionItem' |
|||
|
|||
import { mapGetters } from 'vuex' |
|||
import { Loading } from 'element-ui' // 引入Loading服务 |
|||
|
|||
let loading// 加载动画 |
|||
|
|||
export default { |
|||
data () { |
|||
return { |
|||
// 查询相关 |
|||
tableParams: { |
|||
customerId: '', // 客户 |
|||
clientType: '', // 类型 |
|||
source: this.env |
|||
}, |
|||
// 列表相关 |
|||
tableUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/uploadlist', |
|||
// 列表操作栏的操作项数组 |
|||
operations: [ |
|||
{ |
|||
lable: '版本管理', // 按钮显示名称 |
|||
size: 'mini', |
|||
style: 'margin: 0 6px;', |
|||
type: 'text', |
|||
slot: '', |
|||
plain: false, |
|||
methodName: 'versionManage', // 回调方法名称 |
|||
isShow: (row) => { |
|||
return true |
|||
} |
|||
} |
|||
], |
|||
// 版本管理相关 |
|||
showVersion: false, |
|||
|
|||
src: '', |
|||
// 查询栏下拉框数据 |
|||
form: { |
|||
dataUrl: [], // 下拉框/单选框/复选框等获取数据的url |
|||
data: { // 全部下拉框数据 |
|||
clientType: [ |
|||
{ |
|||
value: 'resi', |
|||
label: '居民端' |
|||
}, |
|||
{ |
|||
value: 'work', |
|||
label: '工作端' |
|||
} |
|||
] |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
components: { |
|||
CDialog, CTable, VersionItem |
|||
}, |
|||
activated () { |
|||
let params = this.$route.params |
|||
|
|||
// 由客户注册信息跳转来 |
|||
if (params.showCommit) { |
|||
this.form.data.customerId = params.customerList |
|||
this.commitCodeDiaShow(params.customerId) |
|||
} |
|||
this.$nextTick(() => { |
|||
this.$refs.table.doLayout() // 解决表格错位 |
|||
}) |
|||
}, |
|||
mounted () { |
|||
this.renderSelData() |
|||
this.loadTableData() |
|||
}, |
|||
computed: { |
|||
tableHeight () { |
|||
return this.clientHeight - 80 - 80 - 85 |
|||
}, |
|||
...mapGetters(['clientHeight', 'env']) |
|||
}, |
|||
methods: { |
|||
// 刷新 |
|||
refresh () { |
|||
this.loadTableData() |
|||
}, |
|||
// 加载列表数据 |
|||
loadTableData () { |
|||
this.tableParams.source = this.env |
|||
this.$nextTick(() => { |
|||
this.$refs.table.loadData() // 获取表格数据 |
|||
}) |
|||
}, |
|||
|
|||
// 显示版本管理 |
|||
versionManage (row) { |
|||
this.showVersion = true |
|||
this.$refs['ref_version_item'].initData(row.customerId, row.clientType, this.form.data) |
|||
}, |
|||
|
|||
// 显示版本确定 |
|||
okVersion () { |
|||
this.showVersion = false |
|||
this.refresh() |
|||
}, |
|||
// 显示版本取消返回 |
|||
cancelVersion () { |
|||
this.showVersion = false |
|||
}, |
|||
|
|||
async renderSelData () { // 渲染下拉框/单选框/复选框等数据 |
|||
const customerUrl = ' https://epmet-cloud.elinkservice.cn/api/third/pacustomer/registerbyauth' |
|||
const param = { |
|||
// workAuth: 1, |
|||
// resiAuth: 1, |
|||
source: this.env, |
|||
initState: 1 |
|||
} |
|||
this.startLoading() |
|||
await window.app.ajax.post(customerUrl, param, |
|||
(data, rspMsg) => { |
|||
this.endLoading() |
|||
if (data) { |
|||
let customerList = [] |
|||
|
|||
data.forEach(element => { |
|||
let oneObj = { |
|||
value: element.customerId, |
|||
label: element.customerName |
|||
} |
|||
customerList.push(oneObj) |
|||
}) |
|||
|
|||
this.form.data.customerId = customerList |
|||
this.$forceUpdate() |
|||
} |
|||
}, |
|||
(rspMsg, data) => { |
|||
this.endLoading() |
|||
this.$message.error(rspMsg) |
|||
}) |
|||
}, |
|||
// 开启加载动画 |
|||
startLoading () { |
|||
loading = Loading.service({ |
|||
lock: true, // 是否锁定 |
|||
text: '正在加载……', // 加载中需要显示的文字 |
|||
background: 'rgba(0,0,0,.7)' // 背景颜色 |
|||
}) |
|||
}, |
|||
// 结束加载动画 |
|||
endLoading () { |
|||
// clearTimeout(timer); |
|||
if (loading) { |
|||
loading.close() |
|||
} |
|||
} |
|||
}, |
|||
props: { |
|||
optionData: { |
|||
type: Object, |
|||
default () { |
|||
return {} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
<style> |
|||
.el-upload__tip { |
|||
color: rgb(155, 155, 155); |
|||
} |
|||
</style> |
|||
@ -0,0 +1,448 @@ |
|||
<template> |
|||
<div> |
|||
<c-dialog :showFooter='false' |
|||
:title="'基础信息'" |
|||
:visible="diaVisible" |
|||
:dialogHeight="1.1" |
|||
@cancel="diaCancel" |
|||
@ok="submitCode"> |
|||
|
|||
<el-tabs v-model="activeName" |
|||
@tab-click="tabClick" |
|||
class="el-tabs"> |
|||
|
|||
<el-tab-pane label="UGC信息安全声明" |
|||
name="ugc"> |
|||
<div class="el-upload__tip">当小程序第一次提交审核且类目包含社交-社区/论坛、社交-笔记、社交-问答其中之一时需填写UGC场景信息</div> |
|||
<el-form :inline="true" |
|||
:model="dataForm.ugcDeclare" |
|||
class="form"> |
|||
<el-form-item label="UGC场景" |
|||
label-width="150px" |
|||
style="display:block"> |
|||
<el-checkbox-group v-model="dataForm.ugcDeclare.scene"> |
|||
<el-checkbox @change="scene0" |
|||
:label="0">不涉及用户生成内容</el-checkbox> |
|||
<el-checkbox :label="1" |
|||
:disabled="sceneDisabled">用户资料</el-checkbox> |
|||
<el-checkbox :label="2" |
|||
:disabled="sceneDisabled">图片</el-checkbox> |
|||
<el-checkbox :label="3" |
|||
:disabled="sceneDisabled">视频</el-checkbox> |
|||
<el-checkbox :label="4" |
|||
:disabled="sceneDisabled">文本</el-checkbox> |
|||
<el-checkbox :label="5" |
|||
:disabled="sceneDisabled" |
|||
@change="sceneOther">其他</el-checkbox> |
|||
</el-checkbox-group> |
|||
</el-form-item> |
|||
<div v-if="!sceneDisabled"> |
|||
<el-form-item label="其他场景" |
|||
label-width="150px" |
|||
style="display:block"> |
|||
<el-input type="textarea" |
|||
:disabled="sceneOtherDisabled" |
|||
:autosize="{ minRows: 2, maxRows: 4}" |
|||
:rows="3" |
|||
resize="none" |
|||
style="width:500px" |
|||
placeholder='请输入其他场景' |
|||
v-model="dataForm.ugcDeclare.otherSceneDesc"> |
|||
</el-input> |
|||
<div class="el-upload__tip">当scene选其他时的说明,不超时256字</div> |
|||
</el-form-item> |
|||
<el-form-item label="内容安全机制" |
|||
label-width="150px" |
|||
style="display:block"> |
|||
<el-checkbox-group v-model="dataForm.ugcDeclare.method"> |
|||
<el-checkbox :label="1">使用平台建议的内容安全API</el-checkbox> |
|||
<el-checkbox :label="2">使用其他的内容审核产品</el-checkbox> |
|||
<el-checkbox :label="3">通过人工审核把关</el-checkbox> |
|||
<el-checkbox :label="4">未做内容审核把关</el-checkbox> |
|||
</el-checkbox-group> |
|||
<!-- <div class="el-upload__tip">1.使用平台建议的内容安全API,2.使用其他的内容审核产品,3.通过人工审核把关,4.未做内容审核把关</div> --> |
|||
</el-form-item> |
|||
<el-form-item label="是否有审核团队" |
|||
label-width="150px" |
|||
style="display:block"> |
|||
<el-radio-group v-model="dataForm.ugcDeclare.hasAuditTeam"> |
|||
<el-radio :label="0">无 </el-radio> |
|||
<el-radio :label="1">有 </el-radio> |
|||
</el-radio-group> |
|||
</el-form-item> |
|||
<el-form-item label="审核机制" |
|||
label-width="150px" |
|||
style="display:block"> |
|||
<el-input type="textarea" |
|||
:autosize="{ minRows: 2, maxRows: 4}" |
|||
:rows="3" |
|||
resize="none" |
|||
style="width:500px" |
|||
placeholder='请输入审核机制' |
|||
v-model="dataForm.ugcDeclare.auditDesc"> |
|||
</el-input> |
|||
<div class="el-upload__tip">说明当前对UGC内容的审核机制,不超过256字</div> |
|||
</el-form-item> |
|||
</div> |
|||
</el-form> |
|||
|
|||
</el-tab-pane> |
|||
|
|||
</el-tabs> |
|||
</c-dialog> |
|||
|
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import CDialog from '@c/CDialog' |
|||
import { mapGetters } from 'vuex' |
|||
import { Loading } from 'element-ui' // 引入Loading服务 |
|||
|
|||
let loading // 加载动画 |
|||
export default { |
|||
data () { |
|||
return { |
|||
loading: false, |
|||
feedbackShow: false, // 是否显示反馈信息,父组件传 |
|||
codeId: '', // 上传代码id,父组件传 |
|||
diaVisible: false, |
|||
|
|||
// tab页相关 |
|||
activeName: 'desc', |
|||
|
|||
sceneDisabled: true, // 场景是否禁用 |
|||
sceneOtherDisabled: true, // 其他场景是否禁用 |
|||
dataForm: { |
|||
versionDesc: '', // 小程序版本说明和功能解释 |
|||
|
|||
ugcDeclare: { // 用户生成内容场景(UGC)信息安全声明 |
|||
scene: [1, 2, 4], // UGC场景 0,不涉及用户生成内容, 1.用户资料,2.图片,3.视频,4.文本,5其他, 可多选,当scene填0时无需填写下列字段 |
|||
otherSceneDesc: '', // 当scene选其他时的说明,不超时256字 |
|||
method: [2], // 内容安全机制 1.使用平台建议的内容安全API,2.使用其他的内容审核产品,3.通过人工审核把关,4.未做内容审核把关 |
|||
hasAuditTeam: 1, // 是否有审核团队, 0.无,1.有,默认0 |
|||
auditDesc: '严重色情内容、轻微色情内容、涉政负面内容、严重辱骂、涉政暴恐(恶搞领导人、特殊标识、特殊着装、枪支、利器、血腥场景)' // 说明当前对UGC内容的审核机制,不超过256字 |
|||
} |
|||
}, |
|||
|
|||
// 上传素材 |
|||
dialogImageUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/mediaupload', |
|||
upload_url: '', // 上传URL |
|||
upload_name: '', // 图片或视频名称 |
|||
picList: [], // 预览列表 |
|||
videoList: [], // 预览列表 |
|||
feedbackPicList: [], // 预览列表 |
|||
|
|||
// 弹出框相关 |
|||
dialog: { |
|||
title: '', |
|||
visible: false |
|||
} |
|||
} |
|||
}, |
|||
components: { |
|||
CDialog |
|||
}, |
|||
mounted () { |
|||
}, |
|||
computed: { |
|||
tableHeight () { |
|||
return this.clientHeight * 0.56 - 100 |
|||
}, |
|||
...mapGetters(['clientHeight']) |
|||
}, |
|||
methods: { |
|||
initData (codeId, feedbackShow) { |
|||
this.codeId = codeId |
|||
this.feedbackShow = feedbackShow |
|||
this.diaVisible = true |
|||
}, |
|||
reseatDataForm () { |
|||
this.dataForm = { |
|||
isSpeed: false, // 是否加急 |
|||
versionDesc: '', // 小程序版本说明和功能解释 |
|||
|
|||
ugcDeclare: { // 用户生成内容场景(UGC)信息安全声明 |
|||
scene: [1, 2, 4], // UGC场景 0,不涉及用户生成内容, 1.用户资料,2.图片,3.视频,4.文本,5其他, 可多选,当scene填0时无需填写下列字段 |
|||
otherSceneDesc: '', // 当scene选其他时的说明,不超时256字 |
|||
method: [2], // 内容安全机制 1.使用平台建议的内容安全API,2.使用其他的内容审核产品,3.通过人工审核把关,4.未做内容审核把关 |
|||
hasAuditTeam: 1, // 是否有审核团队, 0.无,1.有,默认0 |
|||
auditDesc: '严重色情内容、轻微色情内容、涉政负面内容、严重辱骂、涉政暴恐(恶搞领导人、特殊标识、特殊着装、枪支、利器、血腥场景)' // 说明当前对UGC内容的审核机制,不超过256字 |
|||
} |
|||
} |
|||
}, |
|||
tabClick (tab) { |
|||
if (tab.name === 'item') { |
|||
this.$refs['ref_submit_item'].initData(this.codeId) |
|||
} |
|||
if (tab.name === 'ugc') { |
|||
this.scene0(false) |
|||
} |
|||
}, |
|||
removeVedio (file) { |
|||
this.videoList.splice(this.videoList.findIndex(item => item.uid === file.uid), 1) |
|||
// console.log(this.videoList) |
|||
}, |
|||
removePic (file) { |
|||
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张预览图片', |
|||
type: 'warning' |
|||
}) |
|||
}, |
|||
exceedVedio: () => { |
|||
this.$message({ |
|||
message: '最多上传2个预览视频', |
|||
type: 'warning' |
|||
}) |
|||
}, |
|||
exceedFeedbackPic: () => { |
|||
this.$message({ |
|||
message: '最多上传5张反馈图片', |
|||
type: 'warning' |
|||
}) |
|||
}, |
|||
// 上传视频 |
|||
uploadVedio: (params) => { |
|||
let file = params.file |
|||
let fileType = file.type |
|||
let isVideo = fileType.indexOf('video') !== -1 |
|||
let fileUrl = this.$refs.uploadVedio.uploadFiles[this.videoList.length].url |
|||
file.url = fileUrl |
|||
this.videoList.push(file) |
|||
|
|||
let isLt20M = file.size / 1024 / 1024 < 20 |
|||
if (!isLt20M) { |
|||
this.$message({ |
|||
message: '上传视频大小不能超过 20MB!', |
|||
type: 'warning' |
|||
}) |
|||
this.videoList.pop() |
|||
return |
|||
} |
|||
let isMP4 = file.type === 'video/mp4' |
|||
if (!isVideo || !isMP4) { |
|||
this.$message({ |
|||
message: '请选择mp4格式的视频!', |
|||
type: 'warning' |
|||
}) |
|||
this.videoList.pop() |
|||
return |
|||
} |
|||
this.startLoading() |
|||
this.upload_name = 'file_video[]' |
|||
let formData = new FormData() |
|||
|
|||
formData.append('type', fileType) |
|||
formData.append('media', file) |
|||
formData.append('codeId', this.codeId) |
|||
window.app.ajax.post2(this.dialogImageUrl, formData, |
|||
(data, rspMsg) => { |
|||
this.endLoading() |
|||
if (data.code === 0) { |
|||
this.videoList[this.videoList.length - 1].mediaid = data.data |
|||
} else { |
|||
this.videoList.pop() |
|||
this.$message.error(rspMsg) |
|||
} |
|||
}, |
|||
(rspMsg, data) => { |
|||
this.videoList.pop() |
|||
this.endLoading() |
|||
this.$message.error(rspMsg) |
|||
}) |
|||
}, |
|||
// 上传图片 |
|||
uploadPic: (params) => { |
|||
let file = params.file |
|||
let fileType = file.type |
|||
let isImage = fileType.indexOf('image') !== -1 |
|||
let fileUrl = this.$refs.uploadPic.uploadFiles[this.picList.length].url |
|||
file.url = fileUrl |
|||
this.picList.push(file) |
|||
|
|||
let isLt5M = file.size / 1024 / 1024 < 5 |
|||
if (!isLt5M) { |
|||
this.$message({ |
|||
message: '上传图片大小不能超过 5MB!', |
|||
type: 'warning' |
|||
}) |
|||
this.picList.pop() |
|||
return |
|||
} |
|||
if (!isImage) { |
|||
this.$message({ |
|||
message: '请选择图片!', |
|||
type: 'warning' |
|||
}) |
|||
this.picList.pop() |
|||
return |
|||
} |
|||
// console.log(this.picList) |
|||
|
|||
this.upload_name = 'file_img[]' |
|||
let formData = new FormData() |
|||
this.startLoading() |
|||
formData.append('type', fileType) |
|||
formData.append('media', file) |
|||
formData.append('codeId', this.codeId) |
|||
window.app.ajax.post2(this.dialogImageUrl, formData, |
|||
(data, rspMsg) => { |
|||
this.endLoading() |
|||
if (data.code === 0) { |
|||
this.picList[this.picList.length - 1].mediaid = data.data |
|||
} else { |
|||
this.picList.pop() |
|||
this.$message.error(rspMsg) |
|||
} |
|||
}, |
|||
(rspMsg, data) => { |
|||
this.picList.pop() |
|||
this.endLoading() |
|||
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' } }) |
|||
}, |
|||
// UGC场景选中0以后的事件 |
|||
scene0 (value) { |
|||
if (value) { // 选中 |
|||
this.sceneDisabled = true |
|||
this.UGCSence0() |
|||
} else { |
|||
this.sceneDisabled = false |
|||
} |
|||
}, |
|||
// UGC场景选中其他以后的事件 |
|||
sceneOther (value) { |
|||
if (value) { // 选中 |
|||
this.sceneOtherDisabled = false |
|||
} else { |
|||
this.sceneOtherDisabled = true |
|||
this.dataForm.ugcDeclare.otherSceneDesc = '' |
|||
} |
|||
}, |
|||
// 重置UGC场景数据 |
|||
resetUGC () { |
|||
this.dataForm.ugcDeclare.scene = [1, 2, 4] |
|||
this.dataForm.ugcDeclare.otherSceneDesc = '' |
|||
this.dataForm.ugcDeclare.method = [2] |
|||
this.dataForm.ugcDeclare.hasAuditTeam = 1 |
|||
this.dataForm.ugcDeclare.auditDesc = '严重色情内容、轻微色情内容、涉政负面内容、严重辱骂、涉政暴恐(恶搞领导人、特殊标识、特殊着装、枪支、利器、血腥场景)' |
|||
}, |
|||
// UGC场景选择0的初始化 |
|||
UGCSence0 () { |
|||
this.dataForm.ugcDeclare.scene = [0] |
|||
this.dataForm.ugcDeclare.otherSceneDesc = '' |
|||
this.dataForm.ugcDeclare.method = [1] |
|||
this.dataForm.ugcDeclare.hasAuditTeam = 0 |
|||
this.dataForm.ugcDeclare.auditDesc = '' |
|||
}, |
|||
submitCode () { |
|||
|
|||
}, |
|||
// 取消 |
|||
diaCancel () { |
|||
this.resetData() |
|||
this.activeName = 'desc' |
|||
this.diaVisible = false |
|||
}, |
|||
resetData () { |
|||
this.reseatDataForm() |
|||
// 功能说明 |
|||
this.picList = [] |
|||
this.videoList = [] |
|||
|
|||
// 审核项 |
|||
this.$refs['ref_submit_item'].reseatData() |
|||
// 反馈说明 |
|||
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-left: 50px; |
|||
margin-right: 50px; |
|||
} |
|||
.el-upload__tip { |
|||
color: rgb(155, 155, 155); |
|||
} |
|||
.form { |
|||
margin-top: 30px; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,346 @@ |
|||
|
|||
<!--审核项--> |
|||
<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)"> </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> |
|||
@ -0,0 +1,266 @@ |
|||
<!-- 客户小程序管理 --> |
|||
<template> |
|||
<div> |
|||
<el-card shadow="never" |
|||
class="aui-card--fill"> |
|||
<div class="mod-demo__demo}"> |
|||
|
|||
<el-form :inline="true" |
|||
:model="tableParams"> |
|||
<el-form-item> |
|||
<el-select v-model="tableParams.customerId" |
|||
placeholder="客户" |
|||
clearable> |
|||
<el-option v-for="item in form.data['customerId']" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-select v-model="tableParams.clientType" |
|||
placeholder="类型" |
|||
clearable> |
|||
<el-option v-for="item in form.data['clientType']" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
|
|||
<el-form-item> |
|||
<el-button @click="loadTableData()">查询</el-button> |
|||
</el-form-item> |
|||
<!-- <el-form-item> |
|||
<el-button type="primary" |
|||
@click="commitCodeDiaShow('')">上传代码</el-button> |
|||
</el-form-item> --> |
|||
</el-form> |
|||
|
|||
<c-table column-type="index" |
|||
ref="table" |
|||
:url="tableUrl" |
|||
:params="tableParams" |
|||
keyword="MiniProManage" |
|||
:operations="operations" |
|||
:tableHeight="tableHeight" |
|||
@setweappsupportversion="setweappsupportversion" |
|||
@getaccountbasicinfo="getaccountbasicinfo" |
|||
@getcategory="getcategory"> |
|||
</c-table> |
|||
|
|||
</div> |
|||
</el-card> |
|||
|
|||
<version ref="ref_version_form"></version> |
|||
|
|||
<basic-info ref="ref_basic_info"></basic-info> |
|||
|
|||
<category ref="ref_catefoty"></category> |
|||
|
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import CDialog from '@c/CDialog' |
|||
import CTable from '@c/CTable' |
|||
import Version from './Version' |
|||
import BasicInfo from './BasicInfo' |
|||
|
|||
import Category from './Category' |
|||
import { mapGetters } from 'vuex' |
|||
import { Loading } from 'element-ui' // 引入Loading服务 |
|||
|
|||
let loading// 加载动画 |
|||
|
|||
export default { |
|||
data () { |
|||
return { |
|||
|
|||
// 查询相关 |
|||
tableParams: { |
|||
customerId: '', // 客户 |
|||
clientType: '', // 类型 |
|||
state: '', // 代码状态 |
|||
commitDate: '', // 发布日期 |
|||
submitDate: '', // 审核日期 |
|||
source: this.env |
|||
}, |
|||
// 列表相关 |
|||
tableUrl: 'https://epmet-cloud.elinkservice.cn/api/third/code/uploadlist', |
|||
// 列表操作栏的操作项数组 |
|||
operations: [ |
|||
{ |
|||
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 |
|||
} |
|||
} |
|||
], |
|||
// 操作历史弹出框相关 |
|||
operDia: { |
|||
visible: false |
|||
}, |
|||
// 二维码弹出框相关 |
|||
qrCodeDia: { |
|||
visible: false |
|||
}, |
|||
src: '', |
|||
// 查询栏下拉框数据 |
|||
form: { |
|||
dataUrl: [], // 下拉框/单选框/复选框等获取数据的url |
|||
data: { // 全部下拉框数据 |
|||
clientType: [ |
|||
{ |
|||
value: 'resi', |
|||
label: '居民端' |
|||
}, |
|||
{ |
|||
value: 'work', |
|||
label: '工作端' |
|||
} |
|||
] |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
components: { |
|||
CDialog, Version, BasicInfo, Category, CTable |
|||
}, |
|||
activated () { |
|||
let params = this.$route.params |
|||
|
|||
// 由客户注册信息跳转来 |
|||
if (params.showCommit) { |
|||
this.form.data.customerId = params.customerList |
|||
this.commitCodeDiaShow(params.customerId) |
|||
} |
|||
this.$nextTick(() => { |
|||
this.$refs.table.doLayout() // 解决表格错位 |
|||
}) |
|||
}, |
|||
mounted () { |
|||
this.renderSelData() |
|||
this.loadTableData() |
|||
}, |
|||
computed: { |
|||
tableHeight () { |
|||
return this.clientHeight - 60 - 80 - 80 - 90 |
|||
}, |
|||
...mapGetters(['clientHeight', 'env']) |
|||
}, |
|||
methods: { |
|||
// 刷新 |
|||
refresh () { |
|||
this.loadTableData() |
|||
}, |
|||
// 加载列表数据 |
|||
loadTableData () { |
|||
this.tableParams.source = this.env |
|||
this.$nextTick(() => { |
|||
this.$refs.table.loadData() // 获取表格数据 |
|||
}) |
|||
}, |
|||
|
|||
// 设置最低基础版本库 |
|||
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' |
|||
const param = { |
|||
// workAuth: 1, |
|||
// resiAuth: 1, |
|||
source: this.env, |
|||
initState: 1 |
|||
} |
|||
this.startLoading() |
|||
await window.app.ajax.post(customerUrl, param, |
|||
(data, rspMsg) => { |
|||
this.endLoading() |
|||
if (data) { |
|||
let customerList = [] |
|||
|
|||
data.forEach(element => { |
|||
let oneObj = { |
|||
value: element.customerId, |
|||
label: element.customerName |
|||
} |
|||
customerList.push(oneObj) |
|||
}) |
|||
|
|||
this.form.data.customerId = customerList |
|||
this.$forceUpdate() |
|||
} |
|||
}, |
|||
(rspMsg, data) => { |
|||
this.endLoading() |
|||
this.$message.error(rspMsg) |
|||
}) |
|||
}, |
|||
// 开启加载动画 |
|||
startLoading () { |
|||
loading = Loading.service({ |
|||
lock: true, // 是否锁定 |
|||
text: '正在加载……', // 加载中需要显示的文字 |
|||
background: 'rgba(0,0,0,.7)' // 背景颜色 |
|||
}) |
|||
}, |
|||
// 结束加载动画 |
|||
endLoading () { |
|||
// clearTimeout(timer); |
|||
if (loading) { |
|||
loading.close() |
|||
} |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
<style> |
|||
.el-upload__tip { |
|||
color: rgb(155, 155, 155); |
|||
} |
|||
</style> |
|||
@ -0,0 +1,186 @@ |
|||
<!-- 设置基础库 --> |
|||
<template> |
|||
<div> |
|||
<c-dialog :title="'设置基础库'" |
|||
:visible="diaVisible" |
|||
@ok="supportVersion" |
|||
@cancel="diaCancel"> |
|||
<el-card shadow="never" |
|||
class="aui-card--fill"> |
|||
<div class="d_now">当前版本:{{nowVersion}}</div> |
|||
|
|||
<div class="mod-demo__demo}"> |
|||
|
|||
<el-table id="out-table" |
|||
ref="table_category" |
|||
:header-cell-style="{color:'#000'}" |
|||
:data="tableData" |
|||
style="width: 1000px" |
|||
border> |
|||
<el-table-column label="" |
|||
width="35" |
|||
center> |
|||
<template slot-scope="scope"> |
|||
<el-radio :label="scope.row.version" |
|||
v-model="templateRadio" |
|||
@change.native="getRadioRow(scope.$index,scope.row)"> </el-radio> |
|||
</template> |
|||
</el-table-column> |
|||
|
|||
<el-table-column prop="version" |
|||
label="版本号" |
|||
min-width="100" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column prop="percentage" |
|||
label="占比" |
|||
min-width="100" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
</el-table> |
|||
|
|||
</div> |
|||
</el-card> |
|||
</c-dialog> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
/* eslint-disable */ |
|||
import CTable from '@c/CTableNoPage' |
|||
import CDialog from '@c/CDialog' |
|||
import { mapGetters } from 'vuex' |
|||
import { Loading } from 'element-ui' // 引入Loading服务 |
|||
|
|||
let loading // 加载动画 |
|||
export default { |
|||
data () { |
|||
return { |
|||
customerId: '', |
|||
clientType: '', |
|||
tableData: [], |
|||
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 |
|||
|
|||
} |
|||
}, |
|||
components: { |
|||
CTable, CDialog |
|||
}, |
|||
mounted () { |
|||
}, |
|||
computed: { |
|||
tableHeight () { |
|||
return this.clientHeight - 60 - 80 - 80 - 50 - 400 |
|||
}, |
|||
...mapGetters(['clientHeight']) |
|||
}, |
|||
props: {}, |
|||
methods: { |
|||
// eslint-disable-next-line |
|||
initData (customerId, clientType) { |
|||
this.diaVisible = true |
|||
this.customerId = customerId |
|||
this.clientType = clientType |
|||
|
|||
this.$nextTick(() => { |
|||
this.loadData() |
|||
}) |
|||
}, |
|||
// 获取列表数据 |
|||
loadData () { |
|||
|
|||
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 param = { |
|||
customerId: this.customerId, |
|||
clientType: this.clientType |
|||
} |
|||
window.app.ajax.post(url, param, |
|||
(data, rspMsg) => { |
|||
this.endLoading() |
|||
this.nowVersion = data.newVersion |
|||
|
|||
this.tableData = data.uvInfo |
|||
}, |
|||
(rspMsg, data) => { |
|||
this.endLoading() |
|||
this.$message.error(rspMsg) |
|||
}) |
|||
}, |
|||
|
|||
getRadioRow (row) { |
|||
this.selVersion = row.version |
|||
}, |
|||
resetData () { |
|||
this.selVersion = '' |
|||
}, |
|||
supportVersion () { |
|||
if (this.selVersion === '') { |
|||
this.$message.warning('请选择版本') |
|||
return |
|||
} |
|||
// const url = 'https://epmet-cloud.elinkservice.cn/api/third/pacustomer/setweappsupportversion' |
|||
const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/third/pacustomer/setweappsupportversion' |
|||
this.startLoading() |
|||
let params = { |
|||
customerId: this.customerId, |
|||
clientType: this.clientType, |
|||
version: this.selVersion |
|||
} |
|||
|
|||
window.app.ajax.post(url, params, |
|||
(data, rspMsg) => { |
|||
this.endLoading() |
|||
this.$message.success('设置成功') |
|||
this.diaCancel() |
|||
}, |
|||
(rspMsg, data) => { |
|||
this.endLoading() |
|||
this.$message.error(rspMsg) |
|||
}) |
|||
|
|||
|
|||
}, |
|||
diaCancel () { |
|||
this.resetData() |
|||
this.diaVisible = false |
|||
}, |
|||
// 开启加载动画 |
|||
startLoading () { |
|||
loading = Loading.service({ |
|||
lock: true, // 是否锁定 |
|||
text: '正在加载……', // 加载中需要显示的文字 |
|||
background: 'rgba(0,0,0,.7)' // 背景颜色 |
|||
}) |
|||
}, |
|||
// 结束加载动画 |
|||
endLoading () { |
|||
// clearTimeout(timer); |
|||
if (loading) { |
|||
loading.close() |
|||
} |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
<style scoped> |
|||
.d_now { |
|||
margin: 0 0 20px 5px; |
|||
} |
|||
</style> |
|||
Loading…
Reference in new issue