From b47fce05ca353b37f455ec4bf22f0f2f5c3176c3 Mon Sep 17 00:00:00 2001 From: wwl Date: Fri, 2 Aug 2024 10:16:24 +0800 Subject: [PATCH] fix bugs --- components.d.ts | 1 - src/router/index.ts | 2 +- src/views/company/index.vue | 4 +- src/views/home/Home-bak.vue | 1123 +++++++++++++++++++++++ src/views/home/Home.vue | 3 +- src/views/home/cd/CD.vue | 134 ++- src/views/home/cd/chartData.ts | 21 +- src/views/home/market/Market-bak.vue | 556 +++++++++++ src/views/home/market/Market.vue | 525 ++++++----- src/views/home/market/MarketData-bak.ts | 473 ++++++++++ src/views/home/market/MarketData.ts | 843 +++++++++-------- 11 files changed, 3002 insertions(+), 683 deletions(-) create mode 100755 src/views/home/Home-bak.vue create mode 100755 src/views/home/market/Market-bak.vue create mode 100755 src/views/home/market/MarketData-bak.ts diff --git a/components.d.ts b/components.d.ts index 926b8c1..0ffb117 100644 --- a/components.d.ts +++ b/components.d.ts @@ -33,7 +33,6 @@ declare module 'vue' { ElOption: typeof import('element-plus/es')['ElOption'] ElPagination: typeof import('element-plus/es')['ElPagination'] ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm'] - ElPopover: typeof import('element-plus/es')['ElPopover'] ElProgress: typeof import('element-plus/es')['ElProgress'] ElRadio: typeof import('element-plus/es')['ElRadio'] ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] diff --git a/src/router/index.ts b/src/router/index.ts index fd10520..51acc1d 100755 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -260,7 +260,7 @@ const router = createRouter({ { path: '', name: 'Market', - component: () => import('@/views/home/market/Market.vue') + component: () => import('@/views/home/market/Market-bak.vue') }, { path: 'MarketDataModify', diff --git a/src/views/company/index.vue b/src/views/company/index.vue index 6535eba..19e8ea3 100755 --- a/src/views/company/index.vue +++ b/src/views/company/index.vue @@ -3,7 +3,7 @@ import HomeHead from '@/views/home/components/HomeHead.vue' // import HomeHeadSearch from '@/views/home/components/HomeHeadSearch.vue' import { useDate } from '@/views/home/hooks/useDate' -import { useMessage }from 'naive-ui' +import { useMessage } from 'naive-ui' import { cateFileList } from '@/api/daikin/base' @@ -67,7 +67,7 @@ const goFile = (row: any) => { if (!isSelect || isSelect === 2) { message.info('没有访问权限!') return - }· + } if (!filePath) { message.info('暂无文件') } diff --git a/src/views/home/Home-bak.vue b/src/views/home/Home-bak.vue new file mode 100755 index 0000000..4d147ec --- /dev/null +++ b/src/views/home/Home-bak.vue @@ -0,0 +1,1123 @@ + + + + + diff --git a/src/views/home/Home.vue b/src/views/home/Home.vue index 5c5625f..ee1eabe 100755 --- a/src/views/home/Home.vue +++ b/src/views/home/Home.vue @@ -719,7 +719,8 @@ function formatNumber(num = 0) {
AI差别化LAB
责任者:开发调达部
差别化研究T
- + +
({}) const option2 = ref({}) const optionMax = ref({}) @@ -61,6 +61,7 @@ const optionMin = ref({}) const chartRef = ref(null) const chartRef2 = ref(null) const loading = ref(false) +const echartRefs = ref({}) const part = ref('DIS') const partMin = ref('DIS') @@ -76,19 +77,92 @@ watchEffect(() => { ) }) -const chartClick = (it: any) => { - console.log('🚀 ~ file: CD.vue:39 ~ it:', it) - return - option.value.series?.forEach((item: any) => { - item.data.forEach((i: any) => { - i.itemStyle = {} - }) +const clickLegend = (it = 'max', name = '加工品') => { + // flag && + // echartRefs.value[it].dispatchAction({ + // type: 'legendInverseSelect' + // }) + echartRefs.value[it].dispatchAction({ + type: 'legendSelect', + name }) - option.value.series[it.seriesIndex].data[it.dataIndex].itemStyle = { - shadowColor: 'rgba(0, 0, 0, 0.7)', - shadowOffsetY: 10, - shadowBlur: 20 +} + +const triggerAction = (action, selected) => { + let legend = [] + for (let name in selected) { + if (selected.hasOwnProperty(name)) { + legend.push({ name: name }) + } } + this.chart.dispatchAction({ + type: action, + batch: legend + }) +} + +const isFirstUnSelect = (selected, legend) => { + if (selected[legend] === true) return false + let unSelectedCount = 0 + for (let name in selected) { + if (!selected.hasOwnProperty(name)) { + continue + } + if (selected[name] === false) { + unSelectedCount++ + } + } + return unSelectedCount === 1 +} + +const isAllUnSelected = (selected) => { + let selectedCount = 0 + for (let name in selected) { + if (!selected.hasOwnProperty(name)) { + continue + } + // selected对象内true代表选中,false代表未选中 + if (selected[name] === true) { + selectedCount++ + } + } + return selectedCount === 0 +} + +const chartClick = (it: any) => { + // it.selected && + // Object.keys(it.selected).forEach( + // (key: any) => + // it.selected[key] && + // echartRefs.value['max'].dispatchAction({ + // type: 'legendToggleSelect', + // name: key + // }) + // ) + // let selected = it.selected + // let legend = it.name + // // 使用legendToggleSelect动作将重新触发legendselectchanged事件,导致本函数重复运行从而丢失selected对象 + // if (selected !== undefined) { + // if (isFirstUnSelect(selected, legend)) { + // console.log(selected) + // console.log(legend) + // triggerAction('legendToggleSelect', selected) + // } else if (this.isAllUnSelected(selected)) { + // triggerAction('legendSelect', selected) + // } + // } + // clickLegend('max', it.name) + console.log('🚀 ~ file: CD.vue:80 ~ it:', it) + // option.value.series?.forEach((item: any) => { + // item.data.forEach((i: any) => { + // i.itemStyle = {} + // }) + // }) + // option.value.series[it.seriesIndex].data[it.dataIndex].itemStyle = { + // shadowColor: 'rgba(0, 0, 0, 0.7)', + // shadowOffsetY: 10, + // shadowBlur: 20 + // } // pieYear.value = (+it.name).toString().substring(2) } @@ -100,7 +174,7 @@ option2.value = totalBar const disBar = disBarCharData() optionMax.value = cloneDeep(disBar) -const maxBusSeeds = ref(['加工品', 'Device', '原材料', '进口品']) +const maxBusSeeds = ref(['加工品', '电器机能', '原材料', '输出入']) const maxBusSeedsOption = ref>({}) const maxBusSeedsOptionList = ref>({}) // const minBusSeeds = ref(['', '', '', '']) @@ -110,13 +184,14 @@ const showSupplier = ref(false) // CD-三个据点总发注金额饼状图 const getPartStatisRate = async (date?: Date) => { const y = date && new Date(date).getFullYear() + console.log('🚀 ~ file: CD.vue:111 ~ y :', y, year.value) let total = 0 const { data = [] } = await fetchPartStatisRate({ year: y || year.value }) option.value.series[0].data = data.map((item: any) => { total += item.amount return { name: item.part, value: item.amount } }) - option.value.graphic.style.text = '总计' + '\n' + formatNum(total) + option.value.graphic.style.text = '总计' + '\n' + formatNum(total) + '\n' + '百万元' } // 生产随机数 const randomData = () => { @@ -437,6 +512,7 @@ const beforeUpload = (file: any) => { v-model="year" type="year" placeholder="" + value-format="YYYY" @change="getPartStatisRate" :editable="false" :clearable="false" @@ -472,6 +548,7 @@ const beforeUpload = (file: any) => { v-model="yearTwo" type="year" placeholder="" + value-format="YYYY" @change="getPartminBusSeedsRate" :editable="false" :clearable="false" @@ -532,7 +609,13 @@ const beforeUpload = (file: any) => {
- + + + + + + diff --git a/src/views/home/market/Market.vue b/src/views/home/market/Market.vue index 31b2fdb..de93a89 100755 --- a/src/views/home/market/Market.vue +++ b/src/views/home/market/Market.vue @@ -7,21 +7,21 @@ import AppNewsBox from '@/components/AppNewsBox.vue' // import HomeHeadSearch from '@/views/home/components/HomeHeadSearch.vue' import { useDate } from '@/views/home/hooks/useDate' import zhCn from 'element-plus/dist/locale/zh-cn.mjs' -import { getList ,marketPreADD,getMarketUser,saveMarketUser,MarketDownload,MarketPreview,getCurrencyList,getMetalList} from '@/api/daikin/base' -import { NModal,NCard } from 'naive-ui' -import {formatDate} from '@/utils/format' +import { getList, marketPreADD, getMarketUser, saveMarketUser, MarketDownload, MarketPreview, getCurrencyList, getMetalList } from '@/api/daikin/base' +import { NModal, NCard } from 'naive-ui' +import { formatDate } from '@/utils/format' import { message } from '@/utils/message' import { useUserStore } from '@/stores/modules/user' import UserList from '@/views/home/intelligence/process/UserPages.vue' import Amtion from '@/components/amtion.vue' -import {noticeld} from '@/stores/modules/noticeId' +import { noticeld } from '@/stores/modules/noticeId' const store = useUserStore() const stores = noticeld() -const userCode = ['admin','shikuang_dandang','tech_service'].some((item) => - store.user.roleCode?.includes(item) +const userCode = ['admin', 'shikuang_dandang', 'tech_service'].some((item) => + store.user.roleCode?.includes(item) ) -const userCodes = ['admin','huilv_dandang','tech_service'].some((item) => - store.user.roleCode?.includes(item) +const userCodes = ['admin', 'huilv_dandang', 'tech_service'].some((item) => + store.user.roleCode?.includes(item) ) const { day, week } = useDate() const { push } = useRouter() @@ -35,27 +35,28 @@ const value2 = ref<[Date, Date]>([ currentDates.setMonth(currentDates.getMonth() - 11), new Date() ]) -const { chartRef: chartRef1, option: chartOption1,state } = Chart1() -const { chartRef: chartRef3, option: chartOption3 ,state2} = Chart3() -const { chartRef: chartRef4, option: chartOption4 ,state3} = Chart4() -const { chartRef: chartRef5, option: chartOption5,state4 } = Chart5() -const { chartRef: chartRef6, option: chartOption6 ,state5} = Chart6() +const { chartRef: chartRef1, option: chartOption1, state } = Chart1() +const { option: chartOption11 } = Chart1() +const { chartRef: chartRef3, option: chartOption3, state2 } = Chart3() +const { chartRef: chartRef4, option: chartOption4, state3 } = Chart4() +const { chartRef: chartRef5, option: chartOption5, state4 } = Chart5() +const { chartRef: chartRef6, option: chartOption6, state5 } = Chart6() const listData = ref() const listDatas = ref() async function getData() { - const {data} = await getList({type:2}) - const {data:ds} = await getList({type:1}) + const { data } = await getList({ type: 2 }) + const { data: ds } = await getList({ type: 1 }) listData.value = data listDatas.value = ds } const metal = ref() const currency = ref() -onMounted(async ()=>{ +onMounted(async () => { getData() - const {data} =await getCurrencyList() - const {data:dat} =await getMetalList() - if(dat&&dat!='null'&&dat.length>0){ + const { data } = await getCurrencyList() + const { data: dat } = await getMetalList() + if (dat && dat != 'null' && dat.length > 0) { metal.value = dat // .filter((item:any) => { // if(["Fe","lengmei"].includes(item.value)){ @@ -66,218 +67,218 @@ onMounted(async ()=>{ state4.number = dat[0].value console.log("🚀 ~ file: Market.vue:56 ~ metal:", metal) } - if(data&&data!='null'&&data.length>0){ + if (data && data != 'null' && data.length > 0) { currency.value = data from.value.labe2.radio = data[0].value - const dat = data[0].value.split(',') - state5.currencyCodeFrom =dat[0] - state5.currencyCodeTo =dat[1] - state2.currencyCodeFrom =dat[0] - state2.currencyCodeTo =dat[1] - state3.currencyCodeFrom =dat[0] - state3.currencyCodeTo =dat[1] + const dat = data[0].value.split(',') + state5.currencyCodeFrom = dat[0] + state5.currencyCodeTo = dat[1] + state2.currencyCodeFrom = dat[0] + state2.currencyCodeTo = dat[1] + state3.currencyCodeFrom = dat[0] + state3.currencyCodeTo = dat[1] } }) const src = ref(''); const srcType = ref() -const showModalRef2 =ref(false) -const lokeFuck = async (n)=>{ - const {id} =n - if(!id) return - let {data:{url}} = await MarketPreview({id}) - if(!url) { +const showModalRef2 = ref(false) +const lokeFuck = async (n) => { + const { id } = n + if (!id) return + let { data: { url } } = await MarketPreview({ id }) + if (!url) { message.info("没有可预览文件!") return } srcType.value = getLastSubstring(url) - if(['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx','pdf'].includes(srcType.value)){ + if (['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'pdf'].includes(srcType.value)) { // src.value = filePath // pdfShow.value = true - url='https://view.xdocin.com/view?src='+url - const screenWidth = window.screen.width; - const screenHeight = window.screen.height; - window.open(url, '', 'width=' + screenWidth + ',height=' + screenHeight + ',top=' + 0 + ',left=' + 0) + url = 'https://view.xdocin.com/view?src=' + url + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + window.open(url, '', 'width=' + screenWidth + ',height=' + screenHeight + ',top=' + 0 + ',left=' + 0) } - else{ + else { message.error("文件格式不是 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx','pdf'!") } - + } function getLastSubstring(str: string): string { - const lastIndex = str.lastIndexOf('.'); - if (lastIndex !== -1) { - return str.substring(lastIndex + 1); - } else { - return ''; - } + const lastIndex = str.lastIndexOf('.'); + if (lastIndex !== -1) { + return str.substring(lastIndex + 1); + } else { + return ''; + } } async function downloadFile(data: { id: any; title: string }) { console.log(data) - if(!data.id) return - try { + if (!data.id) return + try { const response = await MarketDownload({ id: data.id }) console.log(response) - var blob = new Blob([response.data]); - + var blob = new Blob([response.data]); + const downloadUrl = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = downloadUrl; link.download = response.fileName; // 替换为你要保存的文件名 link.click(); URL.revokeObjectURL(downloadUrl); - } catch (error) { + } catch (error) { message.error(error); - } } +} const tab = ref(false) const tab1 = ref(false) const tab2 = ref(false) -const names =ref('Cu') -const names1 =ref('100USD-CNY') -const names2 =ref('100USD-CNY') -const tabClick1 = (e)=>{ - - console.log(e.target.getAttribute('data-id')) - tab1.value=false -const dat =e.target.getAttribute('data-id').split(',') - names1.value =e.target.innerText - state2.currencyCodeFrom =dat[0] -state2.currencyCodeTo =dat[1] +const names = ref('Cu') +const names1 = ref('100USD-CNY') +const names2 = ref('100USD-CNY') +const tabClick1 = (e) => { + + console.log(e.target.getAttribute('data-id')) + tab1.value = false + const dat = e.target.getAttribute('data-id').split(',') + names1.value = e.target.innerText + state2.currencyCodeFrom = dat[0] + state2.currencyCodeTo = dat[1] } -const tabClick2 = (e)=>{ - - console.log(e.target.getAttribute('data-id')) - tab2.value=false - const dat =e.target.getAttribute('data-id').split(',') - names2.value =e.target.innerText - state3.currencyCodeFrom =dat[0] - state3.currencyCodeTo =dat[1] +const tabClick2 = (e) => { + + console.log(e.target.getAttribute('data-id')) + tab2.value = false + const dat = e.target.getAttribute('data-id').split(',') + names2.value = e.target.innerText + state3.currencyCodeFrom = dat[0] + state3.currencyCodeTo = dat[1] } -const tabClick= (e)=>{ - - console.log(e.target) - tab.value=false - state.type =e.target.getAttribute('data-id') - names.value =e.target.innerText +const tabClick = (e) => { + + console.log(e.target) + tab.value = false + state.type = e.target.getAttribute('data-id') + // names.value =e.target.innerText } -const tabShow = (num)=>{ - +const tabShow = (num) => { + // console.log(num) switch (num) { case 0: - tab.value = tab.value === false?true:false + tab.value = tab.value === false ? true : false break; - case 1: - tab1.value = tab1.value === false?true:false + case 1: + tab1.value = tab1.value === false ? true : false break; - case 2: - tab2.value = tab2.value === false?true:false + case 2: + tab2.value = tab2.value === false ? true : false break; } } const from = ref({ - label:{ - radio:'' + label: { + radio: '' }, - labe2:{ - radio:'' + labe2: { + radio: '' } }) const shomk = ref(false) const sdubList = ref({ - title:'', - fileList:[], + title: '', + fileList: [], }) -const shomks=(it)=>{ +const shomks = (it) => { sdubList.value.type = it // console.log(sdubList.value) - shomk.value =true + shomk.value = true } -async function onSubmit(){ - const {type,title ,fileList} = sdubList.value +async function onSubmit() { + const { type, title, fileList } = sdubList.value let filePath - if(fileList.length>0){ + if (fileList.length > 0) { // console.log(fileList) filePath = fileList[0].response.url } - const {msg,code} = await marketPreADD({type,title,filePath}) + const { msg, code } = await marketPreADD({ type, title, filePath }) if (code === 200) { message.success("修改成功") } else message.warning(msg) window.location.reload(); // console.log(sdubList.value) } const handleExceed: UploadProps['onExceed'] = (uploadFile: any, uploadFiles: any) => { - message.warning("当前只支持上传一个文件") + message.warning("当前只支持上传一个文件") } -const thisCka = (e)=>{ - if(value1.value){ - state4.startTime = formatDate(value1.value[0]).substring(0,10) - state4.endTime = formatDate(value1.value[1]).substring(0,10) +const thisCka = (e) => { + if (value1.value) { + state4.startTime = formatDate(value1.value[0]).substring(0, 10) + state4.endTime = formatDate(value1.value[1]).substring(0, 10) } - state4.number =e + state4.number = e console.log(e) } -const thisCka2 = (e)=>{ +const thisCka2 = (e) => { const dat = e.split(',') - if(value2.value){ - state5.startTime = formatDate(value2.value[0]).substring(0,10) - state5.endTime = formatDate(value2.value[1]).substring(0,10) + if (value2.value) { + state5.startTime = formatDate(value2.value[0]).substring(0, 10) + state5.endTime = formatDate(value2.value[1]).substring(0, 10) } - state5.currencyCodeFrom =dat[0] - state5.currencyCodeTo =dat[1] + state5.currencyCodeFrom = dat[0] + state5.currencyCodeTo = dat[1] } -const timenFirst=(e)=>{ +const timenFirst = (e) => { // console.log(e) - state4.startTime = formatDate(value1.value[0]).substring(0,10) - state4.endTime = formatDate(value1.value[1]).substring(0,10) + state4.startTime = formatDate(value1.value[0]).substring(0, 10) + state4.endTime = formatDate(value1.value[1]).substring(0, 10) } -const timenFirsts=(e)=>{ +const timenFirsts = (e) => { // console.log(e) - state5.startTime = formatDate(value2.value[0]).substring(0,10) - state5.endTime = formatDate(value2.value[1]).substring(0,10) + state5.startTime = formatDate(value2.value[0]).substring(0, 10) + state5.endTime = formatDate(value2.value[1]).substring(0, 10) } const header = { 'token': store.user.token } const showModal = ref(false) const flg = ref() -const setUserList =ref() +const setUserList = ref() async function getUser(moduleId: any) { - showModal.value = !showModal.value - flg.value = moduleId - const {data: userArr} = await getMarketUser({moduleId}) - stores.article.reviewSource = '2' - setUserList.value = userArr - + showModal.value = !showModal.value + flg.value = moduleId + const { data: userArr } = await getMarketUser({ moduleId }) + stores.article.reviewSource = '2' + setUserList.value = userArr + } - // 获取子组件传过来的值 - const handleChild = (data: any) => { +// 获取子组件传过来的值 +const handleChild = (data: any) => { console.log(data, 444); - const { showModal: show, multipleSelection } = data - showModal.value = unref(show) - // userList.value = multipleSelection - let userIdList: any[] =[] - multipleSelection.value.forEach((i: { userId: any })=>{ - // console.log(dataList.value) - userIdList.push(i.userId) - }) - - saveMarketUser({ + const { showModal: show, multipleSelection } = data + showModal.value = unref(show) + // userList.value = multipleSelection + let userIdList: any[] = [] + multipleSelection.value.forEach((i: { userId: any }) => { + // console.log(dataList.value) + userIdList.push(i.userId) + }) + + saveMarketUser({ moduleId: flg.value, userIdList: userIdList - }) - } - const CloseThiss = (data: boolean)=>{ - showModal.value = data - } + }) +} +const CloseThiss = (data: boolean) => { + showModal.value = data +}