优化客户端展示

This commit is contained in:
龙运模 2024-11-22 19:59:18 +08:00
parent c5730240ac
commit c9ea49826c
18 changed files with 531 additions and 27 deletions

View File

@ -7,16 +7,13 @@ VUE_APP_TITLE = 象纬云科
# 测试环境
VUE_APP_API_BASEURL = https://dev.api.linkwing.com/api/v1
VUE_APP_API_DEV = https://dev.api.linkwing.com/api/v1
VUE_APP_WS_URL = wss://dev.api.linkwing.com/wss
VUE_APP_WSS_URL = wss://dev.api.linkwing.com/wss
# 线上环境
# 接口地址
# 接口地址 # WS地址
# VUE_APP_API_BASEURL = https://prod.api.linkwing.com/api/v1
# VUE_APP_API_DEV = https://prod.api.linkwing.com/api/v1
# WS地址
# VUE_APP_WS_URL = wss://prod.api.linkwing.com/wss
# VUE_APP_WSS_URL = wss://prod.api.linkwing.com/wss

View File

@ -0,0 +1,13 @@
<template>
<svg t="1732261148051" class="icon" viewBox="0 0 1080 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6003" width="200" height="200"><path d="M1021.6772075 970.46406594H55.36919937c-12.88213594 0-23.36919938-9.718275-23.36919937-21.68377875V53.74291625C32 41.79712531 42.48706343 32.08870625 55.36919937 32.08870625h966.30800813c12.88213594 0 23.36919938 9.70841906 23.36919938 21.68377875v895.03737094c0 11.93593406-10.48706345 21.65420906-23.36919938 21.65421zM55.36919937 33.66570875C43.354415 33.66570875 33.5770025 42.67433281 33.5770025 53.74291625v895.06693969c0 11.06858343 9.7774125 20.0772075 21.79219688 20.07720751h966.30800812c12.01478438 0 21.78234094-9.00862406 21.78234094-20.07720751V53.74291625c0-11.06858343-9.76755655-20.0772075-21.78234094-20.0772075z" fill="" p-id="6004"></path><path d="M986.86488687 970.55277219H91.79794625a21.68377781 21.68377781 0 0 1-21.68377781-21.68377875V53.68377781a21.68377781 21.68377781 0 0 1 21.68377781-21.68377781h895.06694063a21.68377781 21.68377781 0 0 1 21.68377875 21.68377781v895.14579094a21.68377781 21.68377781 0 0 1-21.68377875 21.72320344zM91.79794625 33.5770025A20.12648906 20.12648906 0 0 0 71.72073969 53.68377781v895.14579094a20.12648906 20.12648906 0 0 0 20.07720656 20.11663219h895.06694063a20.12648906 20.12648906 0 0 0 20.0772075-20.11663219V53.68377781a20.12648906 20.12648906 0 0 0-20.0772075-20.10677531z" fill="" p-id="6005"></path><path d="M1004.28090313 992H74.38193001a39.50390156 39.50390156 0 0 1 0-79.00780313h929.89897312a39.50390156 39.50390156 0 0 1 0 79.00780313zM566.9683775 321.54743281h-303.572895a39.50390156 39.50390156 0 0 1 0-79.00780219h303.572895a39.50390156 39.50390156 0 1 1 0 79.00780219zM566.9683775 521.56057531h-303.572895a39.50390156 39.50390156 0 0 1 0-79.00780312h303.572895a39.50390156 39.50390156 0 1 1 0 79.00780312z" fill="" p-id="6006"></path><path d="M663.86529781 113.481725a7.88501063 7.88501063 0 0 1 7.83572907 7.88500969v791.25092437H149.94004062V121.31745406a7.88501063 7.88501063 0 0 1 7.88501063-7.88501063h506.04024656m0-79.00780312H157.77576969A86.84353219 86.84353219 0 0 0 70.93223844 121.31745406v829.73962969a40.5683775 40.5683775 0 0 0 40.5683775 40.56837844h589.95646781a49.28131406 49.28131406 0 0 0 49.281315-49.28131406v-821.02669407a86.84353219 86.84353219 0 0 0-86.87310094-86.84353218z" fill="" p-id="6007"></path><path d="M917.43737187 579.80123187a7.88501063 7.88501063 0 0 1 7.83572907 7.88501063v324.93141656H751.50718719V587.63696094a7.82587312 7.82587312 0 0 1 7.82587218-7.88501063h158.1043125m1e-8-79.00780219H759.39219687a86.83367531 86.83367531 0 0 0-86.83367531 86.84353126V969.42915781a22.19630345 22.19630345 0 0 0 22.19630344 22.19630438h275.69938406a33.83655001 33.83655001 0 0 0 33.82669407-33.82669406V587.63696094a86.84353219 86.84353219 0 0 0-86.84353125-86.84353219z" fill="" p-id="6008"></path></svg>
</template>
<script>
export default {
name: "CompanyServe"
}
</script>
<style scoped>
</style>

