ソースを参照

总后台 客户列表 完成服务商权限,模板控制台访问权限,代理模板权限的开关开发

dev
zhengzhou 4年前
コミット
1e3f4cfe35
2個のファイルの変更113行の追加13行の削除
  1. +102
    -10
      src/views/manage_system/customer/components/company-detail.vue
  2. +11
    -3
      src/views/manage_system/customer/services.js

+ 102
- 10
src/views/manage_system/customer/components/company-detail.vue ファイルの表示

@@ -3,7 +3,7 @@
<card-header class="company-node-view-header"> <card-header class="company-node-view-header">
<template #title>{{node.label}}</template> <template #title>{{node.label}}</template>
<template #right> <template #right>
<el-dropdown v-if="!editing">
<el-dropdown v-if="!editing" trigger="click">
<el-button size="small">企业管理</el-button> <el-button size="small">企业管理</el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item> <el-dropdown-item>
@@ -308,6 +308,34 @@
</div> </div>
</div> </div>
</el-form> </el-form>

<div
class="company-access"
v-if="!editing && node.id"
>
<div class="form-subtitle">{{ isServiceProvider ? '平台权限' : '服务商权限' }}</div>
<div class="node-form-field" v-if="!isServiceProvider">
<span>允许成为服务商</span>
<el-switch
:value="isServiceProvider"
@change="toggleAccess('serviceProviderStatus')"
/>
</div>
<div class="node-form-field" v-if="isServiceProvider">
<span>允许访问模板控制台</span>
<el-switch
:value="canAccessTemplateConsole"
@change="toggleAccess('templateConsoleStatus')"
/>
</div>
<div class="node-form-field" v-if="isServiceProvider">
<span>允许代理模板</span>
<el-switch
:value="canAccessTemplateProxy"
@change="toggleAccess('templateProxyStatus')"
/>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
@@ -389,6 +417,15 @@ export default {
selectProvinceId() { selectProvinceId() {
return this.nodeDetailFormData.proviceID; return this.nodeDetailFormData.proviceID;
}, },
isServiceProvider() {
return this.nodeDetailData.serviceProviderStatus === 1;
},
canAccessTemplateConsole() {
return this.nodeDetailData.templateConsoleStatus === 1;
},
canAccessTemplateProxy() {
return this.nodeDetailData.templateProxyStatus === 1;
}
}, },
watch: { watch: {
editing(v) { editing(v) {
@@ -401,12 +438,12 @@ export default {
} }
}, },
node(nextNode) { node(nextNode) {
this.nodeDetailFormData = {};
this.nodeDetailData = {};
if (nextNode && nextNode.id) { if (nextNode && nextNode.id) {
this.editing = false; this.editing = false;
this.loadCompanyInfo(nextNode.id); this.loadCompanyInfo(nextNode.id);
} else { } else {
this.nodeDetailFormData = {};
this.nodeDetailData = {};
this.editing = true; this.editing = true;
} }
}, },
@@ -470,7 +507,6 @@ export default {
*/ */
updateCompanyInfo() { updateCompanyInfo() {
this.$refs["form"].validate(async (valid) => { this.$refs["form"].validate(async (valid) => {
console.log("valid", valid);
if (!valid) return; if (!valid) return;
this.nodeDetailFormData.modifyUserID = sessionStorage.userId; this.nodeDetailFormData.modifyUserID = sessionStorage.userId;
const res = await services.updateCompany(this.nodeDetailFormData); const res = await services.updateCompany(this.nodeDetailFormData);
@@ -488,19 +524,14 @@ export default {
duration: 2500, duration: 2500,
}); });
this.loadCompanyInfo(); this.loadCompanyInfo();
this.nodeDetailData = this.nodeDetailFormData;
// this.initCompanyRecord = {...this.nodeDetailFormData};//保存之后信息得同步 否则取消的时候回出问题
// this.el_formLabelcolor = "textlabelgray";
// this.editButtonGroup = 1;
this.nodeDetailData = { ...this.nodeDetailFormData };
this.editing = false; this.editing = false;
// this.rightTitle = this.nodeDetailFormData.companyName;
}); });
}, },
/** /**
* 新建企业,保存数据 * 新建企业,保存数据
*/ */
createCompany() { createCompany() {
debugger;
this.$refs["form"].validate(async (valid) => { this.$refs["form"].validate(async (valid) => {
if (!valid) return; if (!valid) return;
this.nodeDetailFormData.createUserID = sessionStorage.userId; this.nodeDetailFormData.createUserID = sessionStorage.userId;
@@ -616,6 +647,48 @@ export default {
}) })
.catch(() => {}); .catch(() => {});
}, },
/**
* 服务商权限/控制台访问/模块代理控制 勾选项
*/
toggleAccess(field) {
const nextFlag = !this.nodeDetailFormData[field];
const [positiveText, negativeText] = (() => {
if (field === "serviceProviderStatus") {
return ["允许成为服务商", "取消服务商资质"];
}
if (field === "templateConsoleStatus") {
return ["允许访问模板控制台", "取消模板控台的访问权限"];
}
if (field === "templateProxyStatus") {
return ["允许代理模板", "取消代理模板的权限"];
}
return [];
})();
this.$confirm(`确认${nextFlag ? positiveText : negativeText}?`, "", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(async () => {
this.nodeDetailFormData.modifyUserID = sessionStorage.userId;
this.nodeDetailFormData[field] = nextFlag ? 1 : 0;
const res = await services.updateCompany(this.nodeDetailFormData);
// todo
const flag = res.Code === 0;
if (!flag) {
this.$notify({
message: res.Msg,
type: ["warning"],
});
return;
}
this.$notify({
message: `变更成功。`,
type: ["success"],
duration: 2500,
});
this.nodeDetailData = {...this.nodeDetailFormData};
});
},
}, },
}; };
</script> </script>
@@ -627,6 +700,7 @@ export default {
padding: 0 24px; padding: 0 24px;
} }
&-body { &-body {
position: relative;
padding: 0 24px; padding: 0 24px;
} }
.form { .form {
@@ -645,6 +719,24 @@ export default {
width: 50%; width: 50%;
padding-right: 20px; padding-right: 20px;
} }
.company-access {
&:before {
content: "";
position: absolute;
left: 0;
right: 0;
height: 1px;
background-color: rgba(#000, 0.2);
}
.node-form-field {
display: inline-flex;
justify-content: space-between;
flex-direction: row;
height: 40px;
line-height: 40px;
align-items: center;
}
}
} }


.dropdown-button { .dropdown-button {


+ 11
- 3
src/views/manage_system/customer/services.js ファイルの表示

@@ -69,6 +69,9 @@ export async function fetchCompanyDetail(companyId) {
disable: resData.company.Disable, disable: resData.company.Disable,
ipfsApi: resData.company.IpfsApi, ipfsApi: resData.company.IpfsApi,
ipfsBootstrap: resData.company.IpfsBootstrap, ipfsBootstrap: resData.company.IpfsBootstrap,
serviceProviderStatus: resData.company.ServiceProviderStatus,
templateConsoleStatus: resData.company.TemplateConsoleStatus,
templateProxyStatus: resData.company.TemplateProxyStatus,
cnName: userData.CnName, cnName: userData.CnName,
email: userData.Email, email: userData.Email,
phone: userData.Phone, phone: userData.Phone,
@@ -79,7 +82,6 @@ export async function fetchCompanyDetail(companyId) {
userCount: resData.userNum, userCount: resData.userNum,
deptCount: resData.deptNum, deptCount: resData.deptNum,



}; };
return outputData; return outputData;
} }
@@ -111,7 +113,10 @@ export async function createCompany(data) {
Remark: data.remark, Remark: data.remark,
Telphone: data.telphone, Telphone: data.telphone,
IpfsApi: data.ipfsApi, IpfsApi: data.ipfsApi,
IpfsBootstrap: data.ipfsBootstrap,
IpfsBootstrap: data.ipfsBootstrap,
ServiceProviderStatus: 0,
TemplateConsoleStatus: 0,
TemplateProxyStatus: 0,
} }


const resData = await fetchApi('company/addCompany', { company: fixedData, user: userData }); const resData = await fetchApi('company/addCompany', { company: fixedData, user: userData });
@@ -148,7 +153,10 @@ export async function updateCompany(data) {
Telphone: data.telphone, Telphone: data.telphone,
Id: data.companyID, Id: data.companyID,
IpfsApi: data.ipfsApi, IpfsApi: data.ipfsApi,
IpfsBootstrap: data.ipfsBootstrap,
IpfsBootstrap: data.ipfsBootstrap,
ServiceProviderStatus: data.serviceProviderStatus,
TemplateConsoleStatus: data.templateConsoleStatus,
TemplateProxyStatus: data.templateProxyStatus,
} }


const resData = await fetchApi('company/updateCompanyById', { company: fixedData, user: userData }); const resData = await fetchApi('company/updateCompanyById', { company: fixedData, user: userData });


読み込み中…
キャンセル
保存