main
张同海 1 year ago
parent 44290b8767
commit 24aefaeee1

@ -2,7 +2,7 @@
<div class="ApplyForJView">
<p>创建/加入企业</p>
<p>
如果您所在企业已经在管家创建了企业您可以申请加入企业如果还没那就创建新企业
如果您所在企业已经在济舱海创建了企业您可以申请加入企业如果还没那就创建新企业
</p>
<div class="main">
<div>

@ -21,8 +21,8 @@
<el-row>
<el-col :span="8" class="mainBoxTunit">
<p>
<span>创建人</span>
<span>{{ UserTenantList.CreatedUserName }}</span>
<span>管理员</span>
<span>{{ UserTenantList.AdminName }}</span>
</p>
</el-col>
<el-col :span="8" class="mainBoxTunit">
@ -57,7 +57,9 @@
</el-col>
</el-row>
</div>
<div></div>
<div class="ButtonBox">
<el-button @click="FnQuit">退</el-button>
</div>
</div>
</div>
</template>
@ -66,6 +68,7 @@ import { useRouter } from "vue-router";
// import SearchBox from "@/components/SearchBox.vue";
// import TableBox from "@/components/TableBox.vue";
import { Plus } from "@element-plus/icons-vue";
import { ElMessage } from "element-plus";
import {
tenantUserTenantList,
applyJoinList,
@ -74,6 +77,7 @@ import {
tenantDownFile,
bookingTemplateDelete,
TenantCancelApplyJoin,
TenantDepart,
} from "@/api/Index";
import { ref, reactive } from "vue";
export default {
@ -306,6 +310,17 @@ export default {
init();
});
};
const FnQuit = () => {
TenantDepart().then((res) => {
console.log(res);
if (res.code == 200) {
ElMessage({
message: res.message,
type: "success",
});
}
});
};
return {
JoinType,
UserTenantList,
@ -328,6 +343,7 @@ export default {
handlePreview,
GoForj,
WithdrawalApplication,
FnQuit,
};
},
};
@ -383,6 +399,13 @@ export default {
}
}
}
.ButtonBox {
border-top: 1px solid #e5e7eb;
padding: 10px;
margin: 0;
display: flex;
justify-content: end;
}
}
}
</style>

@ -11,7 +11,18 @@
>
返回
</el-button>
<el-button type="primary" @click="ClickSave"> </el-button>
<el-button
type="primary"
@click="ClickSave"
v-if="
viweType == 'Copy' ||
form.bizStatus == 0 ||
form.bizStatus == 4 ||
form.bizStatus == null
"
>
保存
</el-button>
<el-button
type="primary"
plain
@ -22,13 +33,23 @@
</el-button>
<!-- <el-button type="primary" plain> 存为模板 </el-button> -->
<!-- <el-button type="primary" plain> 状态历史 </el-button> -->
<el-button type="danger" v-if="viweType == 'Edit'" @click="ClicDelete">
<el-button
type="danger"
v-if="
viweType == 'Edit' &&
(form.bizStatus == 0 || form.bizStatus == 4 || form.bizStatus == null)
"
@click="ClicDelete"
>
删除
</el-button>
<el-button
type="primary"
plain
v-if="viweType == 'Edit'"
v-if="
viweType == 'Edit' &&
(form.bizStatus == 0 || form.bizStatus == 4 || form.bizStatus == null)
"
@click="ClicSend"
>
发送订舱
@ -60,50 +81,54 @@
</el-col>
<el-col :span="8">
<el-form-item label="起运港">
<el-select
<el-autocomplete
v-model="form.portLoadingCode"
:style="{ width: '100%' }"
@change="
:fetch-suggestions="querySearchPortLoadingCode"
clearable
@select="
(e) => {
console.log(e);
store.state.Data.portloadlist.forEach((i) => {
if (e == i.code) {
if (e.code == i.code) {
form.portLoading = i.name;
}
});
}
"
>
<el-option
v-for="item in store.state.Data.portloadlist"
:key="item.code"
:label="item.name"
:value="item.code"
@input="
(e) => {
form.portLoading = '';
form.portLoadingCode = e;
}
"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="目的地">
<el-select
v-model="form.portDischargeCode"
<el-autocomplete
v-model="form.portDischarge"
:style="{ width: '100%' }"
@change="
:fetch-suggestions="querySearchPortDischargeCode"
clearable
@select="
(e) => {
console.log(e);
store.state.Data.portlist.forEach((i) => {
if (e == i.ediCode) {
form.portDischarge = i.name;
if (e.ediCode == i.ediCode) {
form.portDischargeCode = i.ediCode;
}
});
}
"
>
<el-option
v-for="item in store.state.Data.portlist"
:key="item.ediCode"
:label="item.name"
:value="item.ediCode"
@input="
(e) => {
form.portDischargeCode = '';
form.portDischarge = e;
}
"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
@ -127,7 +152,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="航次">
<el-input v-model="form.voyNoInner" />
<el-input v-model="form.voyageNo" />
</el-form-item>
</el-col>
<el-col :span="8">
@ -215,6 +240,9 @@
<el-col :span="8">
<el-form-item label-width="20">
<OpenBT :type="20" @SelectData="SelectData" />
<el-button @click="OpenMBDialog('20')" type="primary">
保存模板
</el-button>
</el-form-item>
</el-col>
<el-col :span="24">
@ -230,6 +258,9 @@
<el-col :span="8">
<el-form-item label-width="20">
<OpenBT :type="10" @SelectData="SelectData" />
<el-button type="primary" @click="OpenMBDialog('10')">
保存模板
</el-button>
</el-form-item>
</el-col>
<el-col :span="24">
@ -245,6 +276,9 @@
<el-col :span="8">
<el-form-item label-width="20">
<OpenBT :type="30" @SelectData="SelectData" />
<el-button type="primary" @click="OpenMBDialog('30')">
保存模板
</el-button>
</el-form-item>
</el-col>
<el-col :span="24">
@ -266,11 +300,7 @@
<el-input v-model="form.name" :rows="4" type="textarea" />
</el-form-item>
</el-col> -->
<el-col :span="24">
<el-form-item label="订舱要求">
<el-input v-model="form.soRemark" :rows="4" type="textarea" />
</el-form-item>
</el-col>
<el-col :span="24"></el-col>
<el-col :span="24"></el-col>
<el-col :span="24"></el-col>
@ -530,10 +560,29 @@
</el-button>
</el-upload>
</el-col>
<el-col :span="24">
<el-form-item label="订舱要求">
<el-input v-model="form.soRemark" :rows="4" type="textarea" />
</el-form-item>
</el-col>
</el-row>
</el-col>
</el-row>
</el-form>
<el-dialog
v-model="MBdialogVisible"
title="保存模板"
width="30%"
:before-close="handleClose"
>
<el-input v-model="MBtitle" placeholder="请输入模板名称"></el-input>
<template #footer>
<span class="dialog-footer">
<el-button @click="SMBOK"></el-button>
</span>
</template>
</el-dialog>
<SendDialog ref="RefSendDialog" @OKSend="OKSend" />
</div>
</template>
<script>
@ -545,16 +594,19 @@ import {
bookingCustomDownFile,
bookingCustomDelete,
bookingCustomSubmit,
bookingTemplateSave,
} from "@/api/Index";
import { useRouter } from "vue-router";
import { ElMessage } from "element-plus";
import { cargoIdData } from "./initData";
import OpenBT from "./OpenBT.vue";
import { useStore } from "vuex";
import SendDialog from "./SendDialog.vue";
export default {
naem: "ViewBookingAdd",
components: {
OpenBT,
SendDialog,
},
setup() {
console.log("setup");
@ -572,6 +624,10 @@ export default {
desc: "",
ctnList: [],
cargoData: {},
transportClause: "CY-CY",
paymentType: "P",
portLoading: "QINGDAO,CHINA",
portLoadingCode: "CNTAO",
});
const serviceItemList = ref([]);
store.state.Data.cobServiceItemTenantList.forEach((item) => {
@ -723,8 +779,17 @@ export default {
// console.log(uploadFile);
};
const ClickCopy = () => {
// viweType.value = "Copy";
router.push({
path: "/AddBooking",
query: {
type: "Copy",
id: form.value.id,
},
});
delete form.value.id;
viweType.value = "Copy";
delete form.value.bizStatus;
delete form.value.billNo;
};
const ClicDelete = () => {
bookingCustomDelete({ id: form.value.id }).then((res) => {
@ -738,14 +803,33 @@ export default {
}
});
};
const RefSendDialog = ref();
const ClicSend = () => {
bookingCustomSubmit({ id: form.value.id }).then((res) => {
bookingCustomInfo({ id: form.value.id }).then((res) => {
if (res.code == 200) {
console.log(res);
RefSendDialog.value.OpenDialog(res.data);
}
});
// bookingCustomSubmit({ id: form.value.id }).then((res) => {
// if (res.code == 200) {
// ElMessage({
// message: "",
// type: "success",
// });
// router.push("/Booking");
// }
// });
};
const OKSend = (data) => {
console.log(data);
bookingCustomSubmit({ id: data.id }).then((res) => {
if (res.code == 200) {
ElMessage({
message: "发送成功",
type: "success",
});
router.push("/Booking");
RefSendDialog.value.OffDialog(res.data);
}
});
};
@ -782,6 +866,77 @@ export default {
break;
}
};
// const createFilter = (queryString) => {
// return (restaurant) => {
// console.log(restaurant);
// return (
// restaurant.code.toLowerCase().indexOf(queryString.toLowerCase()) === 0
// );
// };
// };
const querySearchPortLoadingCode = (queryString, cb) => {
let restaurants = store.state.Data.portloadlist;
const results = queryString
? restaurants.filter((item) => {
return (
item.code.toLowerCase().indexOf(queryString.toLowerCase()) !== -1
);
})
: restaurants;
let RData = [];
results.forEach((item) => {
RData.push({ ...item, value: item.code });
});
cb(RData);
};
const querySearchPortDischargeCode = (queryString, cb) => {
let restaurants = store.state.Data.portlist;
const results = queryString
? restaurants.filter((item) => {
return (
item.name.toLowerCase().indexOf(queryString.toLowerCase()) !== -1
);
})
: restaurants;
let RData = [];
results.forEach((item) => {
RData.push({ ...item, value: item.name });
});
cb(RData);
};
const MBtitle = ref("");
const MBtype = ref("");
const MBdialogVisible = ref(false);
const OpenMBDialog = (type) => {
MBtype.value = type;
MBtitle.value = "";
MBdialogVisible.value = true;
};
const SMBOK = () => {
let type = MBtype.value;
let ApiData = {
name:
type == "10"
? form.value.consigneeCode
: type == "20"
? form.value.shipperCode
: form.value.notifyPartyCode,
content:
type == "10"
? form.value.consignee
: type == "20"
? form.value.shipper
: form.value.notifyParty,
type,
title: MBtitle.value,
};
bookingTemplateSave(ApiData).then((res) => {
if (res.code == 200) {
console.log(res);
MBdialogVisible.value = false;
}
});
};
return {
store,
form,
@ -796,11 +951,19 @@ export default {
viweType,
ClickCopy,
ClicDelete,
RefSendDialog,
ClicSend,
OKSend,
cargoIdData,
ChangeCargoId,
ChangecarrierCode,
SelectData,
querySearchPortLoadingCode,
querySearchPortDischargeCode,
MBtitle,
MBdialogVisible,
SMBOK,
OpenMBDialog,
};
},
};

@ -0,0 +1,86 @@
<template>
<el-dialog
v-model="dialogVisible"
width="30%"
:before-close="
() => {
dialogVisible = false;
}
"
>
<div class="main">
<p class="title">订舱信息</p>
<p>{{ DialogData.portLoading }} {{ DialogData.portDischarge }}</p>
<p>{{ DialogData.carrier }} {{ `ETD: ${DialogData.etd}` }}</p>
<p>
{{ DialogData.ctnList[0].cntName }}*{{ DialogData.ctnList[0].ctnNum }}
</p>
<p class="title">所选服务</p>
<div class="serviceBox">
<div
class="serviceUnit"
v-for="item in DialogData.serviceItemList"
:key="item.id"
>
{{ item.value }}
</div>
</div>
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="OKSend"> </el-button>
</span>
</template>
</el-dialog>
</template>
<script>
import { ref } from "@vue/reactivity";
export default {
setup(props, ctx) {
const dialogVisible = ref(false);
const DialogData = ref({});
const OpenDialog = (data) => {
DialogData.value = data;
dialogVisible.value = true;
};
const OffDialog = () => {
dialogVisible.value = false;
};
const OKSend = () => {
ctx.emit("OKSend", DialogData.value);
};
return {
dialogVisible,
DialogData,
OpenDialog,
OffDialog,
OKSend,
};
},
};
</script>
<style lang="scss" scoped>
.main {
font-size: 16px;
p {
margin-bottom: 8px;
&.title {
color: #027db4;
}
}
.serviceBox {
display: flex;
.serviceUnit {
height: 20px;
line-height: 20px;
color: #000;
font-size: 14px;
padding: 4px 8px;
background: #70b603;
margin-right: 8px;
}
}
}
</style>

@ -19,6 +19,7 @@
@ClickSend="ClickSend"
@ClickCancelSend="ClickCancelSend"
/>
<SendDialog ref="RefSendDialog" @OKSend="OKSend" />
</div>
</template>
<script>
@ -30,16 +31,19 @@ import {
bookingCustomDelete,
bookingCustomSubmit,
bookingCustomCancelSubmit,
bookingCustomInfo,
} from "@/api/Index";
import { useRouter } from "vue-router";
import { ref, reactive } from "vue";
import { ElMessage } from "element-plus";
import { useStore } from "vuex";
import SendDialog from "./SendDialog.vue";
export default {
name: "ViewBooking",
components: {
SearchBox,
TableBox,
SendDialog,
},
setup() {
const store = useStore();
@ -51,7 +55,7 @@ export default {
];
const SearchBoxData = reactive([
{
title: "订编号",
title: "订编号",
EType: "Input",
DName: "billNo",
},
@ -107,18 +111,26 @@ export default {
name: "已驳回",
},
],
ClickOpen: true,
},
{ label: "订编号", prop: "billNo" },
{ label: "订编号", prop: "billNo" },
{ label: "船公司", prop: "carrier" },
{ label: "箱型*箱量", prop: "containerTotalInfo" },
{ label: "开船时间", prop: "etd" },
{ label: "付费方式", prop: "paymentType" },
{ label: "货物标识", prop: "cargoId" },
{ label: "船名", prop: "vessel" },
{ label: "航次", prop: "voyageNo" },
{
label: "船名/航次",
prop: "vessel",
multiple: true,
multipleData: ["vessel", "voyageNo"],
},
{ label: "订舱日期", prop: "createTime", width: "100" },
{ label: "操作人", prop: "createByName" },
{
label: "操作",
prop: "operate",
width: "160",
operateData: [
{
name: "编辑",
@ -226,17 +238,16 @@ export default {
});
}
};
const RefSendDialog = ref();
const ClickSend = (e) => {
console.log(e);
let table = TableBoxRef.value.$refs.Table.getSelectionRows();
if (table.length == 1) {
bookingCustomSubmit({ id: table[0].id }).then((res) => {
console.log(table[0]);
bookingCustomInfo({ id: table[0].id }).then((res) => {
if (res.code == 200) {
ElMessage({
message: "发送成功",
type: "success",
});
SearchBoxRef.value.Search();
console.log(res);
RefSendDialog.value.OpenDialog(res.data);
}
});
} else {
@ -246,6 +257,19 @@ export default {
});
}
};
const OKSend = (data) => {
console.log(data);
bookingCustomSubmit({ id: data.id }).then((res) => {
if (res.code == 200) {
ElMessage({
message: "发送成功",
type: "success",
});
RefSendDialog.value.OffDialog(res.data);
SearchBoxRef.value.Search();
}
});
};
const ClickCancelSend = (e) => {
console.log(e);
let table = TableBoxRef.value.$refs.Table.getSelectionRows();
@ -279,7 +303,9 @@ export default {
ClickAdd,
ClickDelete,
ClickCopy,
RefSendDialog,
ClickSend,
OKSend,
ClickCancelSend,
};
},

File diff suppressed because it is too large Load Diff

@ -37,7 +37,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="代码">
<el-form-item label="模板名称">
<el-input v-model="DialogForm.title" />
</el-form-item>
</el-col>
@ -133,7 +133,7 @@ export default {
SelectList: TypeData,
},
{
title: "代码",
title: "模板名称",
EType: "Input",
DName: "title",
},
@ -178,7 +178,7 @@ export default {
StateType: "multiple",
StateChange: TypeData,
},
{ label: "代码", prop: "title" },
{ label: "模板名称", prop: "title" },
{ label: "名称", prop: "name" },
{ label: "地址", prop: "addr" },
{ label: "国家", prop: "countryName" },

@ -0,0 +1,184 @@
<template>
<div class="main">
<el-tabs tab-position="left" class="demo-tabs">
<el-tab-pane label="更改手机号">
<div class="UnitBox">
<el-form
:model="form"
label-width="120px"
class="ChangPhoneForm"
ref="ruleFormRef"
>
<el-form-item label="原手机号">
<el-input v-model="form.phone" />
</el-form-item>
<el-form-item label="原手机验证码">
<div class="bind_code">
<el-input
v-model="form.checkCode"
size="large"
placeholder="验证码"
/>
<el-button
@click="bindforgetSendCode(form.phone)"
class="codebtn"
:disabled="disabled"
>
{{ btnText }}
</el-button>
</div>
</el-form-item>
<el-form-item label="新手机号">
<el-input v-model="form.newPhone" />
</el-form-item>
<el-form-item label="新手机验证码">
<div class="bind_code">
<el-input
v-model="form.newCheckCode"
size="large"
placeholder="验证码"
/>
<el-button
@click="bindforgetSendCode(form.newPhone, 'new')"
class="codebtn"
:disabled="newdisabled"
>
{{ newbtnText }}
</el-button>
</div>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit"></el-button>
</el-form-item>
</el-form>
</div>
</el-tab-pane>
<!-- <el-tab-pane label="Config">Config</el-tab-pane>
<el-tab-pane label="Role">Role</el-tab-pane>
<el-tab-pane label="Task">Task</el-tab-pane> -->
</el-tabs>
</div>
</template>
<script>
import { ref } from "vue";
import { UserChangPhone, genRegisterCheckCode } from "@/api/Index";
import { ElMessage } from "element-plus";
export default {
name: "ViewUserinfo",
setup() {
const ruleFormRef = ref();
const form = ref({});
const disabled = ref(false);
const btnText = ref("获取验证码");
const newdisabled = ref(false);
const newbtnText = ref("获取验证码");
const bindforgetSendCode = (phoneData, type) => {
ruleFormRef.value.validateField("phone", (errorMessage) => {
if (errorMessage) {
console.log();
// captchaSms({ phonenumber: RegData.value.phone }).then((res) => {
// console.log(res);
// });
if (type == "new") {
newdisabled.value = true;
newbtnText.value = "发送中...";
} else {
disabled.value = true;
btnText.value = "发送中...";
}
genRegisterCheckCode({ phone: phoneData }).then((res) => {
console.log(res);
let i = 0;
let time = () => {
if (i < 60) {
setTimeout(() => {
++i;
if (type == "new") {
newbtnText.value = `${60 - i}s`;
} else {
btnText.value = `${60 - i}s`;
}
time();
}, 1000);
} else {
if (type == "new") {
newdisabled.value = false;
newbtnText.value = "获取验证码";
} else {
disabled.value = false;
btnText.value = "获取验证码";
}
}
};
time();
});
} else {
console.log(errorMessage);
return false;
}
});
};
const onSubmit = () => {
UserChangPhone(form.value).then((res) => {
if (res.code == 200) {
ElMessage({
message: res.message,
type: "success",
});
}
});
};
return {
ruleFormRef,
form,
disabled,
btnText,
newdisabled,
newbtnText,
bindforgetSendCode,
onSubmit,
};
},
};
</script>
<style lang="scss" scoped>
.main {
width: 100%;
height: 100%;
padding: 16px;
box-sizing: border-box;
background: #fff;
.demo-tabs {
height: 100%;
.UnitBox {
.ChangPhoneForm {
width: 500px;
.bind_code {
width: 100%;
position: relative;
}
.codebtn {
position: absolute;
top: 4px;
right: 1px;
font-size: 11px;
font-weight: 500;
font-family: PingFang SC-Medium, PingFang SC;
color: #1b3dd1;
height: 32px;
line-height: 32px;
cursor: pointer;
padding: 0 10px;
border: none;
border-left: 1px solid #1b3dd1;
border-radius: 0;
&:hover {
background: none;
}
}
}
}
}
}
</style>

@ -15,10 +15,24 @@
}}
</span>
</template>
<el-row>
<el-col>
<el-button link @click="GoUserinfo">
<el-icon :style="{ marginRight: '16px' }">
<User />
</el-icon>
个人信息
</el-button>
</el-col>
<el-col :style="{ marginTop: '16px' }">
<el-button link @click="LogOut">
<el-icon :style="{ marginRight: '20px' }"><SwitchButton /></el-icon>
<el-icon :style="{ marginRight: '16px' }">
<SwitchButton />
</el-icon>
退出登录
</el-button>
</el-col>
</el-row>
</el-popover>
</el-header>
<el-container class="IndexContainer">
@ -97,10 +111,15 @@ export default {
});
router.push("/login");
};
const GoUserinfo = () => {
router.push("/Userinfo");
};
return {
handleOpen,
handleClose,
LogOut,
GoUserinfo,
};
},
};

@ -54,6 +54,8 @@ import {
tenantWaitAdminApplyJoinList,
TenantAdminAgreeApplyJoin,
TenantAdminRejectApplyJoin,
tenantUserTenantList,
TenantAdminChangeAdmin,
} from "@/api/Index";
import { ref, reactive } from "vue";
export default {
@ -62,6 +64,9 @@ export default {
TableBox,
},
setup() {
tenantUserTenantList().then((res) => {
console.log(res);
});
const dialogFormVisible = ref(false);
const DialogForm = ref({});
const TypeData = [
@ -93,10 +98,18 @@ export default {
operateData: [
{
name: "移出",
ShowType: false,
Fn: (e) => {
ClickDelete(e);
},
},
{
name: "转让管理",
ShowType: false,
Fn: (e) => {
ClickTransfer(e);
},
},
],
},
]);
@ -157,6 +170,17 @@ export default {
}
});
};
const ClickTransfer = (e) => {
TenantAdminChangeAdmin({ id: e.id }).then((res) => {
if (res.code == 200) {
ElMessage({
message: res.message,
type: "success",
});
}
});
console.log(e);
};
const FnAgreeApply = (e) => {
TenantAdminAgreeApplyJoin({ id: e.id }).then((res) => {
console.log(res);
@ -185,6 +209,7 @@ export default {
FnApplyList,
tableData,
ClickDelete,
ClickTransfer,
FnAgreeApply,
FnRejectApply,
};

@ -21,6 +21,17 @@ const UserReg = (data) => {
},
});
};
// 用户更新手机号(2023-10增加)
const UserChangPhone = (data) => {
return request({
data: {
url: "/api/bookingAip/user/userChangPhone",
method: "post",
data,
// headers: { Authorization: localStorage.getItem("token") },
},
});
};
// 获取用户注册验证码
const genRegisterCheckCode = (params) => {
return request({
@ -54,6 +65,18 @@ const bookingCustomList = (params) => {
},
});
};
// 查询状态日志列表
const bookingCustomStatusLogList = (params) => {
return request({
data: {
url: "/api/bookingAip/bookingCustom/statusLogList",
method: "get",
params,
// headers: { Authorization: localStorage.getItem("token") },
},
});
};
// 保存客户订单
const bookingCustomSave = (data) => {
return request({
@ -477,13 +500,37 @@ const TenantCancelApplyJoin = (data) => {
},
});
};
// 管理员变更企业新管理员(2023-10增加)
const TenantAdminChangeAdmin = (data) => {
return request({
data: {
url: "/api/bookingAip/tenant/adminChangeAdmin",
method: "post",
data,
// headers: { Authorization: localStorage.getItem("token") },
},
});
};
// 退出企业(离职)(2023-10增加)
const TenantDepart = (data) => {
return request({
data: {
url: "/api/bookingAip/tenant/depart",
method: "post",
data,
// headers: { Authorization: localStorage.getItem("token") },
},
});
};
export {
UserLogin,
UserReg,
UserChangPhone,
genRegisterCheckCode,
UserGetLoginUser,
bookingCustomList,
bookingCustomStatusLogList,
bookingCustomSave,
bookingCustomSubmit,
bookingCustomCancelSubmit,
@ -521,4 +568,6 @@ export {
TenantAdminRejectApplyJoin,
TenantAdminRemoveUser,
TenantCancelApplyJoin,
TenantAdminChangeAdmin,
TenantDepart,
};

@ -82,7 +82,7 @@ export default {
const search_data = reactive(props.SearchData);
console.log(search_data);
const Data = ref({});
const OpenType = ref(false);
const OpenType = ref(true);
const Open = () => {
OpenType.value = !OpenType.value;
ctx.emit("SearchOpen", OpenType.value);

@ -25,6 +25,7 @@
:height="height"
v-loading="loading"
ref="Table"
@row-dblclick="TableRowDblclick"
>
<el-table-column
v-for="item in table_data"
@ -36,15 +37,32 @@
:type="item.type"
>
<template #default="scope" v-if="item.type != 'selection'">
<span v-if="item.StateChange">{{
RData(scope.row[item.prop], item)
}}</span>
<span v-if="item.StateChange">
<span v-if="!item.ClickOpen">
{{ RData(scope.row[item.prop], item) }}
</span>
<el-button
type="primary"
link
v-else
@click="OpenDialog(scope.row)"
>
{{ RData(scope.row[item.prop], item) }}
</el-button>
</span>
<span v-else-if="item.multiple">
<span v-for="(e, index) in item.multipleData" :key="index">
{{ scope.row[e] }}
<br />
</span>
</span>
<span v-else-if="item.prop == 'operate'">
<el-button
v-for="button in item.operateData"
:key="button.name"
:type="button.type ? button.type : 'primary'"
text
v-show="!button.ShowType"
@click="ClickOperateButton(button, scope.row)"
>
{{ button.name }}
@ -63,11 +81,35 @@
layout="total, prev, pager, next"
:total="search_data.total"
/>
<el-dialog
v-model="dialogVisible"
title="状态历史"
width="30%"
:before-close="
() => {
dialogVisible = false;
}
"
>
<span>
<el-table :data="DialogTableData" style="width: 100%">
<el-table-column prop="status" label="业务状态" width="80" />
<el-table-column prop="opTime" label="状态时间" width="160" />
<el-table-column prop="remak" label="备注" />
<el-table-column prop="createByName" label="创建者" width="80" />
</el-table>
</span>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogVisible = false">关闭</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script>
import { ref, reactive } from "@vue/reactivity";
import { bookingCustomStatusLogList } from "@/api/Index";
export default {
name: "TableBox",
props: ["TableData", "SearchData", "ButtonData", "ListApi"],
@ -136,6 +178,21 @@ export default {
const ClickOperateButton = (data, e) => {
data.Fn(e);
};
const TableRowDblclick = (row) => {
ctx.emit("TableRowDblclick", row);
// console.log(row, column, event);
};
const DialogTableData = ref([]);
const dialogVisible = ref(false);
const OpenDialog = (data) => {
console.log(data, 123);
bookingCustomStatusLogList({ id: data.id }).then((res) => {
if (res.code == 200) {
DialogTableData.value = res.data;
dialogVisible.value = true;
}
});
};
return {
Search,
table_data,
@ -148,6 +205,10 @@ export default {
ClickButton,
RData,
ClickOperateButton,
TableRowDblclick,
DialogTableData,
dialogVisible,
OpenDialog,
};
},
};

@ -10,6 +10,7 @@ import ApplyJoinFound from "../Views/ApplyJoin/Found.vue";
import ApplyJoinJoin from "../Views/ApplyJoin/Join.vue";
import ApplyJoinForJ from "../Views/ApplyJoin/ForJ.vue";
import ApplyJoinOperate from "../Views/ApplyJoinOperate";
import Userinfo from "../Views/Userinfo";
import Workmate from "../Views/workmate";
import About from "../Views/About.vue";
@ -31,6 +32,7 @@ const router = createRouter({
{ path: "/ApplyJoinForJ", component: ApplyJoinForJ },
{ path: "/Workmate", component: Workmate },
{ path: "/ApplyJoinOperate", component: ApplyJoinOperate },
{ path: "/Userinfo", component: Userinfo },
],
},
{ path: "/login", component: Login },

Loading…
Cancel
Save