View File

@ -0,0 +1,13 @@
<template>
<svg t="1732263768160" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6424" width="200" height="200"><path d="M256 368h64v32h-64z" fill="" p-id="6425"></path><path d="M294.4 240h-16c-6.4 0-16 6.4-16 16v80H256c-16 0-32 16-32 32v32c0 16 16 32 32 32h64c16 0 32-16 32-32v-32c0-16-16-32-32-32h-9.6v-80c0-9.6-6.4-16-16-16z" p-id="6426"></path><path d="M262.4 640c0 9.6 6.4 16 16 16h16c9.6 0 16-6.4 16-16V464h-48v176z" fill="" p-id="6427"></path><path d="M310.4 464h-48v176c0 9.6 6.4 16 16 16h16c9.6 0 16-6.4 16-16V464z" p-id="6428"></path><path d="M448 496v-32h48c-9.6 9.6-22.4 19.2-32 32h-16z" fill="" p-id="6429"></path><path d="M486.4 240h-16c-9.6 0-16 6.4-16 16v176H448c-16 0-32 16-32 32v32c0 16 16 32 32 32h32c16-22.4 38.4-44.8 64-60.8V464c0-16-16-32-32-32h-6.4V256c-3.2-9.6-9.6-16-19.2-16z" p-id="6430"></path><path d="M640 368h64v25.6h-19.2c-16 0-28.8 0-44.8 3.2V368z" fill="" p-id="6431"></path><path d="M678.4 240h-16c-9.6 0-16 6.4-16 16v80H640c-16 0-32 16-32 32v32c0 16 9.6 25.6 22.4 28.8 16-3.2 35.2-6.4 54.4-6.4 12.8 0 22.4 0 35.2 3.2 9.6-6.4 16-16 16-28.8v-32c0-16-16-32-32-32h-6.4V256c-3.2-9.6-9.6-16-19.2-16z" p-id="6432"></path><path d="M96 720z m736-576z" fill="" p-id="6433"></path><path d="M832 112H128c-35.2 0-64 28.8-64 64v544c0 35.2 28.8 64 64 64h326.4c-9.6-19.2-16-41.6-19.2-64H128V176h704v297.6c25.6 19.2 48 41.6 64 67.2V176c0-35.2-28.8-64-64-64z" p-id="6434"></path><path d="M819.2 787.2l-16 12.8c9.6-9.6 19.2-19.2 25.6-32l-9.6 19.2 102.4 83.2-102.4-83.2z m-134.4 64z m0 0z m0 0z m172.8-172.8z m0 0z" fill="" p-id="6435"></path><path d="M684.8 473.6c-112 0-204.8 92.8-204.8 204.8 0 112 92.8 204.8 204.8 204.8 51.2 0 99.2-19.2 134.4-51.2l96 76.8c3.2 3.2 6.4 3.2 9.6 3.2 3.2 0 9.6-3.2 12.8-6.4l19.2-25.6c6.4-6.4 3.2-16-3.2-22.4L860.8 784c19.2-32 28.8-67.2 28.8-102.4 0-118.4-92.8-208-204.8-208z m0 345.6c-76.8 0-140.8-64-140.8-140.8s64-140.8 140.8-140.8 140.8 64 140.8 140.8-64 140.8-140.8 140.8z" p-id="6436"></path><path d="M96 848c-19.2 0-32 12.8-32 32s12.8 32 32 32h496c-35.2-12.8-67.2-35.2-92.8-64H96z" fill="" p-id="6437"></path><path d="M499.2 848H96c-19.2 0-32 12.8-32 32s12.8 32 32 32h496c-38.4-12.8-67.2-35.2-92.8-64z" p-id="6438"></path></svg>
</template>
<script>
export default {
name: "ComponentQuery"
}
</script>
<style scoped>
</style>

View File

@ -0,0 +1,13 @@
<template>
<svg t="1732261233824" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6322" width="200" height="200"><path d="M910.88545713 682.03988018l32.05837089 56.65276933-367.4068708 206.87029805a127.82561396 127.82561396 0 0 1-124.84818281 0.28550742L80.05975244 739.50838437l31.81365-56.77512978 370.62902197 206.34007061a62.40369815 62.40369815 0 0 0 60.9761628 0l367.40686992-206.87029805z m0-195.12371953l32.05837089 56.65276933-367.4068708 206.87029804a127.82561396 127.82561396 0 0 1-124.84818281 0.28550655L80.05975244 544.38466396l31.81365-56.7751289 370.62902197 206.34007061a62.40369815 62.40369815 0 0 0 60.9761628-1e-8l367.40686992-206.87029805zM558.2433834 74.07287246l371.97498428 207.80839248a47.23103408 47.23103408 0 0 1 0 82.55234355l-371.97498429 207.80839248a95.11465605 95.11465605 0 0 1-92.74902539 0L93.51937373 364.43360849a47.23103408 47.23103408 0 0 1 0-82.55234355L465.49435801 74.07287246a95.11465605 95.11465605 0 0 1 92.74902539 0z m-60.85380234 56.73434238l-344.24000684 192.30943535 344.24000683 192.30943536a29.73352675 29.73352675 0 0 0 28.99936582 0l344.24000684-192.30943536-344.24000684-192.30943535a29.73352675 29.73352675 0 0 0-29.04015234 0z" fill="" p-id="6323"></path></svg>
</template>
<script>
export default {
name: "Myproduct"
}
</script>
<style scoped>
</style>

View File

@ -0,0 +1,13 @@
<template>
<svg t="1732263711983" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6262" width="200" height="200"><path d="M400.7 860.6H169.6c-19.3 0-33.9-14.6-33.9-33.9V163.3c0-19.3 14.6-33.9 33.9-33.9H700c19.3 0 33.9 14.6 33.9 33.9v199.5c0 18.6 14 32.6 32.6 32.6s32.6-14 32.6-32.6V163.3c0-26.6-10.3-51.5-28.9-70.2-18.7-18.7-43.6-28.9-70.2-28.9H169.6c-26.6 0-51.5 10.3-70.2 28.9-18.7 18.7-28.9 43.6-28.9 70.2v663.4c0 26.6 10.3 51.5 28.9 70.2 18.7 18.7 43.6 28.9 70.2 28.9h232.8c18.6 0 32.6-14 32.6-32.6 0-18.2-15.1-32.6-34.3-32.6z" fill="" p-id="6263"></path><path d="M415.9 494.2c0-18.6-14-32.6-32.6-32.6H236.1c-18.6 0-32.6 14-32.6 32.6s14 32.6 32.6 32.6h147.3c17.9 0 32.5-14.6 32.5-32.6zM819.6 779.3l1.5-2.1c23.2-33.7 37-71.4 39.9-108.9 6.1-60.3-10.9-118.4-48-163.6-37-45.2-90.6-73.4-151-79.5-8.5-0.9-16.3-1.3-24-1.3-55.3 0-107.8 20-147.9 56.3-40.3 36.6-65.6 87.6-71.3 143.8-6.1 60.3 10.9 118.4 48 163.6 37 45.2 90.6 73.4 150.9 79.5 9.4 1 17.9 1.5 25.9 1.5 43.7 0 85.5-12.7 120.9-36.7l2-1.4 135.7 129.3h0.8l50.6-52.1v-0.8l-134-127.6z m-30.2-118.7c-7.4 75.3-73 134.3-149.4 134.3-4.8 0-9.8-0.2-14.4-0.7-81.5-8-141.5-81.5-133.5-163.9C499.5 555 565 496 641.3 496c4.8 0 9.7 0.2 14.6 0.7 81.5 8.1 141.4 81.6 133.5 163.9zM236.1 661.1c-18.6 0-32.6 14-32.6 32.6s14 32.6 32.6 32.6h99.8c18.6 0 32.6-14 32.6-32.6s-14-32.6-32.6-32.6h-99.8zM666.1 296.3c0-18.6-14-32.6-32.6-32.6H236.1c-18.6 0-32.6 14-32.6 32.6s14 32.6 32.6 32.6h397.4c17.1 0 32.6-15.5 32.6-32.6z" fill="" p-id="6264"></path></svg>
</template>
<script>
export default {
name: "OrderQuery"
}
</script>
<style scoped>
</style>

