Commit 15073b38 authored by yanglilong's avatar yanglilong

Merge branch 'yanglilong' into 'master'

Yanglilong

See merge request !1
parents 0edd4e35 f953aba9
VUE_APP_API=/dev
\ No newline at end of file
VUE_APP_API=/api_bims
\ No newline at end of file
# just a flag
ENV = 'development'
VUE_APP_API = '/dev'
VUE_APP_API = '/api_bims'
VUE_APP_USER = 'admin'
......
# just a flag
ENV = 'production'
VUE_APP_API = '/dev'
VUE_APP_API = '/api_bims'
VUE_APP_USER = ''
......
......@@ -14,4 +14,9 @@
[接口文档地址](http://git.ssish.com/root/core-ci/wikis/interface_document)
### 测试
1. 登录账密 admin/123456
1. IP: 114.55.4.202
2. 域名 http://nt.run4wd.com/bims
3. 登录账密 admin/123456
4. 发布目录:/datavg/bims/
......@@ -3,8 +3,8 @@
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve --mode dev",
"build:test": "vue-cli-service build --mode dev",
"serve": "vue-cli-service serve --mode development",
"build:test": "vue-cli-service build --mode development",
"build": "vue-cli-service build --mode production --report",
"lint": "vue-cli-service lint"
},
......
......@@ -23,4 +23,19 @@
.burt-container{
.pa(30, 36, 50, 39);
}
.none-label {
text-align: right;
.ant-form-item-label {
opacity: 0;
}
}
.ant-btn .icon-class {
.mg-r(10);
}
.success.ant-btn-link {
color: #4cd964;
}
.danger.ant-btn-link {
color: #ff3b30;
}
</style>
// 基础api
export default {
getUserInfo: `/getUserInfo`,
corporateCodeList: "/backstage/auth/corporateList",
// getUserInfo: `/getUserInfo`,
payorCodeList: "/backstage/auth/payorListNopage",
corporateCodeList: "/backstage/auth/corporateList", // 根据payorCode查询
planCodeList: "/backstage/auth/planList", // 根据corporCode查询
uploadImg: "/common/upload",
specialtyList: "/backstage/auth/specialtyList",
coverageCode: "/backstage/auth/coverageMasterList",
};
// 客户管理api
export default {
getCustomerList: "/backstage/auth/patientList",
updateCustomList: "/backstage/auth/updatePatientPolicy",
createCustomer: "/backstage/auth/createPatient",
customerDetail: "/backstage/auth/patientDetail",
};
// 信息管理api
export default {};
export default {
providerDetail: "/backstage/auth/providerDetail", //医疗机构列表
doctorList: "/backstage/auth/doctorList", //医生列表
doctorDelete: "/backstage/auth/doctorDelete", //删除医生
doctorCreate: "/backstage/auth/doctorCreate", //新增医生
doctorUpdate: "/backstage/auth/doctorUpdate", //修改医生
/*-------------保险公司-----------------*/
payorList: "/backstage/auth/payorList", //保险公司列表
payorDetail: "/backstage/auth/payorDetail", //保险公司详情
payorUpdate: "/backstage/auth/payorUpdate", //保险公司修改
payorDelete: "/backstage/auth/payorDelete", //保险公司删除
/*-------------折扣信息-----------------*/
payorAddDiscount: "/backstage/auth/payorAddDiscount", //编辑折扣信息
payorDiscountDelete: "/backstage/auth/payorDiscountDelete", //删除折扣信息
};
// 福利管理api
export default {};
export default {
benefitType: "/backstage/auth/benefitMasterList",
coverageList: "/backstage/auth/coverageList",
};
// 根据环境变量确认baseurl
let baseUrl = "";
switch (process.env.NODE_ENV) {
case "development":
// 本地地址,dev会被代理到测试环境
baseUrl = "/dev";
break;
// 正式地址
case "production":
baseUrl = ""; // 暂无
break;
}
export default baseUrl;
......@@ -8,10 +8,46 @@ const GETUSERINFO = (params) => {
params,
});
};
// get corporate Code
const GETCORPORATECODE = (data) => {
// 保险公司下拉数据
const GETPAYORCODE = (data) => {
return req.post(apis.payorCodeList, {
data,
});
};
// get corporate Code 根据保险公司获取客户公司
const GETCORPORATECODEBYPAYOR = (data) => {
return req.post(apis.corporateCodeList, data);
};
// get plan Code 根据客户公司获取保险计划
const GETPLANCODEBYCORP = (data) => {
return req.post(apis.planCodeList, data);
};
// 科室信息
const GETSPECIALTYLIST = (data) => {
return req.post(apis.specialtyList, data);
};
// 上传图片
const UPLOADIMG = (data) => {
return req.post(apis.uploadImg, data);
};
// 责任累类型列表
const GETCOVERAGECODE = (data) => {
return req.post(apis.coverageCode, data);
};
// 对象数组
export default { GETUSERINFO, GETCORPORATECODE };
export default {
GETUSERINFO,
GETPAYORCODE,
GETCORPORATECODEBYPAYOR,
GETPLANCODEBYCORP,
GETSPECIALTYLIST,
UPLOADIMG,
GETCOVERAGECODE,
};
......@@ -2,9 +2,29 @@
import apis from "../apis_moudles/";
import req from "../request";
// 对象数组
// get custom list
const GETCUSTOMERLIST = function (data) {
return req.post(apis.getCustomerList, data);
};
export default { GETCUSTOMERLIST };
// get custom detail
const GETCUSTOMERDETAIL = function (data) {
return req.post(apis.customerDetail, data);
};
// add or update custom data
const UPDATECUSTOMDATA = function (data) {
return req.post(apis.updateCustomList, data);
};
// 创建新用户
const CREATENEWCUSTOMER = function (data) {
return req.post(apis.createCustomer, data);
};
export default {
GETCUSTOMERLIST,
GETCUSTOMERDETAIL,
UPDATECUSTOMDATA,
CREATENEWCUSTOMER,
};
// 信息维护函数库
// import apis from "../apis_moudles/index";
// import req from "../request";
// 医疗机构函数库
import apis from "../apis_moudles/index";
import req from "../request";
//医疗机构列表
const PROVIDERDETAIL = () => {
return req.post(apis.providerDetail);
};
//医生列表
const DOCTORLIST = (data) => {
return req.post(apis.doctorList, data);
};
//删除医生
const DOCTORDELETE = (data) => {
return req.post(apis.doctorDelete, data);
};
//新增医生
const DOCTORCREATE = (data) => {
return req.post(apis.doctorCreate, data);
};
//修改医生
const DOCTORUPDATE = (data) => {
return req.post(apis.doctorUpdate, data);
};
/*-------------保险公司-----------------*/
//保险公司列表
const PAYORLIST = (data) => {
return req.post(apis.payorList, data);
};
//保险公司详情
const PAYORDETAIL = (data) => {
return req.post(apis.payorDetail, data);
};
//保险公司修改
const PAYORUPDATE = (data) => {
return req.post(apis.payorUpdate, data);
};
//保险公司删除
const PAYORDELETE = (data) => {
return req.post(apis.payorDelete, data);
};
/*-------------折扣信息-----------------*/
//编辑折扣信息
const PAYORADDDISCOUNT = (data) => {
return req.post(apis.payorAddDiscount, data);
};
//删除折扣信息
const PAYORDISCOUNTDELETE = (data) => {
return req.post(apis.payorDiscountDelete, data);
};
// 对象数组
export default {};
export default {
PROVIDERDETAIL,
DOCTORLIST,
DOCTORDELETE,
DOCTORCREATE,
DOCTORUPDATE,
PAYORLIST,
PAYORDETAIL,
PAYORUPDATE,
PAYORDELETE,
PAYORADDDISCOUNT,
PAYORDISCOUNTDELETE
};
// 福利管理函数库
// import apis from "../apis_moudles/index";
// import req from "../request";
import apis from "../apis_moudles/welfare.js";
import req from "../request";
const GETBENEGITTYPE = () => {
return req.post(apis.benefitType);
};
const GETCOVERAGELIST = (data) => {
return req.post(apis.coverageList, data);
};
// 对象数组
export default {};
export default { GETBENEGITTYPE, GETCOVERAGELIST };
......@@ -13,7 +13,7 @@ const TOKEN_INVLIDE_TO_LOGIN = (code) => {
description: "token已过期",
});
}
// 清个人数据
// 清个人数据
store.commit("user/setUserInfo", "");
route.replace({
path: "/login",
......@@ -28,7 +28,6 @@ const PUB_ERR = (code, message, config) => {
if (config.responseType && config.responseType === "blob") {
return true;
}
console.log("错误信息", code, message, config);
return true;
};
......
......@@ -170,6 +170,13 @@ select {
vertical-align: middle;
}
.success.ant-btn-link {
color: #4cd964;
}
.danger.ant-btn-link {
color: #ff3b30;
}
// 菜单默认样式及激活样式重置
.menu {
.icon-class {
......@@ -244,6 +251,17 @@ select {
// .fs(21);
.pa(0, 8, 0, 8)
}
// 编辑的时候字体颜色修改
.ant-input,
.ant-select{
width: 100%;
color: #2B63FF;
}
// 操作栏fixed状态 层级太高会遮住展开的内容
.ant-table-expanded-row{
position: relative;
z-index: 2;
}
}
.ant-btn-primary{
background-color: #2B63FF;
......@@ -267,21 +285,64 @@ select {
}
}
.custom-info {
.ant-pagination-item-active {
.fs(16);
border: none;
// vertical-align: baseline;
.ant-pagination {
.ant-pagination-item-active {
.fs(16);
border: none;
// vertical-align: baseline;
}
.ant-pagination-item-link {
.fs(16);
.lh(22);
.pa(7, 15, 7, 15);
display: inline-block;
background-color: #f8fafb;
border: none;
}
.ant-pagination-item:not(.ant-pagination-item-active) {
display: none;
}
.current-page {
color: #4d7cfe;
}
.size-change {
.w(107);
.mg-l(40);
background-color: #f8fafb;
border: none;
}
}
.ant-radio-group{
.ant-radio-button-wrapper{
.pa(8, 17, 8, 17);
.lh(20);
vertical-align: bottom;
border: none;
border-radius: 4px;
background-color: #F8FAFB;
&:before{
content: none;
}
.ant-pagination-item-link {
.fs(16);
.lh(22);
.pa(7, 15, 7, 15);
display: inline-block;
background-color: #f8fafb;
border: none;
&:hover{
color: #2B63FF;
}
.ant-pagination-item:not(.ant-pagination-item-active) {
display: none;
}
.ant-radio-button-wrapper-checked{
border: none;
color: #2B63FF;
background-color: #F1F5FF;
&:before{
content: none;
}
}
\ No newline at end of file
&:hover{
border: none;
background-color: #F1F5FF;
color: #2B63FF;
}
}
}
.text-r{
text-align: right;
}
\ No newline at end of file
import Vue from "vue";
import {
Button,
Input,
Select,
DatePicker,
notification,
menu,
dropdown,
FormModel,
Row,
Col,
menu,
dropdown,
Table,
InputNumber,
message,
pagination,
FormModel,
Select,
DatePicker,
Input,
InputNumber,
Radio,
upload,
Button,
notification,
popconfirm,
Modal
Modal,
modal,
Spin
} from "ant-design-vue";
export default () => {
let els = [
Button,
Input,
notification,
Row,
Col,
menu,
dropdown,
Table,
message,
pagination,
FormModel,
Row,
Col,
Select,
DatePicker,
Table,
Input,
InputNumber,
message,
pagination,
Radio,
upload,
Button,
notification,
popconfirm,
Modal
Modal,
modal,
Spin
];
// 注册
els.forEach((item) => {
......
<template>
<!--分页-->
<div class="flex my-pagination" v-if="pagination.total > pagination.pageSize">
<a-pagination
v-model="pagination.pageNum"
:total="pagination.total"
:page-size="pagination.pageSize"
:item-render="itemRender"
@change="pageChange"
/>
<a-input
v-model.trim="jumpPage"
class="jump-page"
type="number"
:min="0"
@blur="inputPageChange"
/>
</div>
</template>
<script>
export default {
props: {
//分页器
pagination: {
default: {},
},
},
data() {
return {
//跳转到第几页
jumpPage: "",
};
},
methods: {
//自定义分页
itemRender(current, type, originalElement) {
if (type === "prev") {
return <li class="page pre">上一页</li>;
} else if (type === "next") {
return <li class="page next">下一页</li>;
} else if (type === "page") {
//当前页面
if (current == this.pagination.pageNum) {
return (
<div class="cur-page page">
<span class="cur">{current}</span>/
<span class="total">
{Math.ceil(this.pagination.total / this.pagination.pageSize)}
</span>
</div>
);
} else {
return null;
}
} else if (type == "jump-prev") {
return null;
} else if (type == "jump-next") {
return null;
}
return originalElement;
},
//跳转页面
inputPageChange() {
this.jumpPage = parseInt(this.jumpPage);
let pages = Math.ceil(this.pagination.total / this.pagination.pageSize);
this.jumpPage = this.jumpPage < 0 ? 0 : this.jumpPage;
this.jumpPage = this.jumpPage > pages ? pages : this.jumpPage;
this.pagination.pageNum = this.jumpPage;
this.$emit("pageChange");
},
//改变分页
pageChange(pager) {
this.pagination.pageNum = pager;
this.$emit("pageChange");
},
},
};
</script>
<style lang="less" scoped>
.my-pagination {
justify-content: flex-end;
margin-top: 33px;
.page {
width: 80px;
height: 36px;
line-height: 36px;
background: #f8fafb;
font-weight: 400;
color: #252631;
&.cur-page {
background: transparent;
}
span {
font-size: 16px;
font-weight: 400;
&.cur {
color: #4d7cfe;
}
}
}
.jump-page {
width: 80px;
margin-left: 30px;
height: 36px;
text-align: center;
}
}
::v-deep .ant-pagination-jump-prev,
::v-deep .ant-pagination-jump-next {
display: none !important;
}
</style>
<template>
<div
class="icon-class"
:style="`font-size:${size}px`"
@click.stop="clickEvent"
>
<div class="icon-class" :style="`font-size:${size}px`" @click="clickEvent">
<svg class="icon" aria-hidden="true">
<use :xlink:href="iconName" />
</svg>
......
<template>
<div class="flex loading-container">
<a-spin />
<span class="txt">正在查询</span>
</div>
</template>
<script>
export default{
name: 'Loading',
data(){
return {
isShow: false
}
}
}
</script>
<style lang="less" scoped>
.loading-container{
width: 159px;
height: 44px;
background: #F8FAFF;
box-shadow: 0px 2px 4px 0px rgba(208,220,254,1);
border-radius: 22px;
justify-content: center;
position: absolute;
z-index: 10;
top: 22px;
left: 50%;
transform: translateX(-50%);
.txt{
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #252631;
line-height: 22px;
margin-left: 12px;
}
.ant-spin{
margin-top: 4px;
}
}
</style>
import bus from "../utils/bus";
import {} from '@/utils/utilsdictOptions.js'
// 全局混入将会影响每个单文件组件,请慎重思考是否要混入
export default {
data() {
......@@ -6,4 +8,7 @@ export default {
bus,
};
},
filters: {
}
};
import Layout from '@/layout'
// 信息管理路由表,分包名称:info
export default {
path: "/info",
name: "Info",
component: () => {
return import(/* webpackChunkName: "info" */ "@/views/info");
},
component: Layout,
children: [
{
path: "",
name: "InfoMedical",
component: () => import("@/views/info/index")
},
{
path: "company",
name: "InfoCompany",
component: () => import("@/views/info/company")
}
]
};
......@@ -74,7 +74,7 @@ export default [
title: "医疗机构信息",
},
{
path: "/info",
path: "/info/company",
title: "保险公司信息",
},
],
......
// 福利管理路由表,分包名称:welfare
export default {
path: "/welfare",
name: "Welfare",
name: "welfare",
component: () => {
return import(/* webpackChunkName: "Welfare" */ "@/views/welfare");
},
......
//性别
const sexOptions = [{
name: '',
value: 'M'
}, {
name: '',
value: 'F'
}];
module.exports = {
sexOptions,
}
\ No newline at end of file
......@@ -39,7 +39,11 @@
export default {
data() {
return {
form: {},
form: {
userName: process.env.VUE_APP_USER || "",
passWord: process.env.VUE_APP_PWD || "",
verificationCode: ""
},
formRules: {
userName: [{ required: true, message: "请输入用户名" }],
passWord: [{ required: true, message: "请输入密码" }],
......
This diff is collapsed.
......@@ -3,12 +3,12 @@
<!-- form -->
<a-form-model ref="form" layout="vertical" :model="form">
<a-row :gutter="30">
<a-col :xl="5" :lg="6" :sm="12">
<a-col :xl="6" :lg="6" :sm="12">
<a-form-model-item label="病历号码">
<a-input v-model="form.mrnNo" placeholder="请输入病历号"></a-input>
</a-form-model-item>
</a-col>
<a-col :xl="5" :lg="6" :sm="12">
<a-col :xl="6" :lg="6" :sm="12">
<a-form-model-item label="客户姓名">
<a-input
v-model="form.patientName"
......@@ -24,16 +24,20 @@
></a-date-picker>
</a-form-model-item>
</a-col>
<a-col :xl="4" :lg="6" :sm="12">
<a-col :xl="5" :lg="6" :sm="12">
<a-form-model-item label="保险公司">
<a-select v-model="form.payorId" placeholder="请选择保险公司">
<a-select-option v-for="item in companyCode" :key="item.corpCode">
<a-select-option
v-for="item in companyCode"
:key="item.corpCode"
:value="item.id"
>
{{ item.longName }}
</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :xl="5" :lg="6" :sm="12">
<a-col :xl="6" :lg="6" :sm="12">
<a-form-model-item label="保单号码">
<a-input
v-model="form.policyNo"
......@@ -41,13 +45,13 @@
></a-input>
</a-form-model-item>
</a-col>
<a-col :xl="24" :lg="18" :sm="12" class="none-label">
<a-col :xl="18" :lg="18" :sm="12" class="none-label">
<a-form-model-item label="button">
<a-button type="primary"
><Icon name="ssiadd" size="14" />新建客户信息</a-button
<a-button type="primary" @click="addNewCustom"
><Icon name="ssiadd" :size="14" />新建客户信息</a-button
>
<a-button class="mar-left10" type="primary" @click="handlerSearch">
<Icon name="ssisearch_active" size="14" />查询
<Icon name="ssisearch_active" :size="14" />查询
</a-button>
</a-form-model-item>
</a-col>
......@@ -60,11 +64,19 @@
:data-source="dataList"
row-key="mrnNo"
:scroll="{ x: true }"
:pagination="pagination"
@change="onChange"
:pagination="false"
:customRow="handlerRowClick"
>
<template slot="operation" slot-scope="">
<a-button type="link">修改</a-button>
<template slot="operation" slot-scope="record">
<a-button
v-if="record.isEdit"
type="link"
@click.stop="saveChange(record)"
>保存</a-button
>
<a-button v-else type="link" @click.stop="changeDataStatus(record)"
>修改</a-button
>
<a-button type="link" class="success">新增</a-button>
<a-popconfirm
title="你确定要关闭吗?"
......@@ -76,36 +88,44 @@
</a-popconfirm>
</template>
</a-table>
<!--分页-->
<BurtPagination :pagination="pager" @pageChange="_getCustomerList" />
</div>
</template>
<script>
import BurtPagination from "@/components/CUSTOMER/pagation";
export default {
data() {
const columns = [
{ title: "病历号", dataIndex: "mrnNo", ellipsis: true, width: 180 },
{
title: "客户姓名",
dataIndex: "patientName",
ellipsis: true,
width: 120,
},
{ title: "出生日期", dataIndex: "birthday", ellipsis: true, width: 180 },
{ title: "性别", dataIndex: "sex", ellipsis: true, width: 80 },
{ title: "保险公司", dataIndex: "payorName", ellipsis: true, width: 180 },
{ title: "保单号码", dataIndex: "policyNo", ellipsis: true, width: 190 },
{
title: "保险有效日期",
dataIndex: "startDate",
ellipsis: true,
title: "病历号",
dataIndex: "mrnNo",
width: 180,
customRender: (val, row) => {
if (row.isEdit) {
return <a-input v-model={row.mrnNo}></a-input>;
}
return val;
},
},
{
title: "保险终止日期",
dataIndex: "endDate",
ellipsis: true,
width: 180,
title: "客户姓名",
dataIndex: "patientName",
width: 120,
customRender: (val, row) => {
if (row.isEdit) {
return <a-input v-model={row.patientName}></a-input>;
}
return val;
},
},
{ title: "出生日期", dataIndex: "birthday", width: 180 },
{ title: "性别", dataIndex: "sex", width: 80 },
{ title: "保险公司", dataIndex: "payorName", width: 180 },
{ title: "保单号码", dataIndex: "policyNo", width: 190 },
{ title: "保险有效日期", dataIndex: "startDate", width: 180 },
{ title: "保险终止日期", dataIndex: "endDate", width: 180 },
{
title: "操作",
key: "operation",
......@@ -123,83 +143,46 @@ export default {
pager: {
pageNum: 1,
pageSize: 10,
},
total: 0,
total: 0
}
};
},
components: {
BurtPagination
},
created() {
this._getCustomerList();
this._getCorporateCode();
this._getPayorCode();
},
computed: {
pagination() {
// if (!this.pager || !this.dataList.length) {
// return false;
// }
const { pageNum, pageSize } = this.pager;
const pages = Math.ceil(this.total / pageSize);
methods: {
handlerRowClick(record) {
const { id, patientPolicyId } = record;
return {
current: pageNum,
pageSize,
size: "large",
position: "bottom",
align: "right",
total: this.total,
hideOnSinglePage: false,
itemRender: (current, type, originalElement) => {
if (type === "prev") {
originalElement.children = undefined;
originalElement.text = "上一页";
}
if (type === "page") {
if (current !== pageNum) {
return undefined;
style: {
color: record.isEdit ? "#2B63FF" : "#252631",
},
on: {
click: () => {
if (record.isEdit) {
return true;
}
// originalElement.children = undefined;
// originalElement.text = `${current} / ${pages}`;
return (
<p>
<span class="current-page">{current}</span> / {pages}
</p>
);
}
if (type === "next") {
originalElement.children = undefined;
originalElement.text = "下一页";
return (
<div>
{originalElement}
<a-input-number
onblur={this.onShowSizeChange}
class="size-change"
></a-input-number>
</div>
);
}
return originalElement;
this.$router.push({
name: "welfare",
query: { id, patientPolicyId },
});
},
},
onChange: (pager) => this.onChange(pager),
};
},
},
methods: {
onChange(pager) {
const { current } = pager;
// console.log(pager);
this.pager.pageNum = current;
this._getCustomerList();
// 修改按钮
changeDataStatus(record) {
this.$set(record, "isEdit", true);
},
onShowSizeChange(e) {
e && e.stopPropagation();
const val = e.target.value * 1;
if (!val || val < 0) {
return false;
}
this.pager.pageSize = val;
this._getCustomerList();
saveChange(record) {
record.isEdit = undefined;
record.isNew = undefined;
},
handlerSearch() {
console.log(this.$refs.form.validate);
this.$refs.form.validate((valid) => {
if (!valid) {
return false;
......@@ -212,12 +195,12 @@ export default {
deleteData() {
this.$message.success("删除成功");
},
_getCorporateCode() {
const params = {
longName: "",
payorId: 0,
};
this.$apis.GETCORPORATECODE(params).then((res) => {
// 新建客户信息
addNewCustom() {
this.$router.push("/customer/edit");
},
_getPayorCode() {
this.$apis.GETPAYORCODE({}).then((res) => {
this.companyCode = res.content || [];
});
},
......@@ -228,7 +211,7 @@ export default {
};
this.$apis.GETCUSTOMERLIST(data).then((res) => {
this.dataList = (res.content && res.content.list) || [];
this.total = (res.content && res.content.total) || 0;
this.pager.total = (res.content && res.content.total) || 0;
});
},
},
......@@ -241,22 +224,7 @@ export default {
opacity: 0;
}
}
.current-page {
color: #4d7cfe;
}
.size-change {
.w(107);
.mg-l(40);
background-color: #f8fafb;
border: none;
}
.ant-btn .icon-class {
.mg-r(10);
}
.success.ant-btn-link {
color: #4cd964;
}
.danger.ant-btn-link {
color: #ff3b30;
}
</style>
<template>
<div class="white_bg burt-container">
<div class="title-div">保险公司信息</div>
<a-table
:columns="columns"
:data-source="dataList"
:scroll="{ x: 'max-content' }"
:pagination="false"
>
<div
v-for="col in columns"
:slot="col.dataIndex"
slot-scope="text, record, index"
:key="col.dataIndex"
@click.stop="seeDetail(record)"
>
<template v-if="col.dataIndex == 'operation'">
<a-button type="link" @click.stop="editEvt(record, index)">{{
record.edit ? "保存" : "修改"
}}</a-button>
<a-button type="link" class="success">新增</a-button>
<a-button type="link" class="danger" @click.stop="delRecord(index)"
>删除</a-button
>
</template>
<template v-else>
<a-input
v-if="record.edit"
placeholder="请输入"
v-model="record[col.dataIndex]"
/>
<span v-else>{{ text }}</span>
</template>
</div>
</a-table>
<!--分页-->
<BurtPagination :pagination="pagination" @pageChange="getData" />
<!--折扣信息-->
<Discount />
</div>
</template>
<script>
import BurtPagination from "@/components/CUSTOMER/pagation";
import Discount from "./components/companyDiscount";
const columns = [
{
title: "序号",
dataIndex: "id",
width: 120,
},
{
title: "保险公司名称",
dataIndex: "longName",
ellipsis: true,
scopedSlots: { customRender: "longName" },
width: 130,
},
{
title: "医生英文名",
dataIndex: "englishName",
ellipsis: true,
scopedSlots: { customRender: "englishName" },
width: 105,
},
{
title: "联系电话",
dataIndex: "contactPhone",
scopedSlots: { customRender: "contactPhone" },
width: 125,
},
{
title: "联系地址",
dataIndex: "address",
ellipsis: true,
scopedSlots: { customRender: "address" },
width: 180,
},
{
title: "Protal链接",
dataIndex: "portalUrl",
ellipsis: true,
scopedSlots: { customRender: "portalUrl" },
width: 155,
},
{
title: "联系人",
dataIndex: "contactPerson",
ellipsis: true,
scopedSlots: { customRender: "contactPerson" },
width: 100,
},
{
title: "操作",
dataIndex: "operation",
scopedSlots: { customRender: "operation" },
fixed: "right",
width: "170px",
},
];
export default {
data() {
return {
columns,
pagination: {
pageNum: 1,
pageSize: 10,
total: 0,
},
dataList: [],
};
},
components: {
BurtPagination,
Discount
},
created() {
this.getData();
},
methods: {
//获取列表
getData() {
this.$apis
.PAYORLIST({
pageNum: this.pagination.pageNum,
pageSize: this.pagination.pageSize,
})
.then((res) => {
if (res.returnCode == "0000") {
let content = res.content || {};
this.pagination.total = content.total || 0;
this.dataList = (content.list || []).map((item) => {
return {
...item,
edit: false,
};
});
} else {
this.$message.error(res.returnMsg);
}
});
},
//编辑
editEvt(record, index) {
this.dataList.forEach((item, i) => {
if (index != i) {
item.edit = false;
}
});
record.edit = !record.edit;
//保存
if (!record.edit) {
this.$apis.PAYORUPDATE(record).then((res) => {
if (res.returnCode == "0000") {
this.$message.success("编辑成功");
} else {
this.$message.error(res.returnMsg);
}
});
}
},
//删除
delRecord(index) {
this.$modal.confirm({
title: "删除",
content: "确定删除该条记录?",
okText: "确定",
cancelText: "取消",
onOk: () => {
this.$apis
.PAYORDELETE({
id: this.dataList[index].id,
})
.then((res) => {
if (res.returnCode == "0000") {
this.$message.success("删除成功");
this.dataList.splice(index, 1);
} else {
this.$message.error(res.returnMsg);
}
});
},
});
},
//查看详情
seeDetail(record) {
//没有编辑
if (!record.edit) {
this.$apis
.PAYORDETAIL({
id: record.id,
})
.then((res) => {
if (res.returnCode == "0000") {
console.log(res.content || {}, 1111);
} else {
this.$message.error(res.returnMsg);
}
});
}
},
},
};
</script>
<style lang="less" scoped>
.title-div {
line-height: 52px;
color: #252631;
font-weight: bold;
}
</style>
<template>
<!--折扣信息-->
<div class="discount-container">
<div class="title-div">下面的是写死为1001这条保险公司的-----折扣信息</div>
<a-table
:columns="columns"
:data-source="tableList"
:scroll="{ x: 'max-content' }"
:pagination="false"
>
<div
v-for="col in columns"
:slot="col.dataIndex"
slot-scope="text, record, index"
:key="col.dataIndex"
>
<template v-if="col.dataIndex == 'operation'">
<a-button type="link" @click.stop="editEvt(record, index)">{{
record.edit ? "保存" : "修改"
}}</a-button>
<a-button type="link" class="success">新增</a-button>
<a-button type="link" class="danger" @click.stop="delRecord(index)"
>删除</a-button
>
</template>
<template
v-else-if="col.dataIndex == 'benefits'"
slot-scope="text, record"
>
<a-select
v-if="record.edit"
v-model="record.benefits2"
placeholder="请选择"
mode="multiple"
>
<a-select-option
:value="item.benefitCode"
v-for="item in benefitType"
:key="item.benefitCode"
>{{ item.description }}</a-select-option
>
</a-select>
<span v-else>{{ filterType(record.benefits2) }}</span>
</template>
<template v-else>
<a-input
v-if="record.edit"
placeholder="请输入"
v-model="record[col.dataIndex]"
/>
<span v-else>{{ text }}</span>
</template>
</div>
</a-table>
<!--分页-->
<BurtPagination :pagination="pagination" @pageChange="getTableList" />
</div>
</template>
<script>
import BurtPagination from "@/components/CUSTOMER/pagation";
const columns = [
{
title: "序号",
dataIndex: "id",
width: 205,
},
{
title: "项目",
dataIndex: "benefits",
ellipsis: true,
scopedSlots: { customRender: "benefits" },
width: 310,
},
{
title: "折扣比例",
dataIndex: "ratio",
ellipsis: true,
scopedSlots: { customRender: "ratio" },
width: 190,
},
{
title: "备注",
dataIndex: "remark",
scopedSlots: { customRender: "remark" },
width: 180,
},
{
title: "操作",
dataIndex: "operation",
scopedSlots: { customRender: "operation" },
fixed: "right",
width: "170px",
},
];
export default {
data() {
return {
columns,
pagination: {
pageNum: 1,
pageSize: 5,
total: 0,
},
dataList: [], //所有的折扣信息
tableList: [], //显示
benefitType: [], //福利类型
benefitTypeObj: {}, //福利类型对象
};
},
components: {
BurtPagination,
},
async created() {
await this.getBenefitType();
this.getData();
},
methods: {
//过滤器
filterType(val) {
let txt = (val || []).map((item) => {
return this.benefitTypeObj[item] || "";
});
return txt.join("");
},
//获取福利类型列表
getBenefitType() {
return new Promise((resolve, reject) => {
this.$apis.GETBENEGITTYPE().then((res) => {
if (res.returnCode == "0000") {
this.benefitType = res.content || [];
(res.content || []).forEach((item) => {
this.benefitTypeObj[item.benefitCode] = item.description;
});
resolve();
} else {
this.$message.error(res.returnMsg);
reject();
}
});
});
},
//获取列表
getData() {
this.$apis
.PAYORDETAIL({
id: 1001,
})
.then((res) => {
if (res.returnCode == "0000") {
let list = res.content.discountList || [];
this.pagination.total = list.length;
this.dataList = list;
this.getTableList();
} else {
this.$message.error(res.returnMsg);
}
});
},
//分页
getTableList() {
let list = this.dataList.slice(
(this.pagination.pageNum - 1) * this.pagination.pageSize,
this.pagination.pageNum * this.pagination.pageSize
);
this.tableList = list.map((item) => {
return {
...item,
edit: false,
benefits2: item.benefits ? item.benefits.split(",") : [],
};
});
},
//编辑
editEvt(record, index) {
this.tableList.forEach((item, i) => {
if (index != i) {
item.edit = false;
}
});
record.edit = !record.edit;
//保存
if (!record.edit) {
this.$apis
.PAYORADDDISCOUNT({
payorId: 1001,
id: record.id,
ratio: record.ratio,
remark: record.remark,
discountBenefitList: (record.benefits2 || []).map((item) => {
return {
benefitCode: item,
discountId: record.id,
};
}),
})
.then((res) => {
if (res.returnCode == "0000") {
this.$message.success("编辑成功");
} else {
this.$message.error(res.returnMsg);
}
});
}
},
//删除
delRecord(index) {
this.$modal.confirm({
title: "删除",
content: "确定删除该条记录?",
okText: "确定",
cancelText: "取消",
onOk: () => {
this.$apis
.PAYORDISCOUNTDELETE({
id: this.tableList[index].id,
})
.then((res) => {
if (res.returnCode == "0000") {
this.$message.success("删除成功");
this.tableList.splice(index, 1);
} else {
this.$message.error(res.returnMsg);
}
});
},
});
},
},
};
</script>
<style lang="less" scoped>
.discount-container {
margin-top: 16px;
}
.title-div {
line-height: 52px;
color: #252631;
font-weight: bold;
}
</style>
<template>
<div class="info-div">
<a-form-model ref="form" layout="vertical">
<a-row :gutter="30">
<a-col :lg="6" :sm="12">
<a-form-model-item label="保险公司名称">
<a-input v-model="detailObj.longName" placeholder="保险公司名称" />
</a-form-model-item>
</a-col>
<a-col :lg="6" :sm="12">
<a-form-model-item label="保险公司英文名称">
<a-input
v-model="detailObj.englishName"
placeholder="保险公司英文名称"
/>
</a-form-model-item>
</a-col>
<a-col :lg="6" :sm="12">
<a-form-model-item label="国家">
<a-input v-model="detailObj.englishName" placeholder="国家" />
</a-form-model-item>
</a-col>
</a-row>
<a-row :gutter="30">
<a-col :lg="3" :sm="12">
<a-form-model-item label="有效">
<a-select v-model="detailObj.payorId" placeholder="请选择">
<a-select-option value="1">待核销</a-select-option>
<a-select-option value="2">已核销</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :lg="9" :sm="12">
<a-row :gutter="30">
<a-col :lg="12" :sm="12">
<a-form-model-item label="合同起始日期">
<a-date-picker
v-model="detailObj.businessHours"
format="YYYY年MM月DD日"
placeholder="选择日期"
/>
</a-form-model-item>
</a-col>
<a-col :lg="12" :sm="12">
<a-form-model-item label="合同终止日期">
<a-date-picker
v-model="detailObj.businessHours"
format="YYYY年MM月DD日"
placeholder="选择日期"
/>
</a-form-model-item>
</a-col>
</a-row>
</a-col>
<a-col :lg="10" :sm="12">
<a-form-model-item label="保险公司地址">
<a-input v-model="detailObj.telNo1" placeholder="保险公司地址" />
</a-form-model-item>
</a-col>
<a-col :lg="6" :sm="12">
<a-form-model-item label="网络联系人">
<a-input v-model="detailObj.address" placeholder="请输入联系人" />
</a-form-model-item>
</a-col>
<a-col :lg="8" :sm="12">
<a-form-model-item label="理赔件邮寄地址">
<a-input
v-model="detailObj.englishAddr"
placeholder="理赔件邮寄地址"
/>
</a-form-model-item>
</a-col>
<a-col :lg="4" :sm="12">
<a-form-model-item label="保险公司联系电话">
<a-input
v-model="detailObj.englishAddr"
placeholder="保险公司联系电话"
/>
</a-form-model-item>
</a-col>
<a-col :lg="6" :sm="12">
<a-form-model-item label="客服电话">
<a-input v-model="detailObj.englishAddr" placeholder="客服电话" />
</a-form-model-item>
</a-col>
<a-col :lg="6" :sm="12">
<a-form-model-item label="预授权电话">
<a-input v-model="detailObj.englishAddr" placeholder="预授权电话" />
</a-form-model-item>
</a-col>
<a-col :lg="6" :sm="12">
<a-form-model-item label="保险公司邮件地址">
<a-input
v-model="detailObj.englishAddr"
placeholder="保险公司邮件地址"
/>
</a-form-model-item>
</a-col>
<a-col :lg="6" :sm="12">
<a-form-model-item label="客服邮件地址">
<a-input
v-model="detailObj.englishAddr"
placeholder="客服邮件地址"
/>
</a-form-model-item>
</a-col>
<a-col :lg="6" :sm="12">
<a-form-model-item label="预授权邮件地址">
<a-input
v-model="detailObj.englishAddr"
placeholder="预授权邮件地址"
/>
</a-form-model-item>
</a-col>
<a-col :lg="6" :sm="12">
<a-form-model-item label="理赔邮件地址">
<a-input
v-model="detailObj.englishAddr"
placeholder="理赔邮件地址"
/>
</a-form-model-item>
</a-col>
<a-col :lg="8" :sm="12">
<a-form-model-item label="保险公司Protal链接">
<a-input
v-model="detailObj.englishAddr"
placeholder="保险公司Protal链接"
/>
</a-form-model-item>
</a-col>
<a-col :lg="4" :sm="12">
<a-form-model-item label="登录名">
<a-input v-model="detailObj.englishAddr" placeholder="登录名" />
</a-form-model-item>
</a-col>
<a-col :lg="6" :sm="12">
<a-form-model-item label="密码">
<a-input v-model="detailObj.englishAddr" placeholder="密码" />
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</div>
</template>
<script>
export default {
data() {},
methods: {
//获取详细信息
getDetail() {
return new Promise((resolve, reject) => {
this.$apis.DOCTORUPDATE().then((res) => {
if (res.returnCode == "0000") {
this.detailObj = res.content || {};
resolve();
} else {
this.$message.error(res.returnMsg);
reject();
}
});
});
},
},
};
</script>
This diff is collapsed.
......@@ -20,7 +20,7 @@ export default {
components: {
Header,
Menu,
SubMenu,
SubMenu
},
data() {
return {};
......@@ -42,6 +42,7 @@ export default {
.pt(68);
// min-height: calc(100vh - 50px);
.content {
position: relative;
flex: 1;
.mg-l(242);
.pa(14, 40, 0, 40);
......
......@@ -56,12 +56,12 @@
</a-row>
</a-form-model>
<!-- table -->
<a-table
:columns="columns"
:data-source="dataList"
:scroll="{ x: true }"
:pagination="pagination"
@change="pageChange"
<a-table
:columns="columns"
:data-source="dataList"
:scroll="{ x: true }"
:pagination="pagination"
@change="pageChange"
>
<template slot="operation" slot-scope="record,index">
<a-button type="link">修改</a-button>
......@@ -74,7 +74,7 @@
<script>
const columns =[
{ title: "序号", dataIndex: "mrnNo", ellipsis: true, width: 180 },
{ title: "序号", dataIndex: "mrnNo", ellipsis: true, width: 180 },
{ title: "EOB姓名", dataIndex: "patientName", ellipsis: true, width: 180 },
{ title: "核销时间", dataIndex: "patientName2", ellipsis: true, width: 180 },
{ title: "保险公司", dataIndex: "patientName3", ellipsis: true, width: 180 },
......
<template>
<div class="benefits">
<div>
<div class="text-r">
<a-button type="danger" class="save-btn">
<Icon name="ssiadd" :size="14" />新增
</a-button>
<a-table
:pagination="false"
:columns="considtionColumns"
:data-source="conditionData"
>
<template slot="operation" slot-scope="text, record">
<a-button v-if="record.isEdit" type="link"> 保存 </a-button>
<a-button v-else type="link"> 修改 </a-button>
<a-button type="link" class="success">新增</a-button>
<a-popconfirm
title="你确定要关闭吗?"
ok-text="确定"
cancel-text="取消"
>
<a-button type="link" class="danger">删除</a-button>
</a-popconfirm>
</template>
</a-table>
</div>
</div>
<div>
<div class="text-r">
<a-button type="danger" class="save-btn">
<Icon name="ssiadd" :size="14" />新增
</a-button>
<a-table
:pagination="false"
:columns="benefitColumns"
:data-source="benefitData"
>
<template slot="operation" slot-scope="text, record">
<a-button v-if="record.isEdit" type="link"> 保存 </a-button>
<a-button v-else type="link"> 修改 </a-button>
<a-button type="link" class="success">新增</a-button>
<a-popconfirm
title="你确定要关闭吗?"
ok-text="确定"
cancel-text="取消"
>
<a-button type="link" class="danger">删除</a-button>
</a-popconfirm>
</template>
</a-table>
</div>
</div>
</div>
</template>
<script>
export default {
props: {
coverageForm: {
type: Object,
required: true,
},
},
data() {
const considtionColumns = [
{ title: "限额", dataIndex: "index" },
{
title: "操作",
key: "operation",
width: "175px",
fixed: "right",
scopedSlots: { customRender: "operation" },
},
];
const benefitColumns = [
{ title: "责任列表", dataIndex: "index" },
{
title: "操作",
key: "operation",
width: "175px",
fixed: "right",
scopedSlots: { customRender: "operation" },
},
];
return {
considtionColumns,
benefitColumns,
conditionData: [{ index: "900" }],
benefitData: [{ index: "测试" }],
};
},
methods: {},
};
</script>
<style lang="less" scoped>
.benefits {
.pa(0, 20, 10, 20);
background-color: #fff;
.save-btn {
.mg-t(20);
.mg-b(10);
.icon-class {
.mg-r(10);
}
}
}
</style>
<template>
<div>
<!-- 分类 -->
<div class="classify clearfix">
<a-button :type="!type ? 'primary' : ''">全部</a-button>
<a-button
:type="item.code === type ? 'primary' : ''"
v-for="item in welfareType"
:key="item.code"
>
{{ item.name }}
</a-button>
<div class="save-btn">
<a-button type="danger" @click="addNew">
<Icon name="ssiadd" :size="14" />新增
</a-button>
<a-button type="primary">
<Icon name="ssidownload" :size="14" />保存
</a-button>
</div>
</div>
<!-- table -->
<a-table
:columns="columns"
:data-source="dataList"
row-key="coverageCode"
:scroll="{ x: true }"
:pagination="pagination"
:expanded-row-keys.sync="expandedRowKeys"
@change="onWelfareChange"
@expand="handleExpand"
>
<template slot="operation" slot-scope="text, record, index">
<a-button
v-if="record.isEdit"
type="link"
@click.stop="saveEditData(record)"
>
保存
</a-button>
<a-button v-else type="link" @click.stop="editData(record, index)">
修改
</a-button>
<a-button type="link" class="success">新增</a-button>
<a-popconfirm
title="你确定要关闭吗?"
ok-text="确定"
cancel-text="取消"
@confirm="deleteData(record, index)"
>
<a-button type="link" class="danger">删除</a-button>
</a-popconfirm>
</template>
<template slot="expandedRowRender" slot-scope="record">
<benefits :coverageForm="record" />
</template>
</a-table>
</div>
</template>
<script>
import benefits from "../benefits";
export default {
props: {
coverageForm: {
type: Object,
required: true,
},
},
components: {
benefits,
},
data() {
const columns = [
{
title: "责任项目",
dataIndex: "coverageCode",
width: 180,
customRender: (val, row) => {
if (row.isEdit) {
return (
<a-select
v-model={row.coverageCode}
placeholder="请选择责任项目"
show-search
allow-clear
v-on:filterOption={this.filterCode}
>
{this.coverageCode.map((item) => {
return (
<a-select-option value={item.coverageCode}>
{item.coverageDesc}
</a-select-option>
);
})}
</a-select>
);
}
return val;
},
},
{ title: "责任项目列表", dataIndex: "patientName", width: 120 },
{
title: "是否直付",
dataIndex: "isdirect",
width: 180,
customRender: (val, row) => {
if (row.isEdit) {
return (
<a-radio-group
v-model={row.isdirect}
default-value={row.isdirect}
button-style="solid"
>
<a-radio-button value="Y"> </a-radio-button>
<a-radio-button class="mar-left10" value="N">
</a-radio-button>
</a-radio-group>
);
}
return val;
},
},
{ title: "单位", dataIndex: "sex", width: 80 },
{ title: "年限额", dataIndex: "payorName", width: 180 },
{ title: "剩余额度(¥)", dataIndex: "policyNo", width: 190 },
{ title: "次限额(¥)", dataIndex: "startDate", width: 180 },
// { title: "次免赔额(¥)", dataIndex: "endDate", width: 180 },
// { title: "自付比例", dataIndex: "endDate", width: 180 },
// { title: "备注", dataIndex: "endDate", width: 180 },
{
title: "操作",
key: "operation",
width: "175px",
fixed: "right",
scopedSlots: { customRender: "operation" },
},
];
return {
columns,
dataList: [{ coverageCode: 22 }],
expandedRowKeys: [],
type: "",
welfareType: [],
pager: {
pageNum: 1,
pageSize: 10,
},
total: 0,
coverageCode: [],
};
},
watch: {
coverageForm: {
deep: true,
handler: function () {
this.type = "";
this._getCoverageList();
},
},
},
mounted() {
this._getSpecialtyCode();
// this._getCoverageList();
},
computed: {
pagination() {
return this.initPageConfig(
{ ...this.pager, total: this.total },
this.onWelfareSizeChange
);
},
},
methods: {
addNew() {
const item = { isEdit: true, isNew: true };
this.pager.pageSize++;
this._getCoverageCode(); // 获取责任项目码表
this.dataList.unshift(item);
},
editData(record) {
this._getCoverageCode(); // 获取责任项目码表
const { coverageCode } = record;
const index = this.expandedRowKeys.indexOf(coverageCode);
if (index > -1) {
this.expandedRowKeys.splice(index, 1);
}
this.$set(record, "isEdit", true);
},
saveEditData(record) {
record.isEdit = undefined;
},
deleteData(record, index) {
if (record.isNew) {
this.dataList.splice(index, 1);
return true;
}
this.dataList.splice(index, 1);
},
initPageConfig(pager, sizeChange) {
const { pageNum, pageSize, total } = pager;
const pages = Math.ceil(total / pageSize);
return {
current: pageNum,
pageSize,
size: "large",
position: "bottom",
align: "right",
total: this.total,
hideOnSinglePage: false,
itemRender: (current, type, originalElement) => {
if (type === "prev") {
originalElement.children = undefined;
originalElement.text = "上一页";
}
if (type === "page") {
if (current !== pageNum) {
return undefined;
}
return (
<p>
<span class="current-page">{current}</span> / {pages}
</p>
);
}
if (type === "next") {
originalElement.children = undefined;
originalElement.text = "下一页";
return (
<div>
{originalElement}
<a-input-number
onblur={sizeChange}
class="size-change"
></a-input-number>
</div>
);
}
return originalElement;
},
};
},
onWelfareChange(pager) {
const { current } = pager;
// console.log(pager);
this.pager.pageNum = current;
// this._getCustomerList();
},
onWelfareSizeChange(e) {
e && e.stopPropagation();
const val = e.target.value * 1;
if (!val || val < 0) {
return false;
}
this.pager.pageSize = val;
},
// 选择框筛选
filterCode(input, option) {
return (
option.componentOptions.children[0].text
.toLowerCase()
.indexOf(input.toLowerCase()) >= 0
);
},
handleExpand(expended, record) {
console.log(expended);
if (record.isEdit && expended) {
console.log(this.expandedRowKeys);
return false;
}
},
_getSpecialtyCode() {
this.$apis.GETSPECIALTYLIST().then((res) => {
this.welfareType = res.content || [];
});
},
_getCoverageList() {
const { corpCode, payorCode, planCode } = this.coverageForm;
this.$apis
.GETCOVERAGELIST({
corpCode,
payorCode,
planCode,
specialtyCode: this.type,
})
.then((res) => {
this.dataList = res.content || [];
});
},
_getCoverageCode() {
if (this.coverageCode && this.coverageCode.length) {
return true;
}
this.$apis.GETCOVERAGECODE().then((res) => {
this.coverageCode = res.content || [];
});
},
},
};
</script>
<style lang="less" scoped>
.none-label {
text-align: right;
}
.classify {
.pa(10, 20, 10, 20);
.mg-t(30);
.mg-b(10);
background-color: #f8fafb;
.ant-btn:not(:first-child) {
.mg-l(30);
}
.save-btn {
float: right;
}
}
.icon-class {
.mg-r(10);
}
</style>
This diff is collapsed.
......@@ -3,6 +3,7 @@ const LodashModuleReplacementPlugin = require("lodash-webpack-plugin");
const CompressionPlugin = require("compression-webpack-plugin"); // 代码压缩
module.exports = {
publicPath: "/bims",
productionSourceMap: false,
pluginOptions: {
"style-resources-loader": {
......@@ -48,10 +49,10 @@ module.exports = {
port: 8888,
hot: true,
proxy: {
"^/dev": {
"^/api_bims": {
target: "http://47.99.75.3:8070",
pathRewrite: {
"^/dev": "/",
"^/api_bims": "/",
},
changeOrigin: true,
secure: false,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment