Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Fedex
/
EcomWeb
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
jinhui.wang
2024-12-20 18:24:50 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
1bfa754a03eafae6668384b62bc03f98fa0aaa54
1bfa754a
1 parent
cb8dfed8
接口增加,状态修改
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
683 additions
and
70 deletions
src/api/system/customer-ai.js
src/views/cipherMachineConfig/dialog.vue
src/views/customerConfig/dialog.vue
src/views/customerConfig/index.vue
src/views/portConfig/dialog.vue
src/api/system/customer-ai.js
0 → 100644
View file @
1bfa754
import
request
from
'@/utils/request'
// 查询客户数据
/**
* @param clientId 客户ID
* @param ecomEntCode 电商企业代码
* @param ecomEntEmail 电商企业邮箱
* @param ecomEntName 电商企业名称
* @param endCreationTime 结束创建时间
* @param startCreationTime开始创建时间
* @param pageIndex *
* @param pageSize *
*/
export
function
getCustomerList
(
data
)
{
return
request
({
url
:
'/bus-customer/customers/getCustomerList'
,
method
:
'post'
,
data
:
data
})
}
\ No newline at end of file
src/views/cipherMachineConfig/dialog.vue
View file @
1bfa754
...
...
@@ -30,6 +30,7 @@
resize="none"
v-model="formData.cipherMachineNumber"
clearable
:disabled="type == 'update'"
placeholder=""
></el-input>
</Formitem>
...
...
@@ -62,6 +63,7 @@
resize="none"
v-model="formData.availableUserCount"
clearable
:disabled="type == 'update'"
oninput="value=value.replace(/[^0-9]/g,'')"
placeholder=""
></el-input>
...
...
src/views/customerConfig/dialog.vue
0 → 100644
View file @
1bfa754
<template>
<el-dialog
class="entryDialog classCUploadDialog"
:title="title"
:visible.sync="outerVisible"
:show-close="false"
width="40%"
:close-on-click-modal="false"
v-loading="loadings.dialogLoading"
@close="close"
>
<div class="modelItem">
<el-form
class="fedexFormStyle"
ref="formData"
:model="formData"
:rules="type == 'roleChange' ? {} : rules"
label-position="top"
:disabled="type == 'roleChange'"
size="small"
>
<el-row :gutter="5">
<!-- 电商企业代码 -->
<el-col :span="8">
<Formitem label="电商企业代码" prop="ecomEntCode" type="edit">
<el-input
type="text"
class="inputShadow"
id="inputInner-edit-ecomEntCode"
resize="none"
v-model="formData.ecomEntCode"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
<!-- 电商企业名称 -->
<el-col :span="8">
<Formitem label="电商企业名称" prop="ecomEntName" type="edit">
<el-input
type="text"
class="inputShadow"
id="inputInner-edit-ecomEntName"
resize="none"
v-model="formData.ecomEntName"
clearable
maxlength="4"
placeholder=""
></el-input>
</Formitem>
</el-col>
<!-- 电商企业邮箱 -->
<el-col :span="8">
<Formitem label="电商企业邮箱" prop="ecomEntEmail" type="edit">
<el-input
type="text"
class="inputShadow"
id="inputInner-edit-ecomEntEmail"
resize="none"
v-model="formData.ecomEntEmail"
clearable
maxlength="18"
placeholder=""
></el-input>
</Formitem>
</el-col>
</el-row>
<el-row :gutter="5">
<!-- 订单申报方 -->
<el-col :span="8">
<Formitem label="订单申报方" prop="declarationUnit10" type="edit">
<el-select
type="text"
id="inputInner--portCode"
v-model="sreachFormData.portCode"
clearable
placeholder=""
>
<el-option
v-for="(item, index) in dict.port"
:key="index"
:label="item"
:value="item"
></el-option>
</el-select>
</Formitem>
</el-col>
<!-- DXPID -->
<el-col :span="8">
<Formitem
label="DXPID"
prop="qingdaoDanyiUserDxpid"
type="edit"
>
<el-input
type="text"
class="inputShadow"
id="inputInner-edit-qingdaoDanyiUserDxpid"
resize="none"
v-model="formData.qingdaoDanyiUserDxpid"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
</el-row>
<div>青岛</div>
<el-row :gutter="5">
<!-- User ID -->
<el-col :span="8">
<Formitem label="User ID" prop="qingdaoUserId" type="edit">
<el-input
type="text"
class="inputShadow"
id="inputInner-edit-qingdaoUserId"
resize="none"
v-model="formData.qingdaoUserId"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
<!-- DXPID -->
<el-col :span="8">
<Formitem label="DXPID" prop="qingdaoUserDxpid" type="edit">
<el-input
type="text"
class="inputShadow"
id="inputInner-edit-qingdaoUserDxpid"
resize="none"
v-model="formData.qingdaoUserDxpid"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
<!-- Key -->
<el-col :span="8">
<Formitem label="Key" prop="qingdaoKey" type="edit">
<el-input
type="text"
class="inputShadow"
id="inputInner-edit-qingdaoKey"
resize="none"
v-model="formData.qingdaoKey"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
</el-row>
<div>北京</div>
<el-row :gutter="5">
<!-- DXPID -->
<el-col :span="8">
<Formitem label="DXPID" prop="beijingDxpid" type="edit">
<el-input
type="text"
class="inputShadow"
id="inputInner-edit-beijingDxpid"
resize="none"
v-model="formData.beijingDxpid"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
</el-row>
<div class="uploadItem">
<div class="uploadbox">
<el-button
size="mini"
type="text"
v-loading="loadings.uploadLoading"
@click="uploadFile"
>上传文件
</el-button>
<el-upload
class="upload-demo"
ref="uploadFile"
action="/manager-server/attachment/picImg"
:http-request="fileUpload"
:auto-upload="true"
:show-file-list="false"
:data="{}"
accept=".xlsx"
:before-upload="beforeUpload"
:on-remove="handleRemove"
:on-success="handleSuccess"
:on-change="fileChange"
:file-list="fileList"
@clearFiles="clearFile"
>
</el-upload>
</div>
<div class="fileList" v-if="formData.file != null">
<div class="fileList-item">
<div class="uploadbox-fileName">
<svg-icon
class="el-icon-user-solid"
icon-class="exl"
style="font-size: 18px; color: #de002e"
/>
<Tooltip
:content="formData.file.name"
:refName="formData.file.name"
/>
</div>
<div class="uploadbox-option">
<el-popconfirm
:title="$t('entry.upload.delTip')"
@confirm="delTypeDFile"
>
<el-button slot="reference" type="text">{{
$t("entry.upload.del")
}}</el-button>
</el-popconfirm>
</div>
</div>
</div>
</div>
</el-form>
</div>
<div class="dialogOption entrySave">
<el-button
class="entrySaveButton"
:disabled="loadings.submitLoading"
@click="submit"
>确 定</el-button
>
<el-button
class="entrySaveButton"
:disabled="loadings.uploadLoading"
@click="close"
>关 闭</el-button
>
</div>
</el-dialog>
</template>
<script>
import { addPortData, updatePortData } from "@/api/system/port-api.js";
export default {
props: {
outerVisible: {
type: Boolean,
default: false,
},
title: {
type: String,
default: "新增口岸",
},
type: {
type: String,
default: "",
},
active: {
type: Object,
default: null,
},
},
data() {
return {
formData: {
declarationPortCode: "",
declarationUnit10: "",
declarationUnit10Inspection: "",
declarationUnit18: "",
declarationUnitCompanyName: "",
dxpid: "",
portCode: "",
},
rules: {
portCode: [
{
required: true,
trigger: "blur",
message: "口岸代码不能为空!",
},
],
declarationPortCode: [
{
required: true,
trigger: "blur",
message: "申报地海关代码不能为空!",
},
{
validator: (rule, value, callback) => {
if (value.length != 4) {
callback("申报地海关代码必须为4位!");
} else {
callback();
}
},
trigger: "blur",
},
],
declarationUnit18: [
{
required: true,
trigger: "blur",
message: "申报单位(18位社会信用代码)不能为空!",
},
{
validator: (rule, value, callback) => {
if (value.length != 18) {
callback("18位社会信用代码必须为18位!");
} else {
callback();
}
},
trigger: "blur",
},
],
declarationUnit10: [
{
required: true,
trigger: "blur",
message: "申报单位(10位海关代码)不能为空!",
},
{
validator: (rule, value, callback) => {
if (value.length != 10) {
callback("10位海关代码必须为10位!");
} else {
callback();
}
},
trigger: "blur",
},
],
declarationUnitCompanyName: [
{
required: true,
trigger: "blur",
message: "申报单位 (企业名称)不能为空!",
},
],
},
loadings: {
dialogLoading: false,
uploadLoading: false,
submitLoading: false,
},
loadingText: "",
};
},
watch: {
outerVisible(val) {
if (val) {
this.loadings.dialogLoading = false;
if (this.type == "update") {
this.formData = this.active;
}
}
},
},
methods: {
//查询用户信息详情
searchUserData(id) {
this.loadings.dialogLoading = true;
getUserDetailData({ id: id })
.then((res) => {
if (res.code === "200") {
this.formData = res.data;
} else {
this.alertWarningMsg(res.message);
}
this.loadings.dialogLoading = false;
})
.catch((err) => {
console.log(err);
this.loadings.dialogLoading = false;
});
},
//数据保存
submit() {
this.loadings.dialogLoading = true;
let obj = {};
if (this.type == "add") {
this.$refs.formData.validate((valid) => {
if (valid) {
obj = this.formData;
this.addApi(obj);
} else {
this.loadings.dialogLoading = false;
}
});
} else if (this.type == "update") {
this.$refs.formData.validate((valid) => {
if (valid) {
obj = this.formData;
this.updateapi(obj);
} else {
this.loadings.dialogLoading = false;
}
});
}
},
//新增
addApi(val) {
addPortData(val)
.then((res) => {
if (res.code === "200") {
this.msgSuccess(res.message);
this.close();
} else {
this.alertWarningMsg(res.message);
this.loadings.dialogLoading = false;
}
})
.catch((err) => {
console.log(err);
this.loadings.dialogLoading = false;
});
},
//修改
updateapi(val) {
updatePortData(val)
.then((res) => {
if (res.code === "200") {
this.msgSuccess(res.message);
this.close();
} else {
this.alertWarningMsg(res.message);
this.loadings.dialogLoading = false;
}
})
.catch((err) => {
console.log(err);
this.loadings.dialogLoading = false;
});
},
close() {
this.formData = {
declarationPortCode: "",
declarationUnit10: "",
declarationUnit10Inspection: "",
declarationUnit18: "",
declarationUnitCompanyName: "",
dxpid: "",
portCode: "",
};
this.$emit("close");
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/styles/variables.scss";
</style>
src/views/customerConfig/index.vue
View file @
1bfa754
...
...
@@ -8,70 +8,62 @@
size="small"
>
<el-row class="row-border">
<!--
姓名
-->
<!--
Client ID
-->
<el-col :span="5">
<Formitem label="
姓名" prop="userName
">
<Formitem label="
Client ID" prop="clientId
">
<el-input
type="text"
class="inputShadow"
id="inputInner--
userName
"
id="inputInner--
clientId
"
resize="none"
v-model="sreachFormData.
userName
"
v-model="sreachFormData.
clientId
"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
<!--
员工号
-->
<!--
电商企业名称
-->
<el-col :span="5">
<Formitem label="
员工号" prop="employeeNumber
">
<Formitem label="
电商企业名称" prop="ecomEntName
">
<el-input
type="text"
class="inputShadow"
id="inputInner--e
mployeeNumber
"
id="inputInner--e
comEntName
"
resize="none"
v-model="sreachFormData.e
mployeeNumber
"
v-model="sreachFormData.e
comEntName
"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
<!--
口岸
-->
<!--
电商企业代码
-->
<el-col :span="5">
<Formitem label="
口岸" prop="port
">
<el-
selec
t
<Formitem label="
电商企业代码" prop="ecomEntCode
">
<el-
inpu
t
type="text"
id="inputInner--port"
v-model="sreachFormData.port"
class="inputShadow"
id="inputInner--ecomEntCode"
resize="none"
v-model="sreachFormData.ecomEntCode"
clearable
placeholder=""
>
<el-option
v-for="(item, index) in dictData.port"
:key="index"
:label="item.name"
:value="item.code"
></el-option>
</el-select>
></el-input>
</Formitem>
</el-col>
<!--
角色
-->
<!--
创建日期
-->
<el-col :span="5">
<Formitem label="角色" prop="roleIds">
<el-select
type="text"
id="inputInner--roleIds"
v-model="sreachFormData.roleIds"
clearable
placeholder=""
>
<el-option
v-for="(item, index) in dict.roleList"
:key="index"
:label="item.roleName"
:value="item.roleId"
></el-option>
</el-select>
<Formitem label="创建日期" prop="creationTime" :activeType="true">
<el-date-picker
class="inputInner--creationTime"
id="inputInner--creationTime"
v-model="sreachFormData.creationTime"
type="daterange"
format="yyyy-MM-dd"
prefix-icon="none"
value-format="yyyy-MM-dd"
range-separator="至"
@change="dateChange"
/>
</Formitem>
</el-col>
<el-col :span="2">
...
...
@@ -85,17 +77,58 @@
></el-button>
</el-form-item>
</el-col>
<el-col :span="2">
<!-- 清空查询条件-->
<el-form-item class="textLeft textCenter">
<el-button
type="text"
size="small"
icon="el-icon-refresh"
@click="clear"
>
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
<el-row>
<!-- 电商企业邮箱 -->
<el-col :span="5">
<Formitem label="电商企业邮箱" prop="ecomEntEmail">
<el-input
type="text"
class="inputShadow"
id="inputInner--ecomEntEmail"
resize="none"
v-model="sreachFormData.ecomEntEmail"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
</el-row>
</el-form>
<div class="optionButton">
<!-- <el-button
<div>
<el-button
class="entrySaveButton"
icon="el-icon-plus"
size="small"
@click="addRole"
@click="addCustomer"
>
新 增
</el-button>
</div>
<div>
<el-button
class="entrySaveButton"
size="small"
icon="el-icon-download"
@click="downloadData"
>
新增角色
</el-button> -->
导出
</el-button>
</div>
</div>
<Table
class="fedexDetialTable fedexSreachTable"
...
...
@@ -105,7 +138,8 @@
:maxHeight="tableMaxheight"
:border="true"
:pagination="true"
:order="false"
:order="true"
noLabel="序号"
:loading="loadings.searchLoading"
:page="page.pageIndex"
:pageSizes="[20, 30, 50, 100]"
...
...
@@ -117,32 +151,40 @@
:rowSelectDataType="false"
>
<template slot="optionColumn">
<el-table-column align="left" label="操作">
<el-table-column align="left" label="操作"
width="100"
>
<template slot-scope="scope">
<el-button type="text" @click="update(scope.row)">
角色修改
</el-button>
<el-button type="text" @click="muenChange(scope.row)">
权限绑定
</el-button>
<el-button type="text" @click="update(scope.row)"> 修改 </el-button>
</template>
</el-table-column>
</template>
</Table>
<DialogVue
:outerVisible="outerVisible"
:title="dialogTitle"
:type="editType"
:active="activeData"
@close="dialogClose"
/>
</div>
</template>
<script>
import { getRoleList } from "@/api/system/user.js";
import { getCustomerList } from "@/api/system/customer-ai.js";
import { getPortList } from "@/api/system/user.js";
import DialogVue from "./dialog.vue";
export default {
name: "RoleConfig",
name: "PortConfig",
components: {
DialogVue,
},
data() {
return {
sreachFormData: {
userName: "",
employeeNumber: "",
roleIds: "",
port: "",
clientId: "",
ecomEntCode: "",
ecomEntEmail: "",
ecomEntName: "",
creationTime: [],
},
page: {
pageIndex: 1,
...
...
@@ -153,14 +195,62 @@ export default {
tableData: [],
headerData: [
{
name: "角色名",
value: "roleName",
name: "Client ID",
value: "clientId",
width: "",
align: "left",
},
{
name: "电商企业代码",
value: "ecomEntCode",
width: "",
align: "left",
},
{
name: "电商企业名称",
value: "ecomEntName",
width: "",
align: "left",
},
{
name: "电商企业邮箱",
value: "ecomEntEmail",
width: "",
align: "left",
},
{
name: "证书",
value: "certificare",
width: "",
align: "left",
},
{
name: "创建时间",
value: "creationTime",
width: "",
align: "left",
},
{
name: "创建人",
value: "creator",
width: "",
align: "left",
},
{
name: "修改时间",
value: "modificationTime",
width: "",
align: "left",
},
{
name: "修改人",
value: "modifier",
width: "",
align: "left",
},
],
dict: {
roleLis
t: [],
por
t: [],
},
loadings: {
searchLoading: false,
...
...
@@ -172,35 +262,74 @@ export default {
};
},
created() {
this.search
Role
();
this.search
PortDictData
();
this.search(0);
},
mounted() {
this.tableMaxheight = window.innerHeight - 300;
},
methods: {
search(val) {},
//查询
searchRole(val) {
getRoleList({ roleName: "", pageIndex: 1, pageSize: 999999 })
search(val) {
this.loadings.searchLoading = true;
if (val == 0) {
this.page.pageIndex = 1;
}
let obj = this.sreachFormData;
obj.pageIndex = this.page.pageIndex;
obj.pageSize = this.page.pageSize;
obj.endCreationTime = "";
obj.startCreationTime = "";
if (obj.creationTime.length > 0) {
obj.startCreationTime = obj.creationTime[0];
obj.endCreationTime = obj.creationTime[1];
}
getCustomerList(obj)
.then((res) => {
if (res.code === "200") {
this.dict.roleList = res.data.value;
this.tableData = res.data.value;
this.page.total = res.data.totalItems;
this.tableData.forEach((item, idx) => {
item.index = idx;
});
} else {
this.alertWarningMsg(res.message);
}
this.loadings.searchLoading = false;
})
.catch((err) => {
console.log(err);
this.loadings.searchLoading = false;
});
},
update(val) {
this.dialogTitle = "修改角色";
this.editType = "update";
//获取口岸子字典
searchPortDictData() {
getPortList()
.then((res) => {
if (res.code === "200") {
this.dict.port = res.data;
}
})
.catch((err) => {
console.log(err);
});
},
clear() {
this.sreachFormData = {
portCode: "",
dxpid: "",
};
},
//导出
downloadData() {},
addCustomer() {
this.dialogTitle = "新增口岸";
this.editType = "add";
this.outerVisible = true;
this.activeData = val;
},
muenChang
e(val) {
this.dialogTitle = "
绑定权限
";
this.editType = "
menuChang
e";
updat
e(val) {
this.dialogTitle = "
修改口岸
";
this.editType = "
updat
e";
this.outerVisible = true;
this.activeData = val;
},
...
...
@@ -221,6 +350,13 @@ export default {
input() {
this.$forceUpdate();
},
dateChange(val) {
if (val == "" || val == null) {
this.$nextTick(() => {
this.sreachFormData.creationTime = [];
});
}
},
},
};
</script>
...
...
@@ -240,6 +376,8 @@ export default {
.optionButton {
padding: 10px;
text-align: left;
display: flex;
justify-content: space-between;
.el-button {
color: $fedexButton;
...
...
src/views/portConfig/dialog.vue
View file @
1bfa754
...
...
@@ -30,6 +30,7 @@
resize="none"
v-model="formData.portCode"
clearable
:disabled="type == 'update'"
placeholder=""
></el-input>
</Formitem>
...
...
Please
register
or
login
to post a comment