Compare commits

...

92 Commits

Author SHA1 Message Date
yuan e2f31544e1 Merge branch 'yuan' 2024-09-09 08:35:15 +08:00
niuwu666 5f117474af Merge pull request 'dev' (#7) from dev into master
Reviewed-on: #7
2024-09-08 23:52:23 +08:00
张腾 1c3790a689 Merge remote-tracking branch 'origin/dev' into dev 2024-09-08 23:51:24 +08:00
张腾 b2cb339a78 任务模块 2024-09-08 23:51:12 +08:00
Yueng 709ffee6cf 添加资产授权 2024-09-08 23:41:47 +08:00
Yueng d7f4bfcf99 添加资产授权 2024-09-08 23:25:12 +08:00
Yueng a884b72720 添加资产授权 2024-09-08 23:15:32 +08:00
Aaaaaaaa 2e83199138 推线上 2024-09-08 21:20:48 +08:00
Aaaaaaaa 7ad5bac015 推线上 2024-09-08 20:09:50 +08:00
Aaaaaaaa f69dc7f21b 推线上 2024-09-08 19:58:40 +08:00
Aaaaaaaa 00e02111a7 推线上 2024-09-08 19:30:57 +08:00
Aaaaaaaa 037ea8c661 更新 2024-09-08 19:09:58 +08:00
Aaaaaaaa 4fc5ba412c 业务 2024-09-08 19:08:59 +08:00
Aaaaaaaa e20c0db450 业务 2024-09-08 19:07:33 +08:00
Aaaaaaaa 1413264068 Merge branch 'master' of https://gitea.qinmian.online/a_bazu/cloud-web into dev
# Conflicts:
#	src/views/market/apitest/index.vue
2024-09-08 18:59:13 +08:00
WeiRan 1009cd7583 企业管理完善新增 2024-09-08 18:57:58 +08:00
Aaaaaaaa 48d5b57397 Merge branch 'master' into dev
# Conflicts:
#	src/api/market/orders.js
#	src/views/market/apitest/index.vue
2024-09-08 18:54:47 +08:00
Aaaaaaaa 3189457a62 业务 2024-09-08 16:59:54 +08:00
Aaaaaaaa 7d8e8e6eec Merge branch 'dev' of https://gitea.qinmian.online/a_bazu/cloud-web into dev
# Conflicts:
#	src/api/market/orders.js
#	src/api/market/product.js
#	src/views/market/apitest/index.vue
2024-09-08 16:58:56 +08:00
WeiRan fdc771ab6d 企业管理完善新增 2024-09-08 16:49:18 +08:00
WeiRan 29fcb4346e Merge branch 'master' of https://gitea.qinmian.online/a_bazu/cloud-web 2024-09-08 16:47:17 +08:00
WeiRan 1a78d90997 企业管理完善新增 2024-09-08 16:46:54 +08:00
Aaaaaaaa 0235151eee Merge branch 'dev'
# Conflicts:
#	src/api/market/orders.js
#	src/api/market/product.js
#	src/views/market/apitest/index.vue
2024-09-08 15:36:29 +08:00
Aaaaaaaa 105ef2f6ae 改线上 2024-09-08 15:23:21 +08:00
WeiRan 4d5c34e8fa 企业管理完善新增 2024-09-07 12:12:11 +08:00
WeiRan cb4439e48a 合并了远程master分支,解决了apitest和工作台的冲突 2024-09-07 10:17:36 +08:00
Aaaaaaaa b2ebdf1c46 改线上 2024-09-06 17:33:47 +08:00
Aaaaaaaa 8686aadd8d 改线上 2024-09-06 17:29:52 +08:00
Aaaaaaaa f4443a7b7e ok 2024-09-06 17:19:25 +08:00
Aaaaaaaa ea1c143e80 ok 2024-09-06 16:35:22 +08:00
Aaaaaaaa 67d4b34f21 ok 2024-09-06 09:57:02 +08:00
Aaaaaaaa 6c66bd1374 ok 2024-09-06 09:05:56 +08:00
Yueng 5f182ea1fc 添加资产授权 2024-09-06 00:38:23 +08:00
Aaaaaaaa 53ea1aa2e0 ok 2024-09-05 21:03:28 +08:00
Aaaaaaaa 5540e3e214 Merge branch 'dev'
# Conflicts:
#	src/views/market/apitest/index.vue
2024-09-05 11:29:43 +08:00
Aaaaaaaa b1788762a7 ok 2024-09-05 11:28:55 +08:00
WeiRan 5d30b3b22e 企业管理完善新增 2024-09-05 10:40:34 +08:00
Aaaaaaaa 9729d67fda ok 2024-09-05 09:15:14 +08:00
Yueng 91cfb0171a 添加资产授权 2024-09-04 22:10:18 +08:00
Aaaaaaaa 1656f3b71d Merge branch 'dev'
# Conflicts:
#	src/views/market/apitest/index.vue
2024-09-04 20:06:56 +08:00
Aaaaaaaa 99f54f306a ok 2024-09-04 20:05:17 +08:00
WeiRan 2cbfcd45f2 企业管理完善新增 2024-09-04 19:06:50 +08:00
Yueng 143527169a 添加资产授权 2024-09-04 11:25:37 +08:00
WeiRan 0ba53a33eb 企业管理完善新增 2024-09-04 09:14:27 +08:00
Aaaaaaaa f1fb67cf1f ok 2024-09-04 08:54:52 +08:00
WeiRan d0a13cc604 初步编写测试次数限制 2024-09-03 09:40:49 +08:00
Aaaaaaaa b5b9ce86bc Merge branch 'dev' 2024-09-02 20:31:09 +08:00
Aaaaaaaa e01ab412bc ok 2024-09-02 20:30:34 +08:00
Yueng 7c8e69e1f6 添加资产展示 2024-09-02 20:12:43 +08:00
WeiRan c20e4d1667 企业管理完善新增 2024-09-02 09:43:54 +08:00
Yueng fd40a1edf7 添加资产展示 2024-09-01 19:16:09 +08:00
Yueng 8ae1b76ddc 添加资产展示 2024-09-01 18:57:28 +08:00
WeiRan f427e262ce 后台接口及企业管理完善 2024-09-01 15:35:58 +08:00
WeiRan 9a87b64c6b 后台接口及企业管理完善 2024-09-01 10:24:05 +08:00
Yueng 90fd958bbe Merge pull request '更新流程' (#3) from dev into master
Reviewed-on: #3
2024-08-31 02:04:17 +08:00
WeiRan 3023ef2b5e 后台接口管理完善 2024-08-31 00:54:18 +08:00
niuwu666 dbafb70daf Merge pull request '纠正远调报错' (#6) from dev into master
Reviewed-on: #6
2024-08-30 09:45:36 +08:00
张腾 0329f43d43 纠正远调报错 2024-08-30 09:45:04 +08:00
WeiRan ecead0f5bf 新增三个接口调用 2024-08-30 09:28:45 +08:00
niuwu666 0df439daaa Merge pull request 'dev' (#5) from dev into master
Reviewed-on: #5
2024-08-30 00:46:30 +08:00
张腾 b3922ab76c 更新流程 2024-08-30 00:46:04 +08:00
张腾 fc02d33044 Merge remote-tracking branch 'origin/dev' into dev 2024-08-29 20:43:34 +08:00
Aaaaaaaa beb15b8118 ok 2024-08-29 20:43:13 +08:00
Aaaaaaaa 246505dc5e Merge branch 'dev' 2024-08-29 19:45:29 +08:00
Aaaaaaaa 0dbf8c50cb ok 2024-08-29 19:44:58 +08:00
Aaaaaaaa 4e739d6dab Merge branch 'master' of https://gitea.qinmian.online/a_bazu/cloud-web 2024-08-29 19:40:14 +08:00
Aaaaaaaa 2a12a535e8 ok 2024-08-29 19:39:46 +08:00
Aaaaaaaa 261aa615f3 Revert "ok"
This reverts commit 0d078797e5.
2024-08-29 19:16:51 +08:00
Yueng 753bc4163b Merge pull request '更新流程' (#3) from dev into master
Reviewed-on: #3
2024-08-29 19:11:19 +08:00
Yueng ff9d5d6779 Merge branch 'master' of https://gitea.qinmian.online/a_bazu/cloud-web
# Conflicts:
#	src/api/property/property.js
2024-08-29 18:52:47 +08:00
Aaaaaaaa 0d078797e5 ok 2024-08-29 17:16:50 +08:00
niuwu666 09e8776b5c Merge pull request 'dev' (#4) from dev into master
Reviewed-on: #4
2024-08-29 16:28:33 +08:00
张腾 d54e9908b9 更新流程 2024-08-29 16:27:47 +08:00
张腾 a5180d05f3 更新流程 2024-08-29 15:31:54 +08:00
niuwu666 b2322d82c4 Merge pull request '更新流程' (#3) from dev into master
Reviewed-on: #3
2024-08-29 15:19:28 +08:00
niuwu666 b059c1a1ba Merge pull request '更新流程' (#3) from dev into master
Reviewed-on: #3
2024-08-29 01:07:58 +08:00
张腾 07790e5924 更新流程 2024-08-29 00:58:59 +08:00
Yueng 00576f6cff fine:()前台代码路径修改 2024-08-28 22:27:05 +08:00
Aaaaaaaa 42c2bad152 ok 2024-08-28 19:58:49 +08:00
Aaaaaaaa bf16d4b3bd ok 2024-08-28 19:55:28 +08:00
WeiRan fc430b37a9 Merge branch 'master' of https://gitea.qinmian.online/a_bazu/cloud-web 2024-08-28 08:21:24 +08:00
WeiRan cf1669ce85 初步实现企业模块 2024-08-28 01:04:30 +08:00
Yueng 072a31abf7 fine:()前台代码 2024-08-27 21:59:24 +08:00
Aaaaaaaa 2587a2cad9 ok 2024-08-27 20:04:10 +08:00
Aaaaaaaa a62d49e078 ok 2024-08-27 15:26:26 +08:00
niuwu666 0907d1c436 Merge pull request 'dev' (#2) from dev into master
Reviewed-on: #2
2024-08-27 11:10:24 +08:00
张腾 1f5f9a9a49 新增流程功能 2024-08-27 11:08:56 +08:00
张腾 226cd9eef1 改正报错信息 2024-08-27 00:17:01 +08:00
Aaaaaaaa 4d46564065 orders订单 2024-08-26 22:00:08 +08:00
Yueng 6144a9390a fine:()前台代码列表添加 2024-08-26 21:50:54 +08:00
张腾 bbe6e492f3 修改新增传参 2024-08-25 19:01:53 +08:00
张腾 fca3f025ad 添加easyFollow 2024-08-25 17:00:31 +08:00
46 changed files with 5523 additions and 145 deletions

View File

@ -37,6 +37,7 @@
"url": "https://gitee.com/y_project/MuYu-Cloud.git"
},
"dependencies": {
"@antv/x6": "^2.18.1",
"@riophae/vue-treeselect": "0.4.0",
"axios": "0.24.0",
"clipboard": "2.0.8",

View File

@ -0,0 +1,100 @@
import request from "@/utils/request";
//发送邮箱验证码
export function apitest(email){
return request({
url:"/market/company/sendcode/"+email,
method: "POST",
})
}
export function reducetestcount(data){
return request({
url:"/market/producttest/reducetestcount",
method: "POST",
data: data
})
}
export function iftest(data){
return request({
url:"/market/product/iftest",
method: "POST",
data: data
})
}
export function findcount(data){
return request({
url:"/market/producttest/findcount",
method: "POST",
data: data
})
}
export function getHeader(data){
return request({
url:"/market/producttest/productheader",
method: "POST",
data: data
})
}
export function getRequest(data){
return request({
url:"/market/producttest/productrequest",
method: "POST",
data: data
})
}
export function sendrequest(options){
// 确保options是一个对象并且包含必要的属性
if (!options || typeof options !== 'object' || !options.apiRouter || typeof options.parameter === 'undefined') {
throw new Error('Invalid options: must be an object with apiRouter and optional parameter properties');
}
// 构建完整的URL
const fullUrl = `/background/api/${options.apiRouter}/${options.parameter || ''}`;
return request({
url:fullUrl,
method: "get",
data: options.parameter,
})
}
export function sendrequest1(options){
// 确保options是一个对象并且包含必要的属性
if (!options || typeof options !== 'object' || !options.apiRouter ) {
throw new Error('Invalid options: must be an object with apiRouter ');
}
// 构建完整的URL
const fullUrl = `/background/api/${options.apiRouter}`;
return request({
url:fullUrl,
method: "post",
data: options
})
}
export function sendrequest2(options){
// 确保options是一个对象并且包含必要的属性
if (!options || typeof options !== 'object' || !options.apiRouter ) {
throw new Error('Invalid options: must be an object with apiRouter ');
}
// 构建完整的URL
const fullUrl = `/background/api/${options.apiRouter}`;
return request({
url:fullUrl,
method: "post"
})
}

View File

@ -0,0 +1,16 @@
import request from "@/utils/request";
export function companyauthentication(data){
return request({
url:"/market/company/companyauthentication",
method: "POST",
data: data
})
}
export function ifcompanyauthentication(data){
return request({
url:"/market/company/ifcompanyauthentication",
method: "POST",
data: data
})
}

View File

@ -0,0 +1,19 @@
import request from "@/utils/request";
//发送邮箱验证码
export function sendcode1(email){
return request({
url:"/market/company/sendcode/"+email,
method: "POST",
})
}
//绑定邮箱
export function linkemail(data){
return request({
url:"/market/company/list",
method: "POST",
data: data
})
}

View File

@ -0,0 +1,49 @@
import request from "@/utils/request";
export function selectapiList(data){
return request({
url:"/background/apimanage/list",
method: "POST",
data: data
})
}
export function apiupdmessage(data){
return request({
url:"/background/apimanage/upd",
method: "POST",
data: data
})
}
export function productStateList(data){
return request({
url:"/background/apimanage/productState",
method: "POST",
data: data
})
}
export function UpdproductState(data){
return request({
url:"/background/apimanage/updproductState",
method: "POST",
data: data
})
}
export function addproduct(data){
return request({
url:"/background/apimanage/add",
method: "POST",
data: data
})
}
export function delapi(productId){
return request({
url:"/background/apimanage/del/"+productId,
method: "POST",
})
}

View File

@ -0,0 +1,25 @@
import request from "@/utils/request";
export function selectcompanyList(data){
return request({
url:"/background/company/list",
method: "POST",
data: data
})
}
export function reviewStatus(data){
return request({
url:"/background/company/reviewStatus",
method: "POST",
data: data
})
}
export function selectcompanystatus(data){
return request({
url:"/background/company/companystatus",
method: "POST",
data: data
})
}

View File

@ -1,17 +1,18 @@
import request from "@/utils/request";
export function showTask() {
export function showTask(params) {
return request({
url: '/integration/task/selectAll',
method: 'get',
params
})
}
export function addTask(params) {
export function addTask(data) {
return request({
url: '/integration/task/addTask',
method: 'post',
params
data
})
}
@ -30,4 +31,95 @@ export function updTask(params) {
})
}
export function extractDataName() {
return request({
url: '/integration/task/extractDataName',
method: 'post',
})
}
export function selectByTableName(tableName) {
return request({
url: `/integration/task/selectByTableName?tableName=`+tableName,
method: 'post',
})
}
export function addTaskInfo(data) {
return request({
url: `/integration/taskInfo/addTaskInfo`,
method: 'post',
data
})
}
export function selectByNodeId(data) {
return request({
url: `/integration/taskInfo/selectByNodeId`,
method: 'post',
data
})
}
export function selectByOne(nodeId) {
return request({
url: `/integration/taskInfo/selectByOne?nodeId=`+nodeId,
method: 'post',
})
}
export function addSelect(data) {
return request({
url: `/integration/sqlSelect/addSelectNode`,
method: 'post',
data
})
}
export function addTableField(data) {
return request({
url: `/integration/taskFields/addField`,
method: 'post',
data
})
}
export function seeTableField(data) {
return request({
url: `/integration/taskFields/showFieldList`,
method: 'post',
data
})
}
export function selectByAsField(data) {
return request({
url: `/integration/taskFields/selectByAsField`,
method: 'post',
data
})
}
export function addOutPut(data) {
return request({
url: `/integration/output/addOutput`,
method: 'post',
data
})
}
export function findBySelectId(nodeId) {
return request({
url: `/integration/sqlSelect/findBySelectId?nodeId=`+nodeId,
method: 'post',
})
}
export function todoTask(id) {
return request({
url: `/integration/task/todoTask?id=`+id,
method: 'GET',
})
}

View File

@ -0,0 +1,90 @@
import request from "@/utils/request";
export function selectList(data){
return request({
url:"/market/orders/list",
method: "POST",
data: data
})
}
export function addordersup(data){
return request({
url:"/market/orders/addOrdeds",
method: "POST",
data: data
})
}
export function ordersDelete(ordersId) {
return request({
url: "/market/orders/delByOrderId/" + ordersId ,
method: "GET"
})
}
export function updateOrders(data) {
return request({
url: "/market/orders/updateOrders",
method: "POST",
data: data
})
}
export function updateByeExist(ordersId) {
return request({
url: "/market/orders/updateByeExist/" + ordersId ,
method: "GET"
})
}
export function updateByExist(ordersId) {
return request({
url: "/market/orders/updateByExist/" + ordersId ,
method: "GET"
})
}
export function orderssd(ordersId) {
return request({
url: "/market/orders/delByOrderId/" + ordersId ,
method: "GET"
})
}
export function pay(data){
return request({
url:"/market/alipay/pay",
method: "get",
data: data
})}
export function getOut(){
return request({
url:"/market/orders/getOutAll",
method: "GET"
})}
export function updateByordersState1(data){
return request({
url:"/market/orders/updateByordersState1",
method: "POST",
data: data
})}
export function listreclaim(data){
return request({
url:"/market/orders/listreclaim",
method: "POST",
data: data
})}

View File

@ -9,11 +9,34 @@ export function selectList(data){
}
export function selectTypeList(data){
export function selectTypeList(data) {
return request({
url:"/market/product/typeList",
url: "/market/product/typeList",
method: "POST",
data: data
})
}
export function selectproductspecification(data){
return request({
url:"/market/product/specification",
method: "POST",
data: data
})
}
export function ifbuy(data){
return request({
url:"/market/product/ifbuy",
method: "POST",
data: data
})
}
export function showByproductId(productId){
return request({
url:"/market/product/showByproductId="+productId,
method: "GET"
})
}

View File

@ -1,4 +1,5 @@
import request from "@/utils/request";
import { handleDelete } from '@/api/market/product'
export function gethostportList(){
return request({

View File

@ -0,0 +1,16 @@
import request from '@/utils/request'
export function getExtractDataTableNameList() {
return request({
url: '/property/dataRunName/extractDataTableNameShow',
method: 'post',
})
}
export function tableStructureShow(data) {
return request({
url: '/property/dataRunName/tableStructureShow',
method: 'post',
data:data
})
}

View File

@ -0,0 +1,70 @@
import request from '@/utils/request'
export function getExtractDataTableNameList() {
return request({
url: '/property/dataRunName/extractDataTableName',
method: 'post',
})
}
export function addDeptAssetAuthorization(data) {
return request({
url: '/property/dataRunName/addDeptAssetAuthorization',
method: 'post',
data:data
})
}
export function delDeptAssetAuthorization(data) {
return request({
url: '/property/dataRunName/delDeptAssetAuthorization',
method: 'post',
data:data
})
}
export function addUserAssetAuthorization(data) {
return request({
url: '/property/dataRunName/addUserAssetAuthorization',
method: 'post',
data:data
})
}
export function delUserAssetAuthorization(data) {
return request({
url: '/property/dataRunName/delUserAssetAuthorization',
method: 'post',
data:data
})
}
// --------------------------------------------------------
/**
* 查询资产赋权用户信息
* @param data 参数信息
* @returns {*} 响应结果
*/
export function findUserIdList(data) {
return request({
url: '/property/dataRunName/findUserIdList',
method: 'POST',
data
})
}
/**
* 查询资产赋权部门信息
* @param data 参数信息
* @returns {*} 响应结果
*/
export function findDeptIdList(data) {
return request({
url: '/property/dataRunName/findDeptIdList',
method: 'POST',
data
})
}

View File

@ -0,0 +1,16 @@
import request from '@/utils/request'
export function getExtractDataTableNameList() {
return request({
url: '/property/dataRunName/extractDataTableName',
method: 'post',
})
}
export function tableStructureShow(data) {
return request({
url: '/property/dataRunName/tableStructureShow',
method: 'post',
data:data
})
}

View File

@ -0,0 +1,49 @@
import request from '@/utils/request'
export function getConnectList(data) {
return request({
url: '/property/connect/selectConnect',
method: 'post',
data: data
})
}
export function insertConnectList(data) {
return request({
url: '/property/connect/add',
method: 'post',
data: data
})
}
export function updConnectList(data) {
return request({
url: '/property/connect/upd',
method: 'put',
data: data
})
}
export function textHandleClick(data) {
return request({
url: '/property/connect/text',
method: 'post',
data: data
})
}
export function delHandleClick(data) {
return request({
url: '/property/connect/del/'+data,
method: 'Delete',
data: data
})
}
export function selectHandleClick(data) {
return request({
url: '/property/dataRunName/addDataTableName',
method: 'post',
data: data
})
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 509 KiB

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 789 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

View File

@ -25,10 +25,6 @@ export default {
required: true,
type: Number
},
page: {
type: Number,
default: 1
},
limit: {
type: Number,
default: 20

View File

@ -104,6 +104,78 @@ export const constantRoutes = [
}
]
},
{
path: '/authentication',
component: Layout,
children: [
{
path: 'index',
name: 'authentication',
component: () => import('@/views/market/authentication/index.vue'),
meta: { title: '实名认证', icon: 'form' }
}
]
},
{
path: '/apidetailmessage',
component: Layout,
children: [
{
path: 'index',
name: 'apidetailmessage',
component: () => import('@/views/background/apidetailmessage/index.vue'),
meta: { title: '接口详情', icon: 'form' }
}
]
},
{
path: '/apimanage',
component: Layout,
children: [
{
path: 'index',
name: 'apimanage',
component: () => import('@/views/background/apimanage/index.vue'),
meta: { title: '接口列表', icon: 'form' }
}
]
},
{
path: '/apiupdmessage',
component: Layout,
children: [
{
path: 'index',
name: 'apiupdmessage',
component: () => import('@/views/background/apiupdmessage/index.vue'),
meta: { title: '接口列表', icon: 'form' }
}
]
},
{
path: '/updorders',
component: Layout,
children: [
{
path: 'index',
name: 'updorders',
component: () => import('@/views/market/updorders/index.vue'),
meta: { title: '修改订单详情', icon: 'form' }
}
]
},
{
path: '/reclaim',
component: Layout,
children: [
{
path: 'index',
name: 'reclaim',
component: () => import('@/views/market/reclaim/index.vue'),
meta: { title: '订单回收站', icon: 'form' }
}
]
},
]
// 动态路由,基于用户权限动态去加载

View File

@ -17,7 +17,7 @@ const service = axios.create({
// axios中请求配置有baseURL选项表示请求URL公共部分
baseURL: process.env.VUE_APP_BASE_API,
// 超时
timeout: 10000
timeout: 20000
})
// request拦截器

View File

@ -0,0 +1,96 @@
<template>
<div>
<h3 style="color: #1482f0">接口详情:{{api.productName}}</h3>
<el-divider></el-divider>
{{api}}
<center>
<el-form :model="api" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="序号" prop="productId" style="width: 70%">
{{api.productId}}
</el-form-item>
<el-form-item label="接口名称" prop="productName" style="width: 70%">
{{api.productName}}
</el-form-item>
<el-form-item label="接口类型" prop="productType" style="width: 70%">
{{api.productType}}
</el-form-item>
<el-form-item label="接口描述" prop="productContent" style="width: 70%">
{{api.productContent}}
</el-form-item>
<el-form-item label="接口销量" prop="productSales" style="width: 70%">
{{api.productSales}}
</el-form-item>
<el-form-item label="接口价格" prop="productPrice" style="width: 70%">
{{api.productPrice}}
</el-form-item>
<el-form-item label="接口来源" prop="productFrom" style="width: 70%">
{{api.productFrom}}
</el-form-item>
<el-form-item label="重要路由" prop="apiRouter" style="width: 70%">
{{api.apiRouter}}
</el-form-item>
<el-form-item label="接口地址" prop="apiAddress" style="width: 70%">
{{api.apiAddress}}
</el-form-item>
<el-form-item label="返回格式" prop="returnFormat" style="width: 70%">
{{api.returnFormat}}
</el-form-item>
<el-form-item label="请求方式" prop="requestMethod" style="width: 70%">
{{api.requestMethod}}
<el-button type="primary" @click="submitForm('ruleForm')"></el-button>
</el-form-item>
</el-form>
</center>
</div>
</template>
<script>
//jsjsjson,
//import from ',
export default {
name: "Apidetailmessage",
//import使"
components: {},
props: {},
data() {
//"
return {
api:{}
};
},
// data",
computed: {},
//data",
watch: {},
//",
methods: {
submitForm(){
this.$router.push("/apimanage/index")
}
},
// - 访this",
created() {
},
// - 访DOM",
mounted() {
this.api = this.$route.query.api
},
beforeCreate() {
}, // - ",
beforeMount() {
}, // - ",
beforeUpdate() {
}, // - ",
updated() {
}, // - ",
beforeDestroy() {
}, // - ",
destroyed() {
}, // - ",
activated() {
} //keep-alive",
};
</script>
<style scoped>
</style>

View File

@ -0,0 +1,335 @@
<template>
<div>
<el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="接口名称" prop="productName" style="width: 30%">
<el-input type="text" v-model="ruleForm.productName" autocomplete="off"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('ruleForm')"></el-button>
</el-form-item>
<el-form-item>
<el-select v-model="ruleForm.productState" placeholder="请选择状态" @change="changestate(ruleForm.productState)">
<el-option label="全部" value=""></el-option>
<el-option label="未上线" value="0"></el-option>
<el-option label="已上线" value="1"></el-option>
</el-select>
</el-form-item>
</el-form>
<el-button type="danger" @click="add()">+</el-button>
<el-table
:data="tableData"
style="width: 100%">
<el-table-column
label="序号"
width="180">
<template slot-scope="scope">
<i class="el-icon-time"></i>
<span style="margin-left: 10px">{{ scope.row.productId }}</span>
</template>
</el-table-column>
<el-table-column
label="接口名称"
width="180">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
<el-tag size="medium">{{ scope.row.productName }}</el-tag>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column
label="接口描述"
width="180">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
{{ scope.row.productContent }}
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column
label="接口来源"
width="180">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
<el-tag size="medium">{{ scope.row.productFrom }}</el-tag>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column
label="接口销量"
width="180">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
<el-tag size="medium">{{ scope.row.productSales }}</el-tag>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<div>
<el-button
size="mini"
type="danger"
@click="handlelook(scope.row)">详情</el-button>
<el-button
size="mini"
type="danger"
@click="handleEdit(scope.row)">修改</el-button>
<el-button
size="mini"
type="danger"
@click="handleDelete(scope.row)">删除</el-button>
</div>
<br>
<div v-if="scope.row.productState===0">
<el-button
size="mini"
type="success"
@click="handleUpdState(scope.row)">上线</el-button>
</div>
<div v-if="scope.row.productState===1">
<el-button
size="mini"
type="success"
@click="handleUpdState(scope.row)">下架</el-button>
</div>
</template>
</el-table-column>
</el-table>
<!--分页-->
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="ruleForm.pageNum"
:page-sizes="[5, 7, 9, 11]"
:page-size="ruleForm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
<el-dialog
title="提示"
:visible.sync="dialogVisible"
width="30%"
:before-close="handleClose">
<center>
<el-form :model="api" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="接口名称" prop="productName" style="width: 70%">
<el-input type="text" v-model="api.productName" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="接口类型" prop="productType" style="width: 70%">
<el-input type="text" v-model="api.productType" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="接口描述" prop="productContent" style="width: 70%">
<el-input type="text" v-model="api.productContent" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="接口价格" prop="productPrice" style="width: 70%">
<el-input type="text" v-model="api.productPrice" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="接口来源" prop="productFrom" style="width: 70%">
<el-input type="text" v-model="api.productFrom" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="重要路由" prop="apiRouter" style="width: 70%">
<el-input type="text" v-model="api.apiRouter" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="接口地址" prop="apiAddress" style="width: 70%">
<el-input type="text" v-model="api.apiAddress" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="返回格式" prop="returnFormat" style="width: 70%">
<el-input type="text" v-model="api.returnFormat" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="请求方式" prop="requestMethod" style="width: 70%">
<el-input type="text" v-model="api.requestMethod" autocomplete="off"></el-input>
</el-form-item>
</el-form>
</center>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button @click="resetForm('ruleForm')"></el-button>
<el-button type="primary" @click="addForm(api)"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
//jsjsjson,
//import from ',
import {
addproduct,
delapi,
productStateLis,
productStateList,
selectapiList,
UpdproductState
} from "@/api/background/apimanage";
import {resetForm} from "@/utils/muyu";
import {add} from "lodash/math";
export default {
name: "Apimanage",
//import使"
components: {},
props: {},
data() {
//"
return {
tableData:[],
ruleForm:{
pageNum:1,
pageSize:9,
productType:'' ,
productState:''
},
total:0,
dialogVisible: false,
api:{},
};
},
// data",
computed: {},
//data",
watch: {},
//",
methods: {
resetForm,
//
handleClose(done) {
this.$confirm('确认关闭?')
.then(_ => {
done();
})
.catch(_ => {});
},
getapiList(){
selectapiList(this.ruleForm).then(response=>{
console.log(response)
this.tableData=response.data.productListResps
this.total=response.data.total
})
},
// //
// productStateLis(){
// productStateLis().then(response=>{
// this.productStateList=response.data
// })
// },
changestate(value){
this.ruleForm.productState=value
this.getapiList()
},
//
submitForm(){
this.getapiList()
},
//
handleSizeChange(val) {
console.log(`每页 ${val}`);
this.ruleForm.pageSize=val
this.getapiList()
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.ruleForm.pageNum=val
this.getapiList()
},
//
handlelook(row){
this.$router.push({path:"/apidetailmessage/index",query:{api:row}})
},
//
handleEdit(row){
this.$router.push({path:"/apiupdmessage/index",query:{api:row}})
},
//
handleDelete(row){
if (confirm("确定删除么")){
delapi(row.productId).then(response=>{
alert(response.msg)
if (response.code==200){
this.getapiList()
}
})
}
},
//
add(){
this.dialogVisible=true
},
addForm(){
addproduct(this.api).then(response=>{
alert(response.msg)
if (response.code==200){
this.dialogVisible=false
this.getapiList()
}
})
},
///线
handleUpdState(row){
if (row.productState==0){
if (confirm("确定上线么")){
row.productState=1
alert(JSON.stringify(row))
UpdproductState(row).then(response=>{
alert(response.msg)
if (response.code==200){
this.getapiList()
}
})
}
}else {
if (confirm("确定下架么")){
row.productState=0
UpdproductState(row).then(response=>{
alert(response.msg)
if (response.code==200){
this.getapiList()
}
})
}
}
}
},
// - 访this",
created() {
this.getapiList()
// this.productStateList()
},
// - 访DOM",
mounted() {
},
beforeCreate() {
}, // - ",
beforeMount() {
}, // - ",
beforeUpdate() {
}, // - ",
updated() {
}, // - ",
beforeDestroy() {
}, // - ",
destroyed() {
}, // - ",
activated() {
} //keep-alive",
};
</script>
<style scoped>
</style>

View File

@ -0,0 +1,108 @@
<template>
<div>
<h3 style="color: #1482f0">接口详情:{{api.productName}}</h3>
<el-divider></el-divider>
{{api}}
<center>
<el-form :model="api" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="序号" prop="productId" style="width: 70%">
<el-input type="text" v-model="api.productId" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="接口名称" prop="productName" style="width: 70%">
<el-input type="text" v-model="api.productName" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="接口类型" prop="productType" style="width: 70%">
<el-input type="text" v-model="api.productType" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="接口描述" prop="productContent" style="width: 70%">
<el-input type="text" v-model="api.productContent" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="接口销量" prop="productSales" style="width: 70%">
<el-input type="text" v-model="api.productSales" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="接口价格" prop="productPrice" style="width: 70%">
<el-input type="text" v-model="api.productPrice" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="接口来源" prop="productFrom" style="width: 70%">
<el-input type="text" v-model="api.productFrom" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="重要路由" prop="apiRouter" style="width: 70%">
<el-input type="text" v-model="api.apiRouter" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="接口地址" prop="apiAddress" style="width: 70%">
<el-input type="text" v-model="api.apiAddress" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="返回格式" prop="returnFormat" style="width: 70%">
<el-input type="text" v-model="api.returnFormat" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="请求方式" prop="requestMethod" style="width: 70%">
<el-input type="text" v-model="api.requestMethod" autocomplete="off"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm(api)"></el-button>
<el-button @click="resetForm('ruleForm')"></el-button>
</el-form-item>
</el-form>
</center>
</div>
</template>
<script>
//jsjsjson,
//import from ',
import {resetForm} from "@/utils/muyu";
import {apiupdmessage} from "@/api/background/apimanage";
export default {
name: "Apiupdmessage",
//import使"
components: {},
props: {},
data() {
//"
return {
api:{}
};
},
// data",
computed: {},
//data",
watch: {},
//",
methods: {
resetForm,
submitForm(api){
apiupdmessage(api).then(response=>{
alert(response.msg)
if (response.code==200){
this.$router.push("/apimanage/index")
}
})
}
},
// - 访this",
created() {
},
// - 访DOM",
mounted() {
this.api = this.$route.query.api
},
beforeCreate() {
}, // - ",
beforeMount() {
}, // - ",
beforeUpdate() {
}, // - ",
updated() {
}, // - ",
beforeDestroy() {
}, // - ",
destroyed() {
}, // - ",
activated() {
} //keep-alive",
};
</script>
<style scoped>
</style>

View File

@ -0,0 +1,280 @@
<template>
<div>
<span>企业管理/待审核企业</span>
<el-container style="height: 500px; border: 1px solid #eee">
<el-aside width="150px" style="background-color: rgb(238, 241, 246)">
<span @click="choseall()"></span>
<div v-for="(companyStatus,index1) in companystatusList" :key="index1">
<span @click="chosetype(index1)" v-if="companyStatus==0"></span>
<span @click="chosetype(index1)" v-if="companyStatus==1"></span>
<span @click="chosetype(index1)" v-if="companyStatus==2"></span>
</div>
</el-aside>
<el-container>
<el-main>
<!--企业审核列表-->
<el-table
:data="tableData"
style="width: 100%">
<el-table-column
label="序号"
width="180">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
<el-tag size="medium">{{ scope.row.companyId }}</el-tag>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column
label="注册人姓名"
width="180">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
<el-tag size="medium">{{ scope.row.registrantName }}</el-tag>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column
label="注册人手机号码"
width="180">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
<el-tag size="medium">{{ scope.row.registrantPhone }}</el-tag>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column
label="职位"
width="180">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
<el-tag size="medium">{{ scope.row.registrantPosition }}</el-tag>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column
label="公司名称"
width="180">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
<el-tag size="medium">{{ scope.row.companyName }}</el-tag>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column
label="地址"
width="180">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
<el-tag size="medium">{{ scope.row.companyAddress }}</el-tag>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column
label="注册日期"
width="180">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
<el-tag size="medium">{{ scope.row.registrantDate }}</el-tag>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column
label="社会统一信用代码"
width="180">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
<el-tag size="medium">{{ scope.row.name }}</el-tag>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column
label="公司营业执照"
width="180">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
<el-tag size="medium">{{ scope.row.businessLicense }}</el-tag>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column
label="审核状态"
width="180">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
<span v-if="scope.row.reviewStatus==0"></span>
<span v-if="scope.row.reviewStatus==1"></span>
<span v-if="scope.row.reviewStatus==2"></span>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<span v-if="scope.row.reviewStatus==0 || scope.row.reviewStatus==1">
<el-button
size="mini"
type="danger"
@click="handleNotEdit(scope.row)">审核不通过</el-button>
</span>
<span v-if="scope.row.reviewStatus==0 || scope.row.reviewStatus==2">
<el-button
size="mini"
@click="handleEdit(scope.row)">审核通过</el-button>
</span>
</template>
</el-table-column>
</el-table>
<!--分页-->
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="ruleForm.pageNum"
:page-sizes="[5, 7, 9, 11]"
:page-size="ruleForm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</el-main>
</el-container>
</el-container>
</div>
</template>
<script>
//jsjsjson,
//import from ',
import {reviewStatus, selectcompanyList, selectcompanystatus} from "@/api/background/company";
export default {
name: "Company",
//import使"
components: {},
props: {},
data() {
//"
return {
tableData:[],
ruleForm:{
pageNum:1,
pageSize:5,
reviewStatus:''
},
total:0,
companyStatus:{},
companystatusList:[]
};
},
// data",
computed: {},
//data",
watch: {},
//",
methods: {
//
getList(){
selectcompanyList(this.ruleForm).then(response=>{
console.log(response)
this.tableData=response.data.companytotalList
this.total=response.data.total
})
},
//
handleSizeChange(val) {
console.log(`每页 ${val}`);
this.ruleForm.pageSize=val
this.getList()
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.ruleForm.pageNum=val
this.getList()
},
//
getcompanystatusList(){
selectcompanystatus().then(response=>{
this.companystatusList=response.data
})
},
//
chosetype(index){
this.ruleForm.reviewStatus=this.companystatusList[index]
this.getList()
},
//
choseall(){
this.ruleForm.reviewStatus=''
this.getList()
},
//
handleNotEdit(row){
row.reviewStatus=2
reviewStatus(row).then(response=>{
alert(response.msg)
if (response.code==200){
this.getList()
this.getcompanystatusList()
}
})
},
//
handleEdit(row){
row.reviewStatus=1
reviewStatus(row).then(response=>{
alert(response.msg)
if (response.code==200){
this.getList()
this.getcompanystatusList()
}
})
}
},
// - 访this",
created() {
this.getList()
this.getcompanystatusList()
},
// - 访DOM",
mounted() {
},
beforeCreate() {
}, // - ",
beforeMount() {
}, // - ",
beforeUpdate() {
}, // - ",
updated() {
}, // - ",
beforeDestroy() {
}, // - ",
destroyed() {
}, // - ",
activated() {
} //keep-alive",
};
</script>
<style scoped>
</style>

View File

@ -0,0 +1,210 @@
<template>
<div>
<span>
<el-radio-group v-model="labelPosition" size="small">
<el-radio-button label="left">左对齐</el-radio-button>
<el-radio-button label="right">右对齐</el-radio-button>
<el-radio-button label="top">顶部对齐</el-radio-button>
</el-radio-group>
<div style="margin: 20px;"></div>
<el-form :label-position="labelPosition" label-width="80px" :model="tableMsg">
<el-form-item label="任务id">
<el-input v-model="tableMsg.taskId" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="数据库id">
<el-input v-model="tableMsg.databaseId" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="数据表">
<el-cascader
v-model="tableMsg.tableName"
:options="tables"
:props="{ expandTrigger: 'hover',value:'name',label:'name',children:'tableNames' }"
@change="handleChange"></el-cascader>
</el-form-item>
<el-form-item label="表别名">
<el-input v-model="tableMsg.tableAsName"></el-input>
</el-form-item>
</el-form>
</span>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="nextOne()"></el-button>
</span>
<el-dialog
title="提示"
:visible.sync="dialogVisible1"
width="65%"
>
<el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column label="ID" width="120">
<template slot-scope="scope">{{ scope.row.id }}</template>
</el-table-column>
<el-table-column prop="field" label="字段名称" width="120"/>
<el-table-column prop="type" label="字段类型" width="120"/>
<el-table-column prop="collation" label="编码格式" width="120"/>
<el-table-column prop="nullable" label="是否为空" width="120"/>
<el-table-column prop="primarys" label="主键" width="120"/>
<el-table-column prop="annotation" label="注释" width="120"/>
<el-table-column label="表别名" width="120">
<template slot-scope="scope">{{ scope.row.dataField }}</template>
</el-table-column>
<el-table-column label="规则" width="120">
<template slot-scope="scope">
<el-select v-model="scope.row.fieldEngineId" placeholder="无规则">
<el-option label="无规则" value="1"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</template>
</el-table-column>
</el-table>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible1 = false"> </el-button>
<el-button type="primary" @click="doSure()"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
//jsjsjson,
//import from ',
import {addTableField, addTaskInfo, extractDataName, selectByTableName} from "../../../api/etl/etl";
import node from "../../../components/ef/node.vue";
export default {
name: "task",
//import使"
components: {},
props: ['nodesIds'],
data() {
//"
return {
allFields:{
taskId: this.$route.query.id,
nodeId: this.nodesIds,
field:"",
asField:"",
isNull:"",
comment:""
},
tableData:[],
dataForm:true,
dialogVisible1: false,
tables:{},
tableMsg:{
//nodeId
nodeId: this.nodesIds,
//ID
taskId: this.$route.query.id,
//ID
databaseId:"",
//
tableName:"",
//
tableField:"",
//
tableAsName:"",
//
tableAsField:"",
//
fieldEngineId:""
},
labelPosition: 'right',
dialogVisible:false,
multipleSelection: [],
fields:[]
};
},
// data",
computed: {},
//data",
watch: {},
//",
methods: {
doSure(){
this.dialogVisible1 = false
this.$emit('taskInputForm', false);
this.tableMsg.taskId = this.$route.query.id
let detailData = [...new Set(this.multipleSelection)]
this.tableMsg.tableAsField = detailData.join(',');
this.fields.forEach(item => {
this.allFields.asField = item.dataField
this.allFields.field = item.field
this.allFields.isNull = item.nullable
this.allFields.comment = item.annotation
addTableField(this.allFields).then(res => {
console.log(res);
})
})
addTaskInfo(this.tableMsg).then(res =>{
if (res.code == 200){
this.$message.success("节点安置成功")
}
})
},
handleSelectionChange(val) {
this.fields = val
val.forEach(res =>{
this.multipleSelection.push(res.dataField);
})
console.log(this.fields);
},
nextOne(){
let tableName = this.tableMsg.tableName.toString();
selectByTableName(tableName).then(res => {
this.dialogVisible1 = true
this.tableData = res.data
this.tableData.forEach(item => {
this.tableMsg.tableField += ","+item.field
})
this.tableMsg.tableField = this.tableMsg.tableField.substring(1)
res.data.forEach(response => {
response.dataField = this.tableMsg.tableAsName+"_"+response.field
})
})
},
handleChange(value) {
this.tableMsg.databaseId = value[0]
this.tableMsg.tableName = value[1]
},
getDatabaseMessage(){
this.dialogVisible = true
extractDataName().then(res => {
this.tables = res.data
})
},
},
// - 访this",
created() {
this.getDatabaseMessage()
},
// - 访DOM",
mounted() {
},
beforeCreate() {
}, // - ",
beforeMount() {
}, // - ",
beforeUpdate() {
}, // - ",
updated() {
}, // - ",
beforeDestroy() {
}, // - ",
destroyed() {
}, // - ",
activated() {
} //keep-alive",
};
</script>
<style scoped>
</style>

View File

@ -1,68 +1,88 @@
<template>
<div>
<h1 style="color: #00afff" align="center">发布任务</h1>
<el-form :inline="true" :model="formInline" class="demo-form-inline">
<el-form-item label="任务名称">
<el-input v-model="formInline.name" placeholder="请输入任务名称"></el-input>
</el-form-item>
<el-form-item label="任务权重">
<el-select v-model="formInline.weight" placeholder="任务权重">
<el-option label="紧急" value="1"></el-option>
<el-option label="正常" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="任务执行状态">
<el-select v-model="formInline.processStatus" placeholder="任务执行状态">
<el-option label="待执行" value="1"></el-option>
<el-option label="已就绪" value="2"></el-option>
<el-option label="执行中" value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit"></el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" style="width: 100%">
<el-table-column label="编号" width="180">
<el-table-column label="编号" width="50">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.id }}</span>
</template>
</el-table-column>
<el-table-column label="任务名称" width="180">
<el-table-column label="任务名称" width="120">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.name }}</span>
</template>
</el-table-column>
<el-table-column label="任务权重级别" width="180">
<el-table-column label="任务权重级别" width="120">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.weight }}</span>
<span style="margin-left: 10px" v-if="scope.row.weight == 1"></span>
<span style="margin-left: 10px" v-if="scope.row.weight == 2"></span>
</template>
</el-table-column>
<el-table-column label="任务执行状态" width="180">
<el-table-column label="任务执行状态" width="120">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.processTotal }}</span>
<span style="margin-left: 10px">{{ scope.row.processStatus }}</span>
</template>
</el-table-column>
<el-table-column label="最终执行结果" width="180">
<el-table-column label="最终执行结果" width="120">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.status }}</span>
<span style="margin-left: 10px" v-if="scope.row.status == 1"></span>
<span style="margin-left: 10px" v-if="scope.row.status == 0"></span>
</template>
</el-table-column>
<el-table-column label="总处理条数" width="180">
<el-table-column label="总处理条数" width="120">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.total }}</span>
</template>
</el-table-column>
<el-table-column label="创建人" width="180">
<el-table-column label="创建人" width="60">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.createBy }}</span>
</template>
</el-table-column>
<el-table-column label="创建时间" width="180">
<el-table-column label="创建时间" width="150">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.createTime }}</span>
</template>
</el-table-column>
<el-table-column label="修改人" width="180">
<el-table-column label="修改人" width="60">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.updateBy }}</span>
</template>
</el-table-column>
<el-table-column label="修改时间" width="180">
<el-table-column label="修改时间" width="150">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.updateTime }}</span>
</template>
</el-table-column>
<el-table-column label="操作">
<el-table-column label="操作" width="300">
<template slot-scope="scope">
<el-button
size="mini"
@click="handleEdit(scope.$index, scope.row)">编辑</el-button>
<el-button
size="mini"
type="danger"
@click="handleDelete(scope.$index, scope.row)">删除</el-button>
<el-button size="mini" @click="handleEdit(scope.$index, scope.row)">编辑节点</el-button>
<el-button size="mini" @click="todoTask(scope.$index, scope.row)">执行任务</el-button>
<el-button size="mini" type="danger" @click="handleDelete(scope.$index, scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
@ -78,12 +98,12 @@
<el-radio-button label="top">顶部对齐</el-radio-button>
</el-radio-group>
<div style="margin: 20px;"></div>
<el-form :label-position="labelPosition" label-width="80px" :model="formLabelAlign">
<el-form :label-position="labelPosition" label-width="80px" :model="task">
<el-form-item label="任务名称">
<el-input v-model="formLabelAlign.name"></el-input>
<el-input v-model="task.name"></el-input>
</el-form-item>
<el-form-item label="任务权重">
<el-input v-model="formLabelAlign.weight"></el-input>
<el-input v-model="task.weight"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
@ -97,7 +117,7 @@
<script>
//jsjsjson,
//import from ',
import {addTask, delTask, showTask} from "../../../api/etl/etl";
import {addTask, delTask, showTask, todoTask} from "../../../api/etl/etl";
export default {
name: "Task",
@ -108,10 +128,14 @@ export default {
//"
return {
formLabelAlign:{},
formInline:{
name : "",
weight : "",
processStatus : ""
},
task:{},
labelPosition: 'right',
tableData:[],
task:{},
dialogVisible: false
};
},
@ -121,6 +145,18 @@ export default {
watch: {},
//",
methods: {
todoTask(index,row){
todoTask(row.id).then(res => {
if (res.code == 200){
this.$message.success("操作成功")
}else {
this.$message.error(res.msg)
}
})
},
onSubmit(){
this.getData()
},
toAdd(){
this.dialogVisible = true
},
@ -136,12 +172,12 @@ export default {
})
},
getData(){
showTask().then(res => {
showTask(this.formInline).then(res => {
this.tableData = res.data
})
},
handleEdit(index, row) {
console.log(index, row);
this.$router.push({path:"/etl/active",query:{"id":row.id}})
},
handleDelete(index, row) {
console.log(index, row);

View File

@ -0,0 +1,632 @@
<template>
<div class="dashboard-container">
<el-button @click="saveActive" icon="el-icon-position" style="margin-right: 20px;float :right">保存</el-button>
<p>选择节点</p>
<div class="antvBox">
<div class="menu-list">
<div v-for="item in moduleList" :key="item.id"
draggable="true"
@dragend="handleDragEnd($event, item)">
<img :src="item.image" alt="" />
<p>{{ item.name }}</p>
</div>
</div>
<div class="canvas-card">
<div id="container" />
</div>
</div>
<el-dialog title="提示" :visible.sync="dialogVisible" width="30%">
<task v-if="taskOpen" @taskInputForm="findFormValue" :nodes-ids="nodesIds"/>
</el-dialog>
<el-dialog title="提示" :visible.sync="dialogVisible1" width="30%">
<el-table :data="nodeList" style="width: 100%">
<el-table-column prop="databaseId" label="数据库" width="180"></el-table-column>
<el-table-column prop="tableAsName" label="表别名" width="180"></el-table-column>
</el-table>
<div style="margin: 20px;"></div>
<el-form label-width="80px" :model="joinCheck">
<el-form-item label="联查方式">
<el-select v-model="joinCheck.joinId" placeholder="联查方式">
<el-option label="左联查" value="1"></el-option>
<el-option label="右联查" value="2"></el-option>
<el-option label="内联查" value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-select v-model="joinCheck.firstCloumn" placeholder="请选择关联字段">
<el-option
v-for="item in options1"
:key="item.nodeMsg"
:label="item.nodeMsg"
:value="item.nodeMsg">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-select v-model="joinCheck.secondCloumn" placeholder="请选择关联字段">
<el-option
v-for="item in options2"
:key="item.nodeMsg"
:label="item.nodeMsg"
:value="item.nodeMsg">
</el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible1 = false"> </el-button>
<el-button type="primary" @click="todoSelect"> </el-button>
</span>
</el-dialog>
<el-dialog
title="提示"
:visible.sync="dialogVisible2"
width="40%"
>
<el-table ref="multipleTable" :data="fields" tooltip-effect="dark" style="width: 100%"
@selection-change="SelectionChange">
<el-table-column type="selection" width="55"/>
<el-table-column label="字段" width="120"><template slot-scope="scope">{{ scope.row.field }}</template></el-table-column>
<el-table-column label="别名" width="120"><template slot-scope="scope">{{ scope.row.asField }}</template></el-table-column>
<el-table-column label="非空" width="120"><template slot-scope="scope">{{ scope.row.isNull }}</template></el-table-column>
<el-table-column label="注释" width="120"><template slot-scope="scope">{{ scope.row.comment }}</template></el-table-column>
</el-table>
<br>
<el-cascader
v-model="toTable"
:options="tt"
:props="{ expandTrigger: 'hover',value:'name',label:'name',children:'tableNames' }"
@change="handleChange"></el-cascader>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible2 = false"> </el-button>
<el-button type="primary" @click="showTableFields"> </el-button>
</span>
</el-dialog>
<el-dialog title="提示" :visible.sync="finalVisible" width="30%">
<el-table ref="multipleTable" :data="sqlList" tooltip-effect="dark" style="width: 100%"
@selection-change="SelectionChange">
<el-table-column label="输入字段" width="120">
<template slot-scope="scope">
{{ scope.row.asField }}
</template>
</el-table-column>
<el-table-column label="输出字段" width="120">
<el-select v-model="cloumns" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.id"
:label="item.field"
:value="item.field">
</el-option>
</el-select>
</el-table-column>
</el-table>
<span slot="footer" class="dialog-footer">
<el-button @click="finalVisible = false"> </el-button>
<el-button type="primary" @click="addSql"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { Graph } from "@antv/x6";
import {
addOutPut,
addSelect,
extractDataName, findBySelectId,
seeTableField, selectByAsField,
selectByNodeId,
selectByOne, selectByTableName,
} from "../../../api/etl/etl";
import task from "/src/views/components/task/index.vue"
export default {
name: "antvX6",
components:{
task
},
data() {
return {
sourceField:[],
outPuter:{
nodeId:"",
taskId:"",
tableFields:"",
tableAsFields:"",
targetDatabase:"",
targetTableName:""
},
options:{},
sqlList:[],
toTable:"",
tt:{},
fields:[],
finalVisible:false,
dialogVisible2:false,
options1:{},
options2:{},
nodeList:[],
neighbors:[],
nodesIds:"",
taskOpen:false,
joinCheck:{
nodeId:"",
joinId:"",
leftNodeId:"",
rightNodeId:"",
firstCloumn:"",
secondCloumn:""
},
asFields:[],
tableData:[],
dialogVisible1: false,
tables:{},
tableMsg:{
tableName:"",
tableAsField:""
},
cloumns:'',
labelPosition: 'right',
dialogVisible:false,
curSelectNode: "",
tableFields:[],
tableDataNodeId:[],
moduleList: [
{
id: 1,
name: "开始",
image: require("@/assets/img/1.png"),
},
{
id: 8,
name: "表",
image: require("@/assets/img/2.png"),
},
{
id: 2,
name: "联查",
image: require("@/assets/img/3.png"),
},
{
id: 3,
name: "导出",
image: require("@/assets/img/4.png"),
},
],
graph: null
};
},
created() {
this.getDatabaseMessage()
},
methods: {
showTableFields(){
this.finalVisible = true
let fieldsList = [...new Set(this.tableFields)]
selectByAsField(fieldsList).then(res => {
this.sqlList = res.data
})
selectByTableName(this.toTable).then(res => {
this.options = res.data
})
},
addSql(){
this.outPuter.taskId = this.$route.query.id
let fieldsList = [...new Set(this.tableFields)]
let tableAsFieldList = [...new Set(this.sourceField)]
this.outPuter.tableFields = fieldsList.toString()
this.outPuter.tableAsFields = tableAsFieldList.toString()
this.outPuter.targetTableName = this.toTable
addOutPut(this.outPuter).then(res => {
if (res.code == 200){
this.$message.success("输出节点放置成功")
}else {
this.$message.error("发生异常请联系管理员")
}
})
this.dialogVisible2 = false
this.finalVisible = false
},
handleChange(value){
this.outPuter.targetDatabase = value[0]
this.toTable = value[1]
},
getDatabaseMessage(){
extractDataName().then(res => {
this.tt = res.data
})
},
SelectionChange(val){
val.forEach(res => {
this.tableFields.push(res.asField)
this.sourceField.push(res.field)
})
},
todoSelect(){
addSelect(this.joinCheck).then(res => {
if (res.code == 200){
this.$message.success("操作成功")
}else {
this.$message.error(res.msg)
}
})
this.dialogVisible1 = false
},
findFormValue(){
this.dialogVisible = false
this.taskOpen = false
},
openForm(data){
let textWrap = data.attrs.label.textWrap;
if (textWrap.text == "表"){
console.log("表节点ID=>"+data.id);
this.tableDataNodeId.push(data.id)
this.dialogVisible = true;
this.taskOpen=true;
}
if (textWrap.text == "联查"){
this.dialogVisible1 = true;
this.joinCheck.nodeId = data.id
console.log("联查节点ID=>"+data.id);
const edges = this.graph.getEdges().filter(edge => {
return edge.getSourceNode().id === data.id || edge.getTargetNode().id === data.id;
});
const neighbors = [];
edges.forEach(edge => {
const otherNodeId = edge.getSourceNode().id === data.id ? edge.getTargetNode().id : edge.getSourceNode().id;
if (!neighbors.includes(otherNodeId)) {
neighbors.push(otherNodeId);
}
});
this.neighbors = neighbors;
this.joinCheck.leftNodeId = neighbors[0]
this.joinCheck.rightNodeId = neighbors[1]
selectByOne(neighbors[0]).then(res =>{
this.options1 = res.data
})
selectByOne(neighbors[1]).then(res =>{
this.options2 = res.data
})
selectByNodeId(JSON.stringify(this.neighbors)).then(res => {
this.nodeList = res.data
})
}
if (textWrap.text == "导出"){
this.outPuter.nodeId = data.id
console.log("导出节点ID=>"+data.id);
this.dialogVisible2 = true
findBySelectId(this.neighbors[0]).then(res => {
if (res.data == null){
seeTableField(this.tableDataNodeId).then(res => {
this.fields = res.data
})
}else{
seeTableField(this.neighbors).then(res => {
this.fields = res.data
})
}
})
}
},
//todo
nodeAddEvent() {
const { graph } = this;
const container = document.getElementById("container");
const changePortsVisible = (visible) => {
const ports = container.querySelectorAll(".x6-port-body");
for (let i = 0, len = ports.length; i < len; i = i + 1) {
ports[i].style.visibility = visible ? "visible" : "hidden";
}
};
this.graph.on("node:mouseenter", () => {
changePortsVisible(true);
});
this.graph.on("node:mouseleave", () => {
changePortsVisible(false);
});
this.graph.on("node:dblclick",(evt) =>{
let data = evt.node.store.data;
this.nodesIds = data.id;
this.openForm(data)
})
//todo
this.graph.on("node:click", ({ e, x, y, node, view }) => {
//
if (this.curSelectNode) {
//
this.curSelectNode.removeTools();
//
if (this.curSelectNode !== node) {
node.addTools([
{
name: "boundary",
args: {
attrs: {
fill: "#16B8AA",
stroke: "#2F80EB",
strokeWidth: 1,
fillOpacity: 0.1,
},
},
},
{
name: "button-remove",
args: {
x: "100%",
y: 0,
offset: {
x: 0,
y: 0,
},
},
},
]);
this.curSelectNode = node;
} else {
this.curSelectNode = null;
}
} else {
this.curSelectNode = node;
node.addTools([
{
name: "boundary",
args: {
attrs: {
fill: "#16B8AA",
stroke: "#2F80EB",
strokeWidth: 1,
fillOpacity: 0.1,
},
},
},
{
name: "button-remove",
args: {
x: "100%",
y: 0,
offset: {
x: 0,
y: 0,
},
},
},
]);
}
});
//todo 线
this.graph.on("cell:mouseenter", ({ cell }) => {
if (cell.shape == "edge") {
cell.addTools([
{
name: "button-remove",
args: {
x: "100%",
y: 0,
offset: {
x: 0,
y: 0,
},
},
},
]);
cell.setAttrs({
line: {
stroke: "#409EFF",
},
});
cell.zIndex = 99; // 线
}
});
this.graph.on("cell:mouseleave", ({ cell }) => {
if (cell.shape === "edge") {
cell.removeTools();
cell.setAttrs({
line: {
stroke: "black",
},
});
cell.zIndex = 1; // 线线
}
});
},
// todo
handleDragEnd(e, item) {
//
this.addHandleNode(
e.pageX - 500,
e.pageY - 200,
new Date().getTime(),
item.image,
item.name
);
},
initGraph() {
const container = document.getElementById("container");
this.graph = new Graph({
container: container, //
width: container.offsetWidth, //
height: container.offsetHeight, //
background: false, //
snapline: true, // 线
// 线
connecting: {
snap: true, //
allowBlank: false, //
allowMulti: true, //
allowLoop: true, // 线
highlight: true, //
highlighting: {
magnetAdsorbed: {
name: "stroke",
args: {
attrs: {
fill: "#5F95FF",
stroke: "#5F95FF",
},
},
},
},
router: {
//
name: "orth",
},
connector: {
//
name: "rounded",
args: {
radius: 8,
},
},
},
panning: {
enabled: false,
},
mousewheel: {
enabled: true, //
zoomAtMousePosition: true,
modifiers: "ctrl",
minScale: 0.5,
maxScale: 3,
},
grid: {
type: "dot",
size: 20, // 10px
visible: true, //
args: {
color: "#a0a0a0", // 线/
thickness: 2, // 线/
},
},
});
this.nodeAddEvent()
},
//
addHandleNode(x, y, id, image, name) {
this.graph.addNode({
id: id,
shape: "image", // 使 'rect'
x: x,
y: y,
width: 60,
height: 60,
imageUrl: image,
attrs: {
body: {
stroke: "#ffa940",
fill: "#ffd591",
},
label: {
textWrap: {
width: 90,
text: name,
},
fill: "black",
fontSize: 12,
refX: 0.5,
refY: "100%",
refY2: 4,
textAnchor: "middle",
textVerticalAnchor: "top",
},
},
ports: {
groups: {
group1: {
position: [30, 30],
},
},
items: [
{
group: "group1",
id: "port1",
attrs: {
circle: {
r: 6,
magnet: true,
stroke: "#ffffff",
strokeWidth: 2,
fill: "#5F95FF",
},
},
},
],
},
zIndex: 10,
});
},
//todo
saveActive() {
console.log(this.graph.toJSON(), "graph");
console.log(this.graph.getNodes(), "node");
},
},
// - 访DOM",
mounted() {
this.initGraph()
},
};
</script>
<style lang="scss" scoped>
.dashboard-container {
.antvBox {
display: flex;
width: 100%;
height: 100%;
color: black;
padding-top: 20px;
.menu-list {
height: 100%;
width: 300px;
padding: 0 10px;
box-sizing: border-box;
display: flex;
justify-content: space-between;
align-content: flex-start;
flex-wrap: wrap;
> div {
margin-bottom: 10px;
border-radius: 5px;
padding: 0 10px;
box-sizing: border-box;
cursor: pointer;
color: black;
width: 105px;
display: flex;
flex-wrap: wrap;
justify-content: center;
img {
height: 50px;
width: 50px;
}
P {
width: 90px;
text-align: center;
}
}
}
.canvas-card {
width: 1700px;
height: 750px;
box-sizing: border-box;
> div {
width: 1400px;
height: 750px;
border: 2px dashed #2149ce;
}
}
}
}
</style>

View File

@ -1,6 +1,7 @@
<template>
<div class="app-container home">
<iframe width="680" height="260" frameborder="0" scrolling="no" hspace="0" src="https://i.tianqi.com/?c=code&a=getcode&id=13&icon=1&py=pudong"/>
<iframe width="550" height="300" frameborder="0" scrolling="no" hspace="0" src=" https://www.beijing-time.org/"/>
</div>
</template>

View File

@ -1,5 +1,6 @@
<template>
<div>
{{myapi}}
<el-row>
<el-col :span="24"><div class="grid-content bg-purple-dark">
<el-form ref="form" :model="myapi" label-width="120px" :rules="rules">
@ -12,44 +13,133 @@
<el-form-item label="产品介绍:">
{{myapi.productContent}}
</el-form-item>
<el-form-item label="重要路由:">
{{myapi.apiRouter}}
</el-form-item>
<el-row>
<el-col :span="24"><div class="grid-content bg-purple-dark">
<el-button type="info" @click="test()"></el-button>
<el-button type="primary">立即申请</el-button>
<span v-if="myapi.remark=='是'">
<el-button type="info" @click="test(myapi)">使</el-button>
<el-button type="primary" @click="apply(myapi)"></el-button>
</span>
<span v-if="myapi.remark=='否'">
<el-button type="info" @click="test(myapi)"></el-button>
<el-button type="primary" @click="apply(myapi)"></el-button>
</span>
</div></el-col>
</el-row>
</el-form>
</div></el-col>
</el-row>
<el-divider></el-divider>
<el-row class="first-row" >
<el-col :span="24"><div class="grid-content bg-purple-dark" >
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="API文档" name="first">
<el-form ref="form" :model="myapi" label-width="120px" :rules="rules">
<el-form-item label="接口地址:" >
{{myapi.productName}}
{{myapi.apiAddress}}
</el-form-item>
<el-form-item label="返回格式:">
{{myapi.productPrice}}/
{{myapi.returnFormat}}
</el-form-item>
<el-form-item label="请求方式:">
{{myapi.productContent}}
{{myapi.requestMethod}}
</el-form-item>
<el-form-item label="简介:">
{{myapi.productContent}}
<el-form-item label="请求Header:">
<el-table
:data="heanderData"
style="width: 100%">
<el-table-column
label="名称"
width="180">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
{{scope.row.headerName}}
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column
label="值"
width="250">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
{{scope.row.headerValue}}
</div>
</el-popover>
</template>
</el-table-column>
</el-table>
</el-form-item>
<el-form-item label="请求参数说明:">
{{myapi.productContent}}
<el-table
:data="requestData"
style="width: 100%">
<el-table-column
label="参数名称"
width="180">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
{{scope.row.requestName}}
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column
label="参数类型"
width="250">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
{{scope.row.requestType}}
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column
label="是否必填"
width="250">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
{{scope.row.requestIfmust}}
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column
label="说明"
width="250">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
{{scope.row.requestContent}}
</div>
</el-popover>
</template>
</el-table-column>
</el-table>
</el-form-item>
<el-form-item label="返回参数说明:">
{{myapi.productContent}}
</el-form-item>
<el-form-item label="JSON返回示例:">
{{myapi.productContent}}
</el-form-item>
<el-form-item label="XML返回示例:">
{{myapi.productContent}}
</el-form-item>
</el-form>
</el-tab-pane>
@ -58,13 +148,168 @@
</el-tabs>
</div></el-col>
</el-row>
<!--测试对话框-->
<el-dialog
title="接口测试"
:visible.sync="dialogVisible"
width="30%"
:before-close="handleClose">
<el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="接口名称" prop="pass">
<el-input type="text" v-model="ruleForm.productName" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="接口地址" prop="pass">
<el-input type="text" v-model="ruleForm.apiAddress" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="请求方式" prop="pass">
<el-input type="text" v-model="ruleForm.requestMethod" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="请求参数" prop="pass" v-if="ruleForm.productName=='' && ruleForm.productName==''" >
<el-input type="text" v-model="ruleForm.parameter" autocomplete="off"></el-input>
</el-form-item>
<div v-if="ruleForm.productName=='新闻头条'">
<el-form-item label="type" prop="pass" >
<el-input type="text" v-model="ruleForm.type" autocomplete="off"></el-input>
<span>说明支持类型top(推荐,默认)guonei(国内)guoji(国际)yule(娱乐)tiyu(体育)junshi(军事)keji(科技)caijing(财经)youxi(游戏)qiche(汽车)jiankang(健康)</span>
</el-form-item>
<el-form-item label="page" prop="pass" >
<el-input type="text" v-model="ruleForm.page" autocomplete="off"></el-input>
<span>说明当前页数, 默认1, 最大50</span>
</el-form-item>
<el-form-item label="page_size" prop="pass" >
<el-input type="text" v-model="ruleForm.pageSize" autocomplete="off"></el-input>
<span>说明每页返回条数, 默认30 , 最大30</span>
</el-form-item>
<el-form-item label="is_filter" prop="pass" >
<el-input type="text" v-model="ruleForm.isFilter" autocomplete="off"></el-input>
<span>说明是否只返回有内容详情的新闻, 1:, 默认0</span>
</el-form-item>
</div>
<div v-if="ruleForm.productName=='身份证实名认证'">
<el-form-item label="身份证号码" prop="pass" >
<el-input type="text" v-model="ruleForm.idcard" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="姓名" prop="pass">
<el-input type="text" v-model="ruleForm.realname" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="是否返回单号" prop="pass" >
<el-input type="text" v-model="ruleForm.orderid" autocomplete="off"></el-input>
<span>传1时返回单号默认不返回单号(建议传入)</span>
</el-form-item>
</div>
<!--一个参数-->
<el-form-item v-if="ruleForm.productName=='手机号码归属地' && ruleForm.productName=='万年历'">
<el-button type="primary" @click="submitForm(ruleForm)"></el-button>
</el-form-item>
<!--多个参数-->
<el-form-item v-if="ruleForm.productName=='' ||ruleForm.productName=='' " >npm
<el-button type="primary" @click="newsForm(ruleForm)"></el-button>
</el-form-item>
<!--无参数-->
<el-form-item v-if="ruleForm.productName==''" >
<el-button type="primary" @click="noForm(ruleForm)"></el-button>
</el-form-item>
</el-form>
<pre id="json-display">
</pre>
<ul id="news-list">
<!-- 这里将动态插入新闻项 -->
</ul>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">返回</el-button>
</span>
</el-dialog>
<!--支付规格选择对话框-->
<el-dialog
title="提示"
:visible.sync="dialogVisible1"
width="50%"
:before-close="handleClose1">
<span style="color: #1ab394">请选择申请规格</span>
<el-table
:data="tableData"
style="width: 100%">
<el-table-column
label="支付规格"
width="180">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
<el-tag size="medium">{{ scope.row.productSpecificationName }}</el-tag>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column
label="价格"
width="180">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top">
<div slot="reference" class="name-wrapper">
<el-tag size="medium">{{ scope.row.middlePrice }}</el-tag>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button
size="mini"
@click="handleEdit(scope.row)">选择</el-button>
</template>
</el-table-column>
</el-table>
<el-divider></el-divider>
<el-form ref="form" :model="newapi" label-width="120px" :rules="rules">
<el-form-item label="产品名称:" >
{{newapi.productName}}
</el-form-item>
<el-form-item label="产品规格:" >
{{newapi.productSpecification}}
</el-form-item>
<el-form-item label="产品价格:" v-if="newapi.productSpecification=='按次查询'">
{{newapi.productPrice}}/
</el-form-item>
<el-form-item label="支付价格:" v-if="newapi.productSpecification!='按次查询'">
{{newapi.productPrice}}
</el-form-item>
<el-form-item label="产品介绍:">
{{newapi.productContent}}
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible1 = false"> </el-button>
<el-button type="primary" @click=" confirmSelection"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
//jsjsjson,
//import from ',
export default {
import {
findcount,
getHeader, getRequest,
iftest,
reducetestcount,
sendrequest,
sendrequest1,
sendrequest2
} from "@/api/apitest/apitest";
import api from "js-cookie";
import {companyauthentication, ifcompanyauthentication} from "@/api/authentication/authentication";
import {selectproductspecification} from "@/api/market/product";
import myapi from "@/views/market/myapi/index.vue";
export default {
name: "Apitest",
//import使"
components: {},
@ -78,7 +323,16 @@
productPrice: '',
productContent: ''
},
activeName: 'first'
activeName: 'first',
dialogVisible: false,
dialogVisible1: false,
ruleForm:{},
tableData:[],
newapi:{},
//
heanderData:[],
//
requestData:[]
};
},
// data",
@ -87,10 +341,256 @@
watch: {},
//",
methods: {
//
getHeader(myapi){
getHeader(myapi).then(response=>{
this.heanderData=response.data
})
},
//
getRequest(myapi){
getRequest(myapi).then(response=>{
this.requestData=response.data
})
},
//
handleClick(tab, event) {
console.log(tab, event);
},
//
test(myapi){
//<=0
findcount(myapi).then(response=>{
alert(response.data.testCount)
if (response.data.testCount<=0){
alert("使用次数已到期,若像继续使用请先充值!")
}else{
this.dialogVisible=true
this.ruleForm={
productName: myapi.productName,
apiAddress: myapi.apiAddress,
requestMethod: myapi.requestMethod,
apiRouter: myapi.apiRouter
}
}
})
},
//
apply(myapi){
//
ifcompanyauthentication().then(response=>{
if (response.code!=200){
alert(response.msg)
}else {
this.getproduct(myapi)
this.dialogVisible1=true
this.newapi={
productName: myapi.productName,
productPrice: myapi.productPrice,
productContent: myapi.productContent,
productSpecification: myapi.productSpecification
}
}
})
},
//
handleClose(done) {
this.$confirm('确认关闭?')
.then(_ => {
done();
})
.catch(_ => {});
},
//
handleClose1(done) {
this.$confirm('确认关闭?')
.then(_ => {
done();
})
.catch(_ => {});
},
//
getproduct(specification){
selectproductspecification(specification).then(response=>{
this.tableData=response.data
})
},
//
handleEdit(row){
this.newapi={
productName:this.myapi.productName,
productSpecification: row.productSpecificationName,
productPrice: row.middlePrice,
productContent:this.myapi.productContent,
}
},
//
noForm(ruleForm){
sendrequest2(ruleForm).then(response=>{
console.log(response)
const jsonData1 = response.data; // response.dataJSON
// JSONJavaScript
const jsonData = JSON.parse(jsonData1);
//
var container = document.getElementById('news-list');
//
container.innerHTML = '';
// div
var resultDiv = document.createElement('div');
// jsonData.reason
if (jsonData.reason !== undefined) {
// reason
resultDiv.innerHTML += '<h2>Reason: ' + jsonData.reason.replace(/!/g, '') + '</h2>';
} else {
resultDiv.innerHTML += '<h2>Reason: Not available</h2>';
}
// jsonData.result
if (jsonData.result !== undefined) {
// result使
resultDiv.innerHTML += '<p>Content: ' + jsonData.result.content + '</p>';
resultDiv.innerHTML += '<p>Source: ' + jsonData.result.source + '</p>';
// JSONrealname, idcard, orderid, res
} else {
resultDiv.innerHTML += '<p>Result information is not available.</p>';
}
// div
container.appendChild(resultDiv);
})
//-1
reducetestcount(this.myapi).then(response=>{})
},
//
submitForm(ruleForm){
sendrequest(ruleForm).then(response=>{
const jsonData = response.data;
// 使JSON.stringify()JSON2
const formattedJson = JSON.stringify(jsonData, null, 2);
// <pre>innerHTMLJSON
document.getElementById('json-display').innerHTML = formattedJson;
})
//-1
reducetestcount(this.myapi).then(response=>{
})
},
//
newsForm(ruleForm) {
if (ruleForm.productName=='新闻头条'){
sendrequest1(ruleForm).then(response => {
console.log(response)
const jsonData1 = response.data; // response.dataJSON
// JSONJavaScript
const jsonData = JSON.parse(jsonData1);
//
var container = document.getElementById('news-list');
//
container.innerHTML = '';
// div
var resultDiv = document.createElement('div');
// jsonData.reason
if (jsonData.reason !== undefined) {
// reason
resultDiv.innerHTML += '<h2>Reason: ' + jsonData.reason.replace(/!/g, '') + '</h2>';
} else {
resultDiv.innerHTML += '<h2>Reason: Not available</h2>';
}
// jsonData.result
if (jsonData.result !== undefined) {
//
resultDiv.innerHTML += '<p>Stat: ' + jsonData.result.stat + '</p>';
resultDiv.innerHTML += '<p>Page: ' + jsonData.result.page + '</p>';
resultDiv.innerHTML += '<p>Page Size: ' + jsonData.result.pageSize + '</p>';
// jsonData.result.data
if (Array.isArray(jsonData.result.data)) {
// HTML
jsonData.result.data.forEach(item => {
resultDiv.innerHTML += `
<div>
<h3>${item.title}</h3>
<p>Unique Key: ${item.uniquekey}</p>
<p>Date: ${item.date}</p>
<p>Category: ${item.category}</p>
<p>Author: ${item.author_name}</p>
<p>URL: <a href="${item.url.replace(/\\/g, '')}">${item.url}</a></p>
</div>
`;
});
} else {
resultDiv.innerHTML += '<p>No data available.</p>';
}
} else {
resultDiv.innerHTML += '<p>Result information is not available.</p>';
}
// div
container.appendChild(resultDiv);
});
}
if (ruleForm.productName=='身份证实名认证'){
sendrequest1(ruleForm).then(response => {
console.log(response)
const jsonData1 = response.data; // response.dataJSON
// JSONJavaScript
const jsonData = JSON.parse(jsonData1);
});
}},
confirmSelection(row) {
if (this.selectedRow) {
//
var container = document.getElementById('news-list');
//
container.innerHTML = '';
// div
var resultDiv = document.createElement('div');
// jsonData.reason
if (jsonData.reason !== undefined) {
// reason
resultDiv.innerHTML += '<h2>Reason: ' + jsonData.reason.replace(/!/g, '') + '</h2>';
} else {
resultDiv.innerHTML += '<h2>Reason: Not available</h2>';
}
// jsonData.result
if (jsonData.result !== undefined) {
// result
resultDiv.innerHTML += '<p>Real Name: ' + jsonData.result.realname + '</p>';
resultDiv.innerHTML += '<p>ID Card: ' + jsonData.result.idcard + '</p>';
resultDiv.innerHTML += '<p>Order ID: ' + jsonData.result.orderid + '</p>';
resultDiv.innerHTML += '<p>Result: ' + jsonData.result.res + '</p>';
} else {
resultDiv.innerHTML += '<p>Result information is not available.</p>';
//
// startPayment(this.selectedRow);
console.log(row)
window.open("http://localhost:9701/alipay/pay?middlePrice="+row.middlePrice)
this.$message.success('付款成功')
}
// div
container.appendChild(resultDiv);
}
//-1
reducetestcount(this.myapi).then(response=>{})
}
},
// - 访this",
created() {
@ -98,6 +598,8 @@
// -` 访DOM",
mounted() {
this.myapi = this.$route.query.myapi
this.getHeader(this.myapi)
this.getRequest((this.myapi))
if (typeof this.myapi === 'string' && this.myapi.trim() !== '') {
try {
this.myapi = JSON.parse(this.myapi);
@ -128,4 +630,13 @@
.first-row {
margin-bottom: 20px; /* 创建一个空间,以便可以清晰地看到边框 */
}
pre {
background-color: #f4f4f4; /* 浅灰色背景 */
border: 1px solid #ddd; /* 边框 */
padding: 10px; /* 内边距 */
overflow-x: auto; /* 水平滚动条(如果需要的话) */
white-space: pre-wrap; /* 保留空白符序列,但是正常地进行换行 */
word-wrap: break-word; /* 防止长单词或URL地址破坏布局 */
font-family: monospace, Menlo, Courier, 'Courier New', monospace; /* 使用等宽字体 */
}
</style>

View File

@ -0,0 +1,262 @@
<template>
<div>
<h2>实名认证</h2>
<el-divider></el-divider>
<span style="color: #1482f0">实名认证决定了账号属性实名认证一经通过后续付款方的银行开户名必须与聚合实名信息一致否则不给予入账且个人和企业认证不能互转</span><br><br>
<h4>选择认证类型</h4>
<center>
<!--个人认证-->
<div style="width: 70%;">
<el-row style="border: 2px solid #e0e0e0;">
<el-col :span="4"><div class="grid-content bg-purple"><center><h2>个人认证</h2></center></div></el-col>
<el-col :span="12"><div class="grid-content bg-purple-light">
<el-row>
<el-col :span="24"><div class="grid-content bg-purple-dark">
<span style="color: #1482f0">认证方式</span> 支持个人身份证认证人脸识别实时认证
</div></el-col>
</el-row>
<el-row>
<el-col :span="24"><div class="grid-content bg-purple-dark">
<span style="color: #1482f0">使用限制</span> 个人基础认证不支持部分企业专用类接口
</div></el-col>
</el-row>
</div></el-col>
<el-col :span="4" style="margin-top: 20px;"><div class="grid-content bg-purple">
<center> <el-button type="primary" @click="tocompanyauthentication(1)"></el-button></center>
</div></el-col>
</el-row>
</div><br><br><br>
<!--企业认证-->
<div style="width: 70%;">
<el-row style="border: 2px solid #e0e0e0;">
<el-col :span="4"><div class="grid-content bg-purple"><center><h2>企业认证</h2></center></div></el-col>
<el-col :span="12"><div class="grid-content bg-purple-light">
<el-row>
<el-col :span="24"><div class="grid-content bg-purple-dark">
<span style="color: #1482f0">适用群体</span> 企业党政及国家机关事业单位民办非企业单位社会团体个体工商户等
</div></el-col>
</el-row>
<el-row>
<el-col :span="24"><div class="grid-content bg-purple-dark">
<span style="color: #1482f0">基础认证</span> 上传企业营业执照快速认证支持程序代码方式api调用接口
</div></el-col>
</el-row>
<el-row>
<el-col :span="24"><div class="grid-content bg-purple-dark">
<span style="color: #1482f0">高级认证</span> 通过对公打款法人手机验证等方式进行认证支持API购买余额支付支付宝支付微信支付
</div></el-col>
</el-row>
</div></el-col>
<el-col :span="4" style="margin-top: 20px;"><div class="grid-content bg-purple">
<center> <el-button type="primary" @click="tocompanyauthentication(2)"></el-button></center>
</div></el-col>
</el-row>
</div>
</center>
<!--企业认证页面对话框-->
<el-dialog
:title="dialogtitle"
:visible.sync="dialogVisible"
width="50%"
:before-close="handleClose">
<!--个人认证-->
<div v-if="this.index==1">
<h2>基本信息填写</h2><br>
<el-form :model="personForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="实名认证附件上传:" prop="pass">
<el-upload
action="/dev-api/market/user/upload"
list-type="picture-card"
:on-preview="handlePictureCardPreview"
:on-remove="handleRemove"
:on-success="handleSuccess1"
:limit="2">
<i class="el-icon-plus"></i>
</el-upload>
<el-dialog :visible.sync="dialogVisiblepicture">
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
<span>请上传清晰完整的营业执照副本照片</span>
</el-form-item>
<el-form-item label="公司名称:" prop="companyName">
<el-input type="text" v-model="personForm.companyName" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="真实姓名:" prop="USCI">
<el-input type="text" v-model="personForm.USCI" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="证件类型:" prop="companyLeader">
<span>居民身份证</span>
</el-form-item>
<el-form-item label="证件号码:" prop="registrantName">
<el-input type="text" v-model="personForm.registrantName" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="手机号码:" prop="registrantPhone">
<el-input type="text" v-model="personForm.registrantPhone" autocomplete="off"></el-input>
</el-form-item>
</el-form>
<center>
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="personyes()"></el-button>
</center>
</div>
<!--企业认证-->
<div v-if="this.index==2">
<h2>基本信息填写</h2><br>
<el-form :model="companyForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="企业营业执照副本:" prop="pass">
<el-upload
action="/dev-api/market/company/upload"
list-type="picture-card"
:on-preview="handlePictureCardPreview"
:on-remove="handleRemove"
:on-success="handleSuccess"
:limit="1">
<i class="el-icon-plus"></i>
</el-upload>
<el-dialog :visible.sync="dialogVisiblepicture">
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
<span>请上传清晰完整的营业执照副本照片</span>
</el-form-item>
<el-form-item label="公司名称:" prop="companyName">
<el-input type="text" v-model="companyForm.companyName" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="社会统一编码:" prop="USCI">
<el-input type="text" v-model="companyForm.usci" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="企业法人姓名:" prop="companyLeader">
<el-input type="text" v-model="companyForm.companyLeader" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="联系人姓名:" prop="registrantName">
<el-input type="text" v-model="companyForm.registrantName" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="联系人电话:" prop="registrantPhone">
<el-input type="text" v-model="companyForm.registrantPhone" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="联系人职位:" prop="registrantPosition">
<el-input type="text" v-model="companyForm.registrantPosition" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="公司地址:" prop="companyAddress">
<el-input type="text" v-model="companyForm.companyAddress" autocomplete="off"></el-input>
</el-form-item>
</el-form>
<center>
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="companyyes(companyForm)"></el-button>
</center>
</div>
<span slot="footer" class="dialog-footer">
</span>
</el-dialog>
</div>
</template>
<script>
//jsjsjson,
//import from ',
import {companyauthentication} from "@/api/authentication/authentication";
export default {
name: "Authentication",
//import使"
components: {},
props: {},
data() {
//"
return {
dialogVisible:false,
index:'',
dialogtitle:'',
companyForm:{},
personForm:{
personCardPicture:[]
},
dialogImageUrl: '',
dialogVisiblepicture: false
};
},
// data",
computed: {},
//data",
watch: {},
//",
methods: {
//
tocompanyauthentication(index){
this.index=index
if (this.index === 1) {
this.dialogtitle= '个人认证';
} else if (this.index === 2) {
this.dialogtitle= '企业认证';
}
this.dialogVisible=true
},
handleClose(done) {
this.$confirm('确认关闭?')
.then(_ => {
done();
})
.catch(_ => {});
},
//
personyes(){
this.dialogVisible=false
},
//
companyyes(companyForm){
companyauthentication(companyForm).then(response=>{
alert(response.msg)
if (response.code==200){}
this.dialogVisible=false
})
},
//
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
//
handleSuccess(response,file,fileList){
this.companyForm.businessLicense=response.data
},
//
handleSuccess1(response,file,fileList){
this.personForm.personCardPicture=[]
for(const i in fileList){
this.personForm.personCardPicture.push(fileList[i]).response.data
}
}
},
// - 访this",
created() {
},
// - 访DOM",
mounted() {
},
beforeCreate() {
}, // - ",
beforeMount() {
}, // - ",
beforeUpdate() {
}, // - ",
updated() {
}, // - ",
beforeDestroy() {
}, // - ",
destroyed() {
}, // - ",
activated() {
} //keep-alive",
};
</script>
<style scoped>
</style>

View File

@ -0,0 +1,133 @@
<template>
<div>
<el-row :gutter="20">
<el-col :span="8"><div class="grid-content bg-purple">
</div></el-col>
<el-col :span="16"><div class="grid-content bg-purple">
<el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="用户名" prop="userName">
{{ruleForm.userName}}
</el-form-item>
<el-form-item label="用户类型" prop="">
<span>个人</span>
</el-form-item>
<el-form-item label="手机号" prop="phonenumber">
{{ruleForm.phonenumber}}
</el-form-item>
<el-form-item label="绑定邮箱" prop="email">
{{ruleForm.email}} <span style="color: #1482f0" @click="toemail">>></span>
</el-form-item>
<el-form-item label="认证信息" prop="userName">
<span style="color: #1482f0" @click="toauthentication">>>>></span>
</el-form-item>
</el-form>
</div></el-col>
</el-row>
<!--绑定邮箱-->
<el-dialog
title="邮箱绑定"
:visible.sync="dialogVisible"
width="50%"
:before-close="handleClose">
<el-form :model="EmailForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="邮箱" prop="email">
<el-input type="text" v-model="EmailForm.email" autocomplete="off" placeholder="请输入绑定的邮箱"></el-input>
</el-form-item>
<el-form-item>
<el-input type="text" v-model="EmailForm.code" placeholder="请输入验证码"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="docode(EmailForm.email)"></el-button>
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="yes(EmailForm)"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
//jsjsjson,
//import from ',
import {linkemail,sendcode1} from "@/api/authentication/message";
export default {
name: "Easymessage",
//import使"
components: {},
props: {},
data() {
//"
return {
ruleForm:{},
EmailForm:{},
dialogVisible: false
};
},
// data",
computed: {},
//data",
watch: {},
//",
methods: {
//
toemail(){
this.dialogVisible=true
},
//
handleClose(done) {
this.$confirm('确认关闭?')
.then(_ => {
done();
})
.catch(_ => {});
},
//
docode(email){
sendcode1(email).then(response=>{
alert(response.data)
})
},
//
yes(EmailForm){
linkemail(EmailForm).then(response=>{
if (response.code===200){
this.dialogVisible=false
}
})
},
//
toauthentication(){
this.$router.push("/authentication/index")
}
},
// - 访this",
created() {
},
// - 访DOM",
mounted() {
},
beforeCreate() {
}, // - ",
beforeMount() {
}, // - ",
beforeUpdate() {
}, // - ",
updated() {
}, // - ",
beforeDestroy() {
}, // - ",
destroyed() {
}, // - ",
activated() {
} //keep-alive",
};
</script>
<style scoped>
</style>

View File

@ -73,19 +73,6 @@ export default {
myapiList:[],
myapi:{},
ruleForm:{},
options: [{
value: '选项1',
label: '全部'
}, {
value: '选项2',
label: '申请中'
}, {
value: '选项3',
label: '申请通过'
}, {
value: '选项4',
label: '审核失败'
}],
value: ''
};
},
@ -102,6 +89,7 @@ export default {
//api
getList(){
selectmyapiList(this.ruleForm).then(response=>{
console.log(response)
this.myapiList=response.data
})
},
@ -111,13 +99,14 @@ export default {
},
//
test(myapi) {
if (myapi && myapi.productAddress) {
let url = myapi.productAddress; // 使 product.address
window.open(url, '_blank'); // URL
} else {
console.error('无效的 address 或 product 未定义');
//
}
// if (myapi && myapi.productAddress) {
// let url = myapi.productAddress; // 使 product.address
// window.open(url, '_blank'); // URL
// } else {
// console.error(' address product ');
// //
// }
this.$router.push({path:"/apitest/index",query:{myapi:JSON.stringify(myapi)}})
}
},
// - 访this",

View File

@ -0,0 +1,368 @@
<template>
<div>
<el-card class="box-card" style="width: 94%;transform: translateX(3%);margin-top: 30px">
<div slot="header" class="clearfix">
<span>筛选搜索</span>
<el-button style="float: right; padding: 3px 30px" type="text" @click="findShop"></el-button>
<el-button style="float: right; padding: 3px 10px" type="text" @click="chong"></el-button>
</div>
<div class="text item">
<el-form ref="form" :model="orders" label-width="100px">
<el-form-item>
输入搜索<el-input v-model="orders.productName" placeholder="商品名称" style="width: 180px;margin-right: 50px"></el-input>
订单编号<el-input v-model="orders.ordersNum" placeholder="编号" style="width: 180px;margin-right: 50px"></el-input>
订单款项状态
<el-select v-model="orders.ordersState" placeholder="请选择状态" style="margin-right: 30px" clearable>
<el-option v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<br/> <br/>
选择时间:
<el-date-picker v-model="orders.startDate" type="date" placeholder="开始时间" />
-----
<el-date-picker v-model="orders.endDate" type="date" placeholder="结束时间"/>
</el-form-item>
</el-form>
</div>
</el-card>
<br>
<button style="float: right; padding: 3px 10px" type="text" @click="reclaim"></button>
<br>
<el-card class="box-card" style="width: 94%;transform: translateX(3%);margin-top: 10px">
<div slot="header" class="clearfix">
<span>数据列表</span>
<button @click="add(1)" style="float: right; padding: 3px 10px" type="text">添加</button>
<button style="float: right; padding: 3px 10px" type="text" @click="getOut"></button>
</div>
<el-table :data="arr" style="width: 100%" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column label="日期" width="150" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.ordersLaunchdate }}</span>
</template>
</el-table-column>
<el-table-column label="购买信息">
<el-table-column label="订单编号" width="120" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px"> {{ scope.row.ordersNum }}</span>
</template>
</el-table-column>
<el-table-column label="订单所属人" width="100" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.userName }}</span>
</template>
</el-table-column>
<el-table-column label="购买详情">
<el-table-column prop="province" label="购买接口" width="150" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.productName }}</span>
</template>
</el-table-column>
<el-table-column label="订单金额" width="100" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.ordersPrice }}</span>
</template>
</el-table-column>
<el-table-column label="订单规格" width="300" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.ordersSpecification }}</span>
</template>
</el-table-column>
<el-table-column label="订单款项状态" width="110" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px" v-if="scope.row.ordersState==0"></span>
<span style="margin-left: 10px" v-if="scope.row.ordersState==1"></span>
<span style="margin-left: 10px" v-if="scope.row.ordersState==2"></span>
<span style="margin-left: 10px" v-if="scope.row.ordersState==4">(退)</span>
<span style="margin-left: 10px" v-if="scope.row.ordersState==5">退</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button
size="mini"
@click="ordersUpdate(scope.row)">编辑</el-button>
<el-button
size="mini"
type="danger"
@click="updateByeExist(scope.row)">删除</el-button>
<el-button
type="primary"
size="small"
@click="pay(scope.row)" >支付</el-button>
<!-- v-if="scope.row.status === '待支付'"-->
</template>
</el-table-column>
</el-table-column>
</el-table-column>
</el-table>
<el-pagination style="float: right"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="orders.pageNum"
:page-sizes="[5, 10, 50, 100]"
:page-size="orders.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="orders.total">
</el-pagination>
</el-card>
<el-dialog
:title="addtitle"
:visible.sync="addordersoff"
width="50%"
:before-close="handleClose">
<div v-if="this.index==1">
<h2>管理员慎重填写</h2><br>
<el-form :model="ordersForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="订单编号:" prop="ordersNum">
<el-input type="text" v-model="ordersForm.ordersNum" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="订单产品:" prop="ordersProduct">
<el-input type="text" v-model="ordersForm.ordersProduct" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="订单所属人:" prop="ordersUser">
<el-input type="text" v-model="ordersForm.ordersUser" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="订单金额:" prop="ordersPrice">
<el-input type="text" v-model="ordersForm.ordersPrice" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="订单规格:" prop="ordersSpecification">
<el-input type="text" v-model="ordersForm.ordersSpecification" autocomplete="off"></el-input>
</el-form-item>
</el-form>
<center>
<el-button @click="addordersoff = false"> </el-button>
<el-button type="primary" @click="addorders(ordersForm)"></el-button>
</center>
</div>
<span slot="footer" class="dialog-footer">
</span>
</el-dialog>
</div>
</template>
<script>
import {
selectList,
updateOrders,
addordersup,
ordersDelete,
pay,
getOut,
updateByeExist
} from '@/api/market/orders'
import { diGui } from "@/api/market/orders";
import axios from 'axios'
//jsjsjson,
//import from ',
export default {
dicts:['product_name','orders_num','orders_state','orders_launchdate'],
//import使"
components: {},
props: {},
data() {
//"
return {
orders:{
pageNum:1,
pageSize:10,
total:1,
typeId:0
},
arr:[],
type:[],
Cascader:{ expandTrigger:'hover',value:'id',label:'typeName',children:'parentPOS' },
typeId:[],
startDate: null,
endDate: null,
index:'',
addtitle:'',
addordersoff:false,
ordersForm:{},
options: [{
value: ' ',
label: '全选'
}, {
value: '0',
label: '待支付'
}, {
value: '1',
label: '已付款'
}, {
value: '2',
label: '未付款'
}, {
value: '3',
label: '售后中(申请退款) '
} ,{
value: '4',
label: '已退款 '
}]
};
},
// data",
computed: {},
//data",
watch: {},
//",
methods: {
//
handleSelectionChange(val) {
this.multipleSelection = val;
},
//
selectList() {
selectList(this.orders).then(
res => {
console.log(res)
this.arr = res.data.list
this.orders.total = res.data.total
}
)
},
//
updateByeExist(row){
const result = window.confirm(`你确定要执行此操作吗?`);
if (result) {
updateByeExist(row.ordersId).then(
res => {
this.$message.success(res.msg)
this.selectList()
}
)
location.reload();
// 使 id
console.log(`用户点击了确定ID 为 ${row.ordersId}`);
} else {
//
console.log('用户点击了取消');
}
},
//
handleSizeChange(val) {
this.orders.pageSize=val
this.selectList()
},
handleCurrentChange(val) {
this.orders.pageNum=val
this.selectList()
},
//
chong(){
this.orders={}
this.selectList()
},
//
findShop(){
this.selectList()
},
//
add(index){
this.index=index
if (this.index === 1) {
this.addtitle= '添加订单';
}
// else if (this.index === 2) {
// this.dialogtitle= '';
// }
this.addordersoff=true
},
addorders(ordersForm){
addordersup(ordersForm).then(response=>{
alert(response.msg)
if (response.code==200){}
this.addordersoff=false
})
location.reload();
},
handleClose(done) {
this.$confirm('确认关闭?')
.then(_ => {
done();
})
.catch(_ => {});
},
//
ordersUpdate(row){
this.$router.push({path:"/updorders/index",query:{orders:row}})
},
pay(row){
console.log(row)
window.open("http://localhost:9701/alipay/pay?productName="+row.productName +"&ordersNum="+row.ordersNum+"&ordersPrice="+row.ordersPrice)
this.$message.success('付款成功')
},
getOut(){
this.download('system/operlog/export', {
...this.queryParams
}, `operlog_${new Date().getTime()}.xlsx`)
},
reclaim(){
this.$router.push({path:"/reclaim/index"})
}
// getOut(){
// axios.get('/market/orders/getOutAll').
// then(response =>{
// if(response.data && response.data instanceof ArrayBuffer)
// {
// const blob = new Blob([response.data],{type:'application/octet-stream'});
// saveAs(blob ,'');
// }else{
// console.error(":" ,error);
// }
// })
// }
},
// - 访this",
created() {
// this.diGui()
this.selectList()
},
// - 访DOM",
mounted() {
},
beforeCreate() {
}, // - ",
beforeMount() {
}, // - ",
beforeUpdate() {
}, // - ",
updated() {
}, // - ",
beforeDestroy() {
}, // - ",
destroyed() {
}, // - ",
activated() {
} //keep-alive",
};
</script>
<style scoped>
</style>

View File

@ -0,0 +1,109 @@
<template>
<div>
<!-- 步骤条 -->
<el-steps :space="200" :active="active" finish-status="success" style=" width:80%;transform: translateX(30%);margin-top: 30px">
<el-step title="填写商品信息"></el-step>
<el-step title="填写商品促销"></el-step>
<el-step title="填写商品属性"></el-step>
<el-step title="选择商品关联"></el-step>
</el-steps>
<el-card class="box-card" style="width: 94%;transform: translateX(3%);margin-top: 30px">
<el-table :data="arr" style="width: 100%" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column label="编号" width="80" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.id }}</span>
</template>
</el-table-column>
<el-table-column label="商品图片" width="150" align="center">
<template slot-scope="scope">
<img :src="scope.row.picImg" alt="图片损坏">
</template>
</el-table-column>
<el-table-column label="商品名称" width="400" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.shopName }}</span>
<br>
品牌<span style="margin-left: 10px">{{ scope.row.brandName }}</span>
</template>
</el-table-column>
<el-table-column label="货号" width="150" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px">货号{{ scope.row.shopNum }}</span>
</template>
</el-table-column>
<el-table-column label="标签" width="150" align="center">
<template slot-scope="scope">
上架
<el-switch
v-model="scope.row.publishStatus"
@change="updateShop(scope.row)"
active-color="#409EFF"
inactive-color="#C0CCDA"
:active-value="1"
:inactive-value="0">
</el-switch>
<br>
新品
<el-switch
v-model="scope.row.newStatus"
@change="updateShop(scope.row)"
active-color="#409EFF"
inactive-color="#C0CCDA"
:active-value="1"
:inactive-value="0">
</el-switch>
<br>
推荐
<el-switch
v-model="scope.row.recommandStatus"
@change="updateShop(scope.row)"
active-color="#409EFF"
inactive-color="#C0CCDA"
:active-value="1"
:inactive-value="0">
</el-switch>
<br>
</template>
</el-table-column>
<el-table-column label="排序" width="150" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.sort }}</span>
</template>
</el-table-column>
<el-table-column label="销量" width="150" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.sale }}</span>
</template>
</el-table-column>
<el-table-column label="审核状态" width="150" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px" v-if="scope.row.verifyStatus==0"></span>
<span style="margin-left: 10px" v-if="scope.row.verifyStatus==1"></span>
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button
size="mini"
@click="handleEdit(scope.row)">编辑</el-button>
<el-button
size="mini"
type="danger"
@click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</div>
</template>
<script>
</script>

View File

@ -34,6 +34,9 @@
<el-form-item label="产品介绍:">
<el-textarea v-model="product.productContent">{{product.productContent}}</el-textarea>
</el-form-item>
<el-form-item label="重要路由:">
<el-textarea v-model="product.apiRouter">{{product.apiRouter}}</el-textarea>
</el-form-item>
<el-row>
<el-col :span="9"><div class="grid-content bg-purple">
<el-button type="primary" @click="test(product)"></el-button>
@ -111,6 +114,12 @@ export default {
submitForm(){
this.getList()
},
//
gettypeList(){
selectTypeList().then(response=>{
this.typeList=response.data
})
},
//
chosetype(index1){
this.ruleForm.productType=this.typeList[index1]
@ -122,22 +131,18 @@ export default {
this.getList()
},
//
// test(product){
// // let url = `http://21.12.0.10/prod-api/doc.html#/cloud-market//findListByuserPhone?userId=${this.userId}`;
// let url = `product`;
// window.open(url, '_blank'); // URL
//
// // this.$router.push({path:"/apitest/index",query:{myapi:JSON.stringify(product)}})
// },
test(product) {
if (product && product.productAddress) {
let url = product.productAddress; // 使 product.address
window.open(url, '_blank'); // URL
} else {
console.error('无效的 address 或 product 未定义');
//
}
test(product){
this.$router.push({path:"/apitest/index",query:{myapi:JSON.stringify(product)}})
},
// test(product) {
// if (product && product.productAddress) {
// let url = product.productAddress; // 使 product.address
// window.open(url, '_blank'); // URL
// } else {
// console.error(' address product ');
// //
// }
// },
handleSizeChange(val) {
console.log(`每页 ${val}`);
this.ruleForm.pageSize=val
@ -148,12 +153,7 @@ export default {
this.ruleForm.pageNum=val
this.getList()
},
//
gettypeList(){
selectTypeList().then(response=>{
this.typeList=response.data
})
}
},
// - 访this",
created() {

View File

@ -0,0 +1,263 @@
<template>
<div>
<el-card class="box-card" style="width: 94%;transform: translateX(3%);margin-top: 30px">
<div slot="header" class="clearfix">
<span>筛选搜索</span>
<el-button style="float: right; padding: 3px 30px" type="text" @click="findShop"></el-button>
<el-button style="float: right; padding: 3px 10px" type="text" @click="chong"></el-button>
</div>
<div class="text item">
<el-form ref="form" :model="orders" label-width="100px">
<el-form-item>
订单编号<el-input v-model="orders.ordersNum" placeholder="编号" style="width: 130px;margin-right: 50px"></el-input>
订单款项状态
<el-select v-model="orders.ordersState" placeholder="请选择状态" style="margin-right: 30px" clearable>
<el-option v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
选择时间:
<el-date-picker v-model="orders.startDate" type="date" placeholder="开始时间" style="width: 130px;"/>
-----
<el-date-picker v-model="orders.endDate" type="date" placeholder="结束时间" style="width: 130px;"/>
</el-form-item>
</el-form>
</div>
</el-card>
<br>
<button style="float: right; padding: 3px 10px" type="text" @click="orderslist"></button>
<br>
<el-card class="box-card" style="width: 94%;transform: translateX(3%);margin-top: 10px">
<div slot="header" class="clearfix">
<span>回收站列表</span>
</div>
<el-table :data="arr" style="width: 100%" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column label="日期" width="150" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.ordersLaunchdate }}</span>
</template>
</el-table-column>
<el-table-column label="购买信息">
<el-table-column label="订单编号" width="150" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px"> {{ scope.row.ordersNum }}</span>
</template>
</el-table-column>
<el-table-column label="订单所属人" width="100" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.userName }}</span>
</template>
</el-table-column>
<el-table-column label="购买详情">
<el-table-column prop="province" label="购买接口" width="200" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.productName }}</span>
</template>
</el-table-column>
<el-table-column label="订单金额" width="100" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.ordersPrice }}</span>
</template>
</el-table-column>
<el-table-column label="订单规格" width="300" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.ordersSpecification }}</span>
</template>
</el-table-column>
<el-table-column label="订单款项状态" width="130" align="center">
<template slot-scope="scope">
<span style="margin-left: 10px" v-if="scope.row.ordersState==0"></span>
<span style="margin-left: 10px" v-if="scope.row.ordersState==1"></span>
<span style="margin-left: 10px" v-if="scope.row.ordersState==2"></span>
<span style="margin-left: 10px" v-if="scope.row.ordersState==4">(退)</span>
<span style="margin-left: 10px" v-if="scope.row.ordersState==5">退</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button
size="mini"
@click="handleEdit(scope.row)">恢复</el-button>
<el-button
size="mini"
type="danger"
@click="ordersDelete(scope.row)">彻底删除</el-button>
</template>
</el-table-column>
</el-table-column>
</el-table-column>
</el-table>
<el-pagination style="float: right"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="orders.pageNum"
:page-sizes="[5, 10, 50, 100]"
:page-size="orders.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="orders.total">
</el-pagination>
</el-card>
</div>
</template>
<script>
import { ordersDelete, listreclaim, updateByExist} from '@/api/market/orders'
import { diGui } from "@/api/market/orders";
//jsjsjson,
//import from ',
export default {
//import使"
components: {},
props: {},
data() {
//"
return {
orders:{
pageNum:1,
pageSize:10,
total:1,
typeId:0
},
arr:[],
type:[],
startDate: null,
endDate: null,
index:'',
ordersForm:{},
options: [{
value: ' ',
label: '全选'
}, {
value: '0',
label: '待支付'
}, {
value: '1',
label: '已付款'
}, {
value: '2',
label: '未付款'
}, {
value: '3',
label: '售后中(申请退款) '
} ,{
value: '4',
label: '已退款 '
}]
};
},
// data",
computed: {},
//data",
watch: {},
//",
methods: {
//
listreclaim() {
listreclaim(this.orders).then(
res => {
console.log(res)
this.arr = res.data.list
this.orders.total = res.data.total
}
)
},
//
handleEdit(row){
const result = window.confirm(`你确定要执行此操作吗?`);
if (result) {
updateByExist(row.ordersId).then(
res =>{
this.$message.success(res.msg)
this.listreclaim()
}
)
location.reload();
// 使 id
console.log(`用户点击了确定ID 为 ${id}`);
} else {
//
console.log('用户点击了取消');
}
},
//
ordersDelete(row){
const result = window.confirm(`你确定要执行此操作吗?`);
if (result) {
ordersDelete(row.ordersId).then(
res => {
this.$message.success(res.msg)
this.listreclaim()
}
)
location.reload();
// 使 id
console.log(`用户点击了确定ID 为 ${id}`);
} else {
//
console.log('用户点击了取消');
}
},
//
chong(){
this.orders={}
this.listreclaim()
},
//
handleSelectionChange(val) {
this.multipleSelection = val;
},
//
handleSizeChange(val) {
this.orders.pageSize=val
this.listreclaim()
},
handleCurrentChange(val) {
this.orders.pageNum=val
this.listreclaim()
},
orderslist(){
this.$router.push({path:"/market/orders"})
},
//
findShop(){
this.listreclaim()
}
},
// - 访this",
created() {
this.listreclaim()
},
// - 访DOM",
mounted() {
},
beforeCreate() {
}, // - ",
beforeMount() {
}, // - ",
beforeUpdate() {
}, // - ",
updated() {
}, // - ",
beforeDestroy() {
}, // - ",
destroyed() {
}, // - ",
activated() {
} //keep-alive",
};
</script>
<style scoped>
</style>