View File

@ -0,0 +1,13 @@
<template>
<svg t="1732260849101" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12477" width="200" height="200"><path d="M650.24 896H211.2a48 48 0 0 1-48.64-48V176A48.64 48.64 0 0 1 211.2 128h543.36a48.64 48.64 0 0 1 48.64 48v301.44a32 32 0 0 0 32 32 32.64 32.64 0 0 0 32-32V176A112 112 0 0 0 754.56 64H211.2a112 112 0 0 0-112.64 112v669.44A112 112 0 0 0 211.2 960h439.04a32 32 0 0 0 32-32 32.64 32.64 0 0 0-32-32zM819.84 861.44a46.08 46.08 0 1 0 46.08 46.08 46.08 46.08 0 0 0-46.08-46.08z" fill="" p-id="12478"></path><path d="M403.84 266.24h256V332.8h-256z" fill="" p-id="12479"></path><path d="M321.28 298.88m-44.8 0a44.8 44.8 0 1 0 89.6 0 44.8 44.8 0 1 0-89.6 0Z" fill="" p-id="12480"></path><path d="M403.84 460.16h256v66.56h-256zM320 448a44.8 44.8 0 1 0 44.8 44.8A44.8 44.8 0 0 0 320 448zM403.84 652.8h190.72v66.56H403.84zM320 640a45.44 45.44 0 1 0 44.8 45.44A45.44 45.44 0 0 0 320 640zM819.2 549.12a104.96 104.96 0 0 0-107.52 103.04 32 32 0 0 0 32 32 32 32 0 0 0 32-32 42.24 42.24 0 0 1 43.52-39.04 39.68 39.68 0 0 1 42.24 39.04c0 12.16-5.12 17.92-21.76 33.92a138.24 138.24 0 0 0-51.2 111.36 32 32 0 0 0 32 32 32 32 0 0 0 32-32 77.44 77.44 0 0 1 32-64 106.88 106.88 0 0 0 40.96-80 103.68 103.68 0 0 0-106.24-104.32z" fill="" p-id="12481"></path></svg>
</template>
<script>
export default {
name: "Questionnaire"
}
</script>
<style scoped>
</style>

View File

