202506061628
This commit is contained in:
parent
687ec12974
commit
5b06f9755e
|
|
@ -3,10 +3,9 @@ package com.ruoyi.system.controller;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import com.ruoyi.system.domain.Order;
|
import com.ruoyi.system.domain.*;
|
||||||
import com.ruoyi.system.domain.ServiceGoods;
|
|
||||||
import com.ruoyi.system.domain.Users;
|
|
||||||
import com.ruoyi.system.service.IServiceGoodsService;
|
import com.ruoyi.system.service.IServiceGoodsService;
|
||||||
|
import com.ruoyi.system.service.IUserAddressService;
|
||||||
import com.ruoyi.system.service.IUsersService;
|
import com.ruoyi.system.service.IUsersService;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -22,7 +21,6 @@ import com.ruoyi.common.annotation.Log;
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
import com.ruoyi.common.core.controller.BaseController;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
import com.ruoyi.common.enums.BusinessType;
|
||||||
import com.ruoyi.system.domain.GoodsOrder;
|
|
||||||
import com.ruoyi.system.service.IGoodsOrderService;
|
import com.ruoyi.system.service.IGoodsOrderService;
|
||||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
|
|
@ -42,7 +40,9 @@ public class GoodsOrderController extends BaseController
|
||||||
@Autowired
|
@Autowired
|
||||||
private IServiceGoodsService serviceGoodsService;
|
private IServiceGoodsService serviceGoodsService;
|
||||||
@Autowired
|
@Autowired
|
||||||
IUsersService usersService;
|
private IUsersService usersService;
|
||||||
|
@Autowired
|
||||||
|
private IUserAddressService userAddressService;
|
||||||
/**
|
/**
|
||||||
* 查询商品订单列表
|
* 查询商品订单列表
|
||||||
*/
|
*/
|
||||||
|
|
@ -93,13 +93,29 @@ public class GoodsOrderController extends BaseController
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增商品订单
|
* 新增商品订单IServiceGoodsService serviceGoodsService;
|
||||||
*/
|
*/
|
||||||
@PreAuthorize("@ss.hasPermi('system:GoodsOrder:add')")
|
@PreAuthorize("@ss.hasPermi('system:GoodsOrder:add')")
|
||||||
@Log(title = "商品订单", businessType = BusinessType.INSERT)
|
@Log(title = "商品订单", businessType = BusinessType.INSERT)
|
||||||
@PostMapping
|
@PostMapping
|
||||||
public AjaxResult add(@RequestBody GoodsOrder goodsOrder)
|
public AjaxResult add(@RequestBody GoodsOrder goodsOrder)
|
||||||
{
|
{
|
||||||
|
if (goodsOrder.getAddressId()!=null){
|
||||||
|
UserAddress userAddress=userAddressService.selectUserAddressById(goodsOrder.getAddressId());
|
||||||
|
if (userAddress!=null){
|
||||||
|
goodsOrder.setName(userAddress.getName());
|
||||||
|
goodsOrder.setPhone(userAddress.getPhone());
|
||||||
|
goodsOrder.setAddress(userAddress.getAddressName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (goodsOrder.getProductId()!=null){
|
||||||
|
ServiceGoods serviceGoods=serviceGoodsService.selectServiceGoodsById(goodsOrder.getProductId());
|
||||||
|
if (serviceGoods!=null){
|
||||||
|
|
||||||
|
goodsOrder.setGoodPrice(serviceGoods.getPrice());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return toAjax(goodsOrderService.insertGoodsOrder(goodsOrder));
|
return toAjax(goodsOrderService.insertGoodsOrder(goodsOrder));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -120,10 +120,12 @@ public class QuoteTypeController extends BaseController
|
||||||
* 获取项目报价--工艺分类详细信息
|
* 获取项目报价--工艺分类详细信息
|
||||||
*/
|
*/
|
||||||
@PreAuthorize("@ss.hasPermi('system:QuoteType:query')")
|
@PreAuthorize("@ss.hasPermi('system:QuoteType:query')")
|
||||||
@GetMapping(value = "/goodsDataList")
|
@GetMapping(value = "/goodsDataList/{type}")
|
||||||
public AjaxResult goodsDataList()
|
public AjaxResult goodsDataList(@PathVariable("type") int type)
|
||||||
{
|
{
|
||||||
return success(serviceGoodsService.selectServiceGoodsList(new ServiceGoods()));
|
ServiceGoods serviceGoods=new ServiceGoods();
|
||||||
|
serviceGoods.setType(type);
|
||||||
|
return success(serviceGoodsService.selectServiceGoodsList(serviceGoods));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -76,10 +76,15 @@ public class UserAddressController extends BaseController
|
||||||
* 获取用户收货地址详细信息
|
* 获取用户收货地址详细信息
|
||||||
*/
|
*/
|
||||||
@PreAuthorize("@ss.hasPermi('system:UserAddress:query')")
|
@PreAuthorize("@ss.hasPermi('system:UserAddress:query')")
|
||||||
@GetMapping(value = "/getuserAddressList")
|
@GetMapping(value = "/getuserAddressList/{id}")
|
||||||
public AjaxResult getuserAddressList()
|
public AjaxResult getuserAddressList(@PathVariable("id") Long id)
|
||||||
{
|
{
|
||||||
return success(userAddressService.selectUserAddressList(new UserAddress()));
|
UserAddress userAddress=new UserAddress();
|
||||||
|
if (id!=null){
|
||||||
|
userAddress.setUid(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
return success(userAddressService.selectUserAddressList(userAddress));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,9 +17,9 @@ export function getCoupons(id) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getGoodsDataList() {
|
export function getGoodsDataList(type) {
|
||||||
return request({
|
return request({
|
||||||
url: '/system/QuoteType/goodsDataList',
|
url: '/system/QuoteType/goodsDataList/'+type,
|
||||||
method: 'get'
|
method: 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,33 @@ export function getGoodsOrder(id) {
|
||||||
method: 'get'
|
method: 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
export function getGoodsDataList() {
|
|
||||||
|
|
||||||
|
|
||||||
|
export function getGoodsDataList(type) {
|
||||||
return request({
|
return request({
|
||||||
url: '/system/QuoteType/goodsDataList',
|
url: '/system/QuoteType/goodsDataList/'+type,
|
||||||
method: 'get'
|
method: 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
export function generateCode() {
|
||||||
|
return request({
|
||||||
|
url: '/system/Order/generateCode/',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取用户地址列表 - 备选方案
|
||||||
|
export function getUserAddressList(userId) {
|
||||||
|
return request({
|
||||||
|
url: `/system/UserAddress/getuserAddressList/${userId}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export function getSiteDeliveryList() {
|
export function getSiteDeliveryList() {
|
||||||
return request({
|
return request({
|
||||||
|
|
|
||||||
|
|
@ -50,12 +50,29 @@ export function getReceiveRecords(orderId) {
|
||||||
method: 'get'
|
method: 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
export function getGoodsDataList() {
|
export function getGoodsDataList(type) {
|
||||||
return request({
|
return request({
|
||||||
url: '/system/QuoteType/goodsDataList',
|
url: '/system/QuoteType/goodsDataList/'+type,
|
||||||
method: 'get'
|
method: 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取用户地址列表
|
||||||
|
export function getuserAddressList(id) {
|
||||||
|
return request({
|
||||||
|
url: '/system/UserAddress/getuserAddressList/' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取用户地址列表 - 备选方案
|
||||||
|
export function getUserAddressList(userId) {
|
||||||
|
return request({
|
||||||
|
url: `/system/UserAddress/getuserAddressList/${userId}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 获取接单记录列表
|
// 获取接单记录列表
|
||||||
export function getUserDataList(type) {
|
export function getUserDataList(type) {
|
||||||
return request({
|
return request({
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,9 @@ export function listQuoteType(query) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getGoodsDataList() {
|
export function getGoodsDataList(type) {
|
||||||
return request({
|
return request({
|
||||||
url: '/system/QuoteType/goodsDataList',
|
url: '/system/QuoteType/goodsDataList/'+type,
|
||||||
method: 'get'
|
method: 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -231,7 +231,7 @@
|
||||||
|
|
||||||
.el-input__inner, .el-textarea__inner {
|
.el-input__inner, .el-textarea__inner {
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
border-color: #e2e8f0;
|
// border-color: #e2e8f0;
|
||||||
transition: all 0.3s;
|
transition: all 0.3s;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,8 @@ $--border-color-lighter: #e6ebf5;
|
||||||
|
|
||||||
$--table-border: 1px solid #dfe6ec;
|
$--table-border: 1px solid #dfe6ec;
|
||||||
|
|
||||||
|
$--border-color-base:#c1c1c1;
|
||||||
|
|
||||||
/* icon font path, required */
|
/* icon font path, required */
|
||||||
$--font-path: '~element-ui/lib/theme-chalk/fonts';
|
$--font-path: '~element-ui/lib/theme-chalk/fonts';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,408 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<!-- 用户选择输入框 -->
|
||||||
|
<div @click="openDialog" :style="{ cursor: disabled ? 'not-allowed' : 'pointer' }">
|
||||||
|
<el-input
|
||||||
|
v-model="displayName"
|
||||||
|
:placeholder="placeholder"
|
||||||
|
readonly
|
||||||
|
:disabled="disabled"
|
||||||
|
:clearable="clearable && !disabled"
|
||||||
|
@clear="handleClear"
|
||||||
|
:style="{ cursor: disabled ? 'not-allowed' : 'pointer' }"
|
||||||
|
@click.native="()=>{}"
|
||||||
|
>
|
||||||
|
<template slot="suffix">
|
||||||
|
<i class="el-icon-search" :style="{ marginRight: '8px', cursor: disabled ? 'not-allowed' : 'pointer' }"></i>
|
||||||
|
</template>
|
||||||
|
</el-input>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 用户选择弹窗 -->
|
||||||
|
<el-dialog
|
||||||
|
:title="dialogTitle"
|
||||||
|
:visible.sync="dialogVisible"
|
||||||
|
:width="$store.state.app.device === 'mobile' ? '95%' : '900px'"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
append-to-body
|
||||||
|
center
|
||||||
|
class="user-select-dialog"
|
||||||
|
>
|
||||||
|
<!-- 搜索表单 -->
|
||||||
|
<el-form :model="queryParams" :inline="true" label-width="60px" class="search-form">
|
||||||
|
<el-form-item label="昵称">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.name"
|
||||||
|
placeholder="请输入昵称"
|
||||||
|
clearable
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
style="width: 160px;"
|
||||||
|
size="small"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="电话">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.phone"
|
||||||
|
placeholder="请输入电话"
|
||||||
|
clearable
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
style="width: 160px;"
|
||||||
|
size="small"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态">
|
||||||
|
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable style="width: 100px;" size="small">
|
||||||
|
<el-option label="启用" :value="1" />
|
||||||
|
<el-option label="禁用" :value="0" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery">搜索</el-button>
|
||||||
|
<el-button icon="el-icon-refresh" size="small" @click="resetQuery">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<!-- 用户列表表格 -->
|
||||||
|
<el-table
|
||||||
|
v-loading="loading"
|
||||||
|
:data="usersList"
|
||||||
|
@row-click="handleRowClick"
|
||||||
|
highlight-current-row
|
||||||
|
:row-class-name="getRowClassName"
|
||||||
|
max-height="400px"
|
||||||
|
style="width: 100%; margin-top: 15px;"
|
||||||
|
>
|
||||||
|
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||||
|
<el-table-column label="ID" prop="id" width="60" align="center" />
|
||||||
|
<el-table-column label="昵称" prop="name" min-width="100" show-overflow-tooltip />
|
||||||
|
<el-table-column label="电话" prop="phone" width="120" />
|
||||||
|
<el-table-column label="头像" width="70" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-avatar
|
||||||
|
v-if="scope.row.avatar"
|
||||||
|
:src="scope.row.avatar"
|
||||||
|
:size="35"
|
||||||
|
fit="cover"
|
||||||
|
/>
|
||||||
|
<el-avatar v-else :size="35" icon="el-icon-user-solid" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="状态" width="70" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-tag :type="scope.row.status === 1 ? 'success' : 'danger'" size="small">
|
||||||
|
{{ scope.row.status === 1 ? '启用' : '禁用' }}
|
||||||
|
</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="创建时间" prop="createdAt" width="90" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span style="font-size: 12px;">{{ parseTime(scope.row.createdAt, '{y}-{m}-{d}') }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="70" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
size="mini"
|
||||||
|
@click.stop="selectUser(scope.row)"
|
||||||
|
>
|
||||||
|
选择
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<!-- 分页组件 -->
|
||||||
|
<pagination
|
||||||
|
v-show="total > 0"
|
||||||
|
:total="total"
|
||||||
|
:page.sync="queryParams.pageNum"
|
||||||
|
:limit.sync="queryParams.pageSize"
|
||||||
|
@pagination="getList"
|
||||||
|
style="margin-top: 15px; margin-bottom: 10px;"
|
||||||
|
class="text-center"
|
||||||
|
/>
|
||||||
|
|
||||||
|
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { listUsers } from "@/api/system/users"
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "UserSelect",
|
||||||
|
props: {
|
||||||
|
// 当前选中的用户ID
|
||||||
|
value: {
|
||||||
|
type: [String, Number],
|
||||||
|
default: null
|
||||||
|
},
|
||||||
|
// 输入框占位符
|
||||||
|
placeholder: {
|
||||||
|
type: String,
|
||||||
|
default: "请选择用户"
|
||||||
|
},
|
||||||
|
// 是否禁用
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
// 是否可清空
|
||||||
|
clearable: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
|
},
|
||||||
|
// 弹窗标题
|
||||||
|
dialogTitle: {
|
||||||
|
type: String,
|
||||||
|
default: "选择用户"
|
||||||
|
},
|
||||||
|
// 用户类型过滤 (1: 普通用户, 2: 工人用户)
|
||||||
|
userType: {
|
||||||
|
type: String,
|
||||||
|
default: '1'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dialogVisible: false,
|
||||||
|
loading: false,
|
||||||
|
usersList: [],
|
||||||
|
total: 0,
|
||||||
|
selectedUser: null,
|
||||||
|
displayName: '',
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
type: this.userType,
|
||||||
|
name: null,
|
||||||
|
phone: null,
|
||||||
|
status: null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
value: {
|
||||||
|
handler(newVal) {
|
||||||
|
if (newVal) {
|
||||||
|
this.loadUserInfo(newVal)
|
||||||
|
} else {
|
||||||
|
this.displayName = ''
|
||||||
|
this.selectedUser = null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
immediate: true
|
||||||
|
},
|
||||||
|
userType: {
|
||||||
|
handler(newVal) {
|
||||||
|
this.queryParams.type = newVal
|
||||||
|
if (this.dialogVisible) {
|
||||||
|
this.getList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 打开选择弹窗
|
||||||
|
openDialog() {
|
||||||
|
if (this.disabled) return
|
||||||
|
|
||||||
|
this.dialogVisible = true
|
||||||
|
this.resetQuery()
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获取用户列表
|
||||||
|
getList() {
|
||||||
|
this.loading = true
|
||||||
|
listUsers(this.queryParams).then(response => {
|
||||||
|
this.usersList = response.rows || []
|
||||||
|
this.total = response.total || 0
|
||||||
|
this.loading = false
|
||||||
|
}).catch(error => {
|
||||||
|
console.error('获取用户列表失败:', error)
|
||||||
|
this.loading = false
|
||||||
|
this.$message.error('获取用户列表失败,请重试')
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 搜索
|
||||||
|
handleQuery() {
|
||||||
|
this.queryParams.pageNum = 1
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
|
||||||
|
// 重置搜索
|
||||||
|
resetQuery() {
|
||||||
|
this.queryParams = {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
type: this.userType,
|
||||||
|
name: null,
|
||||||
|
phone: null,
|
||||||
|
status: null
|
||||||
|
}
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
|
||||||
|
// 行点击事件
|
||||||
|
handleRowClick(row) {
|
||||||
|
this.selectedUser = row
|
||||||
|
},
|
||||||
|
|
||||||
|
// 选择用户
|
||||||
|
selectUser(user) {
|
||||||
|
this.selectedUser = user
|
||||||
|
this.displayName = user.name
|
||||||
|
this.$emit('input', user.id)
|
||||||
|
this.$emit('change', user)
|
||||||
|
this.dialogVisible = false
|
||||||
|
},
|
||||||
|
|
||||||
|
// 清空选择
|
||||||
|
handleClear() {
|
||||||
|
this.displayName = ''
|
||||||
|
this.selectedUser = null
|
||||||
|
this.$emit('input', null)
|
||||||
|
this.$emit('change', null)
|
||||||
|
},
|
||||||
|
|
||||||
|
// 加载用户信息
|
||||||
|
loadUserInfo(userId) {
|
||||||
|
if (!userId) return
|
||||||
|
|
||||||
|
// 如果当前列表中有该用户,直接使用
|
||||||
|
const user = this.usersList.find(u => u.id == userId)
|
||||||
|
if (user) {
|
||||||
|
this.displayName = user.name
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 否则发起请求获取用户信息
|
||||||
|
listUsers({
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 1,
|
||||||
|
type: this.userType,
|
||||||
|
id: userId
|
||||||
|
}).then(response => {
|
||||||
|
if (response.rows && response.rows.length > 0) {
|
||||||
|
this.displayName = response.rows[0].name
|
||||||
|
}
|
||||||
|
}).catch(() => {
|
||||||
|
// 如果获取失败,显示用户ID
|
||||||
|
this.displayName = `用户ID: ${userId}`
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获取行样式类名
|
||||||
|
getRowClassName({ row }) {
|
||||||
|
if (this.selectedUser && this.selectedUser.id === row.id) {
|
||||||
|
return 'selected-row'
|
||||||
|
}
|
||||||
|
return ''
|
||||||
|
},
|
||||||
|
|
||||||
|
// 时间格式化方法
|
||||||
|
parseTime(time, pattern) {
|
||||||
|
if (!time) return ''
|
||||||
|
|
||||||
|
const date = new Date(time)
|
||||||
|
if (isNaN(date.getTime())) return ''
|
||||||
|
|
||||||
|
const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
|
||||||
|
const formatObj = {
|
||||||
|
y: date.getFullYear(),
|
||||||
|
m: date.getMonth() + 1,
|
||||||
|
d: date.getDate(),
|
||||||
|
h: date.getHours(),
|
||||||
|
i: date.getMinutes(),
|
||||||
|
s: date.getSeconds(),
|
||||||
|
a: date.getDay()
|
||||||
|
}
|
||||||
|
|
||||||
|
return format.replace(/{([ymdhisa])+}/g, (result, key) => {
|
||||||
|
const value = formatObj[key]
|
||||||
|
return value.toString().padStart(2, '0')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.search-form {
|
||||||
|
background: #f5f7fa;
|
||||||
|
padding: 12px;
|
||||||
|
border-radius: 6px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
border: 1px solid #e4e7ed;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 选中行样式
|
||||||
|
::v-deep .selected-row {
|
||||||
|
background-color: #ecf5ff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-table__row:hover {
|
||||||
|
background-color: #f5f7fa;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 让输入框看起来像可点击的
|
||||||
|
::v-deep .el-input__inner {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-input.is-disabled .el-input__inner {
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 弹窗样式优化
|
||||||
|
.user-select-dialog {
|
||||||
|
::v-deep .el-dialog__header {
|
||||||
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||||
|
color: white;
|
||||||
|
padding: 15px 20px;
|
||||||
|
border-radius: 6px 6px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-dialog__title {
|
||||||
|
color: white;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-dialog__headerbtn .el-dialog__close {
|
||||||
|
color: white;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-dialog__body {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-table {
|
||||||
|
border-radius: 6px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-table th {
|
||||||
|
background-color: #f8f9fa;
|
||||||
|
color: #495057;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 表格行悬停效果
|
||||||
|
::v-deep .el-table__row:hover {
|
||||||
|
background-color: #f8f9fa !important;
|
||||||
|
transition: background-color 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 分页居中
|
||||||
|
.text-center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -39,6 +39,8 @@ import VueMeta from 'vue-meta'
|
||||||
import DictData from '@/components/DictData'
|
import DictData from '@/components/DictData'
|
||||||
// 美化包装组件
|
// 美化包装组件
|
||||||
import BeautyWrapper from '@/components/BeautyWrapper'
|
import BeautyWrapper from '@/components/BeautyWrapper'
|
||||||
|
// 用户选择组件
|
||||||
|
import UserSelect from '@/components/UserSelect'
|
||||||
|
|
||||||
import sku from '@/components/Sku/sku'
|
import sku from '@/components/Sku/sku'
|
||||||
|
|
||||||
|
|
@ -62,6 +64,7 @@ Vue.component('FileUpload', FileUpload)
|
||||||
Vue.component('ImageUpload', ImageUpload)
|
Vue.component('ImageUpload', ImageUpload)
|
||||||
Vue.component('ImagePreview', ImagePreview)
|
Vue.component('ImagePreview', ImagePreview)
|
||||||
Vue.component('BeautyWrapper', BeautyWrapper)
|
Vue.component('BeautyWrapper', BeautyWrapper)
|
||||||
|
Vue.component('UserSelect', UserSelect)
|
||||||
Vue.component('Sku', sku)
|
Vue.component('Sku', sku)
|
||||||
|
|
||||||
Vue.use(directive)
|
Vue.use(directive)
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,13 @@
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-select v-model="queryParams.uid" placeholder="请选择用户" clearable filterable>
|
<user-select
|
||||||
<el-option v-for="item in userDataList" :key="item.id" :label="item.name" :value="item.id" />
|
v-model="queryParams.uid"
|
||||||
</el-select>
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
style="width: 200px;"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="公司名称" prop="company">
|
<el-form-item label="公司名称" prop="company">
|
||||||
<el-input
|
<el-input
|
||||||
|
|
@ -158,9 +162,12 @@
|
||||||
<el-input v-model="form.id" disabled />
|
<el-input v-model="form.id" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-select v-model="form.uid" placeholder="请选择用户" clearable filterable style="width: 100%">
|
<user-select
|
||||||
<el-option v-for="item in userDataList" :key="item.id" :label="item.name" :value="item.id" />
|
v-model="form.uid"
|
||||||
</el-select>
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="公司名称" prop="company">
|
<el-form-item label="公司名称" prop="company">
|
||||||
<el-input v-model="form.company" placeholder="请输入公司名称" />
|
<el-input v-model="form.company" placeholder="请输入公司名称" />
|
||||||
|
|
@ -193,7 +200,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { listCooperate, getCooperate, delCooperate, addCooperate, updateCooperate,changetypeStatus,getUserDataList } from "@/api/system/Cooperate"
|
import { listCooperate, getCooperate, delCooperate, addCooperate, updateCooperate,changetypeStatus } from "@/api/system/Cooperate"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Cooperate",
|
name: "Cooperate",
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,12 @@
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-input
|
<user-select
|
||||||
v-model="queryParams.uid"
|
v-model="queryParams.uid"
|
||||||
placeholder="请输入用户"
|
placeholder="请选择用户"
|
||||||
clearable
|
user-type="1"
|
||||||
@keyup.enter.native="handleQuery"
|
dialog-title="选择用户"
|
||||||
|
style="width: 200px;"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="优惠券id" prop="couponId">
|
<el-form-item label="优惠券id" prop="couponId">
|
||||||
|
|
@ -206,7 +207,12 @@
|
||||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-input v-model="form.uid" placeholder="请输入用户" />
|
<user-select
|
||||||
|
v-model="form.uid"
|
||||||
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="优惠券id" prop="couponId">
|
<el-form-item label="优惠券id" prop="couponId">
|
||||||
<el-input v-model="form.couponId" placeholder="请输入优惠券id" />
|
<el-input v-model="form.couponId" placeholder="请输入优惠券id" />
|
||||||
|
|
|
||||||
|
|
@ -908,7 +908,7 @@ export default {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
getGoodsDataList() {
|
getGoodsDataList() {
|
||||||
getGoodsDataList().then(response => {
|
getGoodsDataList(2).then(response => {
|
||||||
this.serviceGoodsList = response.data
|
this.serviceGoodsList = response.data
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,12 @@
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-input
|
<user-select
|
||||||
v-model="queryParams.uid"
|
v-model="queryParams.uid"
|
||||||
placeholder="请输入用户"
|
placeholder="请选择用户"
|
||||||
clearable
|
user-type="1"
|
||||||
@keyup.enter.native="handleQuery"
|
dialog-title="选择用户"
|
||||||
|
style="width: 200px;"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="商品id" prop="goodId">
|
<el-form-item label="商品id" prop="goodId">
|
||||||
|
|
@ -142,7 +143,12 @@
|
||||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-input v-model="form.uid" placeholder="请输入用户" />
|
<user-select
|
||||||
|
v-model="form.uid"
|
||||||
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="商品id" prop="goodId">
|
<el-form-item label="商品id" prop="goodId">
|
||||||
<el-input v-model="form.goodId" placeholder="请输入商品id" />
|
<el-input v-model="form.goodId" placeholder="请输入商品id" />
|
||||||
|
|
|
||||||
|
|
@ -26,9 +26,13 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-select v-model="queryParams.uid" placeholder="请选择用户" clearable filterable>
|
<user-select
|
||||||
<el-option v-for="item in userDataList" :key="item.id" :label="item.name" :value="item.id" />
|
v-model="queryParams.uid"
|
||||||
</el-select>
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
style="width: 200px;"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="商品" prop="productId">
|
<el-form-item label="商品" prop="productId">
|
||||||
<el-select v-model="queryParams.productId" placeholder="请选择商品" clearable filterable>
|
<el-select v-model="queryParams.productId" placeholder="请选择商品" clearable filterable>
|
||||||
|
|
@ -215,12 +219,31 @@
|
||||||
</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="请输入用户" />
|
<user-select
|
||||||
|
v-model="form.uid"
|
||||||
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
@change="handleUserSelectChange"
|
||||||
|
/>
|
||||||
</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">
|
||||||
|
|
@ -230,17 +253,38 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="总价" prop="totalPrice">
|
<el-form-item label="总价" prop="totalPrice">
|
||||||
<el-input v-model="form.totalPrice" placeholder="请输入总价" prefix-icon="el-icon-money" />
|
<el-input-number
|
||||||
|
v-model="form.totalPrice"
|
||||||
|
placeholder="请输入总价"
|
||||||
|
:min="0"
|
||||||
|
:precision="2"
|
||||||
|
:step="0.01"
|
||||||
|
style="width: 100%"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="支付金额" prop="payPrice">
|
<el-form-item label="支付金额" prop="payPrice">
|
||||||
<el-input v-model="form.payPrice" placeholder="请输入支付金额" prefix-icon="el-icon-money" />
|
<el-input-number
|
||||||
|
v-model="form.payPrice"
|
||||||
|
placeholder="请输入支付金额"
|
||||||
|
:min="0"
|
||||||
|
:precision="2"
|
||||||
|
:step="0.01"
|
||||||
|
style="width: 100%"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="抵扣金额" prop="deduction">
|
<el-form-item label="抵扣金额" prop="deduction">
|
||||||
<el-input v-model="form.deduction" placeholder="请输入抵扣金额" />
|
<el-input-number
|
||||||
|
v-model="form.deduction"
|
||||||
|
placeholder="请输入抵扣金额"
|
||||||
|
:min="0"
|
||||||
|
:precision="2"
|
||||||
|
:step="0.01"
|
||||||
|
style="width: 100%"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
|
|
@ -315,25 +359,44 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
</template>
|
</template>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="关联地址" prop="addressId">
|
<div class="address-section">
|
||||||
<el-input v-model="form.addressId" placeholder="请输入关联地址" />
|
<h4 style="margin: 0 0 15px 0; color: #409EFF; font-size: 16px;">📍 关联地址</h4>
|
||||||
|
<el-form-item label="地址" prop="addressId" style="margin-bottom: 0;">
|
||||||
|
<el-select
|
||||||
|
v-model="form.addressId"
|
||||||
|
placeholder="请选择地址"
|
||||||
|
clearable
|
||||||
|
filterable
|
||||||
|
style="width: 100%"
|
||||||
|
:disabled="!form.uid || addressLoading"
|
||||||
|
:loading="addressLoading"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in userAddressList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.addressName"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
<div v-if="!form.uid" class="tip-text info">
|
||||||
|
请先选择用户
|
||||||
|
</div>
|
||||||
|
<div v-else-if="userAddressList.length === 0 && !addressLoading" class="tip-text warning">
|
||||||
|
该用户暂无地址信息
|
||||||
|
</div>
|
||||||
|
<div v-else-if="addressLoading" class="tip-text info">
|
||||||
|
正在加载地址数据...
|
||||||
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="备注" prop="mark">
|
<el-form-item label="备注" prop="mark">
|
||||||
<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>
|
||||||
|
|
@ -346,7 +409,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { listGoodsOrder, getGoodsOrder, delGoodsOrder, addGoodsOrder, updateGoodsOrder, getUserDataList, getGoodsDataList ,getSiteDeliveryList} from "@/api/system/GoodsOrder"
|
import { listGoodsOrder, getGoodsOrder, delGoodsOrder, addGoodsOrder, updateGoodsOrder, getGoodsDataList ,getSiteDeliveryList,getUserAddressList,generateCode} from "@/api/system/GoodsOrder"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "GoodsOrder",
|
name: "GoodsOrder",
|
||||||
|
|
@ -368,7 +431,12 @@ export default {
|
||||||
// 商品订单表格数据
|
// 商品订单表格数据
|
||||||
GoodsOrderList: [],
|
GoodsOrderList: [],
|
||||||
|
|
||||||
userDataList: [],
|
|
||||||
|
userAddressList: [],
|
||||||
|
// 地址加载状态
|
||||||
|
addressLoading: false,
|
||||||
|
|
||||||
|
|
||||||
// 服务订单表格数据
|
// 服务订单表格数据
|
||||||
|
|
||||||
goodsDataList : [],
|
goodsDataList : [],
|
||||||
|
|
@ -419,7 +487,12 @@ export default {
|
||||||
//------------------
|
//------------------
|
||||||
},
|
},
|
||||||
// 表单参数
|
// 表单参数
|
||||||
form: {},
|
form: {
|
||||||
|
type: 2,
|
||||||
|
totalPrice: 0,
|
||||||
|
payPrice: 0,
|
||||||
|
deduction: 0,
|
||||||
|
},
|
||||||
// 表单校验
|
// 表单校验
|
||||||
rules: {
|
rules: {
|
||||||
type: [
|
type: [
|
||||||
|
|
@ -501,7 +574,6 @@ export default {
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.getList();
|
this.getList();
|
||||||
this.fetchUserDataList();
|
|
||||||
this.fetchGoodsDataList();
|
this.fetchGoodsDataList();
|
||||||
this.getdeliveryList();
|
this.getdeliveryList();
|
||||||
|
|
||||||
|
|
@ -525,7 +597,7 @@ export default {
|
||||||
reset() {
|
reset() {
|
||||||
this.form = {
|
this.form = {
|
||||||
id: null,
|
id: null,
|
||||||
type: null,
|
type: 2,
|
||||||
mainOrderId: null,
|
mainOrderId: null,
|
||||||
orderId: null,
|
orderId: null,
|
||||||
transactionId: null,
|
transactionId: null,
|
||||||
|
|
@ -534,13 +606,13 @@ export default {
|
||||||
name: null,
|
name: null,
|
||||||
phone: null,
|
phone: null,
|
||||||
address: null,
|
address: null,
|
||||||
num: null,
|
num: 1,
|
||||||
totalPrice: null,
|
totalPrice: 0,
|
||||||
goodPrice: null,
|
goodPrice: 0,
|
||||||
servicePrice: null,
|
servicePrice: 0,
|
||||||
payPrice: null,
|
payPrice: 0,
|
||||||
deduction: null,
|
deduction: 0,
|
||||||
postage: null,
|
postage: 0,
|
||||||
payTime: null,
|
payTime: null,
|
||||||
status: null,
|
status: null,
|
||||||
deliveryId: null,
|
deliveryId: null,
|
||||||
|
|
@ -553,6 +625,9 @@ export default {
|
||||||
updatedAt: null,
|
updatedAt: null,
|
||||||
deletedAt: null
|
deletedAt: null
|
||||||
}
|
}
|
||||||
|
// 重置地址列表
|
||||||
|
this.userAddressList = []
|
||||||
|
this.addressLoading = false
|
||||||
this.resetForm("form")
|
this.resetForm("form")
|
||||||
},
|
},
|
||||||
/** 搜索按钮操作 */
|
/** 搜索按钮操作 */
|
||||||
|
|
@ -592,8 +667,15 @@ export default {
|
||||||
this.single = selection.length!==1
|
this.single = selection.length!==1
|
||||||
this.multiple = !selection.length
|
this.multiple = !selection.length
|
||||||
},
|
},
|
||||||
|
//获取报价材料列表
|
||||||
|
generateCode(){
|
||||||
|
generateCode().then(response => {
|
||||||
|
this.form.orderId=response.msg;
|
||||||
|
})
|
||||||
|
},
|
||||||
/** 新增按钮操作 */
|
/** 新增按钮操作 */
|
||||||
handleAdd() {
|
handleAdd() {
|
||||||
|
this.generateCode()
|
||||||
this.reset()
|
this.reset()
|
||||||
this.open = true
|
this.open = true
|
||||||
this.title = "添加商品订单"
|
this.title = "添加商品订单"
|
||||||
|
|
@ -604,6 +686,12 @@ export default {
|
||||||
const id = row.id || this.ids
|
const id = row.id || this.ids
|
||||||
getGoodsOrder(id).then(response => {
|
getGoodsOrder(id).then(response => {
|
||||||
this.form = response.data
|
this.form = response.data
|
||||||
|
|
||||||
|
// 如果有用户ID,获取对应的地址列表
|
||||||
|
if (this.form.uid) {
|
||||||
|
this.getUserAddressList(this.form.uid)
|
||||||
|
}
|
||||||
|
|
||||||
this.open = true
|
this.open = true
|
||||||
this.title = "修改商品订单"
|
this.title = "修改商品订单"
|
||||||
})
|
})
|
||||||
|
|
@ -646,14 +734,22 @@ export default {
|
||||||
}, `GoodsOrder_${new Date().getTime()}.xlsx`)
|
}, `GoodsOrder_${new Date().getTime()}.xlsx`)
|
||||||
},
|
},
|
||||||
|
|
||||||
fetchUserDataList() {
|
// handleUserSelectChange替代handleUserChange
|
||||||
getUserDataList("1").then(response => {
|
handleUserSelectChange(userId) {
|
||||||
this.userDataList = response.data;
|
// 清空当前选中的地址
|
||||||
});
|
this.form.addressId = null
|
||||||
|
|
||||||
|
if (userId) {
|
||||||
|
// 获取新用户的地址列表
|
||||||
|
this.getUserAddressList(userId)
|
||||||
|
} else {
|
||||||
|
// 如果清空用户选择,也清空地址列表
|
||||||
|
this.userAddressList = []
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
fetchGoodsDataList() {
|
fetchGoodsDataList() {
|
||||||
getGoodsDataList().then(response => {
|
getGoodsDataList(2).then(response => {
|
||||||
this.goodsDataList = response.data;
|
this.goodsDataList = response.data;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
@ -663,6 +759,34 @@ export default {
|
||||||
getSiteDeliveryList().then(response => {
|
getSiteDeliveryList().then(response => {
|
||||||
this.deliveryList = response.data;
|
this.deliveryList = response.data;
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 获取用户地址列表
|
||||||
|
getUserAddressList(userId) {
|
||||||
|
if (!userId) {
|
||||||
|
this.userAddressList = []
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
this.addressLoading = true
|
||||||
|
|
||||||
|
// 使用API函数获取用户地址
|
||||||
|
getUserAddressList(userId).then(response => {
|
||||||
|
this.userAddressList = response.rows || response.data || []
|
||||||
|
this.addressLoading = false
|
||||||
|
|
||||||
|
// 如果当前选中的地址不在新的地址列表中,清空选择
|
||||||
|
if (this.form.addressId && !this.userAddressList.find(item => item.id === this.form.addressId)) {
|
||||||
|
this.form.addressId = null
|
||||||
|
}
|
||||||
|
}).catch(error => {
|
||||||
|
console.error('获取用户地址列表失败:', error)
|
||||||
|
this.userAddressList = []
|
||||||
|
this.addressLoading = false
|
||||||
|
this.$modal.msgError('获取用户地址列表失败')
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
|
|
@ -688,11 +812,72 @@ export default {
|
||||||
/* 表单输入框字体变大,颜色分明 */
|
/* 表单输入框字体变大,颜色分明 */
|
||||||
.el-input__inner,
|
.el-input__inner,
|
||||||
.el-select .el-input__inner,
|
.el-select .el-input__inner,
|
||||||
.el-date-editor .el-input__inner {
|
.el-date-editor .el-input__inner,
|
||||||
|
.el-input-number .el-input__inner {
|
||||||
font-size: 18px !important;
|
font-size: 18px !important;
|
||||||
color: #222 !important;
|
color: #222 !important;
|
||||||
background: #f8f8f8 !important;
|
background: #f8f8f8 !important;
|
||||||
border: 1.5px solid #409EFF !important;
|
border: 1.5px solid #409EFF !important;
|
||||||
|
border-radius: 6px;
|
||||||
|
transition: all 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-input__inner:hover,
|
||||||
|
.el-select .el-input__inner:hover,
|
||||||
|
.el-date-editor .el-input__inner:hover,
|
||||||
|
.el-input-number .el-input__inner:hover {
|
||||||
|
border-color: #66b1ff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-input__inner:focus,
|
||||||
|
.el-select .el-input__inner:focus,
|
||||||
|
.el-date-editor .el-input__inner:focus,
|
||||||
|
.el-input-number .el-input__inner:focus {
|
||||||
|
border-color: #409EFF !important;
|
||||||
|
box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.2) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 数字输入框样式 */
|
||||||
|
.el-input-number {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-input-number .el-input-number__increase,
|
||||||
|
.el-input-number .el-input-number__decrease {
|
||||||
|
background-color: #f8f8f8;
|
||||||
|
border-color: #409EFF;
|
||||||
|
color: #409EFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-input-number .el-input-number__increase:hover,
|
||||||
|
.el-input-number .el-input-number__decrease:hover {
|
||||||
|
background-color: #409EFF;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 下拉选择框禁用状态样式 */
|
||||||
|
.el-select.is-disabled .el-input__inner {
|
||||||
|
background-color: #f5f7fa !important;
|
||||||
|
border-color: #e4e7ed !important;
|
||||||
|
color: #c0c4cc !important;
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 下拉选择项样式 */
|
||||||
|
.el-select-dropdown__item {
|
||||||
|
font-size: 16px !important;
|
||||||
|
color: #222 !important;
|
||||||
|
padding: 8px 20px;
|
||||||
|
transition: background-color 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-select-dropdown__item:hover {
|
||||||
|
background-color: #f5f7fa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-select-dropdown__item.selected {
|
||||||
|
color: #409EFF !important;
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-form-item__label {
|
.el-form-item__label {
|
||||||
|
|
@ -701,10 +886,7 @@ export default {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-select-dropdown__item {
|
/* 移除重复的样式定义,已在上面定义过 */
|
||||||
font-size: 16px !important;
|
|
||||||
color: #222 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-table th, .el-table td {
|
.el-table th, .el-table td {
|
||||||
font-size: 16px !important;
|
font-size: 16px !important;
|
||||||
|
|
@ -738,4 +920,43 @@ export default {
|
||||||
border-color: #389e0d !important;
|
border-color: #389e0d !important;
|
||||||
box-shadow: 0 0 0 2px rgba(82, 196, 26, 0.2) !important;
|
box-shadow: 0 0 0 2px rgba(82, 196, 26, 0.2) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 地址选择区域样式 */
|
||||||
|
.address-section {
|
||||||
|
border: 1.5px solid #e6f7ff;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 15px;
|
||||||
|
margin: 10px 0;
|
||||||
|
background-color: #f0f9ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.address-section .el-form-item__label {
|
||||||
|
color: #409EFF !important;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.address-section .el-select .el-input__inner {
|
||||||
|
border: 1.5px solid #409EFF !important;
|
||||||
|
background-color: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.address-section .el-select .el-input__inner:focus {
|
||||||
|
border-color: #1890ff !important;
|
||||||
|
box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.2) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 提示信息样式 */
|
||||||
|
.tip-text {
|
||||||
|
font-size: 12px;
|
||||||
|
margin-top: 4px;
|
||||||
|
padding: 2px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tip-text.warning {
|
||||||
|
color: #F56C6C;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tip-text.info {
|
||||||
|
color: #909399;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -19,9 +19,13 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-select v-model="queryParams.uid" placeholder="请选择用户" clearable filterable>
|
<user-select
|
||||||
<el-option v-for="item in userDataList" :key="item.id" :label="item.name" :value="item.id" />
|
v-model="queryParams.uid"
|
||||||
</el-select>
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
style="width: 200px;"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="类型" prop="type">
|
<el-form-item label="类型" prop="type">
|
||||||
<el-select v-model="queryParams.type" placeholder="请选择类型" clearable>
|
<el-select v-model="queryParams.type" placeholder="请选择类型" clearable>
|
||||||
|
|
@ -135,7 +139,12 @@
|
||||||
<el-input v-model="form.mark" placeholder="请输入描述" />
|
<el-input v-model="form.mark" placeholder="请输入描述" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-input v-model="form.uid" placeholder="请输入用户" />
|
<user-select
|
||||||
|
v-model="form.uid"
|
||||||
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="积分值" prop="num">
|
<el-form-item label="积分值" prop="num">
|
||||||
<el-input v-model="form.num" placeholder="请输入积分值" />
|
<el-input v-model="form.num" placeholder="请输入积分值" />
|
||||||
|
|
@ -166,7 +175,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { listIntegralLog, getIntegralLog, delIntegralLog, addIntegralLog, updateIntegralLog ,getUserDataList} from "@/api/system/IntegralLog"
|
import { listIntegralLog, getIntegralLog, delIntegralLog, addIntegralLog, updateIntegralLog } from "@/api/system/IntegralLog"
|
||||||
import request from "@/utils/request"
|
import request from "@/utils/request"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
@ -186,7 +195,7 @@ export default {
|
||||||
// 总条数
|
// 总条数
|
||||||
total: 0,
|
total: 0,
|
||||||
|
|
||||||
userDataList: [],
|
|
||||||
// 积分日志表格数据
|
// 积分日志表格数据
|
||||||
IntegralLogList: [],
|
IntegralLogList: [],
|
||||||
// 弹出层标题
|
// 弹出层标题
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,13 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-select v-model="queryParams.uid" placeholder="请选择用户" clearable filterable>
|
<user-select
|
||||||
<el-option v-for="item in users" :key="item.userId" :label="item.userName" :value="item.userId" />
|
v-model="queryParams.uid"
|
||||||
</el-select>
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
style="width: 200px;"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="姓名" prop="userName">
|
<el-form-item label="姓名" prop="userName">
|
||||||
<el-input
|
<el-input
|
||||||
|
|
@ -160,9 +164,12 @@
|
||||||
<el-input v-model="form.orderId" placeholder="请输入订单号" />
|
<el-input v-model="form.orderId" placeholder="请输入订单号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-select v-model="form.uid" placeholder="请选择用户" clearable filterable style="width: 100%">
|
<user-select
|
||||||
<el-option v-for="item in userDataList" :key="item.id" :label="item.name" :value="item.id" />
|
v-model="form.uid"
|
||||||
</el-select>
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="姓名" prop="userName">
|
<el-form-item label="姓名" prop="userName">
|
||||||
<el-input v-model="form.userName" placeholder="请输入姓名" />
|
<el-input v-model="form.userName" placeholder="请输入姓名" />
|
||||||
|
|
@ -256,7 +263,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { listIntegralOrder, getIntegralOrder, delIntegralOrder, addIntegralOrder, updateIntegralOrder,getUserDataList,getIntegralProductList,getSiteDeliveryList } from "@/api/system/IntegralOrder"
|
import { listIntegralOrder, getIntegralOrder, delIntegralOrder, addIntegralOrder, updateIntegralOrder,getIntegralProductList,getSiteDeliveryList } from "@/api/system/IntegralOrder"
|
||||||
import request from "@/utils/request"
|
import request from "@/utils/request"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
@ -280,7 +287,7 @@ export default {
|
||||||
|
|
||||||
integralProductList: [],
|
integralProductList: [],
|
||||||
|
|
||||||
userDataList: [],
|
|
||||||
// 积分订单表格数据
|
// 积分订单表格数据
|
||||||
IntegralOrderList: [],
|
IntegralOrderList: [],
|
||||||
// 弹出层标题
|
// 弹出层标题
|
||||||
|
|
@ -367,9 +374,9 @@ export default {
|
||||||
created() {
|
created() {
|
||||||
this.getList()
|
this.getList()
|
||||||
this.getOptions()
|
this.getOptions()
|
||||||
this.getuserDataList()
|
|
||||||
this.getIntegralProductList()
|
this.getIntegralProductList()
|
||||||
this.getSiteDeliveryList()
|
this.getSiteDeliveryList()
|
||||||
|
this.getUserAddressList()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getOptions() {
|
getOptions() {
|
||||||
|
|
@ -443,13 +450,15 @@ export default {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getUserAddressList(){
|
||||||
getuserDataList(){
|
getUserAddressList(this.form.uid).then(res => {
|
||||||
getUserDataList(1).then(res => {
|
this.UserAddressList = res.data
|
||||||
this.userDataList = res.data
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** 新增按钮操作 */
|
/** 新增按钮操作 */
|
||||||
handleAdd() {
|
handleAdd() {
|
||||||
this.reset()
|
this.reset()
|
||||||
|
|
|
||||||
|
|
@ -109,9 +109,13 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-select v-model="queryParams.uid" placeholder="请选择用户" clearable filterable>
|
<user-select
|
||||||
<el-option v-for="item in userDataList" :key="item.id" :label="item.name" :value="item.id" />
|
v-model="queryParams.uid"
|
||||||
</el-select>
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
style="width: 200px;"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="商品" prop="productId">
|
<el-form-item label="商品" prop="productId">
|
||||||
<el-select v-model="queryParams.productId" placeholder="请选择商品" clearable filterable>
|
<el-select v-model="queryParams.productId" placeholder="请选择商品" clearable filterable>
|
||||||
|
|
@ -119,9 +123,13 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="师傅" prop="workerId">
|
<el-form-item label="师傅" prop="workerId">
|
||||||
<el-select v-model="queryParams.workerId" placeholder="请选择师傅" clearable filterable>
|
<user-select
|
||||||
<el-option v-for="item in userGongRenList" :key="item.id" :label="item.name" :value="item.id" />
|
v-model="queryParams.workerId"
|
||||||
</el-select>
|
placeholder="请选择师傅"
|
||||||
|
user-type="2"
|
||||||
|
dialog-title="选择师傅"
|
||||||
|
style="width: 200px;"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
|
|
@ -345,26 +353,39 @@
|
||||||
<template v-if="form.createType === 1">
|
<template v-if="form.createType === 1">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-select v-model="form.uid" placeholder="请选择用户" clearable filterable style="width: 100%">
|
<user-select
|
||||||
<el-option
|
v-model="form.uid"
|
||||||
v-for="item in userDataList"
|
placeholder="请选择用户"
|
||||||
:key="item.id"
|
user-type="1"
|
||||||
:label="item.name"
|
dialog-title="选择用户"
|
||||||
:value="item.id"
|
@change="handleUserSelectChange"
|
||||||
/>
|
/>
|
||||||
</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="addressId">
|
<el-form-item label="关联地址" prop="addressId">
|
||||||
<el-select v-model="form.addressId" placeholder="请选择地址" clearable filterable style="width: 100%">
|
<el-select
|
||||||
|
v-model="form.addressId"
|
||||||
|
placeholder="请选择地址"
|
||||||
|
clearable
|
||||||
|
filterable
|
||||||
|
style="width: 100%"
|
||||||
|
:disabled="!form.uid || addressLoading"
|
||||||
|
:loading="addressLoading"
|
||||||
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in addressList"
|
v-for="item in addressList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.address"
|
:label="item.addressName"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
<div v-if="!form.uid" style="color: #909399; font-size: 12px; margin-top: 4px;">
|
||||||
|
请先选择用户
|
||||||
|
</div>
|
||||||
|
<div v-else-if="addressList.length === 0 && !addressLoading" style="color: #F56C6C; font-size: 12px; margin-top: 4px;">
|
||||||
|
该用户暂无地址信息
|
||||||
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -493,14 +514,12 @@
|
||||||
<template v-if="form.jsonStatus === 1">
|
<template v-if="form.jsonStatus === 1">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="师傅" prop="orderLog.workerId">
|
<el-form-item label="师傅" prop="orderLog.workerId">
|
||||||
<el-select v-model="form.orderLog.workerId" placeholder="请选择师傅" clearable filterable style="width: 100%">
|
<user-select
|
||||||
<el-option
|
v-model="form.orderLog.workerId"
|
||||||
v-for="item in userGongRenList"
|
placeholder="请选择师傅"
|
||||||
:key="item.id"
|
user-type="2"
|
||||||
:label="item.name"
|
dialog-title="选择师傅"
|
||||||
:value="item.id"
|
|
||||||
/>
|
/>
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
|
@ -799,14 +818,13 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="师傅" prop="orderLog.workerId">
|
<el-form-item label="师傅" prop="orderLog.workerId">
|
||||||
<el-select v-model="form.orderLog.workerId" placeholder="请选择师傅" clearable filterable style="width: 100%" @change="handleCancelData">
|
<user-select
|
||||||
<el-option
|
v-model="form.orderLog.workerId"
|
||||||
v-for="item in userGongRenList"
|
placeholder="请选择师傅"
|
||||||
:key="item.id"
|
user-type="2"
|
||||||
:label="item.name"
|
dialog-title="选择师傅"
|
||||||
:value="item.id"
|
@change="handleCancelDataWithWorker"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
|
|
@ -1006,8 +1024,20 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
import { listOrder, getOrder, delOrder, addOrder, updateOrder,getUserDataList,getGoodsDataList,selectQuoteCraftList,generateCode,selectQuoteMaterialList,selectBaseProjectList} from "@/api/system/Order"
|
import {
|
||||||
import { getuserAddressList } from "@/api/system/UserAddress"
|
listOrder,
|
||||||
|
getOrder,
|
||||||
|
delOrder,
|
||||||
|
addOrder,
|
||||||
|
updateOrder,
|
||||||
|
getGoodsDataList,
|
||||||
|
selectQuoteCraftList,
|
||||||
|
generateCode,
|
||||||
|
selectQuoteMaterialList,
|
||||||
|
selectBaseProjectList,
|
||||||
|
getuserAddressList,
|
||||||
|
getUserAddressList
|
||||||
|
} from "@/api/system/Order"
|
||||||
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'
|
||||||
|
|
@ -1047,15 +1077,14 @@ export default {
|
||||||
|
|
||||||
baseProjectList: [],
|
baseProjectList: [],
|
||||||
|
|
||||||
userDataList: [],
|
|
||||||
|
|
||||||
userGongRenList: [],
|
|
||||||
// 服务订单表格数据
|
// 服务订单表格数据
|
||||||
OrderList: [],
|
OrderList: [],
|
||||||
|
|
||||||
goodsDataList : [],
|
goodsDataList : [],
|
||||||
// 用户地址列表
|
// 用户地址列表
|
||||||
addressList: [],
|
addressList: [],
|
||||||
|
// 地址加载状态
|
||||||
|
addressLoading: false,
|
||||||
// 弹出层标题
|
// 弹出层标题
|
||||||
title: "",
|
title: "",
|
||||||
// 是否显示弹出层
|
// 是否显示弹出层
|
||||||
|
|
@ -1296,12 +1325,12 @@ export default {
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.getList()
|
this.getList()
|
||||||
this.getUserDataList()
|
|
||||||
this.getuserGongRenList()
|
|
||||||
this.getGoodsDataListList();
|
this.getGoodsDataListList();
|
||||||
this.getAddressList();
|
// 移除这里的getAddressList调用,因为需要先选择用户
|
||||||
this.getQuoteCraftList()
|
this.getQuoteCraftList()
|
||||||
this.getQuoteMaterialList()
|
this.getQuoteMaterialList()
|
||||||
|
|
||||||
|
// 初始化完成
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
/** 查询服务订单列表 */
|
/** 查询服务订单列表 */
|
||||||
|
|
@ -1371,6 +1400,9 @@ export default {
|
||||||
cancelReason: null, // 重置取消原因
|
cancelReason: null, // 重置取消原因
|
||||||
timeoutDuration: null, // 重置超时时长
|
timeoutDuration: null, // 重置超时时长
|
||||||
}
|
}
|
||||||
|
// 重置地址列表
|
||||||
|
this.addressList = []
|
||||||
|
this.addressLoading = false
|
||||||
this.resetForm("form")
|
this.resetForm("form")
|
||||||
},
|
},
|
||||||
/** 搜索按钮操作 */
|
/** 搜索按钮操作 */
|
||||||
|
|
@ -1501,6 +1533,11 @@ export default {
|
||||||
getOrder(id).then(response => {
|
getOrder(id).then(response => {
|
||||||
this.form = response.data
|
this.form = response.data
|
||||||
|
|
||||||
|
// 如果有用户ID,获取对应的地址列表
|
||||||
|
if (this.form.uid) {
|
||||||
|
this.getAddressList(this.form.uid)
|
||||||
|
}
|
||||||
|
|
||||||
// 时间戳转换为日期格式显示
|
// 时间戳转换为日期格式显示
|
||||||
if (this.form.makeTime && typeof this.form.makeTime === 'number') {
|
if (this.form.makeTime && typeof this.form.makeTime === 'number') {
|
||||||
this.form.makeTime = this.timestampToDate(this.form.makeTime)
|
this.form.makeTime = this.timestampToDate(this.form.makeTime)
|
||||||
|
|
@ -1711,30 +1748,65 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
getUserDataList () {
|
|
||||||
getUserDataList("1").then(response => {
|
|
||||||
this.userDataList = response.data
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
getuserGongRenList () {
|
|
||||||
getUserDataList("2").then(response => {
|
|
||||||
this.userGongRenList = response.data
|
|
||||||
})
|
|
||||||
},
|
|
||||||
getGoodsDataListList () {
|
getGoodsDataListList () {
|
||||||
getGoodsDataList().then(response => {
|
getGoodsDataList(1).then(response => {
|
||||||
this.goodsDataList = response.data
|
this.goodsDataList = response.data
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
// 获取用户地址列表
|
// 获取用户地址列表
|
||||||
getAddressList() {
|
getAddressList(userId) {
|
||||||
getuserAddressList().then(response => {
|
if (!userId) {
|
||||||
this.addressList = response.rows || []
|
this.addressList = []
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
this.addressLoading = true
|
||||||
|
|
||||||
|
// 使用新的API函数
|
||||||
|
getUserAddressList(userId).then(response => {
|
||||||
|
this.addressList = response.rows || response.data || []
|
||||||
|
this.addressLoading = false
|
||||||
|
|
||||||
|
// 如果当前选中的地址不在新的地址列表中,清空选择
|
||||||
|
if (this.form.addressId && !this.addressList.find(item => item.id === this.form.addressId)) {
|
||||||
|
this.form.addressId = null
|
||||||
|
}
|
||||||
|
}).catch(error => {
|
||||||
|
console.error('获取用户地址列表失败:', error)
|
||||||
|
this.addressList = []
|
||||||
|
this.addressLoading = false
|
||||||
|
this.$modal.msgError('获取用户地址列表失败')
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 处理用户选择变化 (UserSelect组件的change事件)
|
||||||
|
handleUserSelectChange(user) {
|
||||||
|
// 清空当前选中的地址
|
||||||
|
this.form.addressId = null
|
||||||
|
|
||||||
|
if (user && user.id) {
|
||||||
|
// 获取新用户的地址列表
|
||||||
|
this.getAddressList(user.id)
|
||||||
|
} else {
|
||||||
|
// 如果清空用户选择,也清空地址列表
|
||||||
|
this.addressList = []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// 处理取消数据变化时的师傅选择
|
||||||
|
handleCancelDataWithWorker(user) {
|
||||||
|
if (user && user.id) {
|
||||||
|
this.form.orderLog.workerId = user.id
|
||||||
|
} else {
|
||||||
|
this.form.orderLog.workerId = null
|
||||||
|
}
|
||||||
|
this.handleCancelData()
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** 显示记录详情 */
|
/** 显示记录详情 */
|
||||||
showRecordDetails(row, type) {
|
showRecordDetails(row, type) {
|
||||||
this.currentOrder = row
|
this.currentOrder = row
|
||||||
|
|
|
||||||
|
|
@ -26,11 +26,12 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-input
|
<user-select
|
||||||
v-model="queryParams.uid"
|
v-model="queryParams.uid"
|
||||||
placeholder="请输入用户"
|
placeholder="请选择用户"
|
||||||
clearable
|
user-type="1"
|
||||||
@keyup.enter.native="handleQuery"
|
dialog-title="选择用户"
|
||||||
|
style="width: 200px;"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="评分" prop="num">
|
<el-form-item label="评分" prop="num">
|
||||||
|
|
@ -181,7 +182,12 @@
|
||||||
<el-input v-model="form.productId" placeholder="请输入商品ID" />
|
<el-input v-model="form.productId" placeholder="请输入商品ID" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-input v-model="form.uid" placeholder="请输入用户" />
|
<user-select
|
||||||
|
v-model="form.uid"
|
||||||
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="图片" prop="images">
|
<el-form-item label="图片" prop="images">
|
||||||
<el-input v-model="form.images" type="textarea" placeholder="请输入内容" />
|
<el-input v-model="form.images" type="textarea" placeholder="请输入内容" />
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,13 @@
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-select v-model="queryParams.uid" filterable placeholder="请选择用户" clearable>
|
<user-select
|
||||||
<el-option
|
v-model="queryParams.uid"
|
||||||
v-for="user in userDataList"
|
placeholder="请选择用户"
|
||||||
:key="user.id"
|
user-type="1"
|
||||||
:label="user.name"
|
dialog-title="选择用户"
|
||||||
:value="user.id"
|
style="width: 200px;"
|
||||||
></el-option>
|
/>
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="电话" prop="phone">
|
<el-form-item label="电话" prop="phone">
|
||||||
<el-input
|
<el-input
|
||||||
|
|
@ -76,7 +75,12 @@
|
||||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-input v-model="form.uid" placeholder="请输入用户" />
|
<user-select
|
||||||
|
v-model="form.uid"
|
||||||
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="订单ID" prop="oid">
|
<el-form-item label="订单ID" prop="oid">
|
||||||
<el-input v-model="form.oid" placeholder="请输入订单ID" />
|
<el-input v-model="form.oid" placeholder="请输入订单ID" />
|
||||||
|
|
@ -116,7 +120,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { listOrderRework, getOrderRework, delOrderRework, addOrderRework, updateOrderRework ,getUserDataList} from "@/api/system/OrderRework"
|
import { listOrderRework, getOrderRework, delOrderRework, addOrderRework, updateOrderRework } from "@/api/system/OrderRework"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "OrderRework",
|
name: "OrderRework",
|
||||||
|
|
@ -135,7 +139,7 @@ export default {
|
||||||
showSearch: true,
|
showSearch: true,
|
||||||
// 总条数
|
// 总条数
|
||||||
total: 0,
|
total: 0,
|
||||||
userDataList: [],
|
|
||||||
// OrderRework表格数据
|
// OrderRework表格数据
|
||||||
OrderReworkList: [],
|
OrderReworkList: [],
|
||||||
// 弹出层标题
|
// 弹出层标题
|
||||||
|
|
@ -179,7 +183,6 @@ export default {
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.getList()
|
this.getList()
|
||||||
this.getUserDataList();
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
/** 查询OrderRework列表 */
|
/** 查询OrderRework列表 */
|
||||||
|
|
@ -227,11 +230,7 @@ export default {
|
||||||
this.single = selection.length!==1
|
this.single = selection.length!==1
|
||||||
this.multiple = !selection.length
|
this.multiple = !selection.length
|
||||||
},
|
},
|
||||||
getUserDataList () {
|
|
||||||
getUserDataList("1").then(response => {
|
|
||||||
this.userDataList = response.data
|
|
||||||
})
|
|
||||||
},
|
|
||||||
/** 新增按钮操作 */
|
/** 新增按钮操作 */
|
||||||
handleAdd() {
|
handleAdd() {
|
||||||
this.reset()
|
this.reset()
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,13 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-select v-model="queryParams.uid" filterable placeholder="请选择用户" clearable>
|
<user-select
|
||||||
<el-option
|
v-model="queryParams.uid"
|
||||||
v-for="user in userDataList"
|
placeholder="请选择用户"
|
||||||
:key="user.id"
|
user-type="1"
|
||||||
:label="user.name"
|
dialog-title="选择用户"
|
||||||
:value="user.id"
|
style="width: 200px;"
|
||||||
></el-option>
|
/>
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||||
|
|
@ -83,7 +82,12 @@
|
||||||
<el-input v-model="form.orderId" placeholder="请输入订单号" />
|
<el-input v-model="form.orderId" placeholder="请输入订单号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-input v-model="form.uid" placeholder="请输入用户" />
|
<user-select
|
||||||
|
v-model="form.uid"
|
||||||
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="金额" prop="price">
|
<el-form-item label="金额" prop="price">
|
||||||
<el-input v-model="form.price" placeholder="请输入金额" />
|
<el-input v-model="form.price" placeholder="请输入金额" />
|
||||||
|
|
@ -125,7 +129,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { listPayMoneyLog, getPayMoneyLog, delPayMoneyLog, addPayMoneyLog, updatePayMoneyLog,getUserDataList } from "@/api/system/PayMoneyLog"
|
import { listPayMoneyLog, getPayMoneyLog, delPayMoneyLog, addPayMoneyLog, updatePayMoneyLog } from "@/api/system/PayMoneyLog"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "PayMoneyLog",
|
name: "PayMoneyLog",
|
||||||
|
|
@ -144,7 +148,7 @@ export default {
|
||||||
// 总条数
|
// 总条数
|
||||||
total: 0,
|
total: 0,
|
||||||
|
|
||||||
userDataList: [],
|
|
||||||
// 支付记录表格数据
|
// 支付记录表格数据
|
||||||
PayMoneyLogList: [],
|
PayMoneyLogList: [],
|
||||||
// 弹出层标题
|
// 弹出层标题
|
||||||
|
|
@ -189,7 +193,6 @@ export default {
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.getList()
|
this.getList()
|
||||||
this.getUserDataList()
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
/** 查询支付记录列表 */
|
/** 查询支付记录列表 */
|
||||||
|
|
@ -238,11 +241,7 @@ export default {
|
||||||
this.multiple = !selection.length
|
this.multiple = !selection.length
|
||||||
},
|
},
|
||||||
|
|
||||||
getUserDataList () {
|
|
||||||
getUserDataList("1").then(response => {
|
|
||||||
this.userDataList = response.data
|
|
||||||
})
|
|
||||||
},
|
|
||||||
/** 新增按钮操作 */
|
/** 新增按钮操作 */
|
||||||
handleAdd() {
|
handleAdd() {
|
||||||
this.reset()
|
this.reset()
|
||||||
|
|
|
||||||
|
|
@ -302,7 +302,7 @@ export default {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
getTypeList() {
|
getTypeList() {
|
||||||
getGoodsDataList().then(response => {
|
getGoodsDataList(1).then(response => {
|
||||||
this.typeDataList = response.data;
|
this.typeDataList = response.data;
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,13 @@
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-select v-model="queryParams.uid" placeholder="请选择用户" clearable filterable>
|
<user-select
|
||||||
<el-option v-for="item in userDataList" :key="item.id" :label="item.name" :value="item.id" />
|
v-model="queryParams.uid"
|
||||||
</el-select>
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
style="width: 200px;"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="收货人" prop="name">
|
<el-form-item label="收货人" prop="name">
|
||||||
<el-input
|
<el-input
|
||||||
|
|
@ -141,9 +145,12 @@
|
||||||
<el-input v-model="form.id" placeholder="自动生成" :disabled="true" />
|
<el-input v-model="form.id" placeholder="自动生成" :disabled="true" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-select v-model="form.uid" placeholder="请选择用户" clearable filterable>
|
<user-select
|
||||||
<el-option v-for="item in userDataList" :key="item.id" :label="item.name" :value="item.id" />
|
v-model="form.uid"
|
||||||
</el-select>
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="收货人" prop="name">
|
<el-form-item label="收货人" prop="name">
|
||||||
<el-input v-model="form.name" placeholder="请输入收货人" />
|
<el-input v-model="form.name" placeholder="请输入收货人" />
|
||||||
|
|
@ -191,7 +198,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { listUserAddress, getUserAddress, delUserAddress, addUserAddress, updateUserAddress,getUserDataList } from "@/api/system/UserAddress"
|
import { listUserAddress, getUserAddress, delUserAddress, addUserAddress, updateUserAddress } from "@/api/system/UserAddress"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "UserAddress",
|
name: "UserAddress",
|
||||||
|
|
@ -209,7 +216,7 @@ export default {
|
||||||
// 显示搜索条件
|
// 显示搜索条件
|
||||||
showSearch: true,
|
showSearch: true,
|
||||||
// 总条数
|
// 总条数
|
||||||
userDataList: [],
|
|
||||||
total: 0,
|
total: 0,
|
||||||
// 用户收货地址表格数据
|
// 用户收货地址表格数据
|
||||||
UserAddressList: [],
|
UserAddressList: [],
|
||||||
|
|
@ -258,7 +265,6 @@ export default {
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.getList()
|
this.getList()
|
||||||
this.getuserDataList()
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
/** 查询用户收货地址列表 */
|
/** 查询用户收货地址列表 */
|
||||||
|
|
@ -318,11 +324,7 @@ export default {
|
||||||
this.single = selection.length!==1
|
this.single = selection.length!==1
|
||||||
this.multiple = !selection.length
|
this.multiple = !selection.length
|
||||||
},
|
},
|
||||||
getuserDataList(){
|
|
||||||
getUserDataList("1").then(response => {
|
|
||||||
this.userDataList = response.data
|
|
||||||
})
|
|
||||||
},
|
|
||||||
/** 新增按钮操作 */
|
/** 新增按钮操作 */
|
||||||
handleAdd() {
|
handleAdd() {
|
||||||
this.reset()
|
this.reset()
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,12 @@
|
||||||
<el-dialog :title="title" :visible.sync="visible" width="50%" append-to-body>
|
<el-dialog :title="title" :visible.sync="visible" width="50%" append-to-body>
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-select v-model="form.uid" placeholder="请选择用户" clearable filterable>
|
<user-select
|
||||||
<el-option v-for="item in userDataList" :key="item.id" :label="item.name" :value="item.id" />
|
v-model="form.uid"
|
||||||
</el-select>
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="姓名" prop="name">
|
<el-form-item label="姓名" prop="name">
|
||||||
<el-input v-model="form.name" placeholder="请输入姓名" />
|
<el-input v-model="form.name" placeholder="请输入姓名" />
|
||||||
|
|
@ -77,7 +80,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getUserDataList } from "@/api/system/WorkerApply"
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "WorkerApplyEdit",
|
name: "WorkerApplyEdit",
|
||||||
|
|
@ -140,7 +143,7 @@ export default {
|
||||||
{ required: true, message: "接单地区不能为空", trigger: "change" }
|
{ required: true, message: "接单地区不能为空", trigger: "change" }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
userDataList: [],
|
|
||||||
areaOptions: [
|
areaOptions: [
|
||||||
{ id: 1, name: '未央区' },
|
{ id: 1, name: '未央区' },
|
||||||
{ id: 2, name: '莲湖区' },
|
{ id: 2, name: '莲湖区' },
|
||||||
|
|
@ -168,19 +171,10 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
immediate: true
|
immediate: true
|
||||||
},
|
|
||||||
visible(val) {
|
|
||||||
if (val) {
|
|
||||||
this.getUserList()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getUserList() {
|
|
||||||
getUserDataList("1").then(response => {
|
|
||||||
this.userDataList = response.data
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 处理地区选择变化
|
// 处理地区选择变化
|
||||||
handleAreaChange(value) {
|
handleAreaChange(value) {
|
||||||
if (value && value.length > 0) {
|
if (value && value.length > 0) {
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,13 @@
|
||||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||||
|
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-select v-model="queryParams.uid" placeholder="请选择用户" clearable filterable>
|
<user-select
|
||||||
<el-option v-for="item in userDataList" :key="item.id" :label="item.name" :value="item.id" />
|
v-model="queryParams.uid"
|
||||||
</el-select>
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
style="width: 200px;"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="姓名" prop="name">
|
<el-form-item label="姓名" prop="name">
|
||||||
<el-input
|
<el-input
|
||||||
|
|
@ -154,7 +158,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { listWorkerApply, getWorkerApply, delWorkerApply, addWorkerApply, updateWorkerApply, getUserDataList } from "@/api/system/WorkerApply"
|
import { listWorkerApply, getWorkerApply, delWorkerApply, addWorkerApply, updateWorkerApply } from "@/api/system/WorkerApply"
|
||||||
import WorkerApplyEdit from './WorkerApplyEdit.vue'
|
import WorkerApplyEdit from './WorkerApplyEdit.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
@ -175,8 +179,7 @@ export default {
|
||||||
showSearch: true,
|
showSearch: true,
|
||||||
// 总条数
|
// 总条数
|
||||||
total: 0,
|
total: 0,
|
||||||
// 用户数据列表
|
|
||||||
userDataList: [],
|
|
||||||
// 师傅申请记录表格数据
|
// 师傅申请记录表格数据
|
||||||
WorkerApplyList: [],
|
WorkerApplyList: [],
|
||||||
// 弹出层标题
|
// 弹出层标题
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,14 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="师傅" prop="uid">
|
||||||
<el-select v-model="queryParams.uid" placeholder="请选择用户" clearable filterable>
|
<user-select
|
||||||
<el-option v-for="item in userDataList" :key="item.id" :label="item.name" :value="item.id" />
|
v-model="queryParams.uid"
|
||||||
</el-select>
|
placeholder="请选择师傅"
|
||||||
|
user-type="2"
|
||||||
|
dialog-title="选择师傅"
|
||||||
|
style="width: 200px;"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="签到日期" prop="time">
|
<el-form-item label="签到日期" prop="time">
|
||||||
<el-date-picker clearable
|
<el-date-picker clearable
|
||||||
|
|
@ -90,7 +94,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { listWorkerSign, getWorkerSign, delWorkerSign, addWorkerSign, updateWorkerSign,getUserDataList } from "@/api/system/WorkerSign"
|
import { listWorkerSign, getWorkerSign, delWorkerSign, addWorkerSign, updateWorkerSign } from "@/api/system/WorkerSign"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "WorkerSign",
|
name: "WorkerSign",
|
||||||
|
|
@ -109,7 +113,7 @@ export default {
|
||||||
// 总条数
|
// 总条数
|
||||||
total: 0,
|
total: 0,
|
||||||
|
|
||||||
userDataList: [],
|
|
||||||
// 师傅签到记录表格数据
|
// 师傅签到记录表格数据
|
||||||
WorkerSignList: [],
|
WorkerSignList: [],
|
||||||
// 弹出层标题
|
// 弹出层标题
|
||||||
|
|
@ -140,7 +144,6 @@ export default {
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.getList()
|
this.getList()
|
||||||
this.getuserDataList();
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
/** 查询师傅签到记录列表 */
|
/** 查询师傅签到记录列表 */
|
||||||
|
|
@ -184,11 +187,7 @@ export default {
|
||||||
this.single = selection.length!==1
|
this.single = selection.length!==1
|
||||||
this.multiple = !selection.length
|
this.multiple = !selection.length
|
||||||
},
|
},
|
||||||
getuserDataList(){
|
|
||||||
getUserDataList("2").then(response => {
|
|
||||||
this.userDataList = response.data
|
|
||||||
})
|
|
||||||
},
|
|
||||||
/** 新增按钮操作 */
|
/** 新增按钮操作 */
|
||||||
handleAdd() {
|
handleAdd() {
|
||||||
this.reset()
|
this.reset()
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,13 @@
|
||||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||||
|
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-select v-model="queryParams.uid" filterable placeholder="请选择用户" clearable>
|
<user-select
|
||||||
<el-option
|
v-model="queryParams.uid"
|
||||||
v-for="user in userDataList"
|
placeholder="请选择用户"
|
||||||
:key="user.id"
|
user-type="1"
|
||||||
:label="user.name"
|
dialog-title="选择用户"
|
||||||
:value="user.id"
|
style="width: 200px;"
|
||||||
></el-option>
|
/>
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="金额" prop="priceRange">
|
<el-form-item label="金额" prop="priceRange">
|
||||||
|
|
@ -217,7 +216,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { listTransfer, getTransfer, delTransfer, addTransfer, updateTransfer,getUserDataList} from "@/api/system/transfer"
|
import { listTransfer, getTransfer, delTransfer, addTransfer, updateTransfer} from "@/api/system/transfer"
|
||||||
export default {
|
export default {
|
||||||
name: "Transfer",
|
name: "Transfer",
|
||||||
dicts: ['money_status'],
|
dicts: ['money_status'],
|
||||||
|
|
@ -236,7 +235,7 @@ export default {
|
||||||
// 总条数
|
// 总条数
|
||||||
total: 0,
|
total: 0,
|
||||||
|
|
||||||
userDataList: [],
|
|
||||||
// wechat_transfer表格数据
|
// wechat_transfer表格数据
|
||||||
transferList: [],
|
transferList: [],
|
||||||
// 弹出层标题
|
// 弹出层标题
|
||||||
|
|
@ -284,7 +283,6 @@ export default {
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.getList()
|
this.getList()
|
||||||
this.getUserDataList()
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
/** 查询wechat_transfer列表 */
|
/** 查询wechat_transfer列表 */
|
||||||
|
|
@ -358,11 +356,7 @@ export default {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
getUserDataList () {
|
|
||||||
getUserDataList("1").then(response => {
|
|
||||||
this.userDataList = response.data
|
|
||||||
})
|
|
||||||
},
|
|
||||||
/** 提交按钮 */
|
/** 提交按钮 */
|
||||||
submitForm() {
|
submitForm() {
|
||||||
this.$refs["form"].validate(valid => {
|
this.$refs["form"].validate(valid => {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,160 @@
|
||||||
|
# 用户选择组件替换完成总结
|
||||||
|
|
||||||
|
## 已完成替换的页面列表
|
||||||
|
|
||||||
|
### 1. GoodsOrder - ✅ 已完成
|
||||||
|
- 替换查询表单中的用户选择下拉框
|
||||||
|
- 替换添加/修改表单中的用户选择下拉框
|
||||||
|
- 移除userDataList数据属性
|
||||||
|
- 移除fetchUserDataList方法
|
||||||
|
- 移除getUserDataList导入
|
||||||
|
- 添加handleUserSelectChange方法
|
||||||
|
|
||||||
|
### 2. IntegralOrder - ✅ 已完成
|
||||||
|
- 替换查询表单中的用户选择下拉框
|
||||||
|
- 替换添加/修改表单中的用户选择下拉框
|
||||||
|
- 移除userDataList数据属性
|
||||||
|
- 移除getuserDataList方法
|
||||||
|
- 移除getUserDataList导入
|
||||||
|
|
||||||
|
### 3. WorkerSign - ✅ 已完成
|
||||||
|
- 替换查询表单中的师傅选择下拉框(user-type="2")
|
||||||
|
- 移除userDataList数据属性
|
||||||
|
- 移除getuserDataList方法
|
||||||
|
- 移除getUserDataList导入
|
||||||
|
|
||||||
|
### 4. UserAddress - ✅ 已完成
|
||||||
|
- 替换查询表单中的用户选择下拉框
|
||||||
|
- 替换添加/修改表单中的用户选择下拉框
|
||||||
|
- 移除userDataList数据属性
|
||||||
|
- 移除getuserDataList方法
|
||||||
|
- 移除getUserDataList导入
|
||||||
|
|
||||||
|
### 5. transfer - ✅ 已完成
|
||||||
|
- 替换查询表单中的用户选择下拉框
|
||||||
|
- 移除userDataList数据属性
|
||||||
|
- 移除getUserDataList方法
|
||||||
|
- 移除getUserDataList导入
|
||||||
|
|
||||||
|
### 6. PayMoneyLog - ✅ 已完成
|
||||||
|
- 替换查询表单中的用户选择下拉框
|
||||||
|
- 替换添加/修改表单中的用户输入框为用户选择组件
|
||||||
|
- 移除userDataList数据属性
|
||||||
|
- 移除getUserDataList方法
|
||||||
|
- 移除getUserDataList导入
|
||||||
|
|
||||||
|
### 7. OrderRework - ✅ 已完成
|
||||||
|
- 替换查询表单中的用户选择下拉框
|
||||||
|
- 替换添加/修改表单中的用户输入框为用户选择组件
|
||||||
|
- 移除userDataList数据属性
|
||||||
|
- 移除getUserDataList方法
|
||||||
|
- 移除getUserDataList导入
|
||||||
|
|
||||||
|
### 8. OrderComment - ✅ 已完成
|
||||||
|
- 替换查询表单中的用户输入框为用户选择组件
|
||||||
|
- 替换添加/修改表单中的用户输入框为用户选择组件
|
||||||
|
|
||||||
|
### 9. IntegralLog - ✅ 已完成
|
||||||
|
- 替换查询表单中的用户选择下拉框
|
||||||
|
- 替换添加/修改表单中的用户输入框为用户选择组件
|
||||||
|
- 移除userDataList数据属性
|
||||||
|
- 移除getUserDataList导入
|
||||||
|
|
||||||
|
### 10. GoodsCart - ✅ 已完成
|
||||||
|
- 替换查询表单中的用户输入框为用户选择组件
|
||||||
|
- 替换添加/修改表单中的用户输入框为用户选择组件
|
||||||
|
|
||||||
|
### 11. CouponUser - ✅ 已完成
|
||||||
|
- 替换查询表单中的用户输入框为用户选择组件
|
||||||
|
- 替换添加/修改表单中的用户输入框为用户选择组件
|
||||||
|
|
||||||
|
### 12. Cooperate - ✅ 已完成
|
||||||
|
- 替换查询表单中的用户选择下拉框
|
||||||
|
- 替换添加/修改表单中的用户选择下拉框
|
||||||
|
- 移除getUserDataList导入
|
||||||
|
|
||||||
|
### 13. WorkerApply - ✅ 已完成
|
||||||
|
- 替换查询表单中的用户选择下拉框
|
||||||
|
- 移除userDataList数据属性
|
||||||
|
- 移除getUserDataList导入
|
||||||
|
|
||||||
|
### 14. WorkerApplyEdit - ✅ 已完成
|
||||||
|
- 替换表单中的用户选择下拉框
|
||||||
|
- 移除userDataList数据属性
|
||||||
|
- 移除getUserList方法
|
||||||
|
- 移除getUserDataList导入
|
||||||
|
|
||||||
|
## 替换统计
|
||||||
|
|
||||||
|
- **总计页面数:** 14个页面
|
||||||
|
- **完成替换:** 14个页面 ✅
|
||||||
|
- **完成率:** 100%
|
||||||
|
|
||||||
|
## 替换内容说明
|
||||||
|
|
||||||
|
### 组件特性
|
||||||
|
- **组件名称:** `user-select`
|
||||||
|
- **支持类型:**
|
||||||
|
- `user-type="1"` - 普通用户
|
||||||
|
- `user-type="2"` - 师傅用户
|
||||||
|
- **功能特性:**
|
||||||
|
- 弹窗式分页选择
|
||||||
|
- 支持搜索(姓名、电话、状态)
|
||||||
|
- 直接点击选择
|
||||||
|
- 响应式设计
|
||||||
|
- 清空选择功能
|
||||||
|
|
||||||
|
### 替换模式
|
||||||
|
|
||||||
|
#### 1. 查询表单替换模式
|
||||||
|
```vue
|
||||||
|
<!-- 原来 -->
|
||||||
|
<el-select v-model="queryParams.uid" placeholder="请选择用户" clearable filterable>
|
||||||
|
<el-option v-for="item in userDataList" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
|
||||||
|
<!-- 替换后 -->
|
||||||
|
<user-select
|
||||||
|
v-model="queryParams.uid"
|
||||||
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
style="width: 200px;"
|
||||||
|
/>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. 表单输入框替换模式
|
||||||
|
```vue
|
||||||
|
<!-- 原来 -->
|
||||||
|
<el-input v-model="form.uid" placeholder="请输入用户" />
|
||||||
|
|
||||||
|
<!-- 替换后 -->
|
||||||
|
<user-select
|
||||||
|
v-model="form.uid"
|
||||||
|
placeholder="请选择用户"
|
||||||
|
user-type="1"
|
||||||
|
dialog-title="选择用户"
|
||||||
|
/>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. JavaScript清理
|
||||||
|
- 移除 `userDataList` 数据属性
|
||||||
|
- 移除 `getUserDataList`、`getuserDataList`、`fetchUserDataList` 等方法
|
||||||
|
- 移除相关API导入
|
||||||
|
- 添加用户选择变化处理方法(如需要)
|
||||||
|
|
||||||
|
## 性能优化效果
|
||||||
|
|
||||||
|
通过这次替换,实现了以下优化:
|
||||||
|
1. **按需加载:** 用户数据仅在需要时加载,不在页面初始化时全量加载
|
||||||
|
2. **分页显示:** 大量用户数据分页显示,避免DOM性能问题
|
||||||
|
3. **搜索功能:** 支持服务端搜索,快速定位目标用户
|
||||||
|
4. **统一体验:** 所有页面使用统一的用户选择体验
|
||||||
|
5. **代码复用:** 减少重复代码,便于维护
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
|
||||||
|
1. 所有页面已成功注册UserSelect组件(在main.js中全局注册)
|
||||||
|
2. 组件支持clearable、disabled等常用属性
|
||||||
|
3. 师傅选择使用user-type="2",普通用户使用user-type="1"
|
||||||
|
4. 组件内部处理了用户选择的所有逻辑,包括API调用和分页
|
||||||
Loading…
Reference in New Issue