提交 e59f1c1e authored 作者: 刘旭's avatar 刘旭

新增客户资料页面

上级 7b5b45ce
import { request } from '../config'
export function getBankList(params: any) {
return request({
url: '/bank_info',
method: 'get',
params,
})
}
export function addBank(data: any) {
return request({
url: '/bank_info',
method: 'post',
data,
})
}
export function updateBank(data: any) {
return request({
url: '/bank_info',
method: 'put',
data,
})
}
export function deleteBank(id: any) {
return request({
url: '/bank_info',
method: 'delete',
params: { id },
})
}
<template> <template>
<el-card> <el-card>
<div style="display: flex; flex-direction: row; align-items: center;"> <div style="display: flex; flex-direction: row; align-items: center">
<h3 style="width: 15%;">选择规格</h3> <h3 style="width: 15%">选择规格</h3>
<el-alert style="width: 50%" title="注意:对规格排序之后会对之前添加购物车的商品有影响!" type="warning" :closable="false" /> <el-alert style="width: 50%" title="注意:对规格排序之后会对之前添加购物车的商品有影响!" type="warning" :closable="false" />
</div> </div>
<div>{{ data }}</div> <div>{{ data }}</div>
<div v-if="JSON.stringify(specData) != '[]'"> <div v-if="JSON.stringify(specData) != '[]'">
<div v-for="(item, i) in specDatas" :key="i"> <div v-for="(item, i) in specDatas" :key="i">
<div style="display: flex; justify-content: space-between;"> <div style="display: flex; justify-content: space-between">
<div style="margin-bottom: 20px;"> <div style="margin-bottom: 20px">
<el-tag class="ml-2" effect="dark" size="large">{{ item.specification }}</el-tag> <el-tag class="ml-2" effect="dark" size="large">{{
item.specification
}}</el-tag>
</div> </div>
<div style="margin-right: 5%;"> <div style="margin-right: 5%">
<el-button v-show="i !== 0" type="primary" icon="top" circle @click="handleAscending(item)" /> <el-button v-show="i !== 0" type="primary" icon="top" circle @click="handleAscending(item)" />
<el-button v-show="specDatas.length - 1 !== i" type="primary" icon="bottom" circle <el-button v-show="specDatas.length - 1 !== i" type="primary" icon="bottom" circle
@click="handleDescending(item)" /> @click="handleDescending(item)" />
...@@ -24,7 +26,7 @@ ...@@ -24,7 +26,7 @@
</div> </div>
</div> </div>
<el-button v-if="JSON.stringify(specData) != '[]'" type="primary" <el-button v-if="JSON.stringify(specData) != '[]'" type="primary"
style="float: right; margin-right: 5%; margin-bottom: 20px;" @click="showAddSpec">添加</el-button> style="float: right; margin-right: 5%; margin-bottom: 20px" @click="showAddSpec">添加</el-button>
</el-card> </el-card>
<el-card> <el-card>
...@@ -32,8 +34,8 @@ ...@@ -32,8 +34,8 @@
<el-table :data="specificationData"> <el-table :data="specificationData">
<el-table-column type="expand"> <el-table-column type="expand">
<template #default="scope"> <template #default="scope">
<el-row style="padding: 30px;"> <el-row style="padding: 30px">
<el-col :span="8" style="margin-right: 30px;"> <!-- <el-col :span="8" style="margin-right: 30px;">
<params-attr <params-attr
:attributeData="{ attributeList: scope.row.attributeList, index: scope.$index }" :attributeData="{ attributeList: scope.row.attributeList, index: scope.$index }"
@paramsChange="paramsChange" style="width: 50%;" /> @paramsChange="paramsChange" style="width: 50%;" />
...@@ -42,18 +44,17 @@ ...@@ -42,18 +44,17 @@
<main-config <main-config
:mainConfigurationsData="{ mainConfigurationsList: scope.row.mainConfigurationsList, index: scope.$index }" :mainConfigurationsData="{ mainConfigurationsList: scope.row.mainConfigurationsList, index: scope.$index }"
@mainConfigChange="mainConfigChange" style="width: 50%;" /> @mainConfigChange="mainConfigChange" style="width: 50%;" />
</el-col> </el-col> -->
<el-col :span="7" style="margin-left: 2%"> <el-col style="margin-left: 2%">
<parts :partsData="{ partList: scope.row.partList, index: scope.$index }" <parts :partsData="{ partList: scope.row.partList, index: scope.$index }"
@partsChange="partsChange" style="width: 50%;" /> @partsChange="partsChange" style="width: 50%" />
</el-col> </el-col>
</el-row> </el-row>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="规格属性"> <el-table-column label="规格属性">
<template #default="scope"> <template #default="scope">
<el-tag v-for="(item, i) in scope.row.specifications.length" :key="i">{{ <el-tag v-for="(item, i) in scope.row.specifications.length" :key="i">{{ scope.row.specifications[i]
scope.row.specifications[i]
}} }}
</el-tag> </el-tag>
</template> </template>
...@@ -72,240 +73,285 @@ ...@@ -72,240 +73,285 @@
<add-specifications ref="specificationsRef" @clickAdd="clickAdd" @clickEdit="clickEdit" /> <add-specifications ref="specificationsRef" @clickAdd="clickAdd" @clickEdit="clickEdit" />
</template> </template>
<script setup lang='ts'> <script setup lang="ts">
import { ref, computed, watch } from 'vue' import { ref, computed, watch } from "vue";
import { ElMessage } from 'element-plus' import { ElMessage } from "element-plus";
import paramsAttr from './paramsAttr.vue' // import paramsAttr from './paramsAttr.vue'
import mainConfig from './mainConfig.vue' // import mainConfig from './mainConfig.vue'
import addSpecifications from './addSpecifications.vue' import addSpecifications from "./addSpecifications.vue";
import parts from './parts.vue' import parts from "./parts.vue";
let props = defineProps({ let props = defineProps({
specData: { specData: {
type: Object, type: Object,
default: [] default: [],
}, },
products: { products: {
type: Object, type: Object,
default: [] default: [],
} },
}) });
let emits = defineEmits(['productsData', 'handleSort']) let emits = defineEmits(["productsData", "handleSort"]);
let data = computed(() => { let data = computed(() => {
if (JSON.stringify(props.specData) != '[]') { if (JSON.stringify(props.specData) != "[]") {
specDatas.value = [] specDatas.value = [];
group(props.specData) group(props.specData);
} else { } else {
specDatas.value = [] specDatas.value = [];
specificationData.value = [] specificationData.value = [];
} }
}) });
let specificationsRef = ref() let specificationsRef = ref();
let specList = ref([] as any) let specList = ref([] as any);
let specificationData = ref([] as any) let specificationData = ref([] as any);
var specDatas = ref([] as any) //符合条件的数据 var specDatas = ref([] as any); //符合条件的数据
watch(specDatas.value, (newVlaue: any) => { watch(
if (JSON.stringify(newVlaue) === '[]') { specDatas.value,
specDatas.value = [] (newVlaue: any) => {
specificationData.value = [] if (JSON.stringify(newVlaue) === "[]") {
} specDatas.value = [];
}, { deep: true, immediate: true }) specificationData.value = [];
}
},
{ deep: true, immediate: true }
);
let setSpecifications = (data: any) => { let setSpecifications = (data: any) => {
if (data) specificationData.value = data if (data) specificationData.value = data;
} };
// 升序 // 升序
let handleAscending = (item: any) => { let handleAscending = (item: any) => {
emits('handleSort', 'ascending', item) emits("handleSort", "ascending", item);
} };
// 降序 // 降序
let handleDescending = (item: any) => { let handleDescending = (item: any) => {
emits('handleSort', 'descending', item) emits("handleSort", "descending", item);
} };
// 参数值操作 // 参数值操作
let paramsChange = (type: string, data: any, index: any) => { let paramsChange = (type: string, data: any, index: any) => {
if (type === 'add') { if (type === "add") {
if (specificationData.value[index].id !== 'undefined') { if (specificationData.value[index].id !== "undefined") {
specificationData.value[index].updateTime = null specificationData.value[index].updateTime = null;
} }
specificationData.value[index].attributeList.unshift(data) specificationData.value[index].attributeList.unshift(data);
emits('productsData', specificationData.value) emits("productsData", specificationData.value);
} } else {
else {
let i = specificationData.value[index].attributeList.indexOf(data); let i = specificationData.value[index].attributeList.indexOf(data);
let deleteIndexParamsData: any = {} // 记录要被删除的数据 let deleteIndexParamsData: any = {}; // 记录要被删除的数据
if (typeof specificationData.value[index].attributeList[i].deleted !== 'undefined') { // deleted标为ture即为删除 if (typeof specificationData.value[index].attributeList[i].deleted !== "undefined") {
deleteIndexParamsData = specificationData.value[index].attributeList[i] // 记录要被删除的数据 // deleted标为ture即为删除
deleteIndexParamsData.deleted = true deleteIndexParamsData = specificationData.value[index].attributeList[i]; // 记录要被删除的数据
deleteIndexParamsData.updateTime = null deleteIndexParamsData.deleted = true;
deleteIndexParamsData.updateTime = null;
} }
specificationData.value[index].attributeList.splice(i, 1) specificationData.value[index].attributeList.splice(i, 1);
emits('productsData', specificationData.value, index, undefined, i, deleteIndexParamsData) emits(
"productsData",
specificationData.value,
index,
undefined,
i,
deleteIndexParamsData
);
} }
} };
// 参数值操作 // 参数值操作
let mainConfigChange = (type: string, data: any, index: any) => { let mainConfigChange = (type: string, data: any, index: any) => {
if (type === 'add') { if (type === "add") {
if (specificationData.value[index].id !== 'undefined') { if (specificationData.value[index].id !== "undefined") {
specificationData.value[index].updateTime = null specificationData.value[index].updateTime = null;
} }
specificationData.value[index].mainConfigurationsList.unshift(data) specificationData.value[index].mainConfigurationsList.unshift(data);
emits('productsData', specificationData.value) emits("productsData", specificationData.value);
} } else {
else {
const i = specificationData.value[index].mainConfigurationsList.indexOf(data); const i = specificationData.value[index].mainConfigurationsList.indexOf(data);
let deleteIndexMainData: any = {} // 记录要被删除的数据 let deleteIndexMainData: any = {}; // 记录要被删除的数据
if (typeof specificationData.value[index].mainConfigurationsList[i].deleted !== 'undefined') { // deleted标为ture即为删除 if (
deleteIndexMainData = specificationData.value[index].mainConfigurationsList[i] // 记录要被删除的数据 typeof specificationData.value[index].mainConfigurationsList[i].deleted !==
deleteIndexMainData.deleted = true "undefined"
deleteIndexMainData.updateTime = null ) {
// deleted标为ture即为删除
deleteIndexMainData = specificationData.value[index].mainConfigurationsList[i]; // 记录要被删除的数据
deleteIndexMainData.deleted = true;
deleteIndexMainData.updateTime = null;
} }
specificationData.value[index].mainConfigurationsList.splice(i, 1) specificationData.value[index].mainConfigurationsList.splice(i, 1);
emits('productsData', specificationData.value, index, undefined, undefined, undefined, i, deleteIndexMainData) emits(
"productsData",
specificationData.value,
index,
undefined,
undefined,
undefined,
i,
deleteIndexMainData
);
} }
} };
// 配件操作 // 配件操作
let partsChange = (type: string, data: any, index: any) => { let partsChange = (type: string, data: any, index: any) => {
if (type === 'add') { if (type === "add") {
if (specificationData.value[index].id !== 'undefined') { if (specificationData.value[index].id !== "undefined") {
specificationData.value[index].updateTime = null specificationData.value[index].updateTime = null;
} }
specificationData.value[index].partList.unshift(data) specificationData.value[index].partList.unshift(data);
emits('productsData', specificationData.value) emits("productsData", specificationData.value);
} } else {
else {
const i = specificationData.value[index].partList.indexOf(data); const i = specificationData.value[index].partList.indexOf(data);
let deleteIndexPartsData: any = {} // 记录要被删除的数据 let deleteIndexPartsData: any = {}; // 记录要被删除的数据
if (typeof specificationData.value[index].partList[i].deleted !== 'undefined') { // deleted标为ture即为删除 if (typeof specificationData.value[index].partList[i].deleted !== "undefined") {
deleteIndexPartsData = specificationData.value[index].partList[i] // 记录要被删除的数据 // deleted标为ture即为删除
deleteIndexPartsData.deleted = true deleteIndexPartsData = specificationData.value[index].partList[i]; // 记录要被删除的数据
deleteIndexPartsData.updateTime = null deleteIndexPartsData.deleted = true;
deleteIndexPartsData.updateTime = null;
} }
specificationData.value[index].partList.splice(i, 1) specificationData.value[index].partList.splice(i, 1);
emits('productsData', specificationData.value, index, undefined, undefined, undefined, undefined, undefined, i, deleteIndexPartsData) emits(
"productsData",
specificationData.value,
index,
undefined,
undefined,
undefined,
undefined,
undefined,
i,
deleteIndexPartsData
);
} }
} };
// 每组只可以取一个 // 每组只可以取一个
let radioChange = (e: any, item: any) => { let radioChange = (e: any, item: any) => {
item.values.forEach((res: any) => { item.values.forEach((res: any) => {
if (specList.value.indexOf(res.value) != -1) { if (specList.value.indexOf(res.value) != -1) {
let s = specList.value.indexOf(res.value) let s = specList.value.indexOf(res.value);
if (specList.value[s] != e) { if (specList.value[s] != e) {
specList.value.splice(s, 1) specList.value.splice(s, 1);
} }
} }
}) });
if (specList.value.indexOf(e) == -1) specList.value.push(e) if (specList.value.indexOf(e) == -1) specList.value.push(e);
} };
// 把配件数据整合,让数据选择规格时顺序从上到下 // 把配件数据整合,让数据选择规格时顺序从上到下
let handleSpecData = () => { let handleSpecData = () => {
let data = [] as any // specification, value let data = [] as any; // specification, value
// 深拷贝,避免影响原数组 // 深拷贝,避免影响原数组
let newarr = JSON.parse((JSON.stringify(props.specData))) let newarr = JSON.parse(JSON.stringify(props.specData));
newarr.map((item: any) => { newarr.map((item: any) => {
let flag = true let flag = true;
// 如果已经存储了相同的specification,则下面就不在循环 // 如果已经存储了相同的specification,则下面就不在循环
data.map((res: any) => { if (item.specification === res.specification) flag = false }) data.map((res: any) => {
if (item.specification === res.specification) flag = false;
});
newarr.map((item1: any) => { newarr.map((item1: any) => {
if (flag) { if (flag) {
if (item.specification === item1.specification) { if (item.specification === item1.specification) {
let flag1 = true let flag1 = true;
// 如果已经存储了相同的specification,就只添加value // 如果已经存储了相同的specification,就只添加value
data.map((res: any) => { if (item.specification === res.specification) flag1 = false }) data.map((res: any) => {
if (flag1) data.push({ if (item.specification === res.specification) flag1 = false;
specification: item.specification, });
value: [item1.value] if (flag1)
}) data.push({
else data.forEach((res: any) => { if (item1.specification === res.specification) res.value.push(item1.value) }) specification: item.specification,
value: [item1.value],
});
else
data.forEach((res: any) => {
if (item1.specification === res.specification) res.value.push(item1.value);
});
} }
} }
}) });
}) });
return data return data;
} };
// 判断规格属性的顺序是否正确,错误需要排序 // 判断规格属性的顺序是否正确,错误需要排序
let handleSequence = (data: any) => { let handleSequence = (data: any) => {
// console.log('firstSort', data, specList.value); // console.log('firstSort', data, specList.value);
let specListCopy = [...specList.value] // 浅拷贝 let specListCopy = [...specList.value]; // 浅拷贝
// 双重循环判断对应索引值是否对应 // 双重循环判断对应索引值是否对应
specList.value.map((arrVal: any, arr: number) => { specList.value.map((arrVal: any, arr: number) => {
data.map((item: any, i: number) => { data.map((item: any, i: number) => {
if (arr === i) { if (arr === i) {
let index = item.value.indexOf(arrVal) let index = item.value.indexOf(arrVal);
// console.log(index); // console.log(index);
// 如果对应索引中没有对应关系,则取当前索引在拷贝数组找到对应值,直接赋值 // 如果对应索引中没有对应关系,则取当前索引在拷贝数组找到对应值,直接赋值
if (index === -1) { if (index === -1) {
data[arr].value.map((element: any) => { data[arr].value.map((element: any) => {
let index1 = specListCopy.indexOf(element) let index1 = specListCopy.indexOf(element);
if (index1 !== -1) { if (index1 !== -1) {
specList.value[arr] = specListCopy[index1] specList.value[arr] = specListCopy[index1];
} }
}) });
} }
} }
}) });
}) });
} };
// 打开添加规格属性框 // 打开添加规格属性框
let showAddSpec = () => { let showAddSpec = () => {
if (specList.value.length === 0) return ElMessage({ type: 'warning', message: '请先选择规格属性' }) if (specList.value.length === 0)
let resultSpecData = handleSpecData() return ElMessage({ type: "warning", message: "请先选择规格属性" });
if (specList.value.length !== resultSpecData.length) return ElMessage({ type: 'warning', message: '请选择所有规格属性' }) let resultSpecData = handleSpecData();
handleSequence(resultSpecData) if (specList.value.length !== resultSpecData.length)
return ElMessage({ type: "warning", message: "请选择所有规格属性" });
handleSequence(resultSpecData);
specificationsRef.value.formData = { specificationsRef.value.formData = {
bomCode: '', bomCode: "",
model: '', model: "",
productName: '', productName: "",
url: '', url: "",
designUrl: '' designUrl: "",
} };
specificationsRef.value.title = '添加规格属性' specificationsRef.value.title = "添加规格属性";
specificationsRef.value.showVisiable = true specificationsRef.value.showVisiable = true;
} };
// 修改规格顺序时触发 // 修改规格顺序时触发
let sort = () => { let sort = () => {
let resultSpecData = handleSpecData() let resultSpecData = handleSpecData();
specificationData.value.forEach((item: any) => { specificationData.value.forEach((item: any) => {
specList.value = item.specifications specList.value = item.specifications;
if (item.specifications.length === resultSpecData.length) handleSequence(resultSpecData) if (item.specifications.length === resultSpecData.length)
else handleLessSequence(resultSpecData) handleSequence(resultSpecData);
item.specifications = specList.value else handleLessSequence(resultSpecData);
if (item.updateTime) item.updateTime = null item.specifications = specList.value;
}) if (item.updateTime) item.updateTime = null;
specList.value = [] });
emits('productsData', specificationData.value) specList.value = [];
} emits("productsData", specificationData.value);
};
// 处理少的顺序 // 处理少的顺序
let handleLessSequence = (data: any) => { let handleLessSequence = (data: any) => {
let specListCopy = [...specList.value] // 浅拷贝 let specListCopy = [...specList.value]; // 浅拷贝
let list = [] as any // 存储有的数组 let list = [] as any; // 存储有的数组
data.map((item: any, i: number) => { data.map((item: any, i: number) => {
item.value.map((item1: any) => { item.value.map((item1: any) => {
let index = specListCopy.indexOf(item1) let index = specListCopy.indexOf(item1);
if (index !== -1) if (index !== -1)
// 去除重复规格属性 if (list.indexOf(specListCopy[index]) === -1)
if (list.indexOf(specListCopy[index]) === -1) list.push(specListCopy[index]) // 去除重复规格属性
list.push(specListCopy[index]);
}) });
}) });
specList.value = list specList.value = list;
} };
// 添加规格属性 // 添加规格属性
let clickAdd = (formData: any) => { let clickAdd = (formData: any) => {
...@@ -314,98 +360,98 @@ let clickAdd = (formData: any) => { ...@@ -314,98 +360,98 @@ let clickAdd = (formData: any) => {
price: 0.0, price: 0.0,
number: 0, number: 0,
url: "", url: "",
attributeList: [], // attributeList: [],
mainConfigurationsList: [], // mainConfigurationsList: [],
partList: [] partList: [],
} };
data = { ...data, ...formData } data = { ...data, ...formData };
specificationData.value.push(data) specificationData.value.push(data);
specList.value = [] specList.value = [];
specDatas.value = poty.value specDatas.value = poty.value;
emits('productsData', specificationData.value) emits("productsData", specificationData.value);
// console.log(attributes.value, '规格属性数据'); // console.log(attributes.value, '规格属性数据');
} };
let clickEdit = (formData: any) => { let clickEdit = (formData: any) => {
if (typeof formData.updateTime !== 'undefined') formData.updateTime = null if (typeof formData.updateTime !== "undefined") formData.updateTime = null;
specificationData.value[editIndex.value] = formData specificationData.value[editIndex.value] = formData;
};
}
let editIndex = ref() //编辑规格的下标 let editIndex = ref(); //编辑规格的下标
// 修改规格属性数据 // 修改规格属性数据
let handleAttributeEdit = (index: number, row: any) => { let handleAttributeEdit = (index: number, row: any) => {
specificationsRef.value.formData = row specificationsRef.value.formData = row;
editIndex.value = index editIndex.value = index;
specificationsRef.value.title = '编辑规格属性' specificationsRef.value.title = "编辑规格属性";
specificationsRef.value.showVisiable = true specificationsRef.value.showVisiable = true;
} };
// 删除规格属性数据 // 删除规格属性数据
let handleAttributeDelete = (row: any) => { let handleAttributeDelete = (row: any) => {
let index = specificationData.value.indexOf(row); let index = specificationData.value.indexOf(row);
let deleteIndexData: any = {} // 记录要被删除的数据 let deleteIndexData: any = {}; // 记录要被删除的数据
// console.log(specificationData.value[index].deleted, 'specificationData.value[index].deleted'); // console.log(specificationData.value[index].deleted, 'specificationData.value[index].deleted');
if (typeof specificationData.value[index].deleted !== 'undefined') { // deleted标为ture即为删除 if (typeof specificationData.value[index].deleted !== "undefined") {
deleteIndexData = specificationData.value[index] // 记录要被删除的数据 // deleted标为ture即为删除
deleteIndexData.deleted = true deleteIndexData = specificationData.value[index]; // 记录要被删除的数据
deleteIndexData.updateTime = null deleteIndexData.deleted = true;
deleteIndexData.updateTime = null;
} }
specificationData.value.splice(index, 1); specificationData.value.splice(index, 1);
emits('productsData', specificationData.value, index, deleteIndexData) emits("productsData", specificationData.value, index, deleteIndexData);
} };
let poty = ref() let poty = ref();
// 把相同数据分组(递归) // 把相同数据分组(递归)
let group = (data: any) => { let group = (data: any) => {
let arr = [] as any //记录相同索引 let arr = [] as any; //记录相同索引
let copyArr = [...data] // 拷贝 let copyArr = [...data]; // 拷贝
let list = [] as any // 记录相同value let list = [] as any; // 记录相同value
let spec = copyArr[0].specification // 记录specification let spec = copyArr[0].specification; // 记录specification
let sort = copyArr[0].sort // 记录sort let sort = copyArr[0].sort; // 记录sort
copyArr.forEach((item: any, i: number) => { copyArr.forEach((item: any, i: number) => {
if (item.specification == copyArr[0].specification) { if (item.specification == copyArr[0].specification) {
arr.push(i) arr.push(i);
list.push({ list.push({
value: item.value, value: item.value,
type: 'info' type: "info",
}) });
} }
}); });
let sum = -1 let sum = -1;
arr.forEach((index: any) => { arr.forEach((index: any) => {
sum++ sum++;
if (arr.length > 1) { if (arr.length > 1) {
if (index < 0) { if (index < 0) {
index = 0 index = 0;
copyArr.splice(index, 1) copyArr.splice(index, 1);
} else { } else {
index -= sum index -= sum;
copyArr.splice(index, 1) copyArr.splice(index, 1);
} }
} else { } else {
copyArr.splice(index, 1) copyArr.splice(index, 1);
} }
}); });
specDatas.value.push({ specDatas.value.push({
specification: spec, specification: spec,
values: list, values: list,
specRadio: '', specRadio: "",
sort sort,
}) });
if (copyArr.length === 0) return poty.value = [...specDatas.value] if (copyArr.length === 0) return (poty.value = [...specDatas.value]);
else group(copyArr) else group(copyArr);
} };
defineExpose({ defineExpose({
setSpecifications, setSpecifications,
sort sort,
}) });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.el-divider--horizontal { .el-divider--horizontal {
margin: 12px 0 !important; margin: 12px 0 !important;
} }
</style> </style>
\ No newline at end of file
...@@ -10,11 +10,6 @@ ...@@ -10,11 +10,6 @@
<el-form-item label="商品名称" prop="name"> <el-form-item label="商品名称" prop="name">
<el-input v-model="goods.name" /> <el-input v-model="goods.name" />
</el-form-item> </el-form-item>
<!-- <el-form-item label="市场售价" prop="counterPrice">
<el-input v-model="goods.counterPrice" placeholder="0.00">
<template slot="append"></template>
</el-input>
</el-form-item> -->
<el-form-item label="是否新品"> <el-form-item label="是否新品">
<el-radio-group v-model="goods.isNew"> <el-radio-group v-model="goods.isNew">
<el-radio :label="true">新品</el-radio> <el-radio :label="true">新品</el-radio>
...@@ -45,17 +40,6 @@ ...@@ -45,17 +40,6 @@
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<!-- <el-form-item label="设计图片" prop="designUrl">
<el-upload :action="uploadPath" :limit="1" :show-file-list="false" :headers="headers"
:on-success="uploadCdUrl" list-type="picture" class="avatar-uploader"
accept=".jpg,.jpeg,.png,.gif">
<img v-if="goods.designUrl" :src="goods.designUrl" class="avatar" />
<el-icon v-else class="avatar-uploader-icon">
<Plus />
</el-icon>
</el-upload>
</el-form-item> -->
<el-form-item label="宣传画廊"> <el-form-item label="宣传画廊">
<el-upload ref="uploadRef" v-model:file-list="fileList" :action="uploadPath" :limit="5" <el-upload ref="uploadRef" v-model:file-list="fileList" :action="uploadPath" :limit="5"
:headers="headers" :on-exceed="uploadOverrun" :on-success="handleGalleryUrl" :headers="headers" :on-exceed="uploadOverrun" :on-success="handleGalleryUrl"
...@@ -80,15 +64,6 @@ ...@@ -80,15 +64,6 @@
<el-button v-else class="button-new-keyword" type="primary" @click="showInput">+ 增加</el-button> <el-button v-else class="button-new-keyword" type="primary" @click="showInput">+ 增加</el-button>
</el-form-item> </el-form-item>
<!-- <el-form-item label="商品配件">
<el-select v-model="goodsParts" multiple collapse-tags collapse-tags-tooltip
style="width: 240px" @change="partsChange">
<el-option v-for="item in partsList" :key="item.id"
:label="item.partGoodsName ? item.partGoodsName : item.name"
:value="item.partGoodsId ? item.partGoodsId : item.id" />
</el-select>
</el-form-item> -->
<el-form-item label="所属分类"> <el-form-item label="所属分类">
<el-select v-model="goods.categoryId" placeholder="请选择" @change="handleCategoryChange"> <el-select v-model="goods.categoryId" placeholder="请选择" @change="handleCategoryChange">
<el-option v-for="item in categoryList" :key="item.value" :label="item.label" <el-option v-for="item in categoryList" :key="item.value" :label="item.label"
......
<template>
<div class="app-container" v-loading="loading">
<div class="filter-container">
<el-input
v-model="bankQuery.key"
clearable
class="filter-item"
style="width: 200px"
placeholder="银行名称 / 账号 / 户名"
/>
<el-button
class="filter-item"
type="primary"
icon="search"
@click="handleFilter"
>查找</el-button
>
</div>
<el-button
style="margin-bottom: 20px"
type="primary"
icon="plus"
@click="handleAdd"
>新增</el-button
>
<el-table :data="bankData" border fit highlight-current-row>
<el-table-column align="center" label="银行名称" prop="bank" />
<el-table-column align="center" label="账号" prop="account" />
<el-table-column align="center" label="户名" prop="accountName" />
<!-- <el-table-column align="center" label="创建时间" prop="addTime" /> -->
<el-table-column align="center" label="操作" width="200">
<template #default="scope">
<el-button type="primary" size="small" link @click="handleEdit(scope.row)"
>编辑</el-button
>
<el-button
type="danger"
size="small"
link
@click="handleDelete(scope.row.id)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<pagination
:page-data="bankQuery"
:total="total"
@size-change="sizeChange"
@current-change="currentChange"
/>
<!-- 添加修改 -->
<el-dialog
v-model="bankVisible"
:title="bankTitle"
width="30%"
:before-close="handleClose"
>
<el-form
ref="bankRef"
:model="bankForm"
:rules="rules"
label-width="80px"
status-icon
>
<el-form-item label="银行名称">
<el-input v-model="bankForm.bank" />
</el-form-item>
<el-form-item label="账号">
<el-input v-model="bankForm.account" />
</el-form-item>
<el-form-item label="户名">
<el-input v-model="bankForm.accountName" />
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="handleClose">取消</el-button>
<el-button type="primary" @click="onConfirm"> 确认 </el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import {
getBankList,
addBank,
updateBank,
deleteBank,
} from '@/services/api/config/bank'
import { ElMessage, ElMessageBox } from 'element-plus'
import pagination from '@/components/pagination/index.vue'
let bankQuery = ref({
key: '',
pageNo: 1,
pageSize: 10,
})
let bankData = ref()
let total = ref() // 总条数
let bankTitle = ref('添加') //dialog标题
let bankVisible = ref(false) // dialog显隐
let loading = ref(false)
let bankForm = ref({
id: '' as any,
account: '',
accountName: '',
bank: '',
})
let rules = ref({
account: [{ required: true, message: '请输入账户', trigger: 'blur' }],
})
let bankRef = ref()
let handleAdd = () => {
bankTitle.value = '添加'
bankForm.value.id = ''
bankVisible.value = true
}
let handleEdit = (row: any) => {
bankForm.value = row
bankVisible.value = true
bankTitle.value = '编辑'
}
let sizeChange = (val: number) => {
bankQuery.value.pageSize = val
init(bankQuery.value)
}
let currentChange = (val: number) => {
bankQuery.value.pageNo = val
init(bankQuery.value)
}
let handleFilter = () => {
init(bankQuery.value)
}
let onConfirm = () => {
bankRef.value?.validate((valid: any, fields: any) => {
if (valid) {
if (bankForm.value.id) {
updateBank(bankForm.value).then((res: any) => {
if (res.code === 200) {
init(bankQuery.value)
ElMessage({ type: 'success', message: '编辑成功' })
handleClose()
}
})
} else {
addBank(bankForm.value).then((res: any) => {
if (res.code === 200) {
init(bankQuery.value)
ElMessage({ type: 'success', message: '添加成功' })
handleClose()
}
})
}
} else {
console.log(fields)
}
})
}
let handleClose = () => {
bankForm.value = {
id: '' as any,
account: '',
accountName: '',
bank: '',
}
bankVisible.value = false
}
let handleDelete = (id: number) => {
ElMessageBox.confirm('确认删除?', '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
deleteBank(id).then((res: any) => {
if (res.code === 200) {
ElMessage({ type: 'success', message: res.msg })
init(bankQuery.value)
} else {
ElMessage({ type: 'error', message: res.msg })
}
})
})
}
let init = (params?: any) => {
loading.value = true
getBankList(params).then((res: any) => {
bankData.value = res.data.records
total.value = res.data.total
loading.value = false
})
}
init(bankQuery.value)
</script>
<style lang="scss" scoped></style>
...@@ -41,13 +41,13 @@ export default ({ command, mode }) => { ...@@ -41,13 +41,13 @@ export default ({ command, mode }) => {
// '/foo': '', // '/foo': '',
// 选项写法 // 选项写法
"/admin": { "/admin": {
target: "http://192.168.0.8:8089/", target: "http://192.168.1.27:8089",
// target: "http://192.168.0.60:82/", // target: "http://192.168.0.60:82/",
// rewrite: (path) => path.replace(/^\/api/, '') http://192.168.0.9:8089/ // rewrite: (path) => path.replace(/^\/api/, '') http://192.168.0.9:8089/
}, },
"/wx": { "/wx": {
// target: "http://192.168.0.60:82/", // target: "http://192.168.0.60:82/",
target: "http://192.168.0.8:8089/", target: "http://192.168.1.27:8089",
// rewrite: (path) => path.replace(/^\/api/, '') // rewrite: (path) => path.replace(/^\/api/, '')
}, },
// 正则表达式写法 // 正则表达式写法
......
...@@ -2,13 +2,13 @@ import os, sys ...@@ -2,13 +2,13 @@ import os, sys
import zipfile import zipfile
import shutil import shutil
cmd = "git clone http://192.168.0.27:8090/xuxu/yongxinda-admin \t\n" cmd = "git clone http://code.lingqingkeji.com/xuxu/yongxinda-admin \t\n"
cmd += "cd yongxinda-admin \t\n" cmd += "cd yongxinda-admin \t\n"
cmd += "yarn install\t\n" cmd += "yarn install\t\n"
cmd += "yarn run build\t\n" cmd += "yarn run build\t\n"
cmd += "docker build -t yongxinda-admin .\t\n" cmd += "docker build -t yongxinda-admin .\t\n"
cmd += "docker tag yongxinda-admin 192.168.0.26:5000/yongxinda-admin\t\n" cmd += "docker tag yongxinda-admin registrytest.lingqingkeji.com/yongxinda-admin\t\n"
cmd += "docker push 192.168.0.26:5000/yongxinda-admin\t\n" cmd += "docker push registrytest.lingqingkeji.com/yongxinda-admin\t\n"
cmd += "cd .. \t\n" cmd += "cd .. \t\n"
cmd += "rm -r -f yongxinda-admin \t\n" cmd += "rm -r -f yongxinda-admin \t\n"
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论