@ -0,0 +1,13 @@
<template>
<svg t="1732263855874" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6594" width="200" height="200"><path d="M447.857 890.1125H191.6495c-35.19 0-63.7065-28.53-63.7065-63.7065V189.3995c0-35.19 28.521-63.7065 63.7065-63.7065h573.3045c35.1855 0 63.702 28.521 63.702 63.7065v217.989c22.9365 10.062 43.8975 23.3145 63.7065 38.2905V189.395C892.3625 119.0465 835.316 62 764.954 62h-573.3C121.301 62 64.25 119.0375 64.25 189.395v637.011c0 70.362 57.0465 127.4085 127.395 127.4085h320.2335a321.1065 321.1065 0 0 1-64.0215-63.702z" p-id="6595"></path><path d="M715.9895 481.049c-132.8175 0-240.48 107.667-240.48 240.4755S583.1855 962 715.994 962c132.8085 0 240.48-107.667 240.48-240.48 0-132.804-107.6715-240.471-240.48-240.471z m0 420.714c-99.5625 0-180.2655-80.712-180.2655-180.2655 0-99.5535 80.712-180.2655 180.2655-180.2655 99.5535 0 180.27 80.712 180.27 180.2655-0.0045 99.5535-80.7075 180.2655-180.27 180.2655z" p-id="6596"></path><path d="M817.1135 699.6365H748.79v-34.155a34.1685 34.1685 0 0 0-68.3325 0v68.319c0 18.8685 15.3 34.164 34.164 34.164h102.4875a34.164 34.164 0 0 0 0-68.328zM465.74 220.3235a33.9615 33.9615 0 0 0-48.033 0L303.8885 334.1465 258.317 288.575A32.805 32.805 0 0 0 211.94 334.9655l63.603 63.6075c1.44 2.4615 2.5875 4.995 4.7205 7.101 7.101 7.038 16.3935 10.0485 25.551 9.6975a32.8725 32.8725 0 0 0 23.2875-9.63c0.765-0.756 1.0935-1.7145 1.71-2.6055L465.74 268.2845a33.885 33.885 0 0 0 0-47.961z m112.248 58.4865a34.155 34.155 0 1 0 0 68.319h204.9615a34.155 34.155 0 0 0 34.155-34.164 34.155 34.155 0 0 0-34.155-34.155h-204.9615zM417.716 459.44l-113.8275 113.8275-45.5715-45.567a32.805 32.805 0 0 0-46.3815 46.3905l63.603 63.6075c1.44 2.457 2.5875 4.9905 4.7205 7.101 7.101 7.0335 16.3935 10.044 25.551 9.7065a32.8725 32.8725 0 0 0 23.2875-9.6345c0.765-0.7515 1.0935-1.71 1.71-2.592L465.74 507.41a34.02 34.02 0 0 0-1.683-46.35 34.011 34.011 0 0 0-46.341-1.62z" p-id="6597"></path></svg>
</template>
<script>
export default {
name: "TermQuery"
}
</script>
<style scoped>
</style>

View File

@ -49,6 +49,12 @@ export { default as Customer } from './Customer.vue'
export { default as Region } from './Region.vue'
export { default as SpareParts } from './SpareParts.vue'
export { default as Chat } from './Chat.vue'
export { default as CompanyServe } from './CompanyServe.vue'
export { default as Myproduct } from './Myproduct.vue'
export { default as Questionnaire } from './Questionnaire.vue'
export { default as OrderQuery } from './OrderQuery.vue'
export { default as ComponentQuery } from './ComponentQuery.vue'
export { default as TermQuery } from './TermQuery.vue'
export { default as File7z } from './file/7z.vue'
export { default as FileBmp } from './file/Bmp.vue'

View File

@ -53,7 +53,11 @@ axios.interceptors.response.use(
done();
},
}).then(() => {
try {
closeSock(true);
}catch(err) {
console.log(err)
}
tool.data.clear();
tool.cookie.remove("TOKEN");
router.replace({path: "/login"});

View File

@ -114,6 +114,7 @@ function sendSock(agentData) {
function closeSock(active) {
lockReconnect = active; // 主动断开时不重连
websocket.close();
return true
}
// 数据接收

View File

@ -0,0 +1,65 @@
<template>
<el-container>
<el-header class="serveTitle">公司更新信息</el-header>
<el-main class="serveMain">
<el-form ref="form" :model="form" :rules="rules">
<el-form-item label="更新公司信息" prop="company" label-position="top">
<el-input v-model="form.company" :size="size" class="formInput" type="text" placeholder="请输入公司信息"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="save" :size="size" :loading="isSave">提交申请</el-button>
</el-form-item>
</el-form>
</el-main>
</el-container>
</template>
<script>
export default {
name: "companyDetail",
data(){
return{
size:"small",
isSave:false,
form:{
company:""
},
rules:{
company:[
{required:true,message:"公司信息不能为空"}
]
}
}
},
mounted() {
},
methods:{
save(){
this.$refs.form.validate(async (valid) => {
if (valid) {
this.isSave = true;
const res = await this.$API.customer.orderSubmit.post(this.form);
this.isSave = false;
if(res.code == 200){
this.$message.success("操作成功");
this.form={
company:"",
}
}
}else{
return false;
}
})
}
}
}
</script>
<style scoped lang="scss">
.serveMain{
::v-deep .formInput{
width: 300px;
}
}
</style>

View File

@ -0,0 +1,142 @@
<template>
<el-container>
<el-header class="serveTitle">个人信息</el-header>
<el-main class="serveMain">
<el-form ref="form" :model="form" :rules="rules">
<el-form-item label="上传头像" prop="avatar" label-position="top">
<ossImgUpload @parentParams="parentParams" :url="form.avatar" />
<div class="el-form-item-msg">请将图片拖到此处或点击上传PNGJPEG</div>
</el-form-item>
<el-form-item label="账户名称" prop="name" label-position="top">
<el-input v-model="form.name" :size="size" class="formInput" type="text" placeholder="请输入账户名称"></el-input>
</el-form-item>
<el-form-item label="联系电话" prop="mobile" label-position="top">
<el-input v-model="form.mobile" :size="size" class="formInput" type="text" placeholder="请输入联系电话"></el-input>
</el-form-item>
<el-form-item label="验证码" prop="verify_code" label-position="top">
<div class="login-msg-yzm">
<el-input v-model="form.verify_code" :size="size" clearable placeholder="请输入验证码"></el-input>
<el-button style="margin-left:10px;" @click="getYzm" :disabled="disabled" type="primary" :size="size">获取验证码<span v-if="disabled"> ({{ time }})</span></el-button>
</div>
</el-form-item>
<el-form-item label="邮箱" prop="email" label-position="top">
<el-input v-model="form.company" :size="size" class="formInput" type="text" placeholder="请输入邮箱"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="save" :size="size" :loading="isSave"> </el-button>
</el-form-item>
</el-form>
</el-main>
</el-container>
</template>
<script>
export default {
name: "editAccount",
data(){
return{
size:"small",
isSave:false,
disabled:false,
time:60,
form:{
avatar:"",
mobile:"",
verify_code:"",
email:"",
},
rules:{
mobile:[
{required:true,message:"手机号不能为空"}
],
verify_code:[
{required:true,message:"验证码不能为空"}
],
email:[
{required:true,message:"邮箱不能为空"}
]
}
}
},
mounted() {
},
methods:{
// parentParams(item){
// this.form.avatar = item;
// },
//
async parentParams(files) {
let params = {
avatar:files
}
const res = await this.$API.user.uploadAvatar.post(params);
if (res.code == 200) {
this.$store.commit("SET_LOGIN_AVATAR", files);
}
},
async getYzm() {
const validate = await this.$refs.form.validateField("mobile").catch(() => {});
if (!validate) {
return false
}
const res = await this.$API.user.verifyCode.post({mobile: this.form.mobile});
if (res.code === 200) {
this.$message.success('短信已发送至手机号码');
this.disabled = true
this.time = 60
const t = setInterval(() => {
this.time -= 1
if (this.time < 1) {
clearInterval(t)
this.disabled = false
this.time = 0
}
}, 1000);
}
},
save(){
this.$refs.form.validate(async (valid) => {
if (valid) {
const res = await this.$API.user.editUser.post(this.form)
if (res.code === 200) {
this.$message.success("操作成功");
await this.getInfo();
}
} else {
return false
}
})
},
async getInfo() {
const res = await this.$API.user.getInformation.post();
if(res.code == 200){
const userInfo = JSON.parse(JSON.stringify(this.$TOOL.data.get('USER_INFO')));
// this.form.user = userInfo.login_name;
this.$store.commit("SET_LOGIN_AVATAR", res.data.avatar);
this.$store.commit("SET_LOGIN_NAME", res.data.name);
Object.assign(this.form,res.data);
Object.assign(userInfo,res.data);
this.$TOOL.data.set('USER_INFO',userInfo);
}
},
}
}
</script>
<style scoped lang="scss">
.serveMain{
::v-deep .formInput{
width: 300px;
}
}
.login-msg-yzm{
width: 300px;
display: flex;
align-items: center;
justify-content: space-between;
}
</style>

View File

@ -0,0 +1,106 @@
<template>
<el-container>
<el-header class="serveTitle">问题单</el-header>
<el-main class="serveMain">
<el-form ref="form" :model="form" :rules="rules">
<el-form-item label="问题类型" prop="type" label-position="top">
<div class="typeRow">
<el-button v-model="form.type" @click="form.type = item.value" :size="size" :type="form.type===item.value?'primary':''" class="typeCol" v-for="(item,index) in typeList" :key="index">{{item.label}}</el-button>
</div>
</el-form-item>
<el-form-item label="机器序列号" prop="serial_number" label-position="top">
<el-input v-model="form.serial_number" :size="size" class="formInput" type="text" placeholder="请输入您的序列号"></el-input>
</el-form-item>
<el-form-item label="购买时间" prop="purchase_time" label-position="top">
<el-date-picker v-model="form.purchase_time" :size="size" value-format="YYYY-MM-DD" class="formInput" placeholder="请选择您的购买时间"></el-date-picker>
</el-form-item>
<el-form-item label="备注" label-position="top">
<el-input v-model="form.remark" class="formInputText" :size="size" type="textarea" :rows="4" resize="none" :autosize="false" placeholder="请详细的描述您的问题"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="save" :size="size" :loading="isSave"> </el-button>
</el-form-item>
</el-form>
</el-main>
</el-container>
</template>
<script>
export default {
name: "problem",
data(){
return{
size:"small",
typeList:[],
isSave:false,
form:{
type:"",
serial_number:"",
purchase_time:"",
attachment:"",
remark:""
},
rules:{
type:[
{required:true,message:"问题类型不能为空"},
],
serial_number:[
{required:true,message:"机器序列号不能为空"},
],
purchase_time:[
{required:true,message:"购买时间不能为空"},
]
}
}
},
mounted() {
this.getTypeList();
},
methods:{
async getTypeList() {
const res = await this.$API.customer.serviceTypeList.post();
if(res.code === 200){
this.typeList = res.data;
}
},
save(){
this.$refs.form.validate(async (valid) => {
if (valid) {
this.isSave = true;
const res = await this.$API.customer.orderSubmit.post(this.form);
this.isSave = false;
if(res.code == 200){
this.$message.success("操作成功");
this.form={
type:"",
serial_number:"",
purchase_time:"",
attachment:"",
remark:""
}
}
}else{
return false;
}
})
}
}
}
</script>
<style scoped lang="scss">
.typeRow{
.typeCol{
margin-top: 5px;
margin-bottom: 5px;
}
}
.serveMain{
::v-deep .formInput{
width: 300px;
}
}
.formInputText{
width: 800px;
}
</style>

View File

@ -0,0 +1,62 @@
<template>
<el-container>
<el-header class="serveTitle">我的产品</el-header>
<el-main class="serveMain">
<div class="searchMain searchMainNoTop">
<div class="searchItem">
<div class="name">序列号</div> <el-input type="text" :size="size" placeholder="请输入序列号"></el-input>
</div>
<div class="searchItem searchBtn">
<el-button :size="size" type="primary" icon="el-icon-search" @click="upSearch">查询</el-button>
</div>
</div>
<div class="mainTable">
<el-table height="100%" ref="table" :data="list.data" :column="list.column" stripe :size="size">
<el-table-column type="index" label="序号"></el-table-column>
<template v-for="(item,index) in list.column" :key="index">
<el-table-column :label="item.label" :prop="item.prop" :width="item.width" show-overflow-tooltip></el-table-column>
</template>
</el-table>
</div>
</el-main>
</el-container>
</template>
<script>
export default {
name: "product",
data(){
return{
size:'small',
list:{
data:[
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
],
column:[
{label:'创建时间',prop:'created_at',width:160,show: true},
{label:'序列号',prop:'number',width:300,show: true},
{label:'部件名称',prop:'name',show: true},
]
}
}
},
mounted() {
},
methods:{
}
}
</script>
<style scoped>
</style>

View File

@ -33,12 +33,16 @@
<script>
import commonPage from "@/views/serveView/components/commonPage";
import footerPage from "@/views/serveView/components/footerPage";
import {defineAsyncComponent} from "vue";
export default {
name: "index",
components:{
commonPage,
footerPage,
editAccount: defineAsyncComponent(() => import('./components/editAccount')),
companyDetail: defineAsyncComponent(() => import('./components/companyDetail')),
product: defineAsyncComponent(() => import('./components/product')),
problem: defineAsyncComponent(() => import('./components/problem')),
},
data(){
return{
@ -53,7 +57,7 @@ export default {
component: "editAccount"
},
{
icon: "sc-icon-Password",
icon: "sc-icon-CompanyServe",
title: "更新公司信息",
component: "companyDetail"
},
@ -63,12 +67,12 @@ export default {
groupName: "自助服务",
list: [
{
icon: "sc-icon-Account",
icon: "sc-icon-Myproduct",
title: "我的产品",
component: "product"
},
{
icon: "sc-icon-Password",
icon: "sc-icon-Questionnaire",
title: "问题单",
component: "problem"
},
@ -90,7 +94,10 @@ export default {
<style scoped lang="scss">
.mainScroll ::v-deep .el-scrollbar__view{
height: calc(100% - 180px);
height: calc(100%);
}
.pageRight ::v-deep .mainTable .el-table .el-table__inner-wrapper:before{
height: 0;
}
.mainServeBody{

View File

@ -17,13 +17,15 @@
<div class="line"><span>自助服务</span></div>
<div class="line"><span>问题单</span></div>
</div>
</div>
</div>
<div class="copyright">
<div class="viewUl">
<div class="line"><span>Copyright @2024象纬云科有限公司</span></div>
<div class="line"><span>版权所有苏ICP备18028199号</span></div>
</div>
</div>
</div>
</div>
</template>
<script>
@ -43,9 +45,11 @@ export default {
<style lang="scss" scoped>
.serveFooter{
background: #f0f0f0;
padding: 20px;
border-top: 1px solid #f6f6f6;
background: #FFFFFF;
padding: 12px 0;
.footerView{
padding: 0 20px;
display: flex;
align-items: flex-start;
.footer-right{
@ -55,11 +59,23 @@ export default {
.viewUl{
margin: 0 50px;
.line{
padding:0 0 15px 0;
padding:0 0 12px 0;
font-size: 14px;
}
}
}
}
.copyright{
border-top: 1px solid #f6f6f6;
padding: 15px 20px 0 20px;
.viewUl{
margin: 0;
display: flex;
.line{
padding:0 40px 10px 0;
font-size: 14px;
}
}
}
}
</style>

View File

@ -51,6 +51,23 @@ export default {
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
{created_at:'2024-11-23 10:34:56',number:"XW1.5-1U-PWR-XW-01",name:"F62.32.C"},
],
column:[
{label:'创建时间',prop:'created_at',width:160,show: true},

View File

@ -1,6 +1,7 @@
<template>
<div class="mainServeBody">
<commonPage title="个人中心"></commonPage>
<el-main class="serveMain">
<el-scrollbar class="mainScroll">
<div class="pageBody">
@ -54,17 +55,17 @@ export default {
groupName: "服务支持",
list: [
{
icon: "sc-icon-Account",
icon: "sc-icon-TermQuery",
title: "维保期限查询",
component: "term"
},
{
icon: "sc-icon-Password",
icon: "sc-icon-ComponentQuery",
title: "主控部件查询",
component: "widget"
},
{
icon: "sc-icon-Notice",
icon: "sc-icon-OrderQuery",
title: "订单号查询",
component: "order"
},
@ -97,9 +98,11 @@ export default {
<style scoped lang="scss">
.mainScroll ::v-deep .el-scrollbar__view{
height: calc(100% - 180px);
height: calc(100%);
}
.pageRight ::v-deep .mainTable .el-table .el-table__inner-wrapper:before{
height: 0;
}
.mainServeBody{
height: 100%;
display: flex;