dev
Wayne 2 years ago
parent ed33c2619c
commit a901838aa2

@ -6,7 +6,8 @@
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
"build": "vite build", "build": "vite build",
"preview": "vite preview" "preview": "vite preview",
"postbuild": "scp -r ./dist/* root@207.148.89.145:/www/wwwroot/prodio.zltest.com.tw/public/admin"
}, },
"dependencies": { "dependencies": {
"@ckeditor/ckeditor5-vue": "^5.1.0", "@ckeditor/ckeditor5-vue": "^5.1.0",

@ -1,7 +1,8 @@
import ajax from "@/utils/request"; import ajax from "@/utils/request";
export const getProductList = async () => export const getProductList = async (params) => {
ajax(`/product/getProductList`, "GET"); return ajax(`/product/getProductList`, "POST", params);
}
export const getProduct = async (id) => export const getProduct = async (id) =>
ajax(`/product/getProduct`, "GET" , { id }); ajax(`/product/getProduct`, "GET" , { id });

@ -9,6 +9,16 @@ import "./assets/css/common.less";
const app = createApp(App); const app = createApp(App);
app.directive('focus', {
// 將el-input的下的input元素聚焦
mounted(el) {
const inputElement = el.querySelector('input');
// Focus the element
inputElement.focus()
}
})
app.use(router); app.use(router);
app.use(store); app.use(store);
app.use(CKEditor); app.use(CKEditor);

@ -104,7 +104,7 @@ const handleShowContent = (row) => {
<el-table-column prop="name" label="聯絡人" width="180" /> <el-table-column prop="name" label="聯絡人" width="180" />
<el-table-column prop="email" label="E-mail" /> <el-table-column prop="email" label="E-mail" />
<el-table-column prop="tel" label="聯絡電話" /> <el-table-column prop="tel" label="聯絡電話" />
<el-table-column prop="address" label="地址" /> <el-table-column prop="create_time" label="留言時間" />
<el-table-column label="操作" width="105" fixed="right"> <el-table-column label="操作" width="105" fixed="right">
<template #default="scope"> <template #default="scope">
<el-dropdown> <el-dropdown>

@ -4,7 +4,7 @@ import { Plus, Edit, Delete, ArrowDown } from "@element-plus/icons-vue";
import AscForm from "./components/Form.vue"; import AscForm from "./components/Form.vue";
import { getBranchList, deleteBranch } from "@/api/branch.js"; import { getBranchList, updateBranch, deleteBranch } from "@/api/branch.js";
const state = reactive({ const state = reactive({
page: 1, page: 1,
@ -85,6 +85,37 @@ const handleNextClick = (val) => {
getTableData(); getTableData();
}; };
//
const editOrderId = ref(0);
const handleEditItem = (id) => {
editOrderId.value = id;
}
const handleUpdateItem = async (row) => {
let res = await updateBranch(row);
if (res.code === 200) {
ElMessage({
message: '修改成功.',
type: 'success',
});
getTableData();
} else {
ElMessage({
message: '修改失敗.',
type: 'error',
});
}
editOrderId.value = 0;
}
const handleCloseEditItem = () => {
console.log('handleCloseEditItem')
editOrderId.value = 0;
}
// Drawer // Drawer
const editid = ref(0); const editid = ref(0);
@ -130,7 +161,15 @@ const handleCloseFormDraw = (val) => {
<el-table-column prop="status" label="是否有效" /> <el-table-column prop="status" label="是否有效" />
<el-table-column prop="sort" label="排序" width="80"> <el-table-column prop="sort" label="排序" width="80">
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.sort_order" :style="{ width: '40px' }"/> <div @dblclick="handleEditItem(scope.row.id)" v-if="scope.row.id !== editOrderId">
{{ scope.row.sort_order }}
</div>
<el-input v-model="scope.row.sort_order" :style="{ width: '50px' }"
@keyup.enter="handleUpdateItem(scope.row)"
@blur="handleCloseEditItem()"
:autoFocus="true"
v-focus="scope.row.id === editOrderId"
v-else />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="105" fixed="right"> <el-table-column label="操作" width="105" fixed="right">

@ -4,7 +4,7 @@ import { Plus, Edit, Delete, ArrowDown } from "@element-plus/icons-vue";
import AscForm from "./components/Form.vue"; import AscForm from "./components/Form.vue";
import { getBannerList, deleteBanner } from "@/api/home.js"; import { getBannerList, deleteBanner, updateBanner } from "@/api/home.js";
const state = reactive({ const state = reactive({
page: 1, page: 1,
@ -85,6 +85,36 @@ const handleNextClick = (val) => {
getTableData(); getTableData();
}; };
//
const editOrderId = ref(0);
const handleEditItem = (id) => {
editOrderId.value = id;
}
const handleUpdateItem = async (row) => {
console.log('row', row)
let res = await updateBanner(row);
if (res.code === 200) {
ElMessage({
message: '修改成功.',
type: 'success',
});
getTableData();
} else {
ElMessage({
message: '修改失敗.',
type: 'error',
});
}
editOrderId.value = 0;
}
const handleCloseEditItem = () => {
console.log('handleCloseEditItem')
editOrderId.value = 0;
}
// Drawer // Drawer
const editid = ref(0); const editid = ref(0);
@ -125,19 +155,27 @@ const handleCloseFormDraw = (val) => {
<el-table-column prop="id" label="#" width="50" /> <el-table-column prop="id" label="#" width="50" />
<el-table-column label="電腦版背景"> <el-table-column label="電腦版背景">
<template #default="scope"> <template #default="scope">
<el-image style="width: 100px; height: 50px" :src="scope.row.imageurl1" fit="cover" /> <el-image style="width: 100px; height: 50px" :src="scope.row.imageurl1" fit="cover" :crossorigin="null" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="手機版背景"> <el-table-column label="手機版背景">
<template #default="scope"> <template #default="scope">
<el-image style="width: 50px; height: 100px" :src="scope.row.imageurl2" fit="cover" /> <el-image style="width: 50px; height: 100px" :src="scope.row.imageurl2" fit="cover" :crossorigin="null" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="slogon" label="標題" /> <el-table-column prop="slogon" label="標題" />
<el-table-column prop="describe" label="描述" /> <el-table-column prop="describe" label="描述" />
<el-table-column prop="sort" label="排序" width="80"> <el-table-column prop="sort_order" label="排序" width="80">
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.sort_order" :style="{ width: '40px' }"/> <div @dblclick="handleEditItem(scope.row.id)" v-if="scope.row.id !== editOrderId">
{{ scope.row.sort_order }}
</div>
<el-input v-model="scope.row.sort_order" :style="{ width: '50px' }"
@keyup.enter="handleUpdateItem(scope.row)"
@blur="handleCloseEditItem()"
:autoFocus="true"
v-focus="scope.row.id === editOrderId"
v-else />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="其他項目" width="105" fixed="right"> <el-table-column label="其他項目" width="105" fixed="right">

@ -4,7 +4,7 @@ import { Plus, Edit, Delete, ArrowDown } from "@element-plus/icons-vue";
import AscForm from "./components/Form.vue"; import AscForm from "./components/Form.vue";
import { getSupplierList, deleteSupplier } from "@/api/supplier.js"; import { getSupplierList, updateSupplier ,deleteSupplier } from "@/api/supplier.js";
const state = reactive({ const state = reactive({
page: 1, page: 1,
@ -85,6 +85,38 @@ const handleNextClick = (val) => {
getTableData(); getTableData();
}; };
//
const editOrderId = ref(0);
const handleEditItem = (id) => {
editOrderId.value = id;
}
const handleUpdateItem = async (row) => {
let res = await updateSupplier(row);
if (res.code === 200) {
ElMessage({
message: '修改成功.',
type: 'success',
});
getTableData();
} else {
ElMessage({
message: '修改失敗.',
type: 'error',
});
}
editOrderId.value = 0;
}
const handleCloseEditItem = () => {
console.log('handleCloseEditItem')
editOrderId.value = 0;
}
// Drawer // Drawer
const editid = ref(0); const editid = ref(0);
@ -125,13 +157,23 @@ const handleCloseFormDraw = (val) => {
<el-table-column prop="id" label="#" width="50" /> <el-table-column prop="id" label="#" width="50" />
<el-table-column label="供應商LOGO"> <el-table-column label="供應商LOGO">
<template #default="scope"> <template #default="scope">
<el-image style="width: 150px; height: 80px" :src="scope.row.imageurl" fit="cover"/> <el-image style="width: 150px; height: 80px" :src="scope.row.imageurl" fit="cover" :crossorigin="null"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="name" label="供應商名稱" /> <el-table-column prop="name1" label="供應商名稱(繁)" />
<el-table-column prop="name2" label="供應商名稱(簡)" />
<el-table-column prop="name3" label="供應商名稱(英)" />
<el-table-column prop="sort" label="排序" width="80"> <el-table-column prop="sort" label="排序" width="80">
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.sort_order" :style="{ width: '40px' }"/> <div @dblclick="handleEditItem(scope.row.id)" v-if="scope.row.id !== editOrderId">
{{ scope.row.sort_order }}
</div>
<el-input v-model="scope.row.sort_order" :style="{ width: '50px' }"
@keyup.enter="handleUpdateItem(scope.row)"
@blur="handleCloseEditItem()"
:autoFocus="true"
v-focus="scope.row.id === editOrderId"
v-else />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="105" fixed="right"> <el-table-column label="操作" width="105" fixed="right">

@ -157,8 +157,14 @@ const submitForm = (formEl) => {
</template> --> </template> -->
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item label="供應商名稱" prop="name"> <el-form-item label="供應商名稱(繁)" prop="name1">
<el-input v-model="form.name" /> <el-input v-model="form.name1" />
</el-form-item>
<el-form-item label="供應商名稱(簡)" prop="name2">
<el-input v-model="form.name2" />
</el-form-item>
<el-form-item label="供應商名稱(英)" prop="name3">
<el-input v-model="form.name3" />
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-card> </el-card>

@ -108,8 +108,8 @@ const handleCloseFormDraw = (val) => {
<div class="breadcrumb-section"> <div class="breadcrumb-section">
<div> <div>
<el-breadcrumb separator="/"> <el-breadcrumb separator="/">
<el-breadcrumb-item> 經銷系統 </el-breadcrumb-item> <el-breadcrumb-item> 最新消息 </el-breadcrumb-item>
<el-breadcrumb-item><a href="/">產業動態</a></el-breadcrumb-item> <el-breadcrumb-item><a href="/">公司活動</a></el-breadcrumb-item>
</el-breadcrumb> </el-breadcrumb>
</div> </div>
<div> <div>
@ -118,7 +118,7 @@ const handleCloseFormDraw = (val) => {
:icon="Plus" :icon="Plus"
@click="handleAdd" @click="handleAdd"
> >
新增 新增
</el-button> </el-button>
</div> </div>
</div> </div>
@ -140,8 +140,10 @@ const handleCloseFormDraw = (val) => {
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="id" label="#" width="50" /> <el-table-column prop="id" label="#" width="50" />
<el-table-column prop="title" label="標題" /> <el-table-column prop="title1" label="標題(繁)" />
<el-table-column prop="date" label="建立時間" /> <el-table-column prop="title2" label="標題(簡)" />
<el-table-column prop="title3" label="標題(英)" />
<el-table-column prop="create_time" label="建立時間" />
<el-table-column prop="sort" label="排序" width="80"> <el-table-column prop="sort" label="排序" width="80">
<template #default="scope"> <template #default="scope">
<el-input v-model="tableData[scope.$index].sort" :style="{ width: '40px' }"/> <el-input v-model="tableData[scope.$index].sort" :style="{ width: '40px' }"/>

@ -20,7 +20,9 @@ const loading = ref(false);
const formRef = ref(null); const formRef = ref(null);
const form = ref({ const form = ref({
id: 0, id: 0,
title: "", title1: "",
title2: "",
title3: "",
imageList: [], imageList: [],
}); });
@ -128,8 +130,14 @@ const handlePictureCardPreview = (uploadFile) => {
status-icon status-icon
:rules="rules" :rules="rules"
label-width="120px"> label-width="120px">
<el-form-item label="標題" prop="title"> <el-form-item label="標題(繁)" prop="title">
<el-input v-model="form.title" /> <el-input v-model="form.title1" />
</el-form-item>
<el-form-item label="標題(簡)" prop="title">
<el-input v-model="form.title2" />
</el-form-item>
<el-form-item label="標題(英)" prop="title">
<el-input v-model="form.title3" />
</el-form-item> </el-form-item>
<el-form-item label="活動照片" prop="content"> <el-form-item label="活動照片" prop="content">
<el-upload <el-upload

@ -64,7 +64,7 @@ onMounted(async () => {
}); });
const rules = reactive({ const rules = reactive({
username: [{ required: true, message: "管理員帳號必填", trigger: 'blur' }], title: [{ required: true, message: "產業動態標題必填", trigger: 'blur' }],
}) })
const cancelForm = () => { const cancelForm = () => {
@ -95,7 +95,7 @@ const submitForm = (formEl) => {
} }
} else { } else {
ElMessage({ ElMessage({
message: "操作失敗.", message: "請檢查輸入資料是否正確.",
type: 'error', type: 'error',
}); });
return false return false
@ -148,4 +148,8 @@ const submitForm = (formEl) => {
:deep(.ck-editor__editable_inline) { :deep(.ck-editor__editable_inline) {
height: 400px; height: 400px;
} }
.demo-drawer__footer{
margin-top: 20px;
}
</style> </style>

@ -4,7 +4,7 @@ import { ArrowDown, Plus, Edit, Delete } from "@element-plus/icons-vue";
import AscForm from "./components/Form.vue"; import AscForm from "./components/Form.vue";
import { getCateList, deleteCategory } from "@/api/category.js"; import { getCateList, updateCategory, deleteCategory } from "@/api/category.js";
const tableData = ref([]); const tableData = ref([]);
@ -26,6 +26,37 @@ const getTableData = async () => {
} }
//
const editOrderId = ref(0);
const handleEditItem = (id) => {
editOrderId.value = id;
}
const handleUpdateItem = async (row) => {
let res = await updateCategory(row);
if (res.code === 200) {
ElMessage({
message: '修改成功.',
type: 'success',
});
getTableData();
} else {
ElMessage({
message: '修改失敗.',
type: 'error',
});
}
editOrderId.value = 0;
}
const handleCloseEditItem = () => {
console.log('handleCloseEditItem')
editOrderId.value = 0;
}
//
const editid = ref(0); const editid = ref(0);
const handleAdd = () => { const handleAdd = () => {
@ -88,8 +119,20 @@ const handleCloseFormDraw = (val) => {
<el-card :body-style="{ padding: '0px' }"> <el-card :body-style="{ padding: '0px' }">
<el-table :data="tableData" style="width: 100%" row-key="id" default-expand-all> <el-table :data="tableData" style="width: 100%" row-key="id" default-expand-all>
<el-table-column prop="name" label="類別名稱" /> <el-table-column prop="name" label="類別名稱" />
<el-table-column prop="num" label="產品數" /> <!-- <el-table-column prop="num" label="產品數" /> -->
<el-table-column prop="sort_order" label="排序" width="80" /> <el-table-column label="排序" width="80">
<template #default="scope">
<div @dblclick="handleEditItem(scope.row.id)" v-if="scope.row.id !== editOrderId">
{{ scope.row.sort_order }}
</div>
<el-input v-model="scope.row.sort_order" :style="{ width: '50px' }"
@keyup.enter="handleUpdateItem(scope.row)"
@blur="handleCloseEditItem()"
:autoFocus="true"
v-focus="scope.row.id === editOrderId"
v-else />
</template>
</el-table-column>
<el-table-column label="其他項目" width="105" fixed="right"> <el-table-column label="其他項目" width="105" fixed="right">
<template #default="scope"> <template #default="scope">
<el-dropdown> <el-dropdown>

@ -1,251 +0,0 @@
<script setup>
import { ref, reactive, onMounted, watch } from "vue";
import { Plus } from "@element-plus/icons-vue";
import { getParentCateList, getCategory, addCategory, updateCategory } from "@/api/category";
// import { getAminUser, addAdminUser, updateAdminUser } from "@/api/adminuser";
const props = defineProps({
editid: {
type: Number,
default: 0,
},
});
const emit = defineEmits(["close"]);
const formType = ref("insert");
const loading = ref(false);
const formRef = ref(null);
const form = ref({
id: 0,
parent_id: 0,
});
const options = ref([]);
onMounted(async () => {
if (props.editid) {
let res = await getCategory(props.editid);
if (res.code === 200) {
form.value = res.data;
formType.value = "update";
}
}
let pcateRes = await getParentCateList();
if (pcateRes.code === 200) {
options.value = pcateRes.data.map((item) => {
return {
label: item.name,
value: item.id,
};
});
}
});
const rules = reactive({
username: [{ required: true, message: "管理員帳號必填", trigger: 'blur' }],
})
// START:
import { uploadFile } from "@/utils/request";
import { Cropper } from 'vue-advanced-cropper';
import "vue-advanced-cropper/dist/style.css";
const crop = ref({
show: false,
img: null,
ratio: 2.6,
})
const myCrop = ref(null)
const beforeAvatarUpload = (rawFile) => {
if (rawFile.type !== 'image/jpeg' && rawFile.type !== 'image/png' && rawFile.type !== 'image/jpg') {
ElMessage.error('圖片格式只能是jpeg/png/jpg!');
return false;
}
// if (rawFile.size / 1024 / 1024 > 2) {
// ElMessage.error('2MB!')
// return false
// }
crop.value.show = true
crop.value.img = URL.createObjectURL(rawFile);
return false;
}
const onCrop = () => {
const { canvas } = myCrop.value.getResult();
if (canvas) {
const imgFile = new FormData();
canvas.toBlob(async (blob) => {
let ufile = new File([blob], "image.jpg");
imgFile.append("fileType", "IMAGE");
imgFile.append("file", ufile);
crop.value.show = false;
loading.value = true;
let res = await uploadFile('/cate/uploadImage', imgFile);
if (res.code === 200) {
form.value.imageurl = res.data;
ElMessage.success('上傳成功');
} else {
ElMessage.error('上傳失敗');
}
loading.value = false;
}, "image/jpeg");
}
return;
};
const handleClose = () => {
crop.value.show = false
}
// END:
const cancelForm = () => {
console.log("cancel!");
emit("close", false);
};
const submitForm = (formEl) => {
if (!formEl) return
formEl.validate(async (valid) => {
if (valid) {
let res;
let message;
if (formType.value === "update") {
form.value.id = props.editid;
res = await updateCategory(form.value);
message = "修改成功.";
} else {
res = await addCategory(form.value);
message = "新增成功.";
}
if (res.code === 200) {
ElMessage({
message: message,
type: 'success',
});
emit("close", true);
}
} else {
ElMessage({
message: "操作失敗.",
type: 'error',
});
return false
}
})
};
</script>
<template>
<div>
<el-form ref="formRef" :model="form" status-icon :rules="rules" label-width="120px">
<el-form-item label="分類名稱" prop="name">
<el-input v-model="form.name" type="text" v-if="form.parent_id === 0"/>
<el-input v-model="form.name" :rows="4" type="textarea" v-else/>
</el-form-item>
<el-form-item label="上級分類">
<el-select v-model="form.parent_id" class="m-2" placeholder="Select">
<el-option label="最上層" :value="0" />
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="類別圖片" prop="imageurl" v-if="form.parent_id === 0">
<el-upload class="avatar-uploader"
action="#"
accept="image/*"
:show-file-list="false"
:auto-upload="true"
:before-upload="(file) => beforeAvatarUpload(file)">
<img v-if="form.imageurl" :src="form.imageurl" class="avatar" id="imageurl" />
<el-icon v-else class="avatar-uploader-icon">
<Plus />
</el-icon>
</el-upload>
</el-form-item>
</el-form>
<div class="demo-drawer__footer" style="text-align: right;">
<el-button @click="cancelForm"></el-button>
<el-button type="primary" :loading="loading" @click="submitForm(formRef)">{{
loading ? '提交中 ...' : '確認'
}}</el-button>
</div>
</div>
<div>
<el-dialog
v-model="crop.show"
title="Tips"
:before-close="handleClose"
>
<div class="cropper-section" v-if="crop.show">
<div class="crop-area">
<cropper class="cropper" ref="myCrop" :src="crop.img" :stencil-props="{
aspectRatio: crop.ratio,
}" :auto-zoom="true" />
</div>
<div class="crop-btn">
<el-button type="primary" size="small" text @click="handleClose"></el-button>
<el-button type="primary" size="small" @click="onCrop"></el-button>
</div>
</div>
</el-dialog>
</div>
</template>
<style lang="less" scoped>
.avatar-uploader .avatar {
width: 312px;
height: 120px;
display: block;
}
:deep(.avatar-uploader .el-upload) {
border: 1px dashed var(--el-border-color);
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
transition: var(--el-transition-duration-fast);
}
.avatar-uploader .el-upload:hover {
border-color: var(--el-color-primary);
}
.el-icon.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 312px;
height: 120px;
text-align: center;
}
:deep(.el-dialog) {
width: 40% !important;
}
.crop-btn {
text-align: right;
margin-top: 10px;
}
</style>

@ -2,17 +2,26 @@
import { ref, reactive, onMounted, toRefs } from "vue"; import { ref, reactive, onMounted, toRefs } from "vue";
import { Plus, Edit, Delete, ArrowDown } from "@element-plus/icons-vue"; import { Plus, Edit, Delete, ArrowDown } from "@element-plus/icons-vue";
import AscForm from "./components/Form.vue"; import { getProductList, updateProduct, deleteProduct } from "@/api/product";
import { getCateList } from "@/api/category";
import { getProductList, deleteProduct } from "@/api/product";
import { useRouter, useRoute } from "vue-router"; import { useRouter, useRoute } from "vue-router";
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
const CateOptions = ref([])
const props = {
emitPath: false,
}
const state = reactive({ const state = reactive({
page: 1, page: 1,
pageSize: 10, pageSize: 10,
search: {
cat_id: null,
keyword: '',
}
}); });
const { page, pageSize } = toRefs(state); const { page, pageSize } = toRefs(state);
@ -23,10 +32,30 @@ const showFormDraw = ref(false);
const tableData = ref([]); const tableData = ref([]);
onMounted(() => { onMounted(async () => {
let res = await getCateList();
if (res.code === 200) {
CateOptions.value = res.data.map((item) => {
return {
value: item.id,
label: item.name,
children: item.children.map((item2) => {
return {
value: item2.id,
label: item2.name,
};
}),
};
});
}
getTableData(); getTableData();
}); });
const handleSearch = () => {
getTableData();
};
const getTableData = async () => { const getTableData = async () => {
loading.value = true; loading.value = true;
let res = await getProductList(state); let res = await getProductList(state);
@ -50,7 +79,7 @@ const handleEdit = (id) => {
editid.value = id; editid.value = id;
// showFormDraw.value = true; // showFormDraw.value = true;
router.push({ router.push({
path: '/news/list/form', path: '/product/list/form',
query: { query: {
id: id id: id
} }
@ -60,7 +89,7 @@ const handleEdit = (id) => {
const handleDelete = (id) => { const handleDelete = (id) => {
ElMessageBox.confirm('確認刪除此紀錄?') ElMessageBox.confirm('確認刪除此紀錄?')
.then(async () => { .then(async () => {
let res = await deleteNews(id); let res = await deleteProduct(id);
if (res.code === 200) { if (res.code === 200) {
ElMessage({ ElMessage({
message: '刪除成功.', message: '刪除成功.',
@ -100,6 +129,37 @@ const handleNextClick = (val) => {
getTableData(); getTableData();
}; };
//
const editOrderId = ref(0);
const handleEditItem = (id) => {
editOrderId.value = id;
}
const handleUpdateItem = async (row) => {
let res = await updateProduct(row);
if (res.code === 200) {
ElMessage({
message: '修改成功.',
type: 'success',
});
getTableData();
} else {
ElMessage({
message: '修改失敗.',
type: 'error',
});
}
editOrderId.value = 0;
}
const handleCloseEditItem = () => {
console.log('handleCloseEditItem')
editOrderId.value = 0;
}
// Drawer // Drawer
const editid = ref(0); const editid = ref(0);
@ -128,6 +188,30 @@ const handleCloseFormDraw = (val) => {
</div> </div>
</div> </div>
<!-- Breadcrumb: End --> <!-- Breadcrumb: End -->
<el-card>
<div class="search-section">
<el-row :gutter="15">
<el-col :sm="20" :lg="21">
<el-row :gutter="15">
<el-col :sm="8">
</el-col>
<el-col :sm="8">
<el-cascader v-model="state.search.cat_id"
:options="CateOptions"
:props="props"
clearable/>
</el-col>
<el-col :sm="8">
<el-input v-model="state.search.keyword" placeholder="請輸入產品名稱" style="width: 100%;" />
</el-col>
</el-row>
</el-col>
<el-col :sm="4" :lg="3">
<el-button type="primary" style="width: 100%;height: 100%;" @click="handleSearch"></el-button>
</el-col>
</el-row>
</div>
</el-card>
<el-card :body-style="{ padding: '0px' }"> <el-card :body-style="{ padding: '0px' }">
<div v-loading="loading"> <div v-loading="loading">
@ -135,12 +219,22 @@ const handleCloseFormDraw = (val) => {
<el-table-column label="#" prop="id" width="50" /> <el-table-column label="#" prop="id" width="50" />
<el-table-column label="產品圖片"> <el-table-column label="產品圖片">
<template #default="scope"> <template #default="scope">
<el-image style="width: 150px; height: 80px" :src="scope.row.imageurl" fit="cover" /> <el-image style="width: 150px; height: 80px" :src="scope.row.imageurl" fit="cover" :crossorigin="null" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="產品類別" prop="cat_name" /> <el-table-column label="產品類別" prop="cat_name" />
<el-table-column label="產品名稱" prop="name" /> <el-table-column label="產品名稱" prop="name" />
<el-table-column label="建立時間" prop="create_time" /> <el-table-column label="建立時間" prop="create_time" />
<el-table-column prop="sort" label="排序" width="80">
<template #default="scope">
<div @dblclick="handleEditItem(scope.row.id)" v-if="scope.row.id !== editOrderId">
{{ scope.row.sort_order }}
</div>
<el-input v-model="scope.row.sort_order" :style="{ width: '50px' }"
@keyup.enter="handleUpdateItem(scope.row)" @blur="handleCloseEditItem()" :autoFocus="true"
v-focus="scope.row.id === editOrderId" v-else />
</template>
</el-table-column>
<el-table-column label="操作" width="105" fixed="right"> <el-table-column label="操作" width="105" fixed="right">
<template #default="scope"> <template #default="scope">
<el-dropdown> <el-dropdown>
@ -166,11 +260,15 @@ const handleCloseFormDraw = (val) => {
</div> </div>
</el-card> </el-card>
</div> </div>
<div> <!-- <div>
<el-drawer ref="drawerRef" v-model="showFormDraw" :destroy-on-close="true" title="新增管理員" direction="rtl" size="70%"> <el-drawer ref="drawerRef" v-model="showFormDraw" :destroy-on-close="true" title="新增管理員" direction="rtl" size="70%">
<asc-form :editid="editid" @close="handleCloseFormDraw" /> <asc-form :editid="editid" @close="handleCloseFormDraw" />
</el-drawer> </el-drawer>
</div> </div> -->
</template> </template>
<style scoped></style> <style scoped>
.el-cascader{
width: 100%;
}
</style>

@ -28,5 +28,8 @@ export default defineConfig({
additionalData: '@import "./src/assets/css/color.less";', additionalData: '@import "./src/assets/css/color.less";',
}, },
} }
} },
esbuild: {
drop: ["console", "debugger"],
},
}); });

@ -47,7 +47,9 @@ class ActivityController extends BaseController
$data = [ $data = [
'lang' => 'tw', 'lang' => 'tw',
'title' => isset($params['title'])?$params['title']:'', 'title1' => isset($params['title1'])?$params['title1']:'',
'title2' => isset($params['title2'])?$params['title2']:'',
'title3' => isset($params['title3'])?$params['title3']:'',
'image_list' => isset($params['imageList'])?json_encode($params['imageList']):'', 'image_list' => isset($params['imageList'])?json_encode($params['imageList']):'',
'create_time' => date('Y-m-d H:i:s',time()) 'create_time' => date('Y-m-d H:i:s',time())
]; ];
@ -104,7 +106,9 @@ class ActivityController extends BaseController
$params = $request->post(); $params = $request->post();
$data = [ $data = [
'title' => isset($params['title'])?$params['title']:'', 'title1' => isset($params['title1'])?$params['title1']:'',
'title2' => isset($params['title2'])?$params['title2']:'',
'title3' => isset($params['title3'])?$params['title3']:'',
'image_list' => isset($params['imageList'])?json_encode($params['imageList']):'', 'image_list' => isset($params['imageList'])?json_encode($params['imageList']):'',
'update_time' => date('Y-m-d H:i:s',time()) 'update_time' => date('Y-m-d H:i:s',time())
]; ];

@ -15,6 +15,7 @@ class BranchController extends BaseController
$list = Db::name('branch') $list = Db::name('branch')
->where('lang',$param['lang']) ->where('lang',$param['lang'])
->order('sort_order', 'asc')
->order('id', 'asc') ->order('id', 'asc')
->select() ->select()
->toArray(); ->toArray();
@ -47,9 +48,9 @@ class BranchController extends BaseController
try{ try{
$id = Db::name('branch')->insertGetId($data); $id = Db::name('branch')->insertGetId($data);
Db::name('branch') // Db::name('branch')
->where('id',$id) // ->where('id',$id)
->update(['sort_order'=>($id * 10)]); // ->update(['sort_order'=>($id * 10)]);
AdminLog( $this->uid , '新增據點 [' . $id .']'); AdminLog( $this->uid , '新增據點 [' . $id .']');
@ -103,6 +104,7 @@ class BranchController extends BaseController
'email' => isset($params['email'])?$params['email']:'', 'email' => isset($params['email'])?$params['email']:'',
'url' => isset($params['url'])?$params['url']:'', 'url' => isset($params['url'])?$params['url']:'',
'imageurl' => isset($params['imageurl'])?$params['imageurl']:'', 'imageurl' => isset($params['imageurl'])?$params['imageurl']:'',
'sort_order' => isset($params['sort_order'])?$params['sort_order']:100,
]; ];
try{ try{

@ -16,6 +16,7 @@ class CateController extends BaseController
$list = Db::name('category') $list = Db::name('category')
->where('lang',$param['lang']) ->where('lang',$param['lang'])
->order('sort_order', 'asc') ->order('sort_order', 'asc')
->order('id', 'asc')
->select() ->select()
->toArray(); ->toArray();
@ -49,6 +50,7 @@ class CateController extends BaseController
->where('lang',$param['lang']) ->where('lang',$param['lang'])
->where('parent_id',0) ->where('parent_id',0)
->order('sort_order', 'asc') ->order('sort_order', 'asc')
->order('id', 'asc')
->select() ->select()
->toArray(); ->toArray();
@ -82,7 +84,7 @@ class CateController extends BaseController
"lang" => isset($params['lang'])?$params['lang']:'tw', "lang" => isset($params['lang'])?$params['lang']:'tw',
"parent_id" => isset($params['parent_id'])?$params['parent_id']:0, "parent_id" => isset($params['parent_id'])?$params['parent_id']:0,
"name" => isset($params['name'])?$params['name']:'', "name" => isset($params['name'])?$params['name']:'',
"imageurl" => getUrl().isset($params['imageurl'])?$params['imageurl']:'', "imageurl" => isset($params['imageurl'])?getUrl().$params['imageurl']:'',
]; ];
try{ try{
@ -122,6 +124,7 @@ class CateController extends BaseController
"parent_id" => isset($params['parent_id'])?$params['parent_id']:0, "parent_id" => isset($params['parent_id'])?$params['parent_id']:0,
"name" => isset($params['name'])?$params['name']:'', "name" => isset($params['name'])?$params['name']:'',
"imageurl" => getUrl().isset($params['imageurl'])?$params['imageurl']:'', "imageurl" => getUrl().isset($params['imageurl'])?$params['imageurl']:'',
"sort_order" => isset($params['sort_order'])?$params['sort_order']:100,
]; ];
try{ try{

@ -15,16 +15,11 @@ class IndexController extends BaseController
$list = Db::name('banner') $list = Db::name('banner')
->where('lang',$param['lang']) ->where('lang',$param['lang'])
->order('sort_order', 'asc')
->order('id', 'desc') ->order('id', 'desc')
->select() ->select()
->toArray(); ->toArray();
foreach($list as $key => $val){
$list[$key]['imageurl1'] = getUrl().$val['imageurl1'];
$list[$key]['imageurl2'] = getUrl().$val['imageurl2'];
}
$result = $list; $result = $list;
return $this->Success($result); return $this->Success($result);
@ -45,9 +40,9 @@ class IndexController extends BaseController
try{ try{
$id = Db::name('banner')->insertGetId($data); $id = Db::name('banner')->insertGetId($data);
Db::name('banner') // Db::name('banner')
->where('id',$id) // ->where('id',$id)
->update(['sort_order'=>($id * 10)]); // ->update(['sort_order'=>($id * 10)]);
AdminLog( $this->uid , '新增輪撥 [' . $id .']'); AdminLog( $this->uid , '新增輪撥 [' . $id .']');
@ -97,6 +92,7 @@ class IndexController extends BaseController
'describe' => isset($params['describe'])?$params['describe']:'', 'describe' => isset($params['describe'])?$params['describe']:'',
'imageurl1' => isset($params['imageurl1'])?$params['imageurl1']:'', 'imageurl1' => isset($params['imageurl1'])?$params['imageurl1']:'',
'imageurl2' => isset($params['imageurl2'])?$params['imageurl2']:'', 'imageurl2' => isset($params['imageurl2'])?$params['imageurl2']:'',
'sort_order' => isset($params['sort_order'])?$params['sort_order']:100,
'update_time' => date('Y-m-d H:i:s',time()) 'update_time' => date('Y-m-d H:i:s',time())
]; ];

@ -20,7 +20,7 @@ class NewsController extends BaseController
$list = Db::name('news') $list = Db::name('news')
->where($where) ->where($where)
->order('id', 'asc') ->order('create_time', 'desc')
->page($page, $pageSize) ->page($page, $pageSize)
->select() ->select()
->toArray(); ->toArray();

@ -15,21 +15,33 @@ class ProductController extends BaseController
$pageSize = isset($param['pageSize']) ? $param['pageSize'] : 10; $pageSize = isset($param['pageSize']) ? $param['pageSize'] : 10;
$search = isset($param['search']) ? $param['search'] : []; $search = isset($param['search']) ? $param['search'] : [];
$where = [ $where = [];
];
if(isset($search['cat_id']) && $search['cat_id'] > 0){
$where[] = ['cat_id','=' ,$search['cat_id']];
}
if(isset($search['keyword']) && strlen($search['keyword']) >0){
$where[] = ['name', 'like', '%'.$search['keyword'].'%'];
}
$list = Db::name('product') $list = Db::name('product')
->where($where) ->where($where)
->order('sort_order', 'asc')
->order('id', 'asc') ->order('id', 'asc')
->page($page, $pageSize) ->page($page, $pageSize)
->select() ->select()
->toArray(); ->toArray();
$total = Db::name('product') $total = Db::name('product')
->where($where) ->where($where)
->count(); ->count();
foreach($list as $key => $val){ foreach($list as $key => $val){
$list[$key]['cat_name'] = Db::name('category')
->where('id',$val['cat_id'])
->value('name');
} }
$result = [ $result = [
@ -69,16 +81,14 @@ class ProductController extends BaseController
$id = $request->get('id'); $id = $request->get('id');
try{ try{
$admin_name = getNameById('admin','username',$id); Db::name('product')
$result = Db::name('product')
->where('id',$id) ->where('id',$id)
->delete(); ->delete();
AdminLog($this->uid, '刪除管理員 '. $admin_name); AdminLog($this->uid, '刪除產品 ['. $id. '] 成功');
return $this->Success('操作成功'); return $this->Success('操作成功');
}catch(\Exception $e){ }catch(\Exception $e){
AdminLog($this->uid, '刪除管理員'.$admin_name.'失敗'); AdminLog($this->uid, '刪除產品 ['.$id.'] 失敗');
return $this->Error('操作失敗'); return $this->Error('操作失敗');
} }
} }
@ -105,9 +115,13 @@ class ProductController extends BaseController
$params = $request->post(); $params = $request->post();
$data = [ $data = [
'title' => isset($params['title'])?$params['title']:'', 'name' => isset($params['name'])?$params['name']:'',
'imageurl' => isset($params['imageurl'])?$params['imageurl']:'',
'cat_id' => isset($params['cat_id'])?$params['cat_id']:0,
'description' => isset($params['description'])?$params['description']:'',
'content' => isset($params['content'])?$params['content']:'', 'content' => isset($params['content'])?$params['content']:'',
'update_time' => date('Y-m-d H:i:s',time()) 'sort_order' => isset($params['sort_order'])?$params['sort_order']:100,
'create_time' => date('Y-m-d H:i:s',time())
]; ];
try{ try{
@ -115,12 +129,12 @@ class ProductController extends BaseController
->where('id',$params['id']) ->where('id',$params['id'])
->update($data); ->update($data);
AdminLog($this->uid, '修改產業動態 [' . $params['id'] .']'); AdminLog($this->uid, '修改產品 [' . $params['id'] .'] 成功');
return $this->Success('操作成功'); return $this->Success('操作成功');
}catch(\Exception $e){ }catch(\Exception $e){
AdminLog($this->uid, '修改產業動態 [' . $params['id'] . '] 失敗'); AdminLog($this->uid, '修改產 [' . $params['id'] . '] 失敗');
return $this->Error('操作失敗:'. $e->getMessage()); return $this->Error('操作失敗:'. $e->getMessage());
} }

@ -1,4 +1,5 @@
<?php <?php
namespace app\adminapi\controller; namespace app\adminapi\controller;
use app\adminapi\BaseController; use app\adminapi\BaseController;
@ -14,8 +15,8 @@ class SupplierController extends BaseController
$where[] = ['lang', $param['lang']]; $where[] = ['lang', $param['lang']];
$list = Db::name('supplier') $list = Db::name('supplier')
->where('lang',$param['lang']) ->order('sort_order', 'asc')
->order('id', 'desc') ->order('id', 'asc')
->select() ->select()
->toArray(); ->toArray();
@ -29,12 +30,15 @@ class SupplierController extends BaseController
return $this->Success($result); return $this->Success($result);
} }
public function addSupplier(Request $request){ public function addSupplier(Request $request)
{
$params = $request->post(); $params = $request->post();
$data = [ $data = [
'lang' => isset($params['lang']) ? $params['lang'] : 'tw', 'lang' => isset($params['lang']) ? $params['lang'] : 'tw',
'name' => isset($params['name'])?$params['name']:'', 'name1' => isset($params['name1']) ? $params['name1'] : '',
'name2' => isset($params['name2']) ? $params['name2'] : '',
'name3' => isset($params['name3']) ? $params['name3'] : '',
'imageurl' => isset($params['imageurl']) ? $params['imageurl'] : '', 'imageurl' => isset($params['imageurl']) ? $params['imageurl'] : '',
'create_time' => date('Y-m-d H:i:s', time()) 'create_time' => date('Y-m-d H:i:s', time())
]; ];
@ -42,9 +46,9 @@ class SupplierController extends BaseController
try { try {
$id = Db::name('supplier')->insertGetId($data); $id = Db::name('supplier')->insertGetId($data);
Db::name('supplier') // Db::name('supplier')
->where('id',$id) // ->where('id',$id)
->update(['sort_order'=>($id * 10)]); // ->update(['sort_order'=>($id * 10)]);
AdminLog($this->uid, '新增供應商 [' . $id . ']'); AdminLog($this->uid, '新增供應商 [' . $id . ']');
@ -56,7 +60,8 @@ class SupplierController extends BaseController
} }
} }
public function deleteSupplier(Request $request){ public function deleteSupplier(Request $request)
{
$id = $request->get('id'); $id = $request->get('id');
try { try {
@ -72,7 +77,8 @@ class SupplierController extends BaseController
} }
} }
public function getSupplier(Request $request){ public function getSupplier(Request $request)
{
$id = $request->get('id'); $id = $request->get('id');
$result = Db::name('supplier') $result = Db::name('supplier')
@ -86,12 +92,16 @@ class SupplierController extends BaseController
return $this->Success($result); return $this->Success($result);
} }
public function updateSupplier(Request $request){ public function updateSupplier(Request $request)
{
$params = $request->post(); $params = $request->post();
$data = [ $data = [
'name' => isset($params['name'])?$params['name']:'', 'name1' => isset($params['name1']) ? $params['name1'] : '',
'name2' => isset($params['name2']) ? $params['name2'] : '',
'name3' => isset($params['name3']) ? $params['name3'] : '',
'imageurl' => isset($params['imageurl']) ? $params['imageurl'] : '', 'imageurl' => isset($params['imageurl']) ? $params['imageurl'] : '',
'sort_order' => isset($params['sort_order']) ? $params['sort_order'] : 100,
'update_time' => date('Y-m-d H:i:s', time()) 'update_time' => date('Y-m-d H:i:s', time())
]; ];
@ -111,7 +121,8 @@ class SupplierController extends BaseController
} }
} }
public function uploadSupplierImage(Request $request){ public function uploadSupplierImage(Request $request)
{
$file = $request->file('file'); $file = $request->file('file');
if ($file && $file->isValid()) { if ($file && $file->isValid()) {

@ -15,6 +15,7 @@ class ContactController extends BaseController
$list = Db::name('branch') $list = Db::name('branch')
->where('lang',$param['lang']) ->where('lang',$param['lang'])
->order('sort_order', 'asc') ->order('sort_order', 'asc')
->order('id', 'asc')
->select() ->select()
->toArray(); ->toArray();

@ -1,4 +1,5 @@
<?php <?php
namespace app\appapi\controller; namespace app\appapi\controller;
use app\appapi\BaseController; use app\appapi\BaseController;
@ -33,15 +34,11 @@ class IndexController extends BaseController
$list = Db::name('banner') $list = Db::name('banner')
->where('lang', $param['lang']) ->where('lang', $param['lang'])
->order('id', 'desc') ->order('id', 'desc')
->order('sort_order', 'asc')
->select() ->select()
->toArray(); ->toArray();
foreach($list as $key => $val){
$list[$key]['imageurl1'] = getUrl().$val['imageurl1'];
$list[$key]['imageurl2'] = getUrl().$val['imageurl2'];
}
$result = $list; $result = $list;
return $this->Success($result); return $this->Success($result);
@ -74,13 +71,25 @@ class IndexController extends BaseController
// $where[] = ['lang', $param['lang']]; // $where[] = ['lang', $param['lang']];
$list = Db::name('supplier') $list = Db::name('supplier')
->where('lang',$param['lang']) ->order('sort_order', 'asc')
->order('id', 'desc') ->order('id', 'asc')
->select() ->select()
->toArray(); ->toArray();
foreach ($list as $key => $val) { foreach ($list as $key => $val) {
switch($param['lang']){
case 'tw':
$list[$key]['name'] = $val['name1'];
break;
case 'en':
$list[$key]['name'] = $val['name2'];
break;
case 'cn':
$list[$key]['name'] = $val['name3'];
break;
}
$list[$key]['imageurl'] = $val['imageurl']; $list[$key]['imageurl'] = $val['imageurl'];
} }
@ -98,6 +107,7 @@ class IndexController extends BaseController
$list = Db::name('category') $list = Db::name('category')
->where('lang', $param['lang']) ->where('lang', $param['lang'])
->order('sort_order', 'asc') ->order('sort_order', 'asc')
->order('id', 'asc')
->select() ->select()
->toArray(); ->toArray();
@ -110,7 +120,8 @@ class IndexController extends BaseController
return $this->Success($list); return $this->Success($list);
} }
public function genCategoryTree($list,$parent_id = 0){ public function genCategoryTree($list, $parent_id = 0)
{
$tree = []; $tree = [];
foreach ($list as $key => $val) { foreach ($list as $key => $val) {
if ($val['parent_id'] == $parent_id) { if ($val['parent_id'] == $parent_id) {
@ -120,5 +131,4 @@ class IndexController extends BaseController
} }
return $tree; return $tree;
} }
} }

@ -41,7 +41,8 @@ class ProductController extends BaseController
$list = Db::name('product') $list = Db::name('product')
->where('lang',$param['lang']) ->where('lang',$param['lang'])
->where('cat_id',$param['cat_id']) ->where('cat_id',$param['cat_id'])
->order('id', 'desc') ->order('sort_order', 'asc')
->order('id', 'asc')
->select() ->select()
->toArray(); ->toArray();

@ -1,4 +1,5 @@
<?php <?php
namespace app\appapi\controller; namespace app\appapi\controller;
use app\appapi\BaseController; use app\appapi\BaseController;
@ -15,12 +16,11 @@ class SocialController extends BaseController
$pageSize = isset($param['pageSize']) ? $param['pageSize'] : 10; $pageSize = isset($param['pageSize']) ? $param['pageSize'] : 10;
$search = isset($param['search']) ? $param['search'] : []; $search = isset($param['search']) ? $param['search'] : [];
$where = [ $where = [];
];
$list = Db::name('news') $list = Db::name('news')
->where($where) ->where($where)
->order('id', 'asc') ->order('create_time', 'desc')
->page($page, $pageSize) ->page($page, $pageSize)
->select() ->select()
->toArray(); ->toArray();
@ -66,6 +66,21 @@ class SocialController extends BaseController
$result = \app\common\GetData::getPageList('activity', $param); $result = \app\common\GetData::getPageList('activity', $param);
foreach ($result['list'] as $key => $val) { foreach ($result['list'] as $key => $val) {
switch ($param['lang']) {
case 'tw':
$result['list'][$key]['title'] = $val['title1'];
break;
case 'cn':
$result['list'][$key]['title'] = $val['title2'];
break;
case 'en':
$result['list'][$key]['title'] = $val['title3'];
break;
default:
$result['list'][$key]['title'] = $val['title1'];
break;
}
$result['list'][$key]['imageList'] = json_decode($val['image_list']); $result['list'][$key]['imageList'] = json_decode($val['image_list']);
unset($result['list'][$key]['image_list']); unset($result['list'][$key]['image_list']);
} }
@ -94,5 +109,4 @@ class SocialController extends BaseController
return $this->Success($result); return $this->Success($result);
} }
} }

@ -7,7 +7,8 @@
"dev": "nuxt dev --dotenv .env.development", "dev": "nuxt dev --dotenv .env.development",
"generate": "nuxt generate --dotenv .env.staging", "generate": "nuxt generate --dotenv .env.staging",
"preview": "nuxt preview", "preview": "nuxt preview",
"postinstall": "nuxt prepare" "postinstall": "nuxt prepare",
"postbuild": "cp -r .output/* ../nuxt/app && scp -r ../nuxt/app/* root@test:/www/wwwroot/prodio.zltest.com.tw/nuxt/app"
}, },
"devDependencies": { "devDependencies": {
"@element-plus/nuxt": "^1.0.7", "@element-plus/nuxt": "^1.0.7",

@ -10,26 +10,13 @@ const store = useStore();
const { config } = storeToRefs(store); const { config } = storeToRefs(store);
const bannerData = computed(() => bannerRes.value.data); const bannerData = computed(() => bannerRes.value.data);
const cateData = ref([]); const cateData = computed(() => cateRes.value.data);
const supplierData = ref([]); const supplierData = computed(() => supplierRes.value.data);
const { data: bannerRes } = await useMyFetch('/index/getBannerList', "GET") const { data: bannerRes } = await useMyFetch('/index/getBannerList', "GET")
// if (bannerRes.value.code === 200) {
// bannerData.value = bannerRes.value.data
// }
const { data: cateRes } = await useMyFetch('/index/getParentCateList', "GET") const { data: cateRes } = await useMyFetch('/index/getParentCateList', "GET")
if (cateRes.value.code === 200) {
cateData.value = cateRes.value.data
}
const { data: supplierRes } = await useMyFetch('/index/getSupplierList', "GET") const { data: supplierRes } = await useMyFetch('/index/getSupplierList', "GET")
if (supplierRes.value.code === 200) {
supplierData.value = supplierRes.value.data
}
onMounted(async () => { onMounted(async () => {
let swiper1 = new Swiper(".banner .swiper", { let swiper1 = new Swiper(".banner .swiper", {
@ -139,7 +126,7 @@ onMounted(async () => {
<div class="swiper"> <div class="swiper">
<div class="swiper-wrapper"> <div class="swiper-wrapper">
<div class="swiper-slide" v-for="(supplier, index) in supplierData" :key="index"> <div class="swiper-slide" v-for="(supplier, index) in supplierData" :key="index">
<div class="imgCnt"><img :src="supplier.imageurl" alt=""></div> <div class="imgCnt"><img :src="supplier.imageurl" :alt="supplier.name"></div>
</div> </div>
</div> </div>
</div> </div>

@ -57,7 +57,7 @@ watch(() => route.params,
:class="{ 'active': currentRoute.includes(item.path) }" :class="{ 'active': currentRoute.includes(item.path) }"
href="javascript:;" href="javascript:;"
v-for="(item,index) in menuList" :key="index" v-for="(item,index) in menuList" :key="index"
@click="router.push(item.path);" @click="router.push(localeLocation(item.path));"
> >
{{ item.name }} {{ item.name }}
</a> </a>

@ -9,20 +9,19 @@ const { data: newsRes } = await useMyFetch('/social/getNews', "GET", {id: route.
<template> <template>
<div class="toolbar"> <div class="toolbar">
<div class="tTitle">最新消息</div> <div class="tTitle">{{ $t('Social.news') }}</div>
</div> </div>
<div class="content"> <div class="content">
<div class="block"> <div class="block">
<div class="bName mb-4">{{ newsData.title }}</div> <div class="bName mb-4">{{ newsData.title }}</div>
<div class="imgCnt me-4 mb-4" style="float: left;width:350px;"> <!-- <div class="imgCnt me-4 mb-4" style="float: left;width:350px;">
<img :src="newsData.imageurl" alt=""> <img :src="newsData.imageurl" alt="">
</div> </div> -->
<div class="desc"> <div class="desc" v-html="newsData.content">
{{ newsData.content }}
</div> </div>
<div class="d-flex justify-content-end"> <div class="d-flex justify-content-end">
<a class="backBtn" href="javascript:;" @click="$router.back()">back</a> <a class="backBtn" href="javascript:;" @click="$router.push(localeLocation('/social/news'))">back</a>
</div> </div>
</div> </div>
</div> </div>

@ -25,7 +25,7 @@ const handlePageChange = async (npage,npageSize) => {
<template> <template>
<div class="toolbar"> <div class="toolbar">
<div class="tTitle">最新消息</div> <div class="tTitle">{{ $t('Social.news') }}</div>
</div> </div>
<div class="content"> <div class="content">
<div> <div>

Loading…
Cancel
Save