daikins/.svn/pristine/bb/bba566dafbfc06374e35c7c84c0...

1659 lines
57 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<script setup lang="ts">
import { message } from "@/utils/message";
import {
boardMsgList,
getPageWork,
homePageMarket,
getPageInv,
getPageVisit,
externalList,
homePageRate,
report,
trendsPage,
demandPage,
faqPage,
faqAdd,
demandAdd,
trendsAdd,
faqPageDelete,
demandDel,
faqWithdraw,
demandWithdraw,
faqDetail,
demandDetail
} from "@/api/daikin/base";
import { getImg } from "@/assets/images";
import { useUserStore } from "@/stores/modules/user";
import { noticeld } from "@/stores/modules/noticeId";
import { pageType } from "@/stores/modules/pages";
import { NModal } from "naive-ui";
import { Delete} from '@element-plus/icons-vue'
const { push } = useRouter();
const route = useRoute();
// useFavicon(getImg('favicon.svg'))
// useTitle('大金空调调达本部HOMEPAGE')
const store = useUserStore();
const not = noticeld();
const pages = pageType();
const isUpPwds = ref(false);
const userCode = ref(false);
const shormA = ref(false);
const shormB = ref(false);
watchEffect(() => {
userCode.value = ["admin", "waibuyemianguanliyuan", "tech_service"].includes(
store.user.roleCode
);
console.log(isUpPwds.value, "xiaolu00002223");
isUpPwds.value = store.user.isUpPwd === 2 ? true : false;
console.log(isUpPwds.value, "xiaolu0000222");
});
const ailists = ref();
const culists = ref();
const itemLists = ref();
const timeA = ref();
const timeB = ref();
const value2 = ref("");
const value3 = ref("");
const fromtA =ref({
number:'',
id:'',
question1:'',
question2:'',
question3:'',
question4:'',
type:''
})
const fromtB =ref({
id:'',
userId:'',
usdObj:'',
demand:'',
location:'',
procureTime:'',
remark:'',
type:''
})
const addClickA=async ()=>{
const {question1,question2,question3,question4,type,id,number} =fromtA.value
if(type==='edit'){
const {code,msg} = await faqWithdraw({addList:[{indexId:1,replyTxt:question1},{indexId:2,replyTxt:question2},{indexId:3,replyTxt:question3},{indexId:4,replyTxt:question4}],id,number})
if(code===200){
message.info("操作成功!")
shormA.value = false
boardMsg(1)
}
else{
message.error(msg)
}
}
else{
const {code,msg} = await faqAdd({faqList:[{indexId:1,replyTxt:question1},{indexId:2,replyTxt:question2},{indexId:3,replyTxt:question3},{indexId:4,replyTxt:question4}],id,number})
if(code===200){
message.info("操作成功!")
shormA.value = false
boardMsg(1)
}
else{
message.error(msg)
}
}
}
/**
* "usdObj": "公司", //适用对象,个人/公司
"demand": "空调", //需求依赖, 家用机/商用机
"location": "大厅", //安装位置
"procureTime": "2023-07-04", //采购时间
"remark": "备注"
*/
const addClickB=async ()=>{
const {usdObj,demand,location,procureTime,remark,type} =fromtB.value
if(type==='edit'){
// 留言板-需求依赖-撤回
const {code,msg} = await demandWithdraw(fromtB.value)
if(code===200){
message.info("操作成功!")
shormB.value = false
boardMsg(1)
}
else{
message.error(msg)
}
}
else{
const {code,msg} = await demandAdd({usdObj,demand,location,procureTime,remark})
if(code===200){
message.info("操作成功!")
shormB.value = false
boardMsg(1)
}
else{
message.error(msg)
}
}
}
const deleteMSG=async (obj)=>{
const {id} = obj
if(!id) return
console.log(id)
const {code,msg} = await faqPageDelete({id})
if(code===200){
message.info("操作成功!")
shormB.value = false
boardMsg(1)
}
else{
message.error(msg)
}
}
const deleteMSB=async (obj)=>{
const {id} = obj
if(!id) return
console.log(id)
const {code,msg} = await demandDel({id})
if(code===200){
message.info("操作成功!")
shormB.value = false
boardMsg(1)
}
else{
message.error(msg)
}
}
onMounted(async () => {
const {
data: { ailist, culist, lastUTime },
} = await homePageMarket(); //市况
const {
data: { itemList, lastUTime: _lastUTime },
} = await homePageRate(); //汇率
ailists.value = ailist;
culists.value = culist;
itemLists.value = itemList;
timeA.value = lastUTime;
timeB.value = _lastUTime;
if (isUpPwds.value) {
ElMessageBox.alert(
"为了您的帐号安全,首次登录必须更改初始密码",
"重要提醒",
{
confirmButtonText: "OK",
showClose: false,
showCancelButton: false,
}
).then(() => {
push({ name: "modify" });
});
}
});
const handleChange = (e: Event) => {
// checkedValue.value = (e.target as HTMLInputElement).value
};
const toAdd = () => {
if (flgs.value == 1) {
// setModule('App_E_Supplier_Demand');
shormA.value = true;
}
else if (flgs.value == 2) {
// setModule('App_E_Supplier_Demand');
shormB.value = true;
}
else {
// setModule('App_E_Supplier_Trends');
not.article.cate = '9'
console.log(not.article.cate)
// push(`${route.path.replace('/external','')}/info/${n.id}`)
push('/external/Board')
}
console.log(flgs.value, shormA.value, shormB.value);
};
const close1 = () => {
if (flgs.value == 1) {
shormA.value = false;
} else {
shormB.value = false;
}
};
//获取邀请函列表
const invList = ref<any[]>([]);
let invLength: number;
let invPum = 1;
const invsScoll = ref<HTMLElement | null>(null);
async function getPageInvs(page) {
const pasr = {
pageNum: page,
status: 1,
source: 1,
};
const { rows, total } = await getPageInv(pasr);
invList.value.push(...rows);
invLength = total / 10;
}
//获取拜访列表
const visitList = ref<any[]>([]);
let visitLength: number;
let visitPum = 1;
const visitsScoll = ref<HTMLElement | null>(null);
async function getPageVisits(page) {
const pasr = {
pageNum: page,
status: 1,
source: 1,
};
const { rows, total } = await getPageVisit(pasr);
visitList.value.push(...rows);
visitLength = total / 10;
}
getPageVisits(1);
getPageInvs(1);
// 获取News数据 getArticlePage
const newsList = ref<any[]>([]);
const newsSoll = ref<HTMLElement | null>(null);
let newLength: number;
let newPum = 1;
async function getArticle(page: any) {
const pasr = {
pageNum: page,
pageSize: "10",
type: "1",
cate: "7",
};
const { rows, total } = await externalList(pasr);
newsList.value.push(...rows);
newLength = total / 10;
}
// 获取重要通知数据 getArticlePage
const portantList = ref<any[]>([]);
const portant = ref<HTMLElement | null>(null);
let pLenght: number;
let prpum = 1;
async function getArticleP(page: any) {
const pasr = {
pageNum: page,
pageSize: "10",
type: "1",
cate: "8",
};
const { rows, total } = await externalList(pasr);
portantList.value.push(...rows);
pLenght = total / 10;
}
getArticleP(1);
getArticle(1);
// 调查表数据
const rowsList = ref<any[]>([]);
const tabScll = ref<HTMLElement | null>(null);
let tabLength: number;
let tabPume = 1;
async function pageWork(page: number) {
const pageNum = page;
const { rows, total } = await getPageWork({ pageNum });
rowsList.value.push(...rows);
tabLength = total / 10;
}
const dataInfo = reactive({
treeSource: 1,
type: 0,
pageSize: 10
});
// 留言板数据
const msgList = ref<any[]>([]);
let maxMsgLingth = 1;
let psgPum = 1;
// 留言板滚动
const msgScoll = ref<HTMLElement | null>(null);
async function boardMsg(page: number) {
const pageNum = page;
const { treeSource, type, pageSize } = dataInfo;
console.log(dataInfo,"dataInfo");
if (treeSource === 3) {
const { rows, total } = await trendsPage({ pageNum, pageSize });
if (type === 0) {
msgList.value = rows;
} else {
msgList.value.push(...rows);
}
maxMsgLingth = total / 10;
console.log(total, type,"xiaolu11");
}
else if (treeSource == 1) {
const { rows, total } = await faqPage({ pageNum, pageSize });
if (type === 0) {
// lujinli
msgList.value = rows;
//
} else {
msgList.value.push(...rows);
}
maxMsgLingth = total / 10;
console.log(msgList.value, type,"msgList4234");
}
else {
const { rows, total } = await demandPage({ pageNum, pageSize });
if (type === 0) {
msgList.value = rows;
} else {
msgList.value.push(...rows);
}
maxMsgLingth = total / 10;
console.log(msgList.value.length, type,"msgList22");
}
// msgList.value = null lujinli;
}
const lazyState = computed(() => [dataInfo.treeSource]);
watch(
() => unref(lazyState),
async (v) => {
boardMsg(1);
},
{ immediate: true, deep: true }
);
pageWork(1);
onMounted(() => {
msgScoll.value?.addEventListener("scroll", handleMsgScoll);
newsSoll.value?.addEventListener("scroll", handleNewScoll);
portant.value?.addEventListener("scroll", handlePrScoll);
tabScll.value?.addEventListener("scroll", handleTabScoll);
visitsScoll.value?.addEventListener("scroll", handleVisitsScoll);
invsScoll.value?.addEventListener("scroll", handleInvScoll);
});
async function setModule(codes: any) {
const moduleCode = codes;
// console.log(codes)
const { code } = await report({ moduleCode });
}
//
const handleVisitsScoll = () => {
const container = visitsScoll.value;
if (container) {
const isAtBottom =
container.scrollHeight - container.scrollTop === container.clientHeight;
if (isAtBottom) {
if (visitPum < visitLength) {
++visitPum;
getPageVisits(visitPum);
}
}
}
};
// 拜访
const handleInvScoll = () => {
const container = invsScoll.value;
if (container) {
const isAtBottom =
container.scrollHeight - container.scrollTop === container.clientHeight;
if (isAtBottom) {
if (invPum < invLength) {
++invPum;
getPageInvs(invPum);
}
}
}
};
// 线上调查表滚动
const handleTabScoll = () => {
const container = tabScll.value;
if (container) {
const isAtBottom =
container.scrollHeight - container.scrollTop === container.clientHeight;
if (isAtBottom) {
if (tabPume < tabLength) {
++tabPume;
pageWork(tabPume);
} else console.log(tabPume, tabLength);
}
}
};
// 重要通知滚动
const handlePrScoll = () => {
const container = portant.value;
if (container) {
const isAtBottom =
container.scrollHeight - container.scrollTop === container.clientHeight;
if (isAtBottom) {
if (prpum < pLenght) {
++prpum;
getArticleP(prpum);
} else console.log(prpum, pLenght);
}
}
};
// News滚动
const handleNewScoll = () => {
const container = newsSoll.value;
if (container) {
const isAtBottom =
container.scrollHeight - container.scrollTop === container.clientHeight;
if (isAtBottom) {
if (newPum < newLength) {
++newPum;
getArticle(newPum);
} else console.log(newPum, newLength);
}
}
};
// 留言滚动
const handleMsgScoll = () => {
const container = msgScoll.value;
if (container) {
const isAtBottom =
container.scrollHeight - container.scrollTop === container.clientHeight;
if (isAtBottom) {
if (psgPum < maxMsgLingth) {
++psgPum;
dataInfo.type = 1;
boardMsg(psgPum);
} else console.log(psgPum, maxMsgLingth);
}
}
};
const toDetail = (n, item) => {
console.log("flgs.value", "xiaolu");
// push(`${route.path}/${item.id}`)
// if(n.isSelect===1){
if (item === "App_E_Message") {
let code
if(flgs.value==1){
code = 'App_E_Supplier_Demand'
}
else if(flgs.value==3){
code = 'App_E_Supplier_Trends'
}
else{
code = 'App_E_Supplier_Demand'
}
setModule(code);
push(`/external/infoa/${n.id}/${flgs.value}`);
}
else {
setModule(item);
push(`/external/info/${n.id}`);
}
// }
// else{
// message.info("您没有权限查看!")
// }
};
const displayDiffValue = (diffValue: number) => {
if (diffValue > 0) {
return `+${diffValue} %`;
} else if (diffValue < 0) {
return `-${Math.abs(diffValue)} %`;
} else {
return `${diffValue} %`;
}
};
const toDetail2 = (id: string) => {
console.log(route, route.path);
not.article.cate = id;
console.log(not.article.cate);
// push(`${route.path.replace('/external','')}/info/${n.id}`)
push("/external/Board");
};
const flgs = ref(1);
const cardsClick = (it) => {
flgs.value = it;
dataInfo.treeSource = it;
};
const toList = (nb) => {
console.log(nb);
if (nb === 7) {
pages.page.cate = "7";
pages.page.title = "News";
} else {
pages.page.cate = "8";
pages.page.title = "重要通知";
}
push({ name: "DetailInfoList" });
};
const shorm = ref(false);
const openNewWindow=(type,url)=>{
setModule(type);
if(url==='shorm')
{
shorm.value = true
}
else{
window.open(url)
}
}
/**留言板-供应商留言-撤回*/
const faqWithdraws=async (obj)=>{
console.log("2333333");
const {id} = obj
const {data} = await faqDetail({id})
let result = {}
if(data&&data.faqList&&data.faqList.length>0){
result = data.faqList.reduce((acc, item) => {
const key = `question${item.indexId}`;
acc[key] = item.replyTxt;
return acc;
}, {});
}
result.id = data.id
result.number = data.number
fromtA.value = result
fromtA.value.type = 'edit'
console.log(result)
shormA.value = true
}
// 留言板-需求依赖-撤回
const demandWithdraws=async (obj)=>{
const {id} = obj
const {data} = await demandDetail({id})
console.log(data)
fromtB.value = data
fromtB.value.type = 'edit'
shormB.value=true
}
</script>
<template>
<div class="page w-1920px h-1080px p30px flex flex-col">
<div class="w300px -mr-1px flex flex-col shrink-0">
<div class="text-20px text-#fff font-600 mt6px">
大金中国调达本部 HOMEPAGE
</div>
<!-- @dblclick="toggle" -->
<img src="@/assets/images/logo.png" class="w197px h44px mt14px" />
</div>
<div class="main flex-1 rd-32px p30px pt0">
<!-- <Home /> -->
<!-- <RouterView /> -->
<div class="top flex items-center text-20px">
<div class="flex-1 font-800 text-30px"></div>
<AppHeadUserInfo />
</div>
<!-- <img src="@/assets/images/wbshouy.png" alt="" class="w-full h940px"> -->
<div class="w100% h50px pl10px pt40px text-36px font-extrabold">
FY23年度调达本部方针创新实干勇毅前行以综合实力挑战变革提升存在感
</div>
<div class="mt55px flex-1 flex flex-wrap justify-between">
<div class="cards w34% h800px page-wrapper">
<div class="cards_title">News</div>
<el-button v-if="userCode" type="primary" class="absolute right-164px top-15px"
@click="push('/external/Process')">流程列表</el-button>
<el-button v-if="userCode" type="primary" class="absolute right-80px top-15px" @click="toDetail2(7)">+
新增</el-button>
<span style="
border: #417bef 1px solid;
color: #417bef;
border-radius: 5px;
height: 30px;
" class="mr15px mt17px flex px5px pt6px" @click="toList(7)">更多<el-icon>
<DArrowRight class="" />
</el-icon></span>
<div class="absolute right-25px top-20px">
<!-- <img src="./images/younniu@2x.png"> -->
<!-- <el-icon>
<ArrowRightBold />
</el-icon> -->
</div>
<div ref="newsSoll" class="p20px w100% h355px cent_box overflow-y-auto">
<div v-if="newsList" class="text-#152242 truncate-box text-18px" v-for="i in newsList">
<div class="truncate" @click="toDetail(i, 'App_E_News')">
<img v-if="i.tag === 'New'" src="./images/NEW@2x.png" class="h35px mr5px badge-new" />
<span v-if="i.isTop === 'Y'" class="text-#fff bg-red p5px text-18px rounded-5px mr-5px badge-24">置顶</span>
<span :style="i.isRead === 2 ? 'color:#0058E5;font-weight' : ''" :title="i.title">{{ i.title }}</span>
</div>
<div class="icons min-w-110px w110px h20px mt15px absolute right-0px top-0">
{{ i.createTime.substring(0, 10) }}
</div>
</div>
<!-- <div v-if="portantList" class="text-#808696 truncate-box " v-for="i in 15">
<div class="truncate">
<span class="text-#fff bg-red p5px text-14px rounded-5px mr-5px">置顶</span>
<span>FY23第二回合作伙伴会议通知 (7月14日)FY2议通知</span>
<img src="./images/NEW@2x.png" class="w55px ml5px">
</div>
<div class="icons w20px h20px mt15px absolute right-20px top-0"></div>
</div> -->
</div>
<div class="text-26px text-#142142 font-extrabold mb-10px pl20px">
重要通知
</div>
<div class="flex">
<el-button v-if="userCode" type="primary" class="mt0px mr0px"
@click="push({ path: '/external/Process', query: { cate: '8' } })">流程列表</el-button>
<el-button v-if="userCode" type="primary" class="mt0px mr10px" @click="toDetail2(8)">+ 新增</el-button>
<span style="
border: #417bef 1px solid;
color: #417bef;
border-radius: 5px;
height: 30px;
" class="mr15px mt2px flex px5px pt6px" @click="toList(8)">更多<el-icon>
<DArrowRight class="" />
</el-icon></span>
</div>
<div ref="portant" class="p20px pt0px w100% h355px cent_box overflow-y-auto">
<div v-if="portantList" class="text-#152242 truncate-box text-18px" v-for="i in portantList" :key="i">
<div class="truncate" @click="toDetail(i, 'App_E_Notice')">
<img v-if="i.tag === 'New'" src="./images/NEW@2x.png" class="h35px mr5px badge-new" />
<span v-if="i.isTop === 'Y'" class="text-#fff bg-red p5px text-14px rounded-5px mr-5px badge-24">置顶</span>
<span :style="i.isRead === 2 ? 'color:#0058E5;font-weight' : ''" :title="i.title">{{ i.title }}</span>
</div>
<div class="icons min-w-110px w110px h20px mt15px absolute right-0px top-0">
{{ i.createTime.substring(0, 10) }}
</div>
</div>
<!-- <div v-if="portantList" class="text-#808696 truncate-box " v-for="i in 15">
<div class="truncate">
<span class="text-#fff bg-red p5px text-14px rounded-5px mr-5px">置顶</span>
<span>FY23第二回合作伙伴会议通知 (7月14日)FY23第二回合作伙伴会议通知 (7月14日)</span>
</div>
<div class="icons w20px h20px mt15px absolute right-20px top-0"></div>
</div> -->
</div>
</div>
<div class="cards w64% h800px !shadow-none !bg-transparent page-wrapper">
<div class="cards w760px h385px cursor-pointer">
<div class="cards_title">市况汇率每日更新</div>
<div class="cards_nav cards_nav2 !top--3px !right--1px">
<div class="!text-14px w260px top--4px text-right leading-18px">
出处:市况-SMM/LME<br />
汇率-外汇管理局
</div>
</div>
<div class="cards_content">
<!-- <VChart :option="chartOption1" autoresize /> -->
<div class="flex pl15px pr10px pt13px text-#152242">
<div class="">
<span class="icoT">市况</span>
<span class="ml35px text-18px">更新时间:{{ timeA }}</span>
<table class="history w-full text-center mt23px text-18px border-spacing-0 overflow-auto w358px">
<thead style="
background-color: #417bef;
color: #fff;
height: 42px;
width: 220px;
border: 1px solid #417bef;
">
<tr class="h51px">
<th>铜</th>
<th>最新</th>
<th>前日差</th>
</tr>
</thead>
<tbody v-if="culists" class="text-18px">
<tr class="h38px" v-for="(it, index) in culists" :key="index"
:class="index % 2 !== 0 ? 'bg-#f9f9f9' : ''">
<td>{{ it.channel }}</td>
<td>{{ it.negAmount }}</td>
<td :class="it.diffValue < 0 ?'text-#63BF8D':'text-red'
">
{{ displayDiffValue(it.diffValue) }}
</td>
</tr>
</tbody>
</table>
<table class="history w-full text-center mt15px text-18px border-spacing-0 overflow-auto w358px">
<thead style="
background-color: #417bef;
color: #fff;
height: 42px;
width: 220px;
border: 1px solid #417bef;
">
<tr class="h51px">
<th>铝</th>
<th>最新</th>
<th>前日差</th>
</tr>
</thead>
<tbody v-if="ailists" class="text-18px">
<tr class="h45px" v-for="(it, index) in ailists" :key="index"
:class="index % 2 !== 0 ? 'bg-#f9f9f9' : ''">
<td>{{ it.channel }}</td>
<td>{{ it.negAmount }}</td>
<td :class="it.diffValue < 0 ? 'text-#63BF8D' : 'text-red'
">
{{ displayDiffValue(it.diffValue) }}
</td>
</tr>
</tbody>
</table>
</div>
<div class="ml10px">
<span class="icoT">汇率</span>
<span class="ml35px text-18px">更新时间:{{ timeB }}</span>
<!-- 修复table数据过多超出容器后续用el-table来代替 -->
<div style="overflow: auto; height: 300px">
<table class="history w-full text-center mt23px text-18px border-spacing-0 w358px">
<thead style="
background-color: #417bef;
color: #fff;
height: 42px;
width: 220px;
border: 1px solid #417bef;
">
<tr class="h51px">
<th class="w120px">币种</th>
<th>最新</th>
<th class="w85px">前日差</th>
</tr>
</thead>
<tbody v-if="itemLists" class="text-18px">
<tr class="h55px" v-for="(it, index) in itemLists" :key="index"
:class="index % 2 !== 0 ? 'bg-#f9f9f9' : ''">
<td>
{{ it.currencyCodeFrom }}-{{ it.currencyNameTo }}
</td>
<td>{{ it.negAmount }}</td>
<td :class="it.diffValue < 0 ? 'text-#63BF8D' : 'text-red'
">
{{ displayDiffValue(it.diffValue) }}
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="cards w360px h385px">
<div class="w100% contents">
<div class="cards_title">其他链接</div>
<!-- <div class="cards_title" @click="">新增</div> -->
<div ref="invsScoll" class="p20px w100% h340px cent_box overflow-y-auto bk-tuann text-18px">
<!-- <div class="text-#808696" v-for="(i,ie) in invList " :key="ie">
<div class="truncate2" @click=" push(`/external/infos/${i.id}`)">
<span class="text-#fff bg-#407DF1 px5px text-18px rounded-20px mr-5px">{{ ++ie}}</span>
<span>{{i.title}}</span>
</div>
<span class="absolute right-0px top-12px">{{i.createTime}}</span>
</div> -->
<div class="text-#152242">
<div class="truncate2">
<span class="text-#fff bg-#407DF1 px5px text-18px rounded-20px mr-5px inlineFlex">1</span>
<span @click="openNewWindow('App_E_Link_GPROC','https://edi.daikin.net.cn:8443/gproc/')" class="text-#142142">
G-PROC
</span>
</div>
<span class="absolute right-0px top-12px"></span>
<div class="truncate2">
<span class="text-#fff bg-#407DF1 px5px text-18px rounded-20px mr-5px inlineFlex">2</span>
<span @click="openNewWindow('App_E_Link_DELTA','https://edi.daikin.net.cn')" class="text-#142142">
DELTA</span>
</div>
<span class="absolute right-0px top-12px"></span>
<div class="truncate2">
<span class="text-#fff bg-#407DF1 px5px text-18px rounded-20px mr-5px inlineFlex">3</span>
<span @click="openNewWindow('App_E_Link_IDEABOX','https://procurement.daikin.net.cn/ideabox/#/index')" class="text-#142142">
IDEABOX</span>
</div>
<span class="absolute right-0px top-12px"></span>
<div class="truncate2">
<span class="text-#fff bg-#407DF1 px5px text-18px rounded-20px mr-5px inlineFlex">4</span>
<span @click="openNewWindow('App_E_Link_DaiKin_Site','https://www.daikin-china.com.cn/')" class="text-#142142">
大金空调官方网站</span>
</div>
<span class="absolute right-0px top-12px"></span>
<div class="truncate2">
<span class="text-#fff bg-#407DF1 px5px text-18px rounded-20px mr-5px inlineFlex">5</span>
<span @click="openNewWindow('App_E_Link_DaiKin_CAN','shorm')" class="text-#142142">
<a target="_blank" style="color: inherit">大金空调中国相关</a></span>
</div>
</div>
</div>
</div>
<!-- <div>
<div ref="visitsScoll" class="cards_title w100% !mt--10px">拜访</div>
<div class="p20px h130px w100% cent_box overflow-y-auto">
<div class="text-#808696 w515px" v-for="(i,ie) in visitList" :key="ie">
<div class="truncate2" @click=" push(`/external/infoa/${i.id}`)">
<span class="text-#fff bg-#407DF1 px5px text-18px rounded-20px mr-5px">{{ ++ie }}</span>
<span>{{i.title}}</span>
</div>
<span class="absolute right-0px top-12px">{{i.createTime}}</span>
</div>
</div>
</div> -->
</div>
<div class="cards w560px h385px">
<div class="cards_title">线上调查表</div>
<div class="!text-18px right20 pt30px text-#4E7EE8">
<a @click="openNewWindow('App_E_mdy','https://procurement.daikin.net.cn/mingdao/portal/app/7abea528-f7b4-4437-84bb-6b6b169bad3d')"
class="no-underline text-#4E7EE8">
<img src="./images/yuny@2x.png" class="w25px mr5px mt--4px" />
<span>明道云</span>
</a>
</div>
<div class="px20px w100% h345px">
<!-- <table
class=" text-center mt23px text-18px w515px h300px text-#152242">
<thead
style="background-color: #417BEF;color: #fff; ">
<tr class="h51px">
<th class="w155px ">调查表名称</th>
<th>填表日期</th>
<th>填报状态</th>
</tr>
</thead>
<tbody ref="tabScll" class="text-18px overflow-y-auto h250px">
<tr class="h50px leading-25px " v-for="i in 20"
:style="{ backgroundColor: i % 2 === 0 ? '#f9f9f9' : '' }">
<td>供应商调查表</td>
<td>4月-5月</td>
<td>已提交</td>
</tr>
<tr v-if="rowsList" class="h50px leading-25px " v-for="i in rowsList"
:style="{ backgroundColor: i % 2 === 0 ? '#f9f9f9' : '' }">
<td>{{i.title}}</td>
<td>{{i.sheetCTime}}</td>
<td>{{i.status}}</td>
</tr>
</tbody>
</table> -->
<el-table :data="rowsList" stripe class="mt20px" :header-cell-style="{
'text-align': 'center',
'background-color': '#417BEF',
color: '#fff',
height: '51px',
'font-weight': '900',
'font-size': '18px',
}" height="305" :cell-style="{
height: '55px',
color: '#152242',
'font-size': '18px',
}">
<el-table-column property="title" label="调查表名称" align="left" />
<el-table-column property="fillCTime" label="填表日期" align="center" />
<el-table-column property="fillRangeDate" label="填表期间" align="center" />
<el-table-column property="status" label="填报状态" align="center" />
</el-table>
</div>
</div>
<div class="cards w560px h385px" style="height: ">
<div class="cards_title">留言板</div>
<!-- toDetail2(9) -->
<!-- <div class="cards_title" style="color: #417BEF; font-weight: normal; font-size: 16px; border: #417BEF 1px solid; padding: 10px; margin: 0;height: 40px;"></div> -->
<el-button type="primary" class="mt15px mr20px" @click="toAdd">+ 新增</el-button>
<div
class="flex text-#1270EE h50px w-full px30px leading-25px items-center text-center cards_liuyan font-800 text-18px">
<!-- <div class="flex-1" style="border-radius: 15px 0 0 15px;" :class="flgs === 3 ? 'onStyle' : ''"
@click="cardsClick(3)">供方动态</div> -->
<div class="flex-1" :class="flgs === 1 ? 'onStyle' : ''" @click="cardsClick(1)"
style="border-radius: 15px 0 0 15px;" > 供应商留言 </div>
<div class="flex-1" :class="flgs === 2 ? 'onStyle' : ''" @click="cardsClick(2)"
style="border-radius: 0 15px 15px 0"> 空调需求依赖</div>
</div>
<div class="text-#2c7af7 px-30px text-18px leading-25px">
{{flgs===1?'如您有任何想要向上海大金调达本部留言的内容,请点击右上角“新增”按钮留言':'如您有大金空调相关购买需求,欢迎您点击右上角“新增”按钮向我们提出'}}
</div>
<div ref="msgScoll" class="px20px h220px cent_box overflow-y-auto">
<div v-if="msgList !== null" class="text-#808696 w515px" v-for="(i, key) in msgList" :key="i">
<div class="truncate2" @click="toDetail(i, 'App_E_Message')">
<span class="text-#fff bg-#407DF1 px5px text-18px rounded-20px mr-5px inlineFlex">{{ ++key }}</span>
<!-- lujinli -->
<span v-if="flgs == 1 " class="text-18px">{{i.number }}</span>
<span v-if="flgs == 2 " class="text-18px">{{ i.demand + ' ' + i.location + ' ' + i.remark + ': ' + i.usdObj }}</span>
<span v-if="flgs == 3" class="text-18px">{{ i.title }}</span>
</div>
<div class="flex" >
<span class="text-18px ml-25px !p-0 truncate2 min-w-490px !max-w-490px block !overflow-unset"
v-if="i.chatVOList && i.chatVOList.length > 0" :title=" i.chatVOList[0].content">
<span class="bg-#9DBDFF text-#fff block w-100px float-left py5px pl-5px leftStyle" style="border-radius: 10px 0 0 10px ;">大金回复:</span>
<span class="bg-#EFF4FF !text-#247bd7 truncate2 min-w-390px !max-w-390px block float-left !pl-5px" style="border-radius: 0 10px 10px 0;">{{ i.chatVOList[0].content }} </span>
</span>
<!-- <span class="pt13px" v-if="i.chatVOList && i.chatVOList.length > 0">{{i.chatVOList[0].createTime}}</span> -->
</div>
<span v-if="flgs == 1" class="absolute right-40px top-10px"> {{ i.createTime}} </span>
<div class="absolute right-0px top-5px bg-#9A9A9A rd-10px px-5px flex" v-if="flgs == 1 && msgList !== null">
<!-- <img src="./images/chex@2x.png" alt="" class="w-28px py-5px px-5px" @click="faqWithdraws(i)">
<span class="block w-1px bg-#fff"></span> -->
<img src="./images/sahcc@2x.png" alt="" class="w-26px py-5px px-5px" @click="deleteMSG(i)">
</div>
<span v-if="flgs == 3" class="absolute right-0px top-18px">{{ i.createTime }}</span>
<span v-if="flgs == 2" class="absolute right-80px top-10px">{{ i.procureTime }}</span>
<div class="absolute right-0px top-5px bg-#9A9A9A rd-10px px-5px flex" v-if="flgs == 2">
<!-- <img src="./images/chex@2x.png" alt="" class="w-28px py-5px px-5px" @click="demandWithdraws(i)">
<span class="block w-1px bg-#fff"></span> -->
<img src="./images/sahcc@2x.png" alt="" class="w-26px py-5px px-5px" @click="deleteMSB(i)">
</div>
</div>
<div v-else class="text-#808696 w515px" >
<div>
<!-- lujinli -->
<span v-if="flgs == 1" class="text-18px" style="margin-left: 40%;display: flex; " >
<div v-if="!userCode">
<img src="./images/zanwly.png" alt="" style="margin-right: 50px;">
<span style="display: flex;margin: 5px auto;color: #DDE5FD">暂无提供方留言</span>
</div>
<div v-else>
<img src="./images/zanwly2.png" alt="" >
<span style="display: flex;margin: 5px auto;color: #DDE5FD">您暂未留言</span>
</div>
</span>
<span v-if="flgs == 2" class="text-18px" style="margin-left: 40%;display: flex; " >
<div v-if="!userCode">
<img src="./images/zanwly.png" alt="" style="margin-right: 50px;">
<span style="display: flex;margin: 5px auto;color: #DDE5FD">暂无提供方留言</span>
</div>
<div v-else>
<img src="./images/zanwly2.png" alt="" >
<span style="display: flex;margin: 5px auto;color: #DDE5FD">您暂未留言</span>
</div>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<n-modal v-model:show="shormA" class="w-940px h740px rd-20px relative bg-#fff">
<div>
<div style="
margin-top: 18px;
margin-left: 20px;
font-weight: 600;
width: 144px;
height: 58px;
font-size: 24px;
text-align: left;
color: #142142 100%;
">
供应商留言版
</div>
<div class="absolute right-30px top-20px">
<NIcon size="40" color="#ccc" style="
font-size: 20px;
margin: 10px;
width: 18.09px;
height: 18.21px;
color: #b2b2b2;
" @click="close1">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 32 32">
<path
d="M24 9.4L22.6 8L16 14.6L9.4 8L8 9.4l6.6 6.6L8 22.6L9.4 24l6.6-6.6l6.6 6.6l1.4-1.4l-6.6-6.6L24 9.4z"
fill="currentColor"></path>
</svg>
</NIcon>
</div>
<!-- 内容区 -->
<div style="
border-top: 1px solid #e1e1e1;
width: 100%;
padding-top: 38px;
padding-left: 38px;
">
<span style="
font-weight: 600;
width: 853px;
height: 19px;
font-size: 18px;
text-align: left;
color: #142142 100%;
">为更好地构筑与各供应商的合作伙伴关系,各司可随时通过本平台进行留言,我们将及时跟进并反馈给贵司。</span>
<div style="
font-weight: 400;
height: 18px;
font-size: 18px;
text-align: left;
color: #142142 100%;
margin-top: 30px;
margin-bottom: 20px;
">
1.贵司短期或中长期是否有国内外建厂(事务所)计划?
</div>
<div style="
margin-top: 20px;
width: 838px;
height: 36px;
border-radius: 5px 5px 5px 5px;
background: #ffffff;
">
<el-input v-model="fromtA.question1" style="height: 36px" />
</div>
<div style="
font-weight: 400;
height: 18px;
font-size: 18px;
text-align: left;
color: #142142 100%;
margin-top: 30px;
margin-bottom: 20px;
">
2.贵司近期是否有开发新产品/新领域的项目?(若有,请进行简单的介绍。)
</div>
<div style="
margin-top: 20px;
width: 838px;
height: 36px;
border-radius: 5px 5px 5px 5px;
background: #ffffff;
">
<el-form-item>
<el-input v-model="fromtA.question2" style="height: 36px" />
</el-form-item>
</div>
<div style="
font-weight: 400;
height: 18px;
font-size: 18px;
text-align: left;
color: #142142 100%;
margin-top: 30px;
margin-bottom: 20px;
">
3.目前在使用大金的线上化系统中是否有不便、希望改善之处含HOMEPAGE、明道云线上调查表等
</div>
<div style="
margin-top: 20px;
width: 838px;
height: 36px;
border-radius: 5px 5px 5px 5px;
background: #ffffff;
">
<el-form-item>
<el-input v-model="fromtA.question3" style="height: 36px" />
</el-form-item>
</div>
<div style="
font-weight: 400;
height: 18px;
font-size: 18px;
text-align: left;
color: #142142 100%;
margin-top: 30px;
margin-bottom: 20px;
">
4.在与我们的合作中,是否有其他愿景或建议?
</div>
<div style="
margin-top: 20px;
width: 838px;
height: 36px;
border-radius: 5px 5px 5px 5px;
background: #ffffff;
">
<el-form-item>
<el-input v-model="fromtA.question4" style="height: 36px" />
</el-form-item>
</div>
</div>
<div style="
margin-top: 82px;
border-top: 1px solid #e1e1e1;
width: 100%;
height: 74px;
position: relative;
">
<div style="position: absolute; bottom: 0; right: 12px">
<span
class="inline-block w80px h25px text-#bfbfbf border border-solid text-center rounded-5px cursor-pointer"
@click="shormA = false" style="
width: 100px;
height: 38px;
border-radius: 5px 5px 5px 5px;
background: #ffffff;
">
<div style="
font-weight: 400;
height: 16px;
font-size: 16px;
text-align: left;
color: #999999 100%;
line-height: 34px;
padding-left: 34px;
margin-right: 8px;
">
取消
</div>
</span>
<span class="inline-block w80px h25px text-#fff bg-#236EED ml5px text-center rounded-5px cursor-pointer"
style="
width: 100px;
height: 38px;
border-radius: 5px 5px 5px 5px;
background: #3870e5;
" @click="addClickA">
<div style="
font-weight: 400;
height: 16px;
font-size: 16px;
text-align: left;
color: #ffffff 100%;
line-height: 34px;
padding-left: 34px;
">
提交
</div>
</span>
</div>
</div>
</div>
</n-modal>
<n-modal v-model:show="shormB" :mask-closable="false" style="
width: 939.99px;
height: 740px;
border-radius: 20px 20px 20px 20px;
background: #ffffff;
position: relative;
">
<div>
<div style="
margin-top: 18px;
margin-left: 20px;
font-weight: 600;
width: 144px;
height: 58px;
font-size: 24px;
text-align: left;
color: #142142 100%;
">
空调需求依赖
</div>
<div class="absolute right-30px top-20px">
<NIcon size="40" color="#ccc" style="
font-size: 20px;
margin: 10px;
width: 18.09px;
height: 18.21px;
color: #b2b2b2;
" @click="close1">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 32 32">
<path
d="M24 9.4L22.6 8L16 14.6L9.4 8L8 9.4l6.6 6.6L8 22.6L9.4 24l6.6-6.6l6.6 6.6l1.4-1.4l-6.6-6.6L24 9.4z"
fill="currentColor"></path>
</svg>
</NIcon>
</div>
<div style="
border-top: 1px solid #e1e1e1;
width: 100%;
padding-left: 38px;
">
<div style="
font-weight: 700;
height: 18px;
font-size: 18px;
text-align: left;
color: #142142 100%;
margin-top: 30px;
margin-bottom: 20px;
">
<span style="color: red">*</span>需求依赖:
</div>
<div style="
margin-top: 20px;
width: 838px;
height: 36px;
border-radius: 5px 5px 5px 5px;
background: #ffffff;
">
<el-radio-group v-model="fromtB.usdObj" class="ml-4">
<el-radio label="公司" size="large">公司</el-radio>
<el-radio label="个人" size="large">个人</el-radio>
</el-radio-group>
</div>
<div style="
font-weight: 700;
height: 18px;
font-size: 18px;
text-align: left;
color: #142142 100%;
margin-top: 30px;
margin-bottom: 20px;
">
<span style="color: red">*</span>使用对象:
</div>
<div style="
margin-top: 20px;
width: 838px;
height: 36px;
border-radius: 5px 5px 5px 5px;
background: #ffffff;
">
<el-radio-group v-model="fromtB.demand" class="ml-4">
<el-radio label="家用机" size="large">家用机</el-radio>
<el-radio label="商用机" size="large">商用机</el-radio>
</el-radio-group>
</div>
<div style="
font-weight: 700;
height: 18px;
font-size: 18px;
text-align: left;
color: #142142 100%;
margin-top: 30px;
margin-bottom: 20px;
">
<span style="color: red">*</span>安装位置:
</div>
<div style="
margin-top: 20px;
width: 838px;
height: 36px;
border-radius: 5px 5px 5px 5px;
background: #ffffff;
">
<el-form-item>
<el-input v-model="fromtB.location" style="height: 36px" />
</el-form-item>
</div>
<div style="
font-weight: 700;
height: 18px;
font-size: 18px;
text-align: left;
color: #142142 100%;
margin-top: 30px;
margin-bottom: 20px;
">
<span style="color: red">*</span>采用期限:
</div>
<div style="
margin-top: 20px;
width: 838px;
height: 36px;
border-radius: 5px 5px 5px 5px;
background: #ffffff;
">
<el-form-item>
<el-input v-model="fromtB.procureTime" style="height: 36px" />
</el-form-item>
</div>
<div style="
font-weight: 700;
height: 18px;
font-size: 18px;
text-align: left;
color: #142142 100%;
margin-top: 30px;
margin-bottom: 20px;
">
<span style="color: red">*</span>备注:
</div>
<div style="
margin-top: 20px;
width: 838px;
height: 36px;
border-radius: 5px 5px 5px 5px;
background: #ffffff;
">
<el-form-item>
<el-input v-model="fromtB.remark" style="height: 36px" />
</el-form-item>
</div>
</div>
<div style="
margin-top: 62px;
border-top: 1px solid #e1e1e1;
width: 100%;
height: 74px;
position: relative;
">
<div style="position: absolute; bottom: 0; right: 12px">
<span
class="inline-block w80px h25px text-#bfbfbf border border-solid text-center rounded-5px cursor-pointer"
@click="shormB=false" style="
width: 100px;
height: 38px;
border-radius: 5px 5px 5px 5px;
background: #ffffff;
">
<div style="
font-weight: 400;
height: 16px;
font-size: 16px;
text-align: left;
color: #999999 100%;
line-height: 34px;
padding-left: 34px;
margin-right: 8px;
">
取消
</div>
</span>
<span class="inline-block w80px h25px text-#fff bg-#236EED ml5px text-center rounded-5px cursor-pointer"
style="
width: 100px;
height: 38px;
border-radius: 5px 5px 5px 5px;
background: #3870e5;
" @click="addClickB">
<div style="
font-weight: 400;
height: 16px;
font-size: 16px;
text-align: left;
color: #ffffff 100%;
line-height: 34px;
padding-left: 34px;
">
提交
</div>
</span>
</div>
</div>
</div>
</n-modal>
<n-modal v-model:show="shorm" :mask-closable="false">
<div class="w700px h430px bg-#fff rd-15px">
<div class="py5px px15px" style="
border-bottom: 1px solid #dadada;
font-weight: bold;
color: #494a63;
">
大金空调中国相关
<img @click="shorm = false" src="@/assets/images/chac@2x.png" class="w15px float-right mt5px mr5px" />
</div>
<div class="flex mt70px text-center">
<div class="w-full text-center">
<img src="@/assets/images/ewm1@2x.png" class="w200px" />
<div class="py10px bg-#377CFF text-#fff w200px rd-20px mt35px mx-auto">
大金空调中国视频号
</div>
</div>
<div class="w-full">
<img src="@/assets/images/ewm2@2x.png" class="w200px" />
<div class="py10px bg-#377CFF text-#fff w200px rd-20px mt35px mx-auto">
大金空调抖音号
</div>
</div>
</div>
</div>
</n-modal>
</template>
<style scoped lang="less">
.onStyle {
background: #2c7af7;
color: #fff;
}
.leftStyle{
position: relative;
}
.leftStyle::after{
content: "";
position: absolute;
top: -9px;
left: 50%; /* 居中 */
transform: translateX(-50%);
border-left: 9px solid transparent; /* 左侧边的宽度,可以调整大小 */
border-right:9px solid transparent; /* 右侧边的宽度,保持与左侧一致 */
border-bottom: 10px solid #9DBDFF;
}
.cards_liuyan {
div {
border: 1px solid #2c7af7;
padding: 5px 0;
}
}
.inlineFlex {
display: inline-flex;
width: 25px;
height: 25px;
line-height: 25px;
align-items: center;
justify-content: center;
}
// .icons {
// background: url('./images/wjt1@2x.png');
// background-repeat: round;
// }
.bk-tuann {
background: url("./images/tuann.png");
background-position: right bottom;
background-repeat: no-repeat;
background-size: 207px 180px;
}
::-webkit-scrollbar {
width: 1px;
}
.truncate2 {
max-width: 370px;
overflow: hidden;
padding: 5px 0;
line-height: 30px;
text-overflow: ellipsis;
white-space: nowrap;
color: #142142;
cursor: pointer;
a {
text-decoration: none;
}
}
.truncate {
max-width: 395px;
min-width: 100px;
overflow: hidden;
padding: 10px 0 10px 10px;
line-height: 30px;
text-overflow: ellipsis;
white-space: nowrap;
}
.badge-new {
// width: 40px;
height: 20px;
}
.truncate-box {
width: 575px;
overflow: hidden;
height: 50px;
margin: 10px 0;
background: #f9f9f9;
cursor: pointer;
}
.badge-24 {
box-sizing: border-box;
height: 24px;
display: inline-block;
line-height: 24px;
padding: 0 5px;
}
.truncate-box:hover {
background-color: #2c7af7;
color: #fff;
border-radius: 5px;
// .icons {
// background: url('./images/wjt2@2x.png');
// background-repeat: round;
// }
}
.cards_nav {
position: absolute;
top: 0;
right: 0;
width: 276px;
height: 66px;
background-position: top right;
background-repeat: no-repeat;
background-size: contain;
font-size: 20px;
color: #fff;
display: flex;
justify-content: space-between;
align-items: flex-end;
padding-left: 38px;
padding-right: 22px;
padding-bottom: 20px;
}
.cards_nav2 {
background-image: url("@/assets/images/youj@2x.png");
}
.cards_title {
flex-shrink: 0;
font-size: 28px;
color: #142142;
padding: 20px;
font-weight: bold;
padding-bottom: 0;
}
.icoT {
padding: 5px;
color: #fff;
background-color: #002aae;
border-radius: 5px;
font-size: 16px;
}
.cards {
border-radius: 18px;
// overflow: hidden;
background-color: #fff;
box-shadow: 1px 2px 12px rgba(14, 86, 221, 0.32);
display: flex;
// flex-direction: column;
flex-wrap: wrap;
align-content: space-between;
justify-content: space-between;
&::after {
content: " ";
background-image: url("@/assets/images/bg-card.svg");
pointer-events: none;
display: block;
width: 100%;
height: 127px;
background-size: cover;
position: absolute;
left: 0;
top: -1px;
}
}
.top {
position: absolute;
right: 30px;
top: -72px;
}
.page {
font-family: "PingFang SC";
user-select: none;
// background-image: url("@/assets/images/bg.jpg");
// background-color: #000;
background-position: 0 0;
background-repeat: no-repeat;
background-size: cover;
color: #fff;
line-height: 1;
}
.main {
background-image: url("@/assets/images/bg-rs-main.svg");
background-position: 0 0;
background-repeat: repeat-x;
background-size: auto;
}
.right20 {
margin-right: 20px;
}
.page-wrapper {
.cards {
&::after {
content: " ";
// background-image: url('@/assets/images/bg-cards.svg');
pointer-events: none;
display: block;
width: 100%;
height: 127px;
background-size: cover;
position: absolute;
left: 0;
top: -1px;
}
.cards_title {
flex-shrink: 0;
font-size: 28px;
color: #142142;
padding: 20px;
padding-bottom: 0;
}
}
}</style>