202505301641444

This commit is contained in:
张潘 2025-05-30 18:05:02 +08:00
parent 061e0f3805
commit f89c824f95
10 changed files with 277 additions and 102 deletions

View File

@ -71,8 +71,10 @@ public class IntegralProductController extends BaseController
util.exportExcel(response, list, "积分商品数据"); util.exportExcel(response, list, "积分商品数据");
} }
/** /**
* 获取积分商品详细信息 * 获取商品下拉选择分类
*/ */
@PreAuthorize("@ss.hasPermi('system:IntegralProduct:query')") @PreAuthorize("@ss.hasPermi('system:IntegralProduct:query')")
@GetMapping(value = "/{id}") @GetMapping(value = "/{id}")
@ -81,6 +83,17 @@ public class IntegralProductController extends BaseController
return success(integralProductService.selectIntegralProductById(id)); return success(integralProductService.selectIntegralProductById(id));
} }
/**
* 获取积分商品详细信息
*/
@PreAuthorize("@ss.hasPermi('system:IntegralProduct:query')")
@GetMapping(value = "/getIntegralCateList")
public AjaxResult getIntegralCateList()
{
return success(integralCateService.selectIntegralCateList(new IntegralCate()));
}
/** /**
* 新增积分商品 * 新增积分商品
*/ */

View File

@ -70,6 +70,19 @@ public class UserAddressController extends BaseController
util.exportExcel(response, list, "用户收货地址数据"); util.exportExcel(response, list, "用户收货地址数据");
} }
/**
* 获取用户收货地址详细信息
*/
@PreAuthorize("@ss.hasPermi('system:UserAddress:query')")
@GetMapping(value = "/getuserAddressList")
public AjaxResult getuserAddressList()
{
return success(userAddressService.selectUserAddressList(new UserAddress()));
}
/** /**
* 获取用户收货地址详细信息 * 获取用户收货地址详细信息
*/ */

View File

@ -41,6 +41,7 @@ public interface IUsersService
* @param users 请填写功能名称 * @param users 请填写功能名称
* @return 结果 * @return 结果
*/ */
public int updateUsers(Users users); public int updateUsers(Users users);
/** /**

View File

@ -16,6 +16,18 @@ export function getIntegralProduct(id) {
method: 'get' method: 'get'
}) })
} }
// 查询积分商品详细
export function getIntegralCateList() {
return request({
url: '/system/IntegralProduct/getIntegralCateList',
method: 'get'
})
}
// 任务状态修改 // 任务状态修改
export function changetypeStatus(id, status) { export function changetypeStatus(id, status) {
const data = { const data = {

View File

@ -16,6 +16,15 @@ export function getUserAddress(id) {
method: 'get' method: 'get'
}) })
} }
// 查询用户收货地址详细
export function getuserAddressList() {
return request({
url: '/system/UserAddress/getuserAddressList',
method: 'get'
})
}
// 新增用户收货地址 // 新增用户收货地址
export function addUserAddress(data) { export function addUserAddress(data) {

View File

@ -58,12 +58,14 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="分类" prop="cateId"> <el-form-item label="分类" prop="cateId">
<el-input <el-select v-model="queryParams.cateId" placeholder="请选择分类" clearable style="width: 200px">
v-model="queryParams.cateId" <el-option
placeholder="请输入分类" v-for="item in integralCateList"
clearable :key="item.id"
@keyup.enter.native="handleQuery" :label="item.title"
/> :value="item.id"
/>
</el-select>
</el-form-item> </el-form-item>
<!-- 新增状态 --> <!-- 新增状态 -->
@ -147,7 +149,7 @@
>删除</el-button >删除</el-button
> >
</el-col> </el-col>
<right-toolbar <right-toolbar
:showSearch.sync="showSearch" :showSearch.sync="showSearch"
@queryTable="getList" @queryTable="getList"
@ -361,7 +363,14 @@
<el-tab-pane label="基本信息" name="base"> <el-tab-pane label="基本信息" name="base">
<el-form ref="form" :model="form" :rules="rules" label-width="100px"> <el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="分类" prop="cateId"> <el-form-item label="分类" prop="cateId">
<el-input v-model="form.cateId" placeholder="请输入分类" /> <el-select v-model="form.cateId" placeholder="请选择分类" style="width: 100%">
<el-option
v-for="item in integralCateList"
:key="item.id"
:label="item.title"
:value="item.id"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="名称" prop="title"> <el-form-item label="名称" prop="title">
<el-input v-model="form.title" placeholder="请输入名称" /> <el-input v-model="form.title" placeholder="请输入名称" />
@ -381,7 +390,7 @@
</el-form> </el-form>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="营销配置" name="marketing"> <el-tab-pane label="营销配置" name="marketing">
<el-form-item label="市场价" prop="price"> <el-form-item label="市场价" prop="price">
<el-input-number v-model="form.price" :min="0" :step="0.01" :precision="2" placeholder="请输入市场价" style="width: 200px;" /> <el-input-number v-model="form.price" :min="0" :step="0.01" :precision="2" placeholder="请输入市场价" style="width: 200px;" />
</el-form-item> </el-form-item>
@ -397,7 +406,7 @@
<el-form-item label="库存" prop="stock"> <el-form-item label="库存" prop="stock">
<el-input-number v-model="form.stock" :min="0" style="width: 200px;" /> <el-input-number v-model="form.stock" :min="0" style="width: 200px;" />
</el-form-item> </el-form-item>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="规格配置" name="spec"> <el-tab-pane label="规格配置" name="spec">
<el-form-item label="规格"> <el-form-item label="规格">
@ -407,7 +416,7 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<div v-if="skuType === 'single'"> <div v-if="skuType === 'single'">
<el-form-item label="规格名"> <el-form-item label="规格名">
<el-input v-model="form.skuName" placeholder="请输入规格名" /> <el-input v-model="form.skuName" placeholder="请输入规格名" />
</el-form-item> </el-form-item>
@ -416,7 +425,7 @@
</el-form-item> </el-form-item>
</div> </div>
<div v-else> <div v-else>
<Sku :info="form.sku" ref="skuRef"></Sku> <Sku :info="form.sku" ref="skuRef"></Sku>
</div> </div>
</el-tab-pane> </el-tab-pane>
@ -479,6 +488,7 @@ import {
addIntegralProduct, addIntegralProduct,
updateIntegralProduct, updateIntegralProduct,
changetypeStatus, changetypeStatus,
getIntegralCateList
} from "@/api/system/IntegralProduct"; } from "@/api/system/IntegralProduct";
import Editor from "@/components/Editor"; import Editor from "@/components/Editor";
export default { export default {
@ -502,6 +512,8 @@ export default {
IntegralProductList: [], IntegralProductList: [],
// //
title: "", title: "",
integralCateList: [],
// //
open: false, open: false,
// //
@ -561,6 +573,7 @@ export default {
}, },
created() { created() {
this.getList(); this.getList();
this.getintegralCateList()
}, },
methods: { methods: {
/** 查询积分商品列表 */ /** 查询积分商品列表 */
@ -629,6 +642,13 @@ export default {
this.resetForm("queryForm"); this.resetForm("queryForm");
this.handleQuery(); this.handleQuery();
}, },
getintegralCateList () {
getIntegralCateList().then((response) => {
this.integralCateList = response.data;
});
},
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id); this.ids = selection.map((item) => item.id);
@ -668,11 +688,20 @@ export default {
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
if( this.$refs.skuRef.submit()){
this.form.sku=this.$refs.skuRef.submit();
if(this.$refs.skuRef){
if(this.$refs.skuRef.submit()){
this.form.sku=this.$refs.skuRef.submit();
}else{
return
}
}else{ }else{
return this.form.sku='{}';
} }
this.$refs["form"].validate((valid) => { this.$refs["form"].validate((valid) => {
if (valid) { if (valid) {
if (this.form.id != null) { if (this.form.id != null) {

View File

@ -163,7 +163,7 @@
v-hasPermi="['system:Order:remove']" v-hasPermi="['system:Order:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
@ -334,12 +334,26 @@
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="用户" prop="uid"> <el-form-item label="用户" prop="uid">
<el-input v-model="form.uid" placeholder="请输入用户" /> <el-select v-model="form.uid" placeholder="请选择用户" clearable filterable style="width: 100%">
<el-option
v-for="item in userDataList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="商品" prop="productId"> <el-form-item label="商品" prop="productId">
<el-input v-model="form.productId" placeholder="请输入商品" /> <el-select v-model="form.productId" placeholder="请选择商品" clearable filterable style="width: 100%">
<el-option
v-for="item in goodsDataList"
:key="item.id"
:label="item.title"
:value="item.id"
/>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
@ -380,7 +394,14 @@
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="关联地址" prop="addressId"> <el-form-item label="关联地址" prop="addressId">
<el-input v-model="form.addressId" placeholder="请输入关联地址" /> <el-select v-model="form.addressId" placeholder="请选择地址" clearable filterable style="width: 100%">
<el-option
v-for="item in addressList"
:key="item.id"
:label="item.address"
:value="item.id"
/>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
@ -388,16 +409,7 @@
<el-input v-model="form.mark" type="textarea" placeholder="请输入备注" /> <el-input v-model="form.mark" type="textarea" placeholder="请输入备注" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24">
<el-form-item label="创建时间" prop="createdAt">
<el-date-picker clearable v-model="form.createdAt" type="date" value-format="yyyy-MM-dd" placeholder="请选择创建时间" style="width:100%" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="更新时间" prop="updatedAt">
<el-date-picker clearable v-model="form.updatedAt" type="date" value-format="yyyy-MM-dd" placeholder="请选择更新时间" style="width:100%" />
</el-form-item>
</el-col>
</el-row> </el-row>
<div class="dialog-footer" style="text-align:left;margin-top:20px;"> <div class="dialog-footer" style="text-align:left;margin-top:20px;">
<el-button @click="reset">重置</el-button> <el-button @click="reset">重置</el-button>
@ -454,7 +466,9 @@
</template> </template>
<script> <script>
import { listOrder, getOrder, delOrder, addOrder, updateOrder,getUserDataList,getGoodsDataList} from "@/api/system/Order" import { listOrder, getOrder, delOrder, addOrder, updateOrder,getUserDataList,getGoodsDataList} from "@/api/system/Order"
import { getuserAddressList } from "@/api/system/UserAddress"
import CallRecord from './components/CallRecord' import CallRecord from './components/CallRecord'
import AudioRecord from './components/AudioRecord' import AudioRecord from './components/AudioRecord'
import ReceiveRecord from './components/ReceiveRecord' import ReceiveRecord from './components/ReceiveRecord'
@ -495,6 +509,8 @@ export default {
OrderList: [], OrderList: [],
goodsDataList : [], goodsDataList : [],
//
addressList: [],
// //
title: "", title: "",
// //
@ -597,6 +613,7 @@ export default {
this.getUserDataList() this.getUserDataList()
this.getuserGongRenList() this.getuserGongRenList()
this.getGoodsDataListList(); this.getGoodsDataListList();
this.getAddressList();
}, },
methods: { methods: {
/** 查询服务订单列表 */ /** 查询服务订单列表 */
@ -822,6 +839,13 @@ export default {
}) })
}, },
//
getAddressList() {
getuserAddressList().then(response => {
this.addressList = response.rows || []
})
},
/** 显示记录详情 */ /** 显示记录详情 */
showRecordDetails(row, type) { showRecordDetails(row, type) {
this.currentOrder = row this.currentOrder = row

View File

@ -114,7 +114,14 @@
/> />
<!-- 添加或修改项目报价--服务工艺对话框 --> <!-- 添加或修改项目报价--服务工艺对话框 -->
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body> <el-dialog
:title="title"
:visible.sync="open"
width="600px"
append-to-body
:close-on-click-modal="false"
:destroy-on-close="true"
>
<el-form ref="form" :model="form" :rules="rules" label-width="100px"> <el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="服务" prop="goodsintids"> <el-form-item label="服务" prop="goodsintids">
<el-select v-model="form.goodsintids" multiple filterable placeholder="请选择服务" style="width: 100%"> <el-select v-model="form.goodsintids" multiple filterable placeholder="请选择服务" style="width: 100%">
@ -147,9 +154,9 @@
<el-input v-model="form.unit" placeholder="请输入单位" /> <el-input v-model="form.unit" placeholder="请输入单位" />
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="dialog-footer" style="text-align:left;margin-top:20px;"> <div slot="footer" class="dialog-footer">
<el-button @click="reset">重置</el-button> <el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">提交</el-button> <el-button @click="cancel"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
@ -175,23 +182,22 @@ export default {
showSearch: true, showSearch: true,
// //
total: 0, total: 0,
//
open: false,
//
title: "",
typeDataList: [], typeDataList: [],
typeSelectDataList: [], typeSelectDataList: [],
// -- // --
QuoteCraftList: [], QuoteCraftList: [],
//
title: "",
//
open: false,
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
goodId: null, goodId: null,
goodsintids: null, goodsintids: [],
intstrtypeList: null, intstrtypeList: [],
typeId: null, typeId: null,
title: null, title: null,
price: null, price: null,
@ -200,7 +206,18 @@ export default {
updatedAt: null updatedAt: null
}, },
// //
form: {}, form: {
id: undefined,
goodId: undefined,
goodsintids: [],
typeId: undefined,
intstrtypeList: [],
title: undefined,
price: 0,
unit: undefined,
createdAt: undefined,
updatedAt: undefined
},
// //
rules: { rules: {
goodsintids: [ goodsintids: [
@ -225,17 +242,20 @@ export default {
created() { created() {
this.getList(); this.getList();
this.getTypeList(); this.getTypeList();
this.getTypeList1();
}, },
methods: { methods: {
/** 查询项目报价--服务工艺列表 */ /** 查询项目报价--服务工艺列表 */
getList() { getList() {
this.loading = true this.loading = true;
listQuoteCraft(this.queryParams).then(response => { listQuoteCraft(this.queryParams).then(response => {
this.QuoteCraftList = response.rows this.QuoteCraftList = response.rows || [];
this.total = response.total this.total = response.total || 0;
this.loading = false }).catch(() => {
}) this.QuoteCraftList = [];
this.total = 0;
}).finally(() => {
this.loading = false;
});
}, },
// //
cancel() { cancel() {
@ -245,23 +265,30 @@ export default {
// //
reset() { reset() {
this.form = { this.form = {
id: null, id: undefined,
goodId: null, goodId: undefined,
typeId: null, goodsintids: [],
title: null, typeId: undefined,
price: null, intstrtypeList: [],
unit: null, title: undefined,
createdAt: null, price: 0,
updatedAt: null unit: undefined,
} createdAt: undefined,
this.resetForm("form") updatedAt: undefined
};
this.typeSelectDataList = [];
this.resetForm("form");
}, },
// //
handelSelectMultiple(position, index) { handelSelectMultiple(position, index) {
var ids = this.form.goodsintids; const ids = this.form.goodsintids || [];
selectQuoteTypeList(ids).then(response => { if (ids.length > 0) {
this.typeSelectDataList = response.data; selectQuoteTypeList(ids).then(response => {
}) this.typeSelectDataList = response.data;
})
} else {
this.typeSelectDataList = [];
}
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
@ -281,30 +308,51 @@ export default {
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset() this.reset();
this.open = true //
this.title = "添加项目报价--服务工艺" this.$nextTick(() => {
this.open = true;
this.title = "添加项目报价--服务工艺";
});
}, },
getTypeList() { getTypeList() {
getGoodsDataList().then(response => { getGoodsDataList().then(response => {
this.typeDataList = response.data; this.typeDataList = response.data || [];
}) }).catch(() => {
}, this.typeDataList = [];
this.$modal.msgError("获取服务列表失败");
getTypeList1() { });
selectQuoteTypeList("11").then(response => {
this.typeSelectDataList = response.data;
})
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset() this.reset();
const id = row.id || this.ids if (!row || (!row.id && !this.ids)) {
this.$modal.msgError("请选择要修改的数据");
return;
}
const id = row?.id || this.ids;
getQuoteCraft(id).then(response => { getQuoteCraft(id).then(response => {
this.form = response.data if (response.data) {
this.open = true this.form = {
this.title = "修改项目报价--服务工艺" ...response.data,
}) goodsintids: response.data.goodsintids || [],
intstrtypeList: response.data.intstrtypeList || []
};
// ID
if (this.form.goodsintids && this.form.goodsintids.length > 0) {
this.handelSelectMultiple();
}
this.$nextTick(() => {
this.open = true;
this.title = "修改项目报价--服务工艺";
});
} else {
this.$modal.msgError("获取数据失败");
}
}).catch(error => {
console.error('获取数据失败:', error);
this.$modal.msgError("获取数据失败");
});
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
@ -328,13 +376,17 @@ export default {
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const ids = row.id || this.ids if (!row && !this.ids.length) {
this.$modal.msgError("请选择要删除的数据");
return;
}
const ids = row?.id || this.ids;
this.$modal.confirm('是否确认删除项目报价--服务工艺编号为"' + ids + '"的数据项?').then(function() { this.$modal.confirm('是否确认删除项目报价--服务工艺编号为"' + ids + '"的数据项?').then(function() {
return delQuoteCraft(ids) return delQuoteCraft(ids);
}).then(() => { }).then(() => {
this.getList() this.getList();
this.$modal.msgSuccess("删除成功") this.$modal.msgSuccess("删除成功");
}).catch(() => {}) }).catch(() => {});
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {

View File

@ -164,7 +164,14 @@
<image-upload v-model="form.icon"/> <image-upload v-model="form.icon"/>
</el-form-item> </el-form-item>
<el-form-item label="排序" prop="sort"> <el-form-item label="排序" prop="sort">
<el-input v-model="form.sort" placeholder="请输入排序" /> <el-input-number
v-model="form.sort"
:min="0"
:max="9999"
controls-position="right"
style="width: 120px;"
placeholder="请输入排序"
/>
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status"> <el-radio-group v-model="form.status">
@ -204,6 +211,14 @@
:label="parseInt(dict.value)" :label="parseInt(dict.value)"
>{{dict.label}}</el-radio> >{{dict.label}}</el-radio>
</el-radio-group> </el-radio-group>
<el-input-number
v-else-if="editField === 'sort'"
v-model="editFieldValue"
:min="0"
:max="9999"
controls-position="right"
style="width: 120px;"
/>
<el-input v-else v-model="editFieldValue" /> <el-input v-else v-model="editFieldValue" />
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@ -206,7 +206,7 @@
<el-input v-model="form.subTitle" placeholder="请输入副标题" /> <el-input v-model="form.subTitle" placeholder="请输入副标题" />
</el-form-item> </el-form-item>
<el-form-item label="图标" prop="icon"> <el-form-item label="图标" prop="icon">
<image-upload v-model="form.icon"/> <image-upload v-model="form.icon" :limit="1"/>
</el-form-item> </el-form-item>
<el-form-item label="轮播图" prop="imgs"> <el-form-item label="轮播图" prop="imgs">
<image-upload v-model="form.imgs"/> <image-upload v-model="form.imgs"/>
@ -441,18 +441,20 @@ export default {
info: null, info: null,
price: null, price: null,
priceZn: null, priceZn: null,
sales: null, sales: 0,
stock: null, stock: 0,
status: null, status: "1",
description: null, description: null,
skuType: null, skuType: 'single',
sku: null, sku: null,
skuName: '',
skuValue: '',
latitude: null, latitude: null,
longitude: null, longitude: null,
type: null, type: null,
cateId: null, cateId: null,
project: null, project: null,
sort: null, sort: 0,
material: null, material: null,
postage: null, postage: null,
basic: null, basic: null,
@ -462,6 +464,7 @@ export default {
updatedAt: null, updatedAt: null,
deletedAt: null deletedAt: null
} }
this.skuType = 'single'
this.resetForm("form") this.resetForm("form")
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
@ -521,17 +524,21 @@ export default {
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
if( this.$refs.skuRef.submit()){ // skuRefsubmit
this.form.sku=this.$refs.skuRef.submit(); if (this.skuType === 'multi' && this.$refs.skuRef) {
}else{ const skuData = this.$refs.skuRef.submit();
return if (!skuData) {
return;
}
this.form.sku = skuData;
} else {
//
this.form.sku = {
type: 'single',
name: this.form.skuName,
value: this.form.skuValue
};
} }
// if(this.$refs.skuRef.submit()){}
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {