Browse Source

新增外部客户模块

dev
dai_siki 5 years ago
parent
commit
04f8cdce44
  1. 3
      epmet-oper-web/.eslintignore
  2. 2
      epmet-oper-web/.gitignore
  3. 2
      epmet-oper-web/.vscode/settings.json
  4. 9
      epmet-oper-web/public/index.html
  5. 10
      epmet-oper-web/src/js/columns/columns.js
  6. 18
      epmet-oper-web/src/js/columns/miniPro/partner.js
  7. 33
      epmet-oper-web/src/js/columns/miniPro/partnerApp.js
  8. 3
      epmet-oper-web/src/js/dai/config.js
  9. 67
      epmet-oper-web/src/js/dai/request.js
  10. 204
      epmet-oper-web/src/views/modules/partner/app/edit.vue
  11. 147
      epmet-oper-web/src/views/modules/partner/app/index.vue
  12. 143
      epmet-oper-web/src/views/modules/partner/edit.vue
  13. 122
      epmet-oper-web/src/views/modules/partner/index.vue

3
epmet-oper-web/.eslintignore

@ -1,2 +1,3 @@
/src/icons/iconfont.js /src/icons/iconfont.js
/*.js *.js
*.vue

2
epmet-oper-web/.gitignore

@ -0,0 +1,2 @@
.vscode
.eslintrc.js

2
epmet-oper-web/.vscode/settings.json

@ -34,4 +34,4 @@
"source.fixAll.eslint": true "source.fixAll.eslint": true
}, },
"git.enableSmartCommit": true "git.enableSmartCommit": true
} }

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

@ -34,13 +34,14 @@
<!-- 开发环境 --> <!-- 开发环境 -->
<% if (process.env.VUE_APP_NODE_ENV === 'dev') { %> <% 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://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> -->
<script> <script>
window.SITE_CONFIG['apiURL'] = 'http://192.168.1.130:8080/api' window.SITE_CONFIG['apiURL'] = 'http://192.168.1.130:8080/api'
// window.SITE_CONFIG['apiURL'] = 'https://epmet-dev.elinkservice.cn/api'
</script> </script>
<!-- <script>window.SITE_CONFIG['apiURL'] = 'http://localhost:8080/api';</script> -->
<!-- <script>
window.SITE_CONFIG['apiURL'] = 'https://epmet-dev.elinkservice.cn/api'
</script> -->
<% } %> <% } %>
<!-- 集成测试环境 dev --> <!-- 集成测试环境 dev -->
<% if (process.env.VUE_APP_NODE_ENV === 'prod:sit') { %> <% if (process.env.VUE_APP_NODE_ENV === 'prod:sit') { %>

10
epmet-oper-web/src/js/columns/columns.js

@ -10,6 +10,8 @@ import Category from './code/category'
// 产品配置 // 产品配置
import CustomizedFunction from './miniPro/customizedFunction' import CustomizedFunction from './miniPro/customizedFunction'
import partner from './miniPro/partner'
import partnerApp from './miniPro/partnerApp'
export default { export default {
CustomerList: CustomerList['list'], // 客户管理——客户管理——客户列表 CustomerList: CustomerList['list'], // 客户管理——客户管理——客户列表
@ -24,5 +26,9 @@ export default {
Category: Category, // 客户管理——代小程序管理——类目 Category: Category, // 客户管理——代小程序管理——类目
// 小程序管理 // 小程序管理
CustomizedFunction: CustomizedFunction // 定制功能 CustomizedFunction: CustomizedFunction, // 定制功能
}
// 外部客户
partnerApp, // 外部客户
partner // 外部客户应用
}

18
epmet-oper-web/src/js/columns/miniPro/partner.js

@ -0,0 +1,18 @@
export default [
{
key: 'customerId',
title: '客户id',
display: ['formA', 'formU', 'table', 'model'],
fixed: false,
block: true,
width: 100
},
{
key: 'customerName',
title: '客户名称',
display: ['formA', 'formU', 'table', 'model'],
fixed: false,
block: true,
width: 100
},
]

33
epmet-oper-web/src/js/columns/miniPro/partnerApp.js

@ -0,0 +1,33 @@
export default [{
key: 'appId',
title: '应用id',
display: ['formA', 'formU', 'table', 'model'],
fixed: false,
block: true,
width: 100
},
{
key: 'appName',
title: '应用名称',
display: ['formA', 'formU', 'table', 'model'],
fixed: false,
block: true,
width: 100
},
{
key: 'customerName',
title: '所属客户',
display: ['formA', 'formU', 'table', 'model'],
fixed: false,
block: true,
width: 100
},
{
key: 'secret',
title: '秘钥',
display: ['formA', 'formU', 'table', 'model'],
fixed: false,
block: true,
width: 200
},
]

3
epmet-oper-web/src/js/dai/config.js

@ -0,0 +1,3 @@
export const mockUrlPrefix = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad';
export const envIsDev = process.env.VUE_APP_NODE_ENV === "dev";

67
epmet-oper-web/src/js/dai/request.js

@ -0,0 +1,67 @@
/*---------------------------------------------------------------
| 请求接口封装 |
---------------------------------------------------------------*/
import axios from 'axios'
import log from 'dai-js/modules/log';
import curry from 'dai-js/tools/curry';
const request = curry((method, url, data = {}, headers = {}, progress = () => {}) => {
return new Promise(reslove => {
let returnIniData = {
httpCode: '',
data: {},
msg: '',
code: '',
};
const succFn = (res) => {
log(`[request成功] ${url}`, data, res);
let retData = {
...returnIniData,
...res.data,
httpCode: res.statusCode
};
// if(typeof Vue.$afterRequestHook == 'function'){
// retData = Vue.$afterRequestHook(retData);
// }
reslove(retData);
};
const failFn = (err) => {
log(`[request失败] ${url}`, data, err);
reslove(Object.assign({}, returnIniData, {
httpCode: '9999', //访问出现意外
msg: '网络错误',
}));
};
if (method.toUpperCase() == 'POST') {
axios.post(url, data, {
headers,
responseType: 'json',
// progress,
// credentials: false,
}).then(succFn).catch(failFn);
} else {
axios.get(url, {
params: data,
headers,
responseType: 'json',
// credentials: true,
}).then(succFn).catch(failFn);
}
});
});
export const requestGet = request('get');
export const requestPost = request('post');
export default {
install(Vue) {
Vue.prototype.$requestGet = requestGet;
Vue.prototype.$requestPost = requestPost;
}
};