View File

@ -0,0 +1,107 @@
<template>
<div>
{{orders}}
<br><br><br>
<center>
<el-form :model="orders" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="订单编号" prop="ordersNum" style="width: 70% " >
{{orders.ordersNum}}
</el-form-item>
<el-form-item label="订单产品" prop="productName" style="width: 70%">
<el-select v-model="orders.productName" placeholder="请选择产品">
<el-option v-model="orders.productName" :value="orders.productId"></el-option>
<el-option v-for="item in product" :label="item.productName" :key="item.productId" :value="item.productId" ></el-option>
</el-select>
</el-form-item>
<el-form-item label="订单所属人" prop="userName" style="width: 70%">
{{orders.userName}}
</el-form-item>
<el-form-item label="订单金额" prop="ordersPrice" style="width: 70%">
<el-input type="text" v-model="orders.ordersPrice" autocomplete="off" style="width: 100px"></el-input>
</el-form-item>
<el-form-item label="订单规格" prop="ordersSpecification" style="width: 70%">
<el-input type="text" v-model="orders.ordersSpecification" autocomplete="off" style="width: 250px"></el-input>
</el-form-item>
<el-form-item label="订单款项状态" prop="ordersState" style="width: 70%">
<el-select v-model="orders.ordersState" placeholder="订单款项状态" >
<el-option label="待支付-0" value="0"></el-option>
<el-option label="已支付-1" value="1"></el-option>
<el-option label="未支付-2" value="2"></el-option>
<el-option label="售后(审核退款)-3" value="3"></el-option>
<el-option label="退款成功-4" value="4"></el-option>
</el-select>
</el-form-item>
<el-form-item label="订单日期" prop="ordersLaunchdate" style="width: 70%">
{{orders.ordersLaunchdate}}
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('ruleForm')"></el-button>
<el-button type="primary" @click="update(row)"></el-button>
</el-form-item>
</el-form>
</center>
</div>
</template>
<script>
//jsjsjson,
//import from ',
import { updateOrders } from '@/api/market/orders'
export default {
//import使"
components: {},
props: {},
data() {
//"
return {
orders:{},
product:[]
};
},
// data",
computed: {},
//data",
watch: {},
//",
methods: {
submitForm(){
this.$router.push("/market/orders")
},
update(row){
updateOrders(this.orders).then(
res =>{
this.$message.success(res.msg)
}
)
}
},
// - 访this",
created() {
},
// - 访DOM",
mounted() {
this.orders = this.$route.query.orders
},
beforeCreate() {
}, // - ",
beforeMount() {
}, // - ",
beforeUpdate() {
}, // - ",
updated() {
}, // - ",
beforeDestroy() {
}, // - ",
destroyed() {
}, // - ",
activated() {
} //keep-alive",
};
</script>
<style scoped>
</style>

View File

@ -3,11 +3,11 @@
<el-row :gutter="20">
<el-col :span="16">
<div class="grid-content bg-purple" style="border: 2px solid #ebeef5;">
<span>HI上海八维宏烨集团<br>
<span>HI{{companymessage.companyName}}<br>
<el-row :gutter="20">
<el-col :span="6"><div class="grid-content bg-purple">上海市 上海市</div></el-col>
<el-col :span="6"><div class="grid-content bg-purple">IP114.85.72.211</div></el-col>
<el-col :span="6"><div class="grid-content bg-purple">时间2021-1-12</div></el-col>
<el-col :span="6"><div class="grid-content bg-purple">{{companymessage.companyAddress}}</div></el-col>
<el-col :span="6"><div class="grid-content bg-purple">企业法人{{companymessage.companyLeader}}</div></el-col>
<el-col :span="6"><div class="grid-content bg-purple">时间{{companymessage.registrantDate}}</div></el-col>
<el-col :span="6"><div class="grid-content bg-purple">
<el-row>
<el-col :span="12"><div class="grid-content bg-purple"><el-button type="primary">登录日志</el-button></div></el-col>
@ -21,8 +21,8 @@
<div class="grid-content bg-purple" style="border: 1px solid #ebeef5;">
<span>账户余额<br>
<el-row>
<el-col :span="12"><div class="grid-content bg-purple">8544344.00</div></el-col>
<el-col :span="12"><div class="grid-content bg-purple-light"><el-button type="primary">充值</el-button></div></el-col>
<el-col :span="12"><div class="grid-content bg-purple">{{companymessage.companyMoney}}</div></el-col>
<el-col :span="12"><div class="grid-content bg-purple-light"><el-button type="primary" @click="addmoney()"></el-button></div></el-col>
</el-row>
</span>
</div>
@ -33,7 +33,7 @@
<div class="grid-content bg-purple-dark" style="border: 2px solid #ebeef5;">
<el-row>
<el-col :span="20"><div class="grid-content bg-purple"><span>热点接口</span></div></el-col>
<el-col :span="4"><div class="grid-content bg-purple-light"><el-button type="primary">申请新的接口</el-button></div></el-col>
<el-col :span="4"><div class="grid-content bg-purple-light"><el-button type="primary" @click="otherapi"></el-button></div></el-col>
</el-row><br>
<el-row>
<el-col :span="24"><div class="grid-content bg-purple-dark flex-container">
@ -41,7 +41,7 @@
<el-form ref="form" :model="form" label-width="80px">
<el-form-item >
<span>{{form.productName}}</span>
<el-button @click="tovalidation()"></el-button>
<el-button @click="tovalidation(form)"></el-button>
</el-form-item>
</el-form>
</div>
@ -52,54 +52,90 @@
</el-row>
<!--提示需要验证--->
<el-dialog
title="提示"
:visible.sync="dialogVisible"
width="30%"
:before-close="handleClose"
:close-on-click-modal="false">
<span>需要认证才能使用哦</span>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="validationYes()"></el-button>
</span>
</el-dialog>
<!-- &lt;!&ndash;提示需要验证-&ndash;&gt;-->
<!-- <el-dialog-->
<!-- title="提示"-->
<!-- :visible.sync="dialogVisible"-->
<!-- width="30%"-->
<!-- :before-close="handleClose"-->
<!-- :close-on-click-modal="false">-->
<!-- <span>需要认证才能使用哦</span>-->
<!-- <span slot="footer" class="dialog-footer">-->
<!-- <el-button @click="dialogVisible = false"> </el-button>-->
<!-- <el-button type="primary" @click="validationYes()"></el-button>-->
<!-- </span>-->
<!-- </el-dialog>-->
<!---企业验证页面-->
<!-- &lt;!&ndash;-企业验证页面&ndash;&gt;-->
<!-- <el-dialog-->
<!-- title="提示"-->
<!-- :visible.sync="dialogVisible1"-->
<!-- width="30%"-->
<!-- :before-close="handleClose1"-->
<!-- :close-on-click-modal="false">-->
<!-- <span>企业信息</span>-->
<!-- <el-divider></el-divider>-->
<!-- <el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">-->
<!-- <el-form-item label="企业名称" prop="pass">-->
<!-- <el-input type="text" v-model="ruleForm.pass" autocomplete="off"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="用户姓名" prop="pass">-->
<!-- <el-input type="text" v-model="ruleForm.pass" autocomplete="off"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="用户职位" prop="pass">-->
<!-- <el-input type="text" v-model="ruleForm.pass" autocomplete="off"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="公司所在省市区" prop="pass">-->
<!-- <el-input type="text" v-model="ruleForm.pass" autocomplete="off"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="公司详细地址" prop="pass">-->
<!-- <el-input type="text" v-model="ruleForm.pass" autocomplete="off"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="统一社会信用代码" prop="pass">-->
<!-- <el-input type="text" v-model="ruleForm.pass" autocomplete="off"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="营业执照" prop="pass">-->
<!-- <el-input type="text" v-model="ruleForm.pass" autocomplete="off"></el-input>-->
<!-- </el-form-item>-->
<!-- </el-form>-->
<!-- <span slot="footer" class="dialog-footer">-->
<!-- <el-button type="primary" @click="push()"></el-button>-->
<!-- </span>-->
<!-- </el-dialog>-->
<!--充值页面-->
<el-dialog
title="提示"
:visible.sync="dialogVisible1"
title="充值"
:visible.sync="dialogVisible2"
width="30%"
:before-close="handleClose1"
:before-close="handleClose2"
:close-on-click-modal="false">
<span>企业信息</span>
<h2 style="color: #1ab394">请选择充值金额</h2>
<el-divider></el-divider>
<el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="企业名称" prop="pass">
<el-input type="text" v-model="ruleForm.pass" autocomplete="off"></el-input>
<el-form :model="moneyForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="请选择">
<el-radio-group v-model="moneyForm.resource">
<el-radio label="5">5</el-radio>
<el-radio label="20">20</el-radio>
<el-radio label="50">50</el-radio>
<el-radio label="100">100</el-radio>
<el-radio label="">自定义</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="用户姓名" prop="pass">
<el-input type="text" v-model="ruleForm.pass" autocomplete="off"></el-input>
<el-form-item v-if="moneyForm.resource === ''" label="自定义充值" prop="pass" style="width: 50%">
<el-input type="text" v-model="moneyForm.resource1" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="用户职位" prop="pass">
<el-input type="text" v-model="ruleForm.pass" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="公司所在省市区" prop="pass">
<el-input type="text" v-model="ruleForm.pass" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="公司详细地址" prop="pass">
<el-input type="text" v-model="ruleForm.pass" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="统一社会信用代码" prop="pass">
<el-input type="text" v-model="ruleForm.pass" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="营业执照" prop="pass">
<el-input type="text" v-model="ruleForm.pass" autocomplete="off"></el-input>
<el-divider></el-divider>
<el-form-item label="选择支付方式">
<el-radio-group v-model="moneyForm.pay">
<el-radio label="1">支付宝</el-radio>
<el-radio label="2">微信</el-radio>
<el-radio label="3">银行卡</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="push()"></el-button>
<el-button type="primary" @click="insertmoney(moneyForm)"></el-button>
</span>
</el-dialog>
@ -111,7 +147,8 @@
//import from ',
import {gethostportList} from "@/api/market/workbench";
import {getcompany, gethostportList} from "@/api/market/workbench";
import {ifbuy} from "@/api/market/product";
export default {
name: 'Workbench',
@ -126,8 +163,11 @@ export default {
hostportList:[],
dialogVisible: false,
dialogVisible1:false,
dialogVisible2:false,
//
ruleForm:{}
ruleForm:{},
companymessage:{},
moneyForm:{}
};
},
// data",
@ -136,6 +176,35 @@ export default {
watch: {},
//",
methods: {
//
getcompany(){
getcompany().then(response=>{
this.companymessage=response.data
})
},
//
addmoney(){
this.dialogVisible2=true
},
//
insertmoney(moneyForm){
if (moneyForm.pay==1){
if (moneyForm.resource!=''){
window.open("http://21.12.0.10:80/alipay/pay?ordersPrice="+moneyForm.resource)
this.$message.success('付款成功')
}else {
window.open("http://21.12.0.10:80/alipay/pay?ordersPrice="+moneyForm.resource)
this.$message.success('付款成功')
}
}
// this.dialogVisible2=false
},
//
otherapi(){
this.$router.push("/product/index")
},
//
gethostportList(){
gethostportList().then(response=>{
@ -156,8 +225,15 @@ export default {
})
.catch(_ => {});
},
tovalidation(){
this.dialogVisible=true
tovalidation(form){
// this.dialogVisible=true
//
ifbuy(form).then(response=>{
if (response.code!=200) {
alert(response.msg)
}
})
this.$router.push({path:"/apitest/index",query:{myapi:JSON.stringify(form)}})
},
validationYes(){
this.dialogVisible1=true
@ -170,6 +246,7 @@ export default {
// - 访this",
created() {
this.gethostportList()
this.getcompany()
},
// - 访DOM",
mounted() {

View File

@ -0,0 +1,183 @@
<template>
<div>
<h1>资产展示</h1>
<el-container>
<el-aside width="400px">
<el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
</el-aside>
<el-main>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span style="font-size: xx-large"></span>
<!-- <table>-->
<!-- a <tr><td>表名称:</td><td>{{ tableBasic.tableName }}</td></tr>-->
<!-- <tr><td>表备注:</td><td>{{ tableBasic.tableRemark }}</td></tr>-->
<!-- <tr><td>数据量:</td><td>{{ tableBasic.dataNum }}</td></tr>-->
<!-- <tr><td>是否核心:</td><td><dict-tag :options="dict.type.sys_yes_no" :value="tableBasic.isCenter"/></td></tr>-->
<!-- </table>-->
<template>
<el-descriptions class="margin-top" title="资产模型基本信息" :column="2" border>
<el-descriptions-item>
<template slot="label">表名称</template>
{{ tableBasic.name }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">表备注</template>
{{ tableBasic.tableRemark }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">数据量</template>
{{ dataNum }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">是否核心</template>
<el-tag size="small" v-if="dataNum!=0"></el-tag>
</el-descriptions-item>
</el-descriptions>
</template>
</div>
</el-card>
<!-- v-if="dataType === 'dataTable'-->
<el-card class="box-card" style="margin-top: 20px">
<div slot="header" class="clearfix">
<span>模型数据</span>
</div>
<el-row :gutter="20">
<!-- -->
<el-col :span="6" v-for="DataValue in tableStructure" style="margin-top: 20px">
<el-descriptions :title="测试+'.'+tableBasic.name+'.'+DataValue.field" direction="vertical"
border :column="1">
<el-descriptions-item label="Type">
<el-tag size="small">{{ DataValue.dataMapping}}</el-tag>
</el-descriptions-item>
<el-descriptions-item label="Value">{{ DataValue.dataValue }}</el-descriptions-item>
</el-descriptions>
</el-col>
</el-row>
</el-card>
<el-table
:data="tableStructure"
style="width: 100%">
<el-table-column
prop="field"
label="key"
width="180">
</el-table-column>
<el-table-column
prop="annotation"
label="label"
width="180">
</el-table-column>
<el-table-column
prop="type"
label="type">
</el-table-column>
<el-table-column
prop="dataValue"
label="value">
</el-table-column>
</el-table>
</el-main>
</el-container>
</div>
</template>
<script>
//jsjsjson,
//import from ',
import { findTableValue, getExtractDataTableNameList, selectBasicList } from '@/api/property/asDisplay'
import { tableStructureShow } from '@/api/property/astr'
export default {
//import使"
components: {},
dicts: ['sys_no'],
props: {},
data() {
//"
return {
data:[],
defaultProps: {
children: 'tableNames',
label: 'name'
},
tableBasic:[],
tableStructure:[],
assetShowList: [
// {key: ".sys_user.id", type: "String", value: 1},
// {key: ".sys_user.name", type: "String", value: ""},
// {key: ".sys_user.age", type: "Integer", value: 18},
// {key: ".sys_user.email", type: "String", value: "123@136.com"},
// {key: ".sys_user.sex", type: "String", value: "Y"},
],
DataValue:[],
dataNum:'',
};
},
// data",
computed: {},
//data",
watch: {},
//",
methods: {
getSelectList(){
getExtractDataTableNameList().then((res)=>{
this.data = res.data
})
},
handleNodeClick(data){
if (this.data.name!=data.name){
tableStructureShow(data).then(res=> {
this.tableBasic = data
console.log(res)
this.dataNum = res.data.length
this.tableStructure = res.data
})
}
},
},
// - 访this",
created() {
this.getSelectList();
},
// - 访DOM",
mounted() {
},
beforeCreate() {
}, // - ",
beforeMount() {
}, // - ",
beforeUpdate() {
}, // - ",
updated() {
}, // - ",
beforeDestroy() {
}, // - ",
destroyed() {
}, // - ",
activated() {
} //keep-alive",
};
</script>
<style scoped>
</style>

View File

@ -0,0 +1,403 @@
<template>
<div>
<h1>资产授权</h1>
<el-container>
<el-aside width="400px">
<el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
</el-aside>
<el-main>
<el-form :inline="true" :model="tableBasic" class="demo-form-inline">
<el-form-item label="数据库名称">
<el-input v-model="tableBasic.name" placeholder="数据库/表名称" disabled></el-input>
</el-form-item>
<el-form-item label="中文名称">
<el-input v-model="text" placeholder="中文名称" disabled></el-input>
</el-form-item>
<el-form-item label="数据量">
<el-input v-model="dataNum" placeholder="数据量" disabled></el-input>
</el-form-item>
</el-form>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>卡片名称</span>
</div>
<template>
<el-tabs v-model="activeName" type="card" @tab-click="handleClick">
<el-tab-pane label="部门授权" name="first">
<el-table
v-if="refreshTable"
v-loading="loading"
:data="deptList"
:default-expand-all="isExpandAll"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
row-key="deptId">
<el-table-column label="部门名称" prop="deptName" width="260"></el-table-column>
<el-table-column label="部门负责人" prop="leader" width="260"></el-table-column>
<el-table-column label="邮箱" prop="email" width="260"></el-table-column>
<el-table-column align="center" label="创建时间" prop="createTime" width="200">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column align="center" class-name="small-padding fixed-width" label="操作(授权)">
<template slot-scope="scope">
<el-switch
:value="isDeptAccredited(scope.row.deptId)"
@change="handleDeptAccreditChange(scope.row.deptId,$event)"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="用户授权" name="second">
<el-table v-loading="loading" :data="userList">
<el-table-column v-if="columns[0].visible" key="userId" align="center" label="用户编号" prop="userId"/>
<el-table-column v-if="columns[1].visible" key="userName" :show-overflow-tooltip="true" align="center" label="用户名称"
prop="userName"/>
<el-table-column v-if="columns[2].visible" key="nickName" :show-overflow-tooltip="true" align="center" label="用户昵称"
prop="nickName"/>
<el-table-column v-if="columns[3].visible" key="deptName" :show-overflow-tooltip="true" align="center" label="部门"
prop="dept.deptName"/>
<el-table-column v-if="columns[4].visible" key="phonenumber" align="center" label="手机号码"
prop="phonenumber" width="120"/>
<el-table-column v-if="columns[7].visible" key="email" align="center" label="邮箱"
prop="email" width="120"/>
<el-table-column v-if="columns[6].visible" align="center" label="创建时间" prop="createTime" width="160">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column align="center" class-name="small-padding fixed-width" label="操作(授权)" width="160">
<template slot-scope="scope">
<el-switch
:value="isAccredited(scope.row.userId)"
@change="handleAccreditChange(scope.row.userId,$event)"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>
</template>
</el-card>
</el-main>
</el-container>
</div>
</template>
<script>
//jsjsjson,
//import from ',
import {
addDeptAssetAuthorization,
addUserAssetAuthorization,
delDeptAssetAuthorization,
delUserAssetAuthorization,
getExtractDataTableNameList,
findDeptIdList,
findUserIdList
} from '@/api/property/asauth'
import { listUser } from '@/api/system/user'
import { listDept } from '@/api/system/dept'
import { parseTime } from '@/utils/muyu'
export default {
//import使"
components: {},
dicts: ['sys_yes_no','sys_normal_disable'],
props: {},
data() {
//"
return {
//
AccreditValue:false,
//
userList:[],
//
columns: [
{key: 0, label: `用户编号`, visible: false},
{key: 1, label: `用户名称`, visible: true},
{key: 2, label: `用户昵称`, visible: true},
{key: 3, label: `部门`, visible: true},
{key: 4, label: `手机号码`, visible: true},
{key: 5, label: `状态`, visible: false},
{key: 6, label: `创建时间`, visible: true},
{key: 7, label: `邮箱`, visible: true}
],
dataNum:0,
//
loading: true,
//
showSearch: true,
//
deptList: [],
//
deptOptions: [],
//
title: "",
//
open: false,
//
isExpandAll: true,
//
refreshTable: true,
//
queryParams: {
deptName: undefined,
status: undefined
},
data:[],
defaultProps: {
children: 'tableNames',
label: 'name'
},
tableBasic:{},
tableStructure:[],
valueList:[],
activeName: 'first',
AssetImPowerListReq:{
basicId:null,
tableId:null,
deptId:null,
userId:null
},
userIdList:[],
deptIdList:[],
};
},
// data",
computed: {},
//data",
watch: {},
//",
methods: {
parseTime,
//switch
handleDeptAccreditChange(deptId, value) {
if (this.tableBasic.children != null) {
this.AssetImPowerListReq.basicId = this.tableBasic.basicId
this.AssetImPowerListReq.deptId = deptId
this.AssetImPowerListReq.tableId = null;
} else {
this.AssetImPowerListReq.tableId = this.tableBasic.id
this.AssetImPowerListReq.deptId = deptId
this.AssetImPowerListReq.basicId = null;
}
if (value === true) {
//
addDeptAssetAuthorization(this.AssetImPowerListReq).then((res) => {
if (res.code === 200) {
this.$modal.msgSuccess("权限赋予成功");
} else {
this.$modal.msgError("权限赋予失败");
}
this.findDeptIdList();
this.isDeptAccredited()
})
} else {
//
delDeptAssetAuthorization(this.AssetImPowerListReq).then((res) => {
if (res.code === 200) {
this.$modal.msgSuccess("权限删除成功");
} else {
this.$modal.msgError("权限删除失败");
}
this.findDeptIdList();
this.isDeptAccredited()
})
}
},
//switch,
handleAccreditChange(userId, value) {
console.log("userId的值:" + userId);
console.log("value的值" + value)
if (this.tableBasic.children != null) {
this.AssetImPowerListReq.basicId = this.tableBasic.basicId
this.AssetImPowerListReq.userId = userId
this.AssetImPowerListReq.tableId = null;
} else {
this.AssetImPowerListReq.tableId = this.tableBasic.id
this.AssetImPowerListReq.userId = userId
this.AssetImPowerListReq.basicId = null;
}
if (value === true) {
//
addUserAssetAuthorization(this.AssetImPowerListReq).then((res) => {
if (res.code === 200) {
this.$modal.msgSuccess("权限赋予成功");
} else {
this.$modal.msgError("权限赋予失败");
}
this.findUserIdList()
this.isAccredited()
})
} else {
//
delUserAssetAuthorization(this.AssetImPowerListReq).then((res) => {
if (res.code === 200) {
this.$modal.msgSuccess("权限删除成功");
} else {
this.$modal.msgError("权限删除失败");
}
this.findUserIdList()
this.isAccredited()
})
}
},
// ID
isAccredited(userId) {
return this.userIdList.includes(userId);
},
//ID
isDeptAccredited(deptId) {
return this.deptIdList.includes(deptId);
},
/**
* 查询用户列表
*/
getUserList() {
this.loading = true;
listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
this.userList = response.data.rows;
this.total = response.data.total;
this.loading = false;
console.log(response.data.rows)
}
);
},
/**
* 查询部门列表
*/
getList() {
this.loading = true;
listDept(this.queryParams).then(response => {
this.deptList = this.handleTree(response.data, "deptId");
this.loading = false;
});
},
/**
* 查询数据库和相关联表
*
* @returns {AxiosPromise} 返回集合
*/
findByTableName() {
getExtractDataTableNameList().then((res) => {
this.data = res.data
})
},
/**
* 查询资产赋权用户信息
* @param data 参数信息
* @returns {*} 响应结果
*/
findUserIdList(){
findUserIdList(this.AssetImPowerListReq).then((res) => {
this.userIdList = res.data
})
},
/**
* 查询资产赋权部门信息
* @param data 参数信息
* @returns {*} 响应结果
*/
findDeptIdList(){
findDeptIdList(this.AssetImPowerListReq).then((res) => {
this.deptIdList = res.data
})
},
/**\
* 树形结构
* @param data
*/
handleNodeClick(data) {
this.tableBasic = data
if (this.tableBasic.children != null) {
this.AssetImPowerListReq.basicId = this.tableBasic.basicId
this.AssetImPowerListReq.deptId = this.tableBasic.deptId
this.AssetImPowerListReq.tableId = null;
} else {
this.AssetImPowerListReq.tableId = this.tableBasic.id
this.AssetImPowerListReq.basicId = null;
}
/**
* 查询资产赋权用户信息
* @param data 参数信息
* @returns {*} 响应结果
*/
findUserIdList(this.AssetImPowerListReq).then((res) => {
this.userIdList = res.data
})
/**
* 查询资产赋权部门信息
* @param data 参数信息
* @returns {*} 响应结果
*/
findDeptIdList(this.AssetImPowerListReq).then((res) => {
this.deptIdList = res.data
})
},
},
// - 访this",
created() {
//
this.findByTableName()
//
this.getList()
//
this.getUserList()
},
// - 访DOM",
mounted() {
},
beforeCreate() {
}, // - ",
beforeMount() {
}, // - ",
beforeUpdate() {
}, // - ",
updated() {
}, // - ",
beforeDestroy() {
}, // - ",
destroyed() {
}, // - ",
activated() {
} //keep-alive",
};
</script>
<style scoped>
</style>

View File

@ -0,0 +1,166 @@
<template>
<div>
<h1>数据资产结构</h1>
<el-container>
<el-aside width="400px">
<el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
</el-aside>
<el-main>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span style="font-size: xx-large"></span>
<template>
<el-descriptions class="margin-top" title="资产模型基本信息" :column="2" border>
<el-descriptions-item>
<template slot="label">表名称</template>
{{ tableBasic.name }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">表备注</template>
{{ tableBasic.tableRemark }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">数据量</template>
{{ dataNum }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">是否核心</template>
<dict-tag :options="dict.type.sys_no" :value="tableBasic.isCenter"/>
</el-descriptions-item>
</el-descriptions>
</template>
</div>
</el-card>
<el-card class="box-card" title="资产模型基本信息" :column="2" >
<div slot="header" class="clearfix">
<span>资产模型详细信息</span>
</div>
<el-table
:data="tableStructure" style="width: 100%">
<el-table-column label="名称" prop="field"></el-table-column>
<el-table-column label="注释" prop="annotation"></el-table-column>
<el-table-column label="是否主键" prop="primarys">
<template slot-scope="scope">
<span v-if="scope.row.primarys==='PRI'">
<el-tag type="success">{{scope.row.primarys }}</el-tag>
</span>
<span v-if="scope.row.primarys===''">
<el-tag type="danger">NO</el-tag>
</span>
</template>
</el-table-column>
<el-table-column label="类型" prop="type"></el-table-column>
<el-table-column label="映射类型" prop="dataMapping"></el-table-column>
<el-table-column label="是否为空" prop="nullable"></el-table-column>
<el-table-column label="是否字典" prop="isDictionary"></el-table-column>
<el-table-column label="映射字典" prop="dictionaryTable"></el-table-column>
</el-table>
</el-card>
</el-main>
</el-container>
</div>
</template>
<style>
.el-main {
background-color: #ececec;
color: #000000;
line-height: 147px;
}
</style>
<script>
//jsjsjson,
//import from ',
import { getExtractDataTableNameList, tableStructureShow } from '@/api/property/astr'
export default {
//import使"
components: {},
dicts: ['sys_no'],
props: {},
data() {
//"
return {
tableMapping:[],
data:[],
defaultProps: {
children: 'tableNames',
label: 'name'
},
dataNum:0,
tableBasic:{
},
tableStructure:[],
javaType:[],
};
},
// data",
computed: {},
//data",
watch: {},
//",
methods: {
getSelectList(){
getExtractDataTableNameList().then((res)=>{
this.data = res.data
})
},
handleNodeClick(data) {
console.log(data)
this.tableBasic = data
tableStructureShow(data).then(res => {
console.log(res)
this.dataNum = res.data.length
this.tableStructure = res.data
})
},
},
// - 访this",
created() {
this.getSelectList();
},
// - 访DOM",
mounted() {
},
beforeCreate() {
}, // - ",
beforeMount() {
}, // - ",
beforeUpdate() {
}, // - ",
updated() {
}, // - ",
beforeDestroy() {
}, // - ",
destroyed() {
}, // - ",
activated() {
} //keep-alive",
};
</script>
<style scoped>
</style>

View File

@ -0,0 +1,474 @@
<template>
<div>
<el-form ref="form" :model="connectDTO" label-width="130px" :inline="true">
<el-form-item label="接入源名称:">
<el-input v-model="connectDTO.accSourName" style="width: 300px;"></el-input>
</el-form-item>
<el-form-item label="数据来源系统名称:">
<el-input v-model="connectDTO.dataSourSystemName" style="width: 300px;"></el-input>
</el-form-item>
<el-form-item label="数据接入类型:">
<el-input v-model="connectDTO.dataAccType" style="width: 300px;"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="selectConnectList"></el-button>
<el-button>取消</el-button>
</el-form-item>
</el-form>
<el-button type="primary" @click="insertConnectList" plain>添加</el-button>
<el-button type="danger" plain>删除</el-button>
<el-button type="warning" plain>导出</el-button>
<template>
<el-table
ref="multipleTable"
:data="connect"
tooltip-effect="dark"
:style="{width: tableWidth}"
@selection-change="handleSelectionChange">
<el-table-column
type="selection"
>
</el-table-column>
<el-table-column
label="接入源名称">
<template slot-scope="scope">{{ scope.row.accSourName }}</template>
</el-table-column>
<el-table-column
label="数据来源系统名称">
<template slot-scope="scope">{{ scope.row.dataSourSystemName }}</template>
</el-table-column>
<el-table-column
label="ip地址">
<template slot-scope="scope">{{ scope.row.ipAddress }}</template>
</el-table-column>
<el-table-column
label="端口号地址">
<template slot-scope="scope">{{ scope.row.port }}</template>
</el-table-column>
<el-table-column
label="数据接入类型">
<template slot-scope="scope">{{ scope.row.dataAccType }}</template>
</el-table-column>
<el-table-column
label="数据库名称">
<template slot-scope="scope">{{ scope.row.databaseName }}</template>
</el-table-column>
<el-table-column
label="是否初始化">
<template slot-scope="scope">
<el-tag v-if="scope.row.initialization==='Y'" type="success"></el-tag>
<el-tag v-if="scope.row.initialization==='N'" type="danger"></el-tag>
</template>
</el-table-column>
<el-table-column
label="备注">
<template slot-scope="scope">{{ scope.row.notes }}</template>
</el-table-column>
<el-table-column
label="操作">
<template slot-scope="scope">
<el-button @click="selectHandleClick(scope.row)" type="text" size="small">同步资产结构</el-button>
<el-button @click="textHandleClick(scope.row)" type="text" size="small">测试</el-button>
<el-button @click="updHandleClick(scope.row)" type="text" size="small">修改</el-button>
<el-button @click="delHandleClick(scope.row)" type="text" size="small">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 修改-->
<el-dialog title="修改配置参数" :visible.sync="updDialogFormVisible" width="1100px">
<el-form :model="connectDTO" :inline="true" :label-width="formLabelWidth">
<el-form-item label="ID" style="display: none;">
<el-input v-model="connectDTO.id" autocomplete="off" placeholder="Id"></el-input>
</el-form-item>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>基本配置信息</span>
</div>
<div class="text item" :label-width="formLabelWidth">
<el-form-item label="接入源名称">
<el-input v-model="connectDTO.accSourName" autocomplete="off" placeholder="请输入接入源名称"></el-input>
</el-form-item>
<el-form-item label="数据来源系统名称" label-width="125px">
<el-input v-model="connectDTO.dataSourSystemName" autocomplete="off" placeholder="请输入数据来源系统"></el-input>
</el-form-item>
<el-form-item label="ip地址">
<el-input v-model="connectDTO.ipAddress" autocomplete="off" placeholder="请输入IP地址"></el-input>
</el-form-item>
<el-form-item label="端口号地址">
<el-input v-model="connectDTO.port" autocomplete="off" placeholder="请输入端口号地址"></el-input>
</el-form-item>
<el-form-item label="数据接入类型" label-width="110px">
<template>
<el-select v-model="connectDTO.dataAccType" placeholder="请选择" label-width="100px">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</template>
<!-- <el-input v-model="connectDTO.name" autocomplete="off" placeholder="请输入数据接入类型"></el-input>-->
</el-form-item>
<el-form-item label="数据库名称">
<el-input v-model="connectDTO.databaseName" autocomplete="off" placeholder="请输入数据库名称"></el-input>
</el-form-item>
<el-form-item label="数据库用户">
<el-input v-model="connectDTO.userName" autocomplete="off" placeholder="数据库用户"></el-input>
</el-form-item>
<el-form-item label="数据库密码" label-width="125px">
<el-input v-model="connectDTO.password" autocomplete="off" placeholder="数据库密码"></el-input>
</el-form-item>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>数据连接参数</span>
</div>
<div class="text item" >
<el-form-item label="数据连接参数">
<el-input v-model="connectDTO.dataConnParam" autocomplete="off" placeholder="请输入数据连接参数" style="width: 990px;"></el-input>
</el-form-item>
</div>
</el-card>
</div>
</el-card>
<el-card class="box-card" style="margin-top: 20px;">
<div slot="header" class="clearfix">
<span>连接池配置</span>
</div>
<div class="text item" >
<el-form-item label="初始连接数量">
<el-input v-model="connectDTO.initSize" autocomplete="off" placeholder="请输入数据连接参数" style="width: 350px;"></el-input>
</el-form-item>
<el-form-item label="最大连接数量">
<el-input v-model="connectDTO.maxNumConn" autocomplete="off" placeholder="请输入数据连接参数" style="width: 350px;"></el-input>
</el-form-item>
<el-form-item label="最大等待时间">
<el-input v-model="connectDTO.maxWaitTime" autocomplete="off" placeholder="请输入数据连接参数" style="width: 350px;"></el-input>
</el-form-item>
<el-form-item label="最大等待次数">
<el-input v-model="connectDTO.maxWaitTimes" autocomplete="off" placeholder="请输入数据连接参数" style="width: 350px;"></el-input>
</el-form-item>
</div>
</el-card>
<el-card class="box-card" style="margin-top: 20px;">
<div slot="header" class="clearfix">
<span>其他信息</span>
</div>
<div class="text item" >
<el-form-item label="是否初始化" :label-width="formLabelWidth">
<el-radio v-model="connectDTO.initialization" label="Y"></el-radio>
<el-radio v-model="connectDTO.initialization" label="N"></el-radio>
</el-form-item>
<el-form-item label="备注" :label-width="formLabelWidth">
<el-input
type="textarea"
:rows="2"
:cole="1000"
placeholder="请输入内容"
v-model="connectDTO.notes" style="width: 850px;">
</el-input>
</el-form-item>
</div>
</el-card>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="updDialogFormVisible = false"> </el-button>
<el-button type="primary" @click="updsDialogFormVisible"> </el-button>
</div>
</el-dialog>
<!-- Form -->
<!--添加-->
<el-dialog title="添加配置参数" :visible.sync="addDialogFormVisible" width="1100px">
<el-form :model="connectDTO" :inline="true" :label-width="formLabelWidth">
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>基本配置信息</span>
</div>
<div class="text item" :label-width="formLabelWidth">
<el-form-item label="接入源名称">
<el-input v-model="connectDTO.accSourName" autocomplete="off" placeholder="请输入接入源名称"></el-input>
</el-form-item>
<el-form-item label="数据来源系统名称" label-width="125px">
<el-input v-model="connectDTO.dataSourSystemName" autocomplete="off" placeholder="请输入数据来源系统"></el-input>
</el-form-item>
<el-form-item label="ip地址">
<el-input v-model="connectDTO.ipAddress" autocomplete="off" placeholder="请输入IP地址"></el-input>
</el-form-item>
<el-form-item label="端口号地址">
<el-input v-model="connectDTO.port" autocomplete="off" placeholder="请输入端口号地址"></el-input>
</el-form-item>
<el-form-item label="数据接入类型" label-width="110px">
<template>
<el-select v-model="connectDTO.dataAccType" placeholder="请选择" label-width="100px">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</template>
<!-- <el-input v-model="connectDTO.name" autocomplete="off" placeholder="请输入数据接入类型"></el-input>-->
</el-form-item>
<el-form-item label="数据库名称">
<el-input v-model="connectDTO.databaseName" autocomplete="off" placeholder="请输入数据库名称"></el-input>
</el-form-item>
<el-form-item label="数据库用户">
<el-input v-model="connectDTO.userName" autocomplete="off" placeholder="数据库用户"></el-input>
</el-form-item>
<el-form-item label="数据库密码" label-width="125px">
<el-input v-model="connectDTO.password" autocomplete="off" placeholder="数据库密码"></el-input>
</el-form-item>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>数据连接参数</span>
</div>
<div class="text item" >
<el-form-item label="数据连接参数">
<el-input v-model="connectDTO.dataConnParam" autocomplete="off" placeholder="请输入数据连接参数" style="width: 990px;"></el-input>
</el-form-item>
</div>
</el-card>
</div>
</el-card>
<el-card class="box-card" style="margin-top: 20px;">
<div slot="header" class="clearfix">
<span>连接池配置</span>
</div>
<div class="text item" >
<el-form-item label="初始连接数量">
<el-input v-model="connectDTO.initSize" autocomplete="off" placeholder="请输入数据连接参数" style="width: 350px;"></el-input>
</el-form-item>
<el-form-item label="最大连接数量">
<el-input v-model="connectDTO.maxNumConn" autocomplete="off" placeholder="请输入数据连接参数" style="width: 350px;"></el-input>
</el-form-item>
<el-form-item label="最大等待时间">
<el-input v-model="connectDTO.maxWaitTime" autocomplete="off" placeholder="请输入数据连接参数" style="width: 350px;"></el-input>
</el-form-item>
<el-form-item label="最大等待次数">
<el-input v-model="connectDTO.maxWaitTimes" autocomplete="off" placeholder="请输入数据连接参数" style="width: 350px;"></el-input>
</el-form-item>
</div>
</el-card>
<el-card class="box-card" style="margin-top: 20px;">
<div slot="header" class="clearfix">
<span>其他信息</span>
</div>
<div class="text item" >
<el-form-item label="是否初始化" :label-width="formLabelWidth">
<el-radio v-model="connectDTO.initialization" label="Y"></el-radio>
<el-radio v-model="connectDTO.initialization" label="N"></el-radio>
</el-form-item>
<el-form-item label="备注" :label-width="formLabelWidth">
<el-input
type="textarea"
:rows="2"
:cole="1000"
placeholder="请输入内容"
v-model="connectDTO.notes" style="width: 850px;">
</el-input>
</el-form-item>
</div>
</el-card>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="addDialogFormVisible = false"> </el-button>
<el-button type="primary" @click="addsDialogFormVisible"> </el-button>
</div>
</el-dialog>
</template>
</div>
</template>
<script>
//jsjsjson,
//import from ',
import {
delHandleClick,
getConnectList,
insertConnectList,
selectHandleClick,
textHandleClick,
updConnectList
} from '@/api/property/property'
export default {
//import使"
components: {},
props: {},
data() {
//"
return {
connectDTO:{
maxWaitTimes: 3,
maxWaitTime: 3000,
maxNumConn: 20,
initSize: 5,
dataConnParam:'useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior'
},
connect:[],
tableWidth: '100%',
multipleSelection: [],
addDialogFormVisible: false,
updDialogFormVisible: false,
formLabelWidth:'100px',
options: [{
value: 'Mysql',
label: 'Mysql'
}, {
value: 'Oracle',
label: 'Oracle'
}],
}
},
// data",
computed: {},
//data",
watch: {},
//",
methods: {
selectHandleClick(row){
selectHandleClick(row).then(res=>{
console.log(res.data)
this.$message.success(res.msg)
})
},
delHandleClick(row){
delHandleClick(row.id).then(res=>{
this.$message.success(res.msg)
this.getConnectList()
})
},
textHandleClick(row){
textHandleClick(row).then(res=>{
this.$message.success(res.msg)
})
},
updHandleClick(row){
console.log(row)
this.connectDTO=row
this.updDialogFormVisible=true
},
updsDialogFormVisible(){
updConnectList(this.connectDTO).then(res=>{
this.updDialogFormVisible=false
this.$message.success(res.msg)
this.getConnectList()
})
},
insertConnectList(){
this.addDialogFormVisible=true
},
addsDialogFormVisible(){
insertConnectList(this.connectDTO).then(res=>{
this.addDialogFormVisible=false
this.$message.success(res.msg)
this.getConnectList()
})
},
handleSelectionChange(val) {
this.multipleSelection = val;
},
getConnectList(){
getConnectList(this.connectDTO).then(res=>{
this.connect=res.data
})
},
selectConnectList(){
this.getConnectList();
},
mounted() {
window.addEventListener('resize', this.handleResize);
},
beforeDestroy() {
window.removeEventListener('resize', this.handleResize);
},
handleResize() {
//
this.tableWidth = window.innerWidth < 768 ? '100%' : '80%';
}
},
// - 访this",
created() {
this.getConnectList();
},
// - 访DOM",
mounted() {
},
beforeCreate() {
}, // - ",
beforeMount() {
}, // - ",
beforeUpdate() {
}, // - ",
updated() {
}, // - ",
beforeDestroy() {
}, // - ",
destroyed() {
}, // - ",
activated() {
} //keep-alive",
}
</script>
<style scoped>
</style>

View File

@ -35,7 +35,7 @@ module.exports = {
proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
target: `http://21.12.0.10/prod-api`,
target: `http://21.12.0.10/prod-api/`,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''