Browse Source

客户管理

master
jiangyuying 5 years ago
parent
commit
1b29654d0f
  1. 4
      epmet-oper-web/.env.development
  2. 4
      epmet-oper-web/public/index.html
  3. 26
      epmet-oper-web/src/js/ajax.js
  4. 16
      epmet-oper-web/src/js/columns/code/commitCode.js
  5. 135
      epmet-oper-web/src/views/modules/code/CommitForm.vue
  6. 136
      epmet-oper-web/src/views/modules/code/CommitList.vue
  7. 60
      epmet-oper-web/src/views/modules/code/OperHistory.vue
  8. 708
      epmet-oper-web/src/views/modules/code/SubmitForm.vue
  9. 2
      epmet-oper-web/src/views/modules/customer-manage/customer-manage.vue

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.98:8080/api
# VUE_APP_API_SERVER = https://epmet-dev.elinkservice.cn/api
VUE_APP_NODE_ENV=dev

4
epmet-oper-web/public/index.html

@ -33,8 +33,8 @@
<!-- 开发环境 -->
<% if (process.env.VUE_APP_NODE_ENV === 'dev') { %>
<script>window.SITE_CONFIG['apiURL'] = 'http://10.10.10.98:8080/api';</script>
<!-- <script>window.SITE_CONFIG['apiURL'] = 'http://192.168.1.130:8080/api';</script> -->
<!-- <script>window.SITE_CONFIG['apiURL'] = 'http://10.10.10.98:8080/api';</script> -->
<script>window.SITE_CONFIG['apiURL'] = 'http://192.168.1.130:8080/api';</script>
<!-- <script>window.SITE_CONFIG['apiURL'] = 'http://localhost:8080/api';</script> -->
<% } %>
<!-- 集成测试环境 dev -->

26
epmet-oper-web/src/js/ajax.js