204
epmet-oper-web/src/views/modules/partner/app/edit.vue

@ -0,0 +1,204 @@
<template>
<el-dialog
:visible.sync="visible"
:title="'编辑外部应用'"
:close-on-click-modal="false"
:before-close="handleClose"
:close-on-press-escape="false"
>
<el-form
:inline="true"
:model="dataForm"
:rules="dataRule"
ref="dataForm"
:label-width="'120px'"
>
<el-form-item label="应用名称" prop="appName">
<el-input
class="item_width_1"
v-model="dataForm.appName"
placeholder="应用名称"
></el-input>
</el-form-item>
<el-form-item label="所属客户" prop="customerId">
<el-select
class="item_width_1"
v-model="dataForm.customerId"
placeholder="请选择"
clearable
>
<el-option
v-for="item in customerList"
:key="item.customerId"
:label="item.customerName"
:value="item.customerId"
>
</el-option>
</el-select>
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t("cancel") }}</el-button>
<el-button type="primary" @click="saveForm()">{{
$t("confirm")
}}</el-button>
</template>
</el-dialog>
</template>
<script>
import { Loading } from "element-ui"; // Loading
import { requestPost } from "@/js/dai/request";
import { envIsDev, mockUrlPrefix } from "@/js/dai/config";
//
const isMockEnv = envIsDev && false;
const requestUrlPrefix = isMockEnv ? mockUrlPrefix : "";
let loading; //
export default {
data() {
return {
visible: false,
type: "", // A/U
dataForm: {
appId: "",
appName: "",
customerId: "",
customerName: "",
},
customerList: [
// {
// customerId: "",
// customerName: "",
// }
],
};
},
created() {
this.queryCustomerList();
},
computed: {
dataRule() {
return {
customerId: [
{
required: true,
message: this.$t("validate.required"),
trigger: "blur",
},
],
appName: [
{
required: true,
message: this.$t("validate.required"),
trigger: "blur",
},
],
};
},
},
methods: {
async queryCustomerList() {
const { data, code, msg } = await requestPost(
requestUrlPrefix + "/commonservice/externalcustomer/list",
{
pageNo: 1,
pageSize: 1000,
}
);
if (code === 0) {
this.customerList = data.list;
}
},
init(dataForm, type) {
this.type = type;
this.visible = true;
// this.dataForm=dataForm
this.$nextTick(() => {
Object.assign(this.dataForm, dataForm);
});
},
addRequest() {
this.dataForm.domainNameList.push("");
},
delRequest(index) {
this.dataForm.domainNameList.splice(index, 1);
},
saveForm() {
this.$refs["dataForm"].validate((valid) => {
if (!valid) {
this.$message.error("表单验证失败!");
} else {
let url = "";
if (this.type === "U") {
url = requestUrlPrefix + "/commonservice/externalcustomer/update";
} else {
url = requestUrlPrefix + "/commonservice/externalcustomer/add";
}
this.dataForm.functionGroup = "1";
window.app.ajax.post(
url,
this.dataForm,
(data, rspMsg) => {
this.$message({
type: "success",
message: "保存成功",
});
this.$emit("editDiaOK");
this.visible = false;
},
(rspMsg, data) => {
this.endLoading();
this.$message.error(rspMsg);
}
);
}
});
},
handleClose() {
this.visible = false;
},
//
startLoading() {
loading = Loading.service({
lock: true, //
text: "正在加载……", //
background: "rgba(0,0,0,.7)", //
});
},
//
endLoading() {
// clearTimeout(timer);
if (loading) {
loading.close();
}
},
},
};
</script>
<style scoped>
.function-icon {
width: 28px;
}
.item_width_1 {
width: 300px;
}
.item_width_2 {
width: 700px;
}
.block {
display: block;
}
.btn_serve {
float: left;
margin-top: 4px;
margin-left: 10px;
vertical-align: bottom;
}
</style>

