Browse Source

上传素材

master
jiangyuying 5 years ago
parent
commit
23ebfe5d08
  1. 45
      epmet-oper-web/src/js/columns/code/commitCode.js
  2. 2
      epmet-oper-web/src/main.js
  3. 4
      epmet-oper-web/src/router/index.js
  4. 4
      epmet-oper-web/src/views/components/CForm.vue
  5. 16
      epmet-oper-web/src/views/components/CTable.vue
  6. 43
      epmet-oper-web/src/views/modules/code/CommitForm.vue
  7. 74
      epmet-oper-web/src/views/modules/code/CommitList.vue
  8. 300
      epmet-oper-web/src/views/modules/code/SubmitForm.vue

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

@ -10,8 +10,8 @@ export default {
trigger: 'blur'
}],
display: ['formA', 'formU', 'table', 'model'],
fixed: true,
block: true,
fixed: false,
block: false,
width: 120
},
{
@ -24,9 +24,9 @@ export default {
trigger: 'blur'
}],
display: ['formA', 'formU', 'table', 'model'],
fixed: true,
block: true,
width: 120,
fixed: false,
block: false,
width: 80,
format: function (cellValue, index) {
if (cellValue === 'resi') {
return '居民端'
@ -47,7 +47,7 @@ export default {
trigger: 'blur'
}],
display: ['formA', 'formU', 'table', 'model'],
fixed: true,
fixed: false,
block: true,
width: 120
},
@ -61,9 +61,9 @@ export default {
trigger: 'blur'
}],
display: ['formA', 'formU', 'table', 'model'],
fixed: true,
fixed: false,
block: true,
width: 120
width: 80
},
{
key: 'codeInfo',
@ -88,6 +88,7 @@ export default {
}],
display: ['formA', 'formU', 'table', 'model'],
block: true,
width: 80,
format: function (cellValue, index) {
// 状态 未审核:unaudited;审核中:auditing;审核成功:audit_success;审核被拒绝:audit_failed;已撤回:withdrawn;审核延后:delay;
// 发布成功:release_success;发布失败:release_failed
@ -149,7 +150,7 @@ export default {
}],
display: ['formA', 'formU', 'table', 'model'],
fixed: true,
block: true,
block: false,
width: 100
},
{
@ -163,7 +164,7 @@ export default {
}],
display: ['formA', 'formU', 'table', 'model'],
fixed: true,
block: true,
block: false,
width: 100
},
{
@ -177,7 +178,7 @@ export default {
}],
display: ['formA', 'formU', 'table', 'model'],
fixed: true,
block: true,
block: false,
width: 100
},
{
@ -189,9 +190,29 @@ export default {
message: '请输入代码描述',
trigger: 'blur'
}],
option: {
},
display: ['formA', 'formU', 'model'],
block: true,
block: false,
width: 120
},
{
key: 'extJson',
title: '小程序配置',
type: 'textarea',
rule: [{
required: true,
message: '请输入小程序配置',
trigger: 'blur'
}],
option: {
minRows: 5,
maxRows: 8,
rows: 6
},
display: ['formA', 'formU', 'model'],
block: false
}
]
}

2
epmet-oper-web/src/main.js

@ -1,5 +1,6 @@
import Vue from 'vue'
import Element from 'element-ui'
import App from '@/App'
import i18n from '@/i18n'
import router from '@/router'
@ -41,6 +42,7 @@ Vue.use(renProcessMultiple)
Vue.use(renProcessStart)
Vue.use(renProcessRunning)
Vue.use(renProcessDetail)
Vue.use(Element)
Vue.use(Element, {
size: 'default',

4
epmet-oper-web/src/router/index.js

@ -86,10 +86,8 @@ router.beforeEach((to, from, next) => {
}).catch(() => { })
// 获取菜单列表, 添加并全局变量保存
http.get('/oper/access/menu/nav').then(({ data: res }) => {
// eslint-disable-next-line
debugger
if (res.code !== 0) {
Vue.prototype.$message.error(res.msg)
// Vue.prototype.$message.error(res.msg)
return next({ name: 'login' })
}
window.SITE_CONFIG['menuList'] = res.data

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

@ -241,8 +241,8 @@
<el-input v-else-if="column.type === 'textarea'"
v-show="column.showFlag==='1' ? column.show : true"
type="textarea"
:autosize="{ minRows: 2, maxRows: 4}"
:rows="3"
:autosize="{ minRows: column.option.minRows ? column.option.minRows : 2, maxRows: column.option.maxRows ? column.option.maxRows : 4}"
:rows=" column.option.rows ? column.option.rows : 3"
:disabled="column.disabled?column.disabled:false"
:readonly="column.readonly?column.readonly:false"
resize="none"

16
epmet-oper-web/src/views/components/CTable.vue

@ -64,6 +64,7 @@
<el-table-column v-if="operations.length && operations.length > 0"
label="操作"
fixed="right"
:min-width="operationWidth"
header-align="center"
class="operate">
<template slot-scope="scope">
@ -182,13 +183,14 @@ export default {
computed: {
//
operationWidth: function () {
if (this.operations.includes('add')) {
return (this.operations.length - 1) * 80 // add
} else if (this.operations.includes('analyze')) {
return (this.operations.length + 0.5) * 80 // analyze
} else {
return this.operations.length * 80
}
return 120
// if (this.operations.includes('add')) {
// return (this.operations.length - 1) * 80 // add
// } else if (this.operations.includes('analyze')) {
// return (this.operations.length + 0.5) * 80 // analyze
// } else {
// return this.operations.length * 140
// }
},
tableSize () {
if (this.resolution === 'small') {

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

@ -8,16 +8,37 @@
:itemWidth="'400px'"
:method="tempForm.method"
:option-data="optionData"></c-form>
<el-form :inline="true"
:model="dataForm">
<el-form-item label="版本功能说明"
prop="versionDesc"
label-width="150px"
style="display:block">
<el-input type="textarea"
:autosize="{ minRows: 2, maxRows: 4}"
:rows="3"
resize="none"
style="width:300px"
placeholder='请输入版本功能说明'
v-model="dataForm.versionDesc">
</el-input>
<el-button type="text"
size="small"
@click="submitCode(scope.row.id)">移除</el-button>
</el-form-item>
</el-form>
<div class="mod-demo__demo}">
<c-table column-type="index"
<c-table column-type="radio"
:pageVisible="true"
ref="table"
:url="tableUrl"
:params="tableParams"
keyword="Temp"
:operations="operations"
:tableHeight="tableHeight"
@selTemp="selTemp">
</c-table>
@ -63,15 +84,15 @@ export default {
},
//
operations: [
{
lable: '选择', //
size: 'mini',
style: 'margin: 0 6px;',
type: 'text',
slot: '',
plain: false,
methodName: 'selTemp' //
}
// {
// lable: '', //
// size: 'mini',
// style: 'margin: 0 6px;',
// type: 'text',
// slot: '',
// plain: false,
// methodName: 'selTemp' //
// }
],
//
dialog: {

74
epmet-oper-web/src/views/modules/code/CommitList.vue

@ -97,7 +97,8 @@
:visible="submitDia.visible"
:dialogHeight="1.1"
@cancel="submitDiaCancel">
<submit-form ref="ref_submit_form"></submit-form>
<submit-form ref="ref_submit_form"
:feedbackShow="feedbackShow"></submit-form>
</c-dialog>
<c-dialog :showFooter="false"
@ -106,6 +107,13 @@
@cancel="operDiaCancel">
<oper-history ref="ref_oper_history"></oper-history>
</c-dialog>
<c-dialog :showFooter="false"
:title="'二维码'"
:visible="operDia.visible"
@cancel="operDiaCancel">
<oper-history ref="ref_oper_history"></oper-history>
</c-dialog>
</div>
</template>
@ -142,11 +150,12 @@ export default {
plain: false,
methodName: 'submitCode', //
isShow: function (row) {
if (row.status === 'unaudited' || row.status === 'audit_failed' || row.status === 'withdrawn') {
return true
} else {
return false
}
return true
// if (row.status === 'unaudited' || row.status === 'audit_failed' || row.status === 'withdrawn') {
// return true
// } else {
// return false
// }
}
},
{
@ -158,11 +167,12 @@ export default {
plain: false,
methodName: 'showQRCode', //
isShow: function (row) {
if (row.status === 'unaudited') {
return true
} else {
return false
}
return true
// if (row.status === 'unaudited') {
// return true
// } else {
// return false
// }
}
},
{
@ -174,11 +184,12 @@ export default {
plain: false,
methodName: 'submitRecall', //
isShow: function (row) {
if (row.status === 'auditing') {
return true
} else {
return false
}
return true
// if (row.status === 'auditing') {
// return true
// } else {
// return false
// }
}
},
{
@ -190,11 +201,12 @@ export default {
plain: false,
methodName: 'issueCode', //
isShow: function (row) {
if (row.status === 'audit_success' || row.status === 'release_failed') {
return true
} else {
return false
}
return true
// if (row.status === 'audit_success' || row.status === 'release_failed') {
// return true
// } else {
// return false
// }
}
},
{
@ -206,11 +218,12 @@ export default {
plain: false,
methodName: 'submitFailReason', //
isShow: function (row) {
if (row.status === 'audit_failed') {
return true
} else {
return false
}
return true
// if (row.status === 'audit_failed') {
// return true
// } else {
// return false
// }
}
},
{
@ -231,6 +244,7 @@ export default {
},
optionData: Object,
//
feedbackShow: false,
submitDia: {
title: '',
visible: false
@ -321,7 +335,7 @@ export default {
},
computed: {
tableHeight () {
return this.clientHeight - 60 - 80 - 80 - 50
return this.clientHeight - 60 - 80 - 80 - 85
},
...mapGetters(['clientHeight'])
},
@ -340,7 +354,11 @@ export default {
this.commitDia.visible = true
},
//
submitCode (id) {
submitCode (row) {
// if (row.status === 'audit_failed') {
this.feedbackShow = true
// }
this.submitDia.title = '提交审核'
this.submitDia.visible = true
},

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

@ -7,7 +7,7 @@
:model="dataForm"
@keyup.enter.native="getDataList()">
<el-form-item label="版本功能说明"
prop="版本功能说明"
prop="versionDesc"
label-width="150px"
style="display:block">
<el-input type="textarea"
@ -18,17 +18,82 @@
placeholder='请输入版本功能说明'
v-model="dataForm.versionDesc">
</el-input>
<div class="el-upload__tip">小程序版本说明和功能解释</div>
</el-form-item>
<!-- <el-form-item>
<el-input v-model="model[column.key]"
:readonly="column.readonly?column.readonly:false"
:disabled="column.disabled?column.disabled:false"
:placeholder="column.placeholder?column.placeholder:column.title"
:style="{width:column.itemWidth?column.itemWidth:itemWidth}"
clearable>
<el-form-item label="预览图片"
label-width="150px"
style="display:block">
<el-upload class="avatar-uploader"
ref="upload"
:action="upload_url"
list-type="picture-card"
:name="upload_name"
:on-remove="handleRemove"
:on-exceed="handleExceed"
:file-list="ad_url_list"
:limit="3"
:http-request="uploadPic">
<span class="font-14">选择图片</span>
<div slot="tip"
class="el-upload__tip">小程序页面截图最多3张每张大小2M以内</div>
</el-upload>
</el-form-item>
<el-form-item label="预览视频"
label-width="150px"
style="display:block">
<el-upload class="avatar-uploader"
ref="upload"
:action="upload_url"
:name="upload_name"
:on-remove="handleRemove"
:on-exceed="handleExceed"
:file-list="ad_url_list"
:limit="1"
:http-request="uploadVedio">
<el-button size="small"
type="primary">选择视频</el-button>
<div slot="tip"
class="el-upload__tip">小程序操作录屏大小2M以内MP4格式</div>
</el-upload>
</el-form-item>
<el-form-item v-if="feedbackShow"
label="反馈内容"
prop="feedbackInfo"
label-width="150px"
style="display:block">
<el-input type="textarea"
:autosize="{ minRows: 2, maxRows: 4}"
:rows="3"
resize="none"
style="width:300px"
placeholder='请输入反馈内容'
v-model="dataForm.feedbackInfo">
</el-input>
</el-form-item> -->
<div slot="tip"
class="el-upload__tip">反馈内容至多200字只有上个版本被驳回才可填写</div>
</el-form-item>
<el-form-item v-if="feedbackShow"
label="反馈图片"
label-width="150px"
style="display:block">
<el-upload class="avatar-uploader"
ref="upload"
:action="upload_url"
list-type="picture-card"
:name="upload_name"
:on-remove="handleRemove"
:on-exceed="handleExceed"
:file-list="ad_url_list"
:limit="3"
:http-request="uploadPic">
<span class="font-14">选择图片</span>
<div slot="tip"
class="el-upload__tip">大小2M以内</div>
</el-upload>
</el-form-item>
</el-form>
<div>
@ -40,7 +105,6 @@
ref="table"
:header-cell-style="{color:'#000'}"
:data="tableData"
:height="tableHeight"
:style="{width: '100%'}"
border
v-loading="loading"
@ -121,70 +185,39 @@
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
import CDialog from '@c/CDialog'
import CommitForm from './CommitForm'
import { mapGetters } from 'vuex'
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/demo/demo/page',
getDataListIsPage: true,
deleteURL: '/demo/demo',
deleteIsBatch: true,
exportURL: '/demo/demo/export'
},
loading: false,
dataForm: {
versionDesc: '', //
state: '', //
commitDate: '', //
submitDate: '' //
previewInfo: { //
videoIdList: [],
picIdList: []
},
feedbackInfo: '', //
feedbackStuff: '', //
ugcDeclare: [] // UGC
},
previewPicArray: [],
previewVedioArray: [],
//
dialogImageUrl: '',
dialogVisible: false,
disabled: false,
upload_url: '', // URL
upload_name: '', //
ad_url: '', // URL
ad_url_list: [], //
//
dialog: {
title: '',
visible: false
},
//
optionData:
{
client: [
{
value: '01',
label: '市北区'
},
{
value: '02',
label: '市南区'
}
],
state: [
{
value: '01',
label: '提交未审核'
},
{
value: '02',
label: '审核中'
},
{
value: '03',
label: '审核成功'
},
{
value: '04',
label: '审核失败'
},
{
value: '05',
label: '已发布'
}
]
},
//
tableData: [
@ -218,7 +251,6 @@ export default {
CDialog, CommitForm
},
mounted () {
},
computed: {
tableHeight () {
@ -227,6 +259,128 @@ export default {
...mapGetters(['clientHeight'])
},
methods: {
handleExceed: function () {
this.$message({
message: '请先删除选择的图片或视频,再上传',
type: 'warning'
})
},
handleRemove: function (res, file) {
let self = this
self.ad_url = ''
},
//
uploadVedio: function (params) {
// eslint-disable-next-line
debugger
let self = this
let file = params.file
let fileType = file.type
let isVideo = fileType.indexOf('video') !== -1
let fileUrl = self.$refs.upload.uploadFiles[0].url
let isLt2M = file.size / 1024 / 1024 < 2
if (!isLt2M) {
this.$message({
message: '上传视频大小不能超过 2MB!',
type: 'error'
})
self.$refs.upload.uploadFiles = []
return
}
if (!isVideo) {
this.$message({
message: '请选择视频!',
type: 'error'
})
self.$refs.upload.uploadFiles = []
return
}
let isMP4 = file.type === 'video/mp4'
if (!isMP4) {
this.$message({
message: '上传视频只支持 mp4 格式!',
type: 'error'
})
self.$refs.upload.uploadFiles = []
return
}
let videoDiv = document.createElement('video')
videoDiv.src = fileUrl
videoDiv.onloadeddata = function (event) {
//
self.upload_url = '你的视频上传URL'
self.upload_name = 'file_video[]'
self.uploadFile(file, isVideo, videoDiv)
}
},
//
uploadPic: function (params) {
// eslint-disable-next-line
debugger
let self = this
let file = params.file
let fileType = file.type
let isImage = fileType.indexOf('image') !== -1
let fileUrl = self.$refs.upload.uploadFiles[0].url
let isLt2M = file.size / 1024 / 1024 < 2
if (!isLt2M) {
this.$message({
message: '上传图片大小不能超过 2MB!',
type: 'error'
})
self.$refs.upload.uploadFiles = []
return
}
if (!isImage) {
this.$message({
message: '请选择图片!',
type: 'error'
})
self.$refs.upload.uploadFiles = []
return
}
let img = new Image()
img.src = fileUrl
img.onload = function () {
//
self.upload_url = '你的图片上传URL'
self.upload_name = 'file_img[]'
self.uploadFile(file, '', '')
}
},
uploadFile: function (file, isVideo, videoDiv) {
let self = this
let formData = new FormData()
formData.append(self.upload_name, file)
// axios.post(self.upload_url, formData, { headers: { 'Content-Type': 'multipart/form-data' } })
// .then(function (res) {
// if (res.result === '0000') {
// self.ad_url = res.data[0]
// // video
// if (isVideo) {
// let liItem = document.getElementsByClassName('el-upload-list__item')[0]
// videoDiv.style.width = '278px'
// videoDiv.style.height = '415px'
// liItem.prepend(videoDiv)
// }
// return
// }
// this.$message({
// message: '',
// type: 'error'
// })
// self.$refs.upload.uploadFiles = []
// })
// .catch(function (err) {
// console.error(err)
// })
},
//
commitCode (id) {
this.dialog.title = '上传代码'
@ -239,14 +393,6 @@ export default {
//
submitRecall (id) {
},
//
showQRCode (id) {
},
//
issueCode (id) {
},
//
submitFailReason (id) {
@ -257,17 +403,17 @@ export default {
this.dialog.visible = false
}
},
props: {
feedbackShow: {
type: Boolean,
default: false
}
}
}
</script>
<style scoped>
.row_submit {
float: left;
flex: 1;
width: 100%;
height: 35px;
margin-top: 10px;
margin-bottom: 20px;
text-align: center;
<style scoped >
.el-upload__tip {
color: rgb(155, 155, 155);
}
</style>

Loading…
Cancel
Save