@ -251,11 +251,11 @@ export default {
if (data.code == 0) {
//业务成功
if (typeof cb_su === 'function') {
cb_su(data.data, data.msg)
cb_su(data.data, data.msg + ":" + data.internalMsg)
}
} else {
//业务失败
if (typeof cb_err === 'function') cb_err(data.msg, data.data)
if (typeof cb_err === 'function') cb_err(data.msg + ":" + data.internalMsg, data.data)
}
} else {
if (typeof cb_err === 'function') cb_err(res)
@ -270,7 +270,13 @@ export default {
}
})
},
post2 (url, data, cb_su, cb_err) {
post2 (url, data, cb_su, cb_err, headers) {
var h = {}
if (headers && JSON.stringify(headers) != '{}') {
h = {
headers,
}
}
//var data = qs.stringify(paramas);
axios
.post(processUrl(url), data)
@ -278,20 +284,12 @@ export default {
if (res) {
if (res.status === 200) {
var data = res.data
if (data.sysresultcode === 'success') {
//业务成功
if (typeof cb_su === 'function') {
cb_su(data.data, data.rspMsg)
}
} else if (data.sysresultcode === 'fail') {
//业务失败
if (typeof cb_err === 'function') cb_err(data.rspMsg, data.data)
}
cb_su(data, data.msg + ":" + data.internalMsg)
} else {
if (typeof cb_err === 'function') cb_err(res)
if (typeof cb_err === 'function') cb_err(data.msg + ":" + data.internalMsg, data)
}
} else {
if (typeof cb_err === 'function') cb_err(res)
if (typeof cb_err === 'function') cb_err(data.msg + ":" + data.internalMsg, data)
}
})
.catch((err) => {

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

@ -140,12 +140,12 @@ export default {
],
form: [
{
key: 'customerId',
title: '客户',
type: 'select',
key: 'clientType',
title: '类型',
type: 'radio',
rule: [{
required: true,
message: '请选择客户',
message: '请选择类型',
trigger: 'blur'
}],
display: ['formA', 'formU', 'table', 'model'],
@ -154,12 +154,12 @@ export default {
width: 100
},
{
key: 'clientType',
title: '类型',
type: 'radio',
key: 'customerId',
title: '客户',
type: 'select',
rule: [{
required: true,
message: '请选择类型',
message: '请选择客户',
trigger: 'blur'
}],
display: ['formA', 'formU', 'table', 'model'],

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

@ -1,59 +1,68 @@
<template>
<div>
<el-card shadow="never"
class="aui-card--fill">
<c-form ref="ref_form_temp"
keyword="CommitCodeForm"
:formWidth="'100%'"
:itemWidth="'400px'"
:method="tempForm.method"
:option-data="optionData"></c-form>
<c-dialog :title="'上传代码'"
:visible="diaVisible"
@ok="commitCode"
@cancel="diaCancel">
<el-card shadow="never"
class="aui-card--fill">
<c-form ref="ref_form_temp"
keyword="CommitCodeForm"
:formWidth="'100%'"
:itemWidth="'300px'"
: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:5, maxRows: 8}"
:rows="6"
resize="none"
style="width:300px"
placeholder='请输入小程序配置'
v-model="extJson.json">
</el-input>
<el-button type="primary"
style="margin-left:10px"
size="small"
@click="getExtJson">获取配置</el-button>
<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-item>
</el-form>
<div class="mod-demo__demo}">
</el-form>
<div class="mod-demo__demo}">
<c-table column-type="radio"
:pageVisible="true"
ref="table"
:url="tableUrl"
:params="tableParams"
keyword="Temp"
:operations="operations"
@selectRadioRow="selectRadioRow">
</c-table>
<c-table column-type="radio"
:pageVisible="true"
ref="table"
:url="tableUrl"
:params="tableParams"
keyword="Temp"
:operations="operations"
@selectRadioRow="selectRadioRow">
</c-table>
</div>
</el-card>
</div>
</el-card>
</c-dialog>
</div>
</template>
<script>
/* eslint-disable */
import CTable from '@c/CTableNoPage'
import CDialog from '@c/CDialog'
import CForm from '@c/CForm'
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui'//Loading
let loading//
export default {
data () {
return {
@ -92,14 +101,12 @@ export default {
operations: [
],
//
dialog: {
title: '',
visible: false
}
diaVisible: false
}
},
components: {
CTable, CForm
CTable, CForm, CDialog
},
mounted () {
},
@ -120,7 +127,7 @@ export default {
methods: {
// eslint-disable-next-line
initData (dataForm) {
console.log(this.optionData);
this.diaVisible = true
if (!dataForm) {
dataForm = {
customerId: '',
@ -131,11 +138,11 @@ export default {
this.$nextTick(() => {
this.$refs['ref_form_temp'].assign(dataForm)
this.loadData()
this.loadTableData()
})
},
//
loadData () {
loadTableData () {
this.$nextTick(() => {
this.$refs.table.loadData() //
})
@ -147,6 +154,7 @@ export default {
this.$message.warning('请选择客户')
return false
}
this.startLoading()
const url = '/third/code/getextjson'
const param = {
customerId: _data.customerId,
@ -154,11 +162,13 @@ export default {
}
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)
})
},
@ -181,22 +191,45 @@ export default {
this.$message.warning('请选择模板')
return
}
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,
window.app.ajax.post2(this.tempForm.commitUrl, _data,
(data, rspMsg) => {
this.endLoading()
this.$message.success('上传成功')
this.$emit('commitConfirm')
this.diaCancel()
this.$emit('refresh')
},
(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()
}
}
}
}

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

@ -6,7 +6,7 @@
<el-form :inline="true"
:model="tableParams"
@keyup.enter.native="loadData()">
@keyup.enter.native="loadTableData()">
<el-form-item>
<el-select v-model="tableParams.customerId"
placeholder="客户">
@ -59,7 +59,7 @@
</el-date-picker>
</el-form-item> -->
<el-form-item>
<el-button @click="loadData()">查询</el-button>
<el-button @click="loadTableData()">查询</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary"
@ -74,40 +74,25 @@
keyword="CommitCodeList"
:operations="operations"
:tableHeight="tableHeight"
@submitCode="submitCode"
@submitCodeDiaShow="submitCodeDiaShow"
@showQRCode="showQRCode"
@submitRecall="submitRecall"
@issueCode="issueCode"
@submitFailReason="submitFailReason"
@operHistory="operHistory">
</c-table>
-
</div>
</el-card>
<c-dialog :title="'上传代码'"
:visible="commitDia.visible"
@ok="commitCode"
@cancel="commitDiaCancel">
<commit-form ref="ref_commit_form"
:optionData="optionData"
@commitConfirm="commitConfirm"></commit-form>
</c-dialog>
<c-dialog :title="'提交审核'"
:visible="submitDia.visible"
:dialogHeight="1.1"
@cancel="submitDiaCancel">
<submit-form ref="ref_submit_form"
:codeId="selCodeId"
:feedbackShow="feedbackShow"></submit-form>
</c-dialog>
<commit-form ref="ref_commit_form"
:optionData="form.data"
@refresh="refresh"></commit-form>
<c-dialog :showFooter="false"
:title="'操作历史'"
:visible="operDia.visible"
@cancel="operDiaCancel">
<oper-history ref="ref_oper_history"></oper-history>
</c-dialog>
<submit-form ref="ref_submit_form"
@refresh="refresh"></submit-form>
<oper-history ref="ref_oper_history"></oper-history>
<c-dialog :showFooter="false"
:title="'二维码'"
@ -134,7 +119,7 @@ export default {
data () {
return {
loading: false,
selCodeId: '', // id
//
tableParams: {
customerId: '', //
@ -155,7 +140,7 @@ export default {
type: 'text',
slot: '',
plain: false,
methodName: 'submitCode', //
methodName: 'submitCodeDiaShow', //
isShow: function (row) {
return true
// if (row.status === 'unaudited' || row.status === 'audit_failed' || row.status === 'withdrawn') {
@ -244,16 +229,6 @@ export default {
isShow: 'show'
}
],
//
commitDia: {
visible: false
},
optionData: Object,
//
feedbackShow: false,
submitDia: {
visible: false
},
//
operDia: {
visible: false
@ -331,7 +306,7 @@ export default {
},
mounted () {
this.renderSelData()
this.loadData()
this.loadTableData()
},
computed: {
tableHeight () {
@ -340,17 +315,18 @@ export default {
...mapGetters(['clientHeight'])
},
methods: {
//
refresh () {
this.loadTableData()
},
//
loadData () {
loadTableData () {
this.$nextTick(() => {
this.$refs.table.loadData() //
})
},
//
commitCodeDiaShow (customerId) {
// this.form.data['customerId'] = this.form.data['client']
this.optionData = this.form.data
this.commitDia.visible = true
this.$nextTick(() => {
let dataForm = {
clientType: 'resi',
@ -359,25 +335,29 @@ export default {
this.$refs['ref_commit_form'].initData(dataForm)
})
},
//
async commitCode () {
//
await this.$refs['ref_commit_form'].commitCode()
},
//
submitCode (row) {
this.selCodeId = row.id
submitCodeDiaShow (row) {
let feedbackShow = false
// if (row.status === 'audit_failed') {
this.feedbackShow = true
feedbackShow = true
// }
this.submitDia.visible = true
},
submitDiaCancel () {
this.submitDia.visible = false
this.$refs['ref_submit_form'].initData(row.id, feedbackShow)
},
//
submitRecall (id) {
//
submitRecall (row) {
const url = '/third/code/undo'
const param = {
codeId: row.id
}
window.app.ajax.post(url, param,
(data, rspMsg) => {
this.$message.success(rspMsg)
},
(rspMsg, data) => {
this.$message.error(rspMsg)
})
},
//
showQRCode (row) {
@ -399,26 +379,38 @@ export default {
}, { headers: { 'Content-Type': 'image/jpeg' } })
},
//
issueCode (id) {
issueCode (row) {
const url = '/third/code/release'
const param = {
codeId: row.id
}
window.app.ajax.post(url, param,
(data, rspMsg) => {
this.$message.success(rspMsg)
},
(rspMsg, data) => {
this.$message.error(rspMsg)
})
},
//
submitFailReason (id) {
submitFailReason (row) {
const url = '/third/code/reason'
const param = {
codeId: row.id
}
window.app.ajax.post(url, param,
(data, rspMsg) => {
this.$message.success(rspMsg)
},
(rspMsg, data) => {
this.$message.error(rspMsg)
})
},
//
operHistory (id) {
this.operDia.visible = true
},
//
commitConfirm () {
this.commitDia.visible = false
this.loadData()
},
commitDiaCancel () {
this.$refs['ref_commit_form'].resetData()
this.commitDia.visible = false
operHistory (row) {
this.$refs['ref_oper_history'].initData(row.id)
},
operDiaCancel () {
this.operDia.visible = false
},

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

@ -1,20 +1,25 @@
<template>
<div>
<el-card shadow="never"
class="aui-card--fill">
<div class="mod-demo__demo}">
<c-dialog :showFooter="false"
:title="'操作历史'"
:visible="diaVisible"
@cancel="diaCancel">
<el-card shadow="never"
class="aui-card--fill">
<div class="mod-demo__demo}">
<c-table column-type="index"
:pageVisible="true"
ref="table"
:url="tableUrl"
:params="tableParams"
keyword="OperHistory"
:operations="operations"
:tableHeight="tableHeight">
</c-table>
</div>
</el-card>
<c-table column-type="index"
:pageVisible="true"
ref="table"
:url="tableUrl"
:params="tableParams"
keyword="OperHistory"
:operations="operations"
:tableHeight="tableHeight">
</c-table>
</div>
</el-card>
</c-dialog>
</div>
</template>
@ -22,14 +27,17 @@
<script>
import CTable from '@c/CTableNoPage'
import { mapGetters } from 'vuex'
import CDialog from '@c/CDialog'
export default {
data () {
return {
loading: false,
diaVisible: false,
codeId: '',
//
// tableUrl: '/third/code/history',
tableUrl: 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/third/code/history',
tableUrl: '/third/code/history',
// tableUrl: 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/third/code/history',
tableParams: {
type: Object, // table
default () {
@ -42,16 +50,24 @@ export default {
}
},
components: {
CTable
CTable, CDialog
},
mounted () {
this.$refs.table.loadData() //
},
methods: {
//
submitCode (id) {
this.submitDia.title = '提交审核'
this.submitDia.visible = true
initData (codeId) {
this.codeId = codeId
this.tableParams.codeId = codeId
this.diaVisible = true
this.$nextTick(() => {
this.$refs.table.loadData() //
})
},
diaCancel () {
this.diaVisible = false
}
},
computed: {

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

@ -1,180 +1,267 @@
<template>
<div>
<el-card shadow="never"
class="aui-card--fill">
<div class="mod-demo__demo}">
<el-form :inline="true"
:model="dataForm"
@keyup.enter.native="getDataList()">
<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>
<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="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>
<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>
<c-dialog :title="'提交审核'"
:visible="diaVisible"
:dialogHeight="1.1"
@cancel="diaCancel"
@ok="submitCode">
<el-tabs v-model="activeName"
class="el-tabs">
<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-remove="handleRemovePic"
:on-exceed="handleExceed"
:file-list="picList"
: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="uploadVedio"
:action="upload_url"
:name="upload_name"
:on-remove="handleRemoveVedio"
:on-exceed="handleExceed"
:file-list="vedioList"
: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>
</el-tab-pane>
<el-tab-pane label="审核项"
name="item">
<div style="margin-top:10px">
<el-button type="primary"
style="margin-bottom:10px"
@click="commitCode()">增加审核项</el-button>
</div>
<el-table id="out-table"
ref="table"
:header-cell-style="{color:'#000'}"
:data="tableData"
:style="{width: '100%'}"
border
v-loading="loading"
element-loading-text="正在加载中"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(255, 255, 255, 0.8)">
<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="first_id"
label="一级类目ID"
min-width="100"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="second_class"
label="二级类目名称"
min-width="70"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="second_id"
label="二级类目ID"
min-width="100"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="third_class"
label="三级类目名称"
min-width="70"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="third_id"
label="三级类目ID"
header-align="center"
min-width="100"
align="center"></el-table-column>
</el-table>
</el-tab-pane>
<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">大小2M以内</div>
</el-upload>
</el-form-item>
</el-form>
<div>
<el-button type="primary"
style="margin-bottom:10px"
@click="commitCode()">增加审核项</el-button>
</div>
<el-table id="out-table"
ref="table"
:header-cell-style="{color:'#000'}"
:data="tableData"
:style="{width: '100%'}"
border
v-loading="loading"
element-loading-text="正在加载中"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(255, 255, 255, 0.8)">
<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="first_id"
label="一级类目ID"
min-width="100"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="second_class"
label="二级类目名称"
min-width="70"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="second_id"
label="二级类目ID"
min-width="100"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="third_class"
label="三级类目名称"
min-width="70"
header-align="center"
align="center"></el-table-column>
<el-table-column prop="third_id"
label="三级类目ID"
header-align="center"
min-width="100"
align="center"></el-table-column>
<el-table-column label="操作"
fixed="right"
header-align="center"
align="center"
width="80">
<template slot-scope="scope">
<!-- <el-button type="text"
size="small"
@click="submitCode(scope.row.id)">移除</el-button> -->
</template>
</el-table-column>
</el-table>
</div>
</el-card>
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-remove="handleRemoveFeedback"
:on-error="handleError"
:on-exceed="handleExceed"
:file-list="feedbackPicList"
: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>
</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.使用平台建议的内容安全API2.使用其他的内容审核产品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>
<c-dialog :title="dialog.title"
:visible="dialog.visible"
:showConfirm="false"
@ -188,11 +275,22 @@
import CDialog from '@c/CDialog'
import CommitForm from './CommitForm'
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // Loading
let loading //
export default {
data () {
return {
loading: false,
// codeId: '', // codeId
feedbackShow: false, //
codeId: '', // id
diaVisible: false,
// tab
activeName: 'desc',
sceneDisabled: true, //
sceneOtherDisabled: true, //
dataForm: {
versionDesc: '', //
previewInfo: { //
@ -201,18 +299,24 @@ export default {
},
feedbackInfo: '', //
feedbackStuff: '', //
ugcDeclare: [] // UGC
ugcDeclare: { // UGC
scene: [0], // UGC 0,, 1.,2.,3.,4.,5, ,scene0
otherSceneDesc: '', // scene,256
method: [1], // 1.使API,2.使,3.,4.
hasAuditTeam: 0, // , 0.,1.,0
auditDesc: '' // UGC,256
}
},
previewPicArray: [],
previewVedioArray: [],
//
dialogImageUrl: '',
dialogVisible: false,
disabled: false,
dialogImageUrl: '/third/code/mediaupload',
upload_url: '', // URL
upload_name: '', //
ad_url: '', // URL
ad_url_list: [], //
picList: [], //
vedioList: [], //
feedbackPicList: [], //
//
dialog: {
@ -260,23 +364,48 @@ export default {
...mapGetters(['clientHeight'])
},
methods: {
initData (codeId, feedbackShow) {
this.codeId = codeId
this.feedbackShow = feedbackShow
this.diaVisible = true
},
handleExceed: function () {
this.$message({
message: '请先删除选择的图片或视频,再上传',
type: 'warning'
})
},
handleRemove: function (res, file) {
let self = this
self.ad_url = ''
handleRemovePic: function (res, file) {
this.previewPicArray.filter(item => item.uid !== file.uid)
console.log(this.previewPicArray)
},
handleRemoveVedio: function (res, file) {
// this.previewPicArray.forEach(element => {
// if()
// });
// eslint-disable-next-line
debugger
},
handleRemoveFeedback: function (res, file) {
// this.previewPicArray.forEach(element => {
// if()
// });
// eslint-disable-next-line
debugger
},
handleError (err, file, fileList) {
// eslint-disable-next-line
debugger
console.log(err)
},
//
uploadVedio: function (params) {
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 fileUrl = this.$refs.upload.uploadFiles[0].url
let isLt2M = file.size / 1024 / 1024 < 2
if (!isLt2M) {
@ -284,7 +413,7 @@ export default {
message: '上传视频大小不能超过 2MB!',
type: 'error'
})
self.$refs.upload.uploadFiles = []
this.$refs.upload.uploadFiles = []
return
}
if (!isVideo) {
@ -292,7 +421,7 @@ export default {
message: '请选择视频!',
type: 'error'
})
self.$refs.upload.uploadFiles = []
this.$refs.upload.uploadFiles = []
return
}
@ -302,95 +431,206 @@ export default {
message: '上传视频只支持 mp4 格式!',
type: 'error'
})
self.$refs.upload.uploadFiles = []
this.$refs.upload.uploadFiles = []
return
}
self.upload_name = 'file_video[]'
self.uploadFile(file, fileType)
// let videoDiv = document.createElement('video')
// videoDiv.src = fileUrl
// videoDiv.onloadeddata = function (event) {
// //
// self.upload_name = 'file_video[]'
// self.uploadFile(file, fileType, isVideo, videoDiv)
// }
this.upload_name = 'file_video[]'
let formData = new FormData()
// // eslint-disable-next-line
// debugger
formData.append('type', fileType)
formData.append('media', file)
formData.append('codeId', this.codeId)
window.app.ajax.post(this.dialogImageUrl, formData,
(data, rspMsg) => {
this.previewInfo.videoIdList.push(data)
this.$message.success(rspMsg)
},
(rspMsg, data) => {
this.$message.error(rspMsg)
}, { headers: { 'Content-Type': 'multipart/form-data' } })
},
//
uploadPic: function (params) {
console.log(this.codeId)
let self = this
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 isLt2M = file.size / 1024 / 1024 < 2
if (!isLt2M) {
this.$message({
message: '上传图片大小不能超过 2MB!',
type: 'error'
})
self.$refs.upload.uploadFiles = []
return
}
// let isLt2M = file.size / 1024 / 1024 < 2
// if (!isLt2M) {
// this.$message({
// message: ' 2MB!',
// type: 'error'
// })
// this.$refs.upload.uploadFiles = []
// // return
// }
if (!isImage) {
this.$message({
message: '请选择图片!',
type: 'error'
})
self.$refs.upload.uploadFiles = []
this.$refs.uploadPic.uploadFiles = []
return
}
self.upload_name = 'file_img[]'
self.uploadFile(file, fileType)
},
uploadFile: function (file, fileType) {
// const uploadUrl = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/third/code/mediaupload'
const uploadUrl = '/third/code/mediaupload'
// console.log(this.picList)
this.upload_name = 'file_img[]'
let formData = new FormData()
// // eslint-disable-next-line
// debugger
formData.append('type', fileType)
formData.append('media', file)
formData.append('codeId', this.codeId)
window.app.ajax.post(uploadUrl, formData,
window.app.ajax.post2(this.dialogImageUrl, formData,
(data, rspMsg) => {
this.$message.success(rspMsg)
this.beforeClose()
// eslint-disable-next-line
debugger
if (data.code === 0) {
console.log('成功')
let obj = {
mediaid: data,
uid: file.uid
}
this.previewPicArray.push(obj)
this.$message.success(rspMsg)
} else {
console.log('失败')
this.picList.pop()
this.$message.error(rspMsg)
}
},
(rspMsg, data) => {
this.picList.pop()
this.$message.error(rspMsg)
}, { headers: { 'Content-Type': 'multipart/form-data' } })
},
// UGC0
scene0 (value) {
if (value) { //
this.sceneDisabled = true
this.resetUGC()
} 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 = [0]
this.dataForm.ugcDeclare.otherSceneDesc = ''
this.dataForm.ugcDeclare.method = [1]
this.dataForm.ugcDeclare.hasAuditTeam = 0
this.dataForm.ugcDeclare.auditDesc = ''
},
submitCode () {
// eslint-disable-next-line
// debugger
//
this.dataForm.previewInfo.picIdList = []
this.dataForm.previewInfo.videoIdList = []
this.previewPicArray.forEach(element => {
this.dataForm.previewInfo.picIdList.push(element.mediaid)
})
this.previewVedioArray.forEach(element => {
this.dataForm.previewInfo.videoIdList.push(element.mediaid)
})
const url = '/third/code/audit'
let params = {
codeId: this.codeId,
ugcDeclare: this.dataForm.ugcDeclare
}
//
if (this.dataForm.previewInfo.picIdList.length > 0 || this.dataForm.previewInfo.videoIdList.length > 0) {
params.previewInfo = Object
if (this.dataForm.previewInfo.picIdList.length > 0) {
params.previewInfo.picIdList = this.dataForm.previewInfo.picIdList
}
if (this.dataForm.previewInfo.videoIdList.length > 0) {
params.previewInfo.videoIdList = this.dataForm.previewInfo.videoIdList
}
}
//
if (this.dataForm.versionDesc !== '') {
params.versionDesc = this.dataForm.versionDesc
}
console.log(params)
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.diaVisible = false
},
resetData () {
},
//
commitCode (id) {
this.dialog.title = '上传代码'
this.dialog.visible = true
},
//
submitCode (id) {
},
handleCancel () {
this.dialog.title = ''
this.dialog.visible = false
},
//
startLoading () {
loading = Loading.service({
lock: true, //
text: '正在加载……', //
background: 'rgba(0,0,0,.7)' //
})
},
//
endLoading () {
// clearTimeout(timer);
if (loading) {
loading.close()
}
}
},
props: {
feedbackShow: {
type: Boolean,
default: false
},
codeId: {
type: String,
required: true
}
}
}
</script>
<style scoped >
.el-tabs {
margin-left: 50px;
margin-right: 50px;
}
.el-upload__tip {
color: rgb(155, 155, 155);
}
.form {
margin-top: 30px;
}
</style>

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

@ -372,7 +372,7 @@ export default {
},
submitDataForm4 () {
let dataForm = this.dataForm4
dataForm.customerId = this.dataForm4.customerId
dataForm.customerId = this.customerId
dataForm.agencyId = this.dataForm4.agencyId
dataForm.mobile = this.dataForm4.mobile.toString()
console.log(dataForm)

Loading…
Cancel
Save