147
epmet-oper-web/src/views/modules/partner/app/index.vue

@ -0,0 +1,147 @@
<template>
<div>
<el-card shadow="never" class="aui-card--fill">
<el-form :inline="true" :model="tableParams">
<el-form-item>
<el-button type="primary" @click="addShow">新增</el-button>
</el-form-item>
</el-form>
<c-table
column-type=""
ref="table"
keyword="partnerApp"
:url="tableUrl"
:params="tableParams"
:operationWidth="80"
:operations="operations"
@editShow="editShow"
@copySecret="copySecret"
@del="del"
>
</c-table>
</el-card>
<edit ref="edit" @editDiaOK="editDiaOK"></edit>
</div>
</template>
<style lang="scss" src="@/assets/scss/modules/wx-mini/index-set.scss"></style>
<script>
import { mapGetters } from "vuex";
import CTable from "@c/CTable";
import edit from "./edit";
import { requestPost } from "@/js/dai/request";
import { envIsDev, mockUrlPrefix } from "@/js/dai/config";
import { Loading } from "element-ui";
import nextTick from "dai-js/tools/nextTick";
//
const isMockEnv = envIsDev && false;
const requestUrlPrefix = isMockEnv ? mockUrlPrefix : "";
export default {
mixins: [],
components: { CTable, edit },
data() {
return {
tableUrl: requestUrlPrefix + "/commonservice/externalapp/list",
//
tableParams: {},
operations: [
{
lable: "修改", //
size: "mini",
style: "margin: 0 6px;",
type: "text",
slot: "",
plain: false,
methodName: "editShow", //
isShow: (row) => {
return true;
},
},
{
lable: "复制秘钥", //
size: "mini",
style: "margin: 0 6px;",
type: "text",
slot: "",
plain: false,
methodName: "copySecret", //
isShow: (row) => {
return true;
},
},
// {
// lable: "", //
// size: "mini",
// style: "margin: 0 6px;",
// type: "text",
// slot: "",
// plain: false,
// methodName: "del", //
// isShow: (row) => {
// return true;
// },
// },
],
};
},
computed: {
tableHeight() {
return this.clientHeight - 60 - 80 - 80 - 90;
},
...mapGetters(["clientHeight", "env"]),
},
created() {
this.refresh();
},
methods: {
//
async refresh() {
await nextTick();
this.$refs.table.loadData(); //
},
//
addShow() {
const row = {
appId: "",
appName: "",
customerId: "",
customerName: "",
};
this.$refs["edit"].init(row, "A");
},
copySecret(row) {
const { secret } = row;
var aux = document.createElement("input");
aux.setAttribute("value", secret);
document.body.appendChild(aux);
aux.select();
document.execCommand("copy");
document.body.removeChild(aux);
console.log("复制成功", secret);
},
//
editShow(row) {
this.$refs["edit"].init(row, "U");
},
del(row) {
this.$message({
type: "error",
message: "无法删除,因为没有提供接口",
});
},
editDiaOK() {
this.refresh();
},
},
};
</script>

143
epmet-oper-web/src/views/modules/partner/edit.vue

@ -0,0 +1,143 @@
<template>
<el-dialog :visible.sync="visible"
:title="'编辑外部客户'"
:close-on-click-modal="false"
:before-close="handleClose"
:close-on-press-escape="false">
<el-form :inline="true"
:model="dataForm"
:rules="dataRule"
ref="dataForm"
:label-width="'120px'">
<el-form-item label="客户名称"
prop="customerName">
<el-input class="item_width_1"
v-model="dataForm.customerName"
placeholder="客户名称"></el-input>
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary"
@click="saveForm()">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</template>
<script>
import { Loading } from 'element-ui' // Loading
let loading//
export default {
data () {
return {
visible: false,
type: '', // A/U
dataForm: {
customerId: '',
customerName: ''
},
uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/function/upload',
}
},
created () {
// this.queryFunctionList()
},
computed: {
dataRule () {
return {
customerName: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
},
methods: {
init (dataForm, type) {
this.type = type
this.visible = true
// this.dataForm=dataForm
this.$nextTick(() => {
Object.assign(this.dataForm, dataForm)
})
},
addRequest () {
this.dataForm.domainNameList.push('')
},
delRequest (index) {
this.dataForm.domainNameList.splice(index, 1)
},
saveForm () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
this.$message.error('表单验证失败!')
} else {
let url = ''
if (this.type === 'U') {
url = '/commonservice/externalcustomer/update'
} else {
url = '/commonservice/externalcustomer/add'
}
this.dataForm.functionGroup = '1'
window.app.ajax.post(url, this.dataForm,
(data, rspMsg) => {
this.$message({
type: 'success',
message: '保存成功'
})
this.$emit('editDiaOK')
this.visible = false
},
(rspMsg, data) => {
this.endLoading()
this.$message.error(rspMsg)
})
}
})
},
handleClose () {
this.visible = false
},
//
startLoading () {
loading = Loading.service({
lock: true, //
text: '正在加载……', //
background: 'rgba(0,0,0,.7)' //
})
},
//
endLoading () {
// clearTimeout(timer);
if (loading) {
loading.close()
}
}
}
}
</script>
<style scoped>
.function-icon {
width: 28px;
}
.item_width_1 {
width: 300px;
}
.item_width_2 {
width: 700px;
}
.block {
display: block;
}
.btn_serve {
float: left;
margin-top: 4px;
margin-left: 10px;
vertical-align: bottom;
}
</style>

122
epmet-oper-web/src/views/modules/partner/index.vue

@ -0,0 +1,122 @@
<template>
<div>
<el-card shadow="never" class="aui-card--fill">
<el-form :inline="true" :model="tableParams">
<el-form-item>
<el-button type="primary" @click="addShow">新增</el-button>
</el-form-item>
</el-form>
<c-table
column-type=""
ref="table"
keyword="partner"
:url="tableUrl"
:params="tableParams"
:operationWidth="80"
:operations="operations"
@editShow="editShow"
@del="del"
>
</c-table>
</el-card>
<edit ref="edit" @editDiaOK="editDiaOK"></edit>
</div>
</template>
<style lang="scss" src="@/assets/scss/modules/wx-mini/index-set.scss"></style>
<script>
import { mapGetters } from "vuex";
import CTable from "@c/CTable";
import edit from "./edit";
import { requestPost } from "@/js/dai/request";
import { envIsDev, mockUrlPrefix } from "@/js/dai/config";
import { Loading } from "element-ui";
import nextTick from "dai-js/tools/nextTick";
//
const isMockEnv = envIsDev && false;
const requestUrlPrefix = isMockEnv ? mockUrlPrefix : "";
export default {
mixins: [],
components: { CTable, edit },
data() {
return {
tableUrl: requestUrlPrefix + "/commonservice/externalcustomer/list",
//
tableParams: {},
operations: [
{
lable: "修改", //
size: "mini",
style: "margin: 0 6px;",
type: "text",
slot: "",
plain: false,
methodName: "editShow", //
isShow: (row) => {
return true;
},
},
// {
// lable: "", //
// size: "mini",
// style: "margin: 0 6px;",
// type: "text",
// slot: "",
// plain: false,
// methodName: "del", //
// isShow: (row) => {
// return true;
// },
// },
],
};
},
computed: {
tableHeight() {
return this.clientHeight - 60 - 80 - 80 - 90;
},
...mapGetters(["clientHeight", "env"]),
},
created() {
this.refresh();
},
methods: {
//
async refresh() {
await nextTick();
this.$refs.table.loadData(); //
},
//
addShow() {
const row = {
customerId: "",
customerName: "",
};
this.$refs["edit"].init(row, "A");
},
//
editShow(row) {
this.$refs["edit"].init(row, "U");
},
del(row) {
this.$message({
type: "error",
message: "无法删除,因为没有提供接口",
});
},
editDiaOK() {
this.refresh();
},
},
};
</script>
Loading…
Cancel
Save