123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384 |
- <template>
- <div @UpdateShopData="load()">
- <div class="search">
- <el-input placeholder="请输入关键字查询" style="width: 200px" v-model="username"></el-input>
- <el-button type="info" plain style="margin-left: 10px" @click="load(1)">查询</el-button>
- <el-button type="warning" plain style="margin-left: 10px" @click="reset">重置</el-button>
- </div>
- <!-- <div class="operation">-->
- <!-- <el-button type="primary" plain @click="handleAdd">新增</el-button>-->
- <!-- <el-button type="danger" plain @click="delBatch">批量删除</el-button>-->
- <!-- </div>-->
- <div class="table">
- <el-table :data="tableData" strip @selection-change="handleSelectionChange">
- <el-table-column type="selection" width="55" align="center"></el-table-column>
- <el-table-column prop="id" label="序号" width="70" align="center" sortable></el-table-column>
- <el-table-column prop="bidPay" label="实付金额" align="center">
- <template v-slot="scope">
- ¥{{scope.row.bidPay}}
- </template>
- </el-table-column>
- <!-- <el-table-column prop="originPay" label="应付金额" align="center"></el-table-column>-->
- <!-- <el-table-column prop="userId" label="下单用户id"></el-table-column>-->
- <el-table-column label="收货地址" align="center">
- <template v-slot="scope">
- {{scope.row.address.address}}
- </template>
- </el-table-column>
- <el-table-column prop="timePre" label="预计送达时间" align="center"></el-table-column>
- <el-table-column prop="timeOrder" label="下单时间" align="center" style="height:100%;width: auto"></el-table-column>
- <el-table-column prop="orderState" label="订单状态" align="center">
- <template v-slot="scope">
- <el-tag :type ="gettagByState(scope.row.orderState)" >{{scope.row.orderState}}</el-tag>
- </template>
- </el-table-column>
- <el-table-column prop="orderRemark" label="订单备注"></el-table-column>
- <el-table-column prop="transCode" label="交易单号"></el-table-column>
- <el-table-column lable="确认订单送达">
- <template v-slot="scope" >
- <el-button type="success" @click.native="confimArrived(scope.row)" :disabled="checkIsArrived(scope.row.orderState)">
- 点击送达
- </el-button>
- </template>
- </el-table-column>
- <!-- <el-table-column prop="orderProductsLists" label="购买清单:商品id,商品名称,商品数量"></el-table-column>-->
- <!-- <el-table-column prop="storeId" label="购买的店铺"></el-table-column>-->
- <el-table-column label="操作" align="center" >
- <template v-slot="scope">
- <el-button type="info" plain @click="showDetails(scope.row)">查看订单详情</el-button>
- </template>
- </el-table-column>
- </el-table>
- <div class="pagination">
- <el-pagination
- background
- @current-change="handleCurrentChange"
- :current-page="pageNum"
- :page-sizes="[5, 10, 20]"
- :page-size="pageSize"
- layout="total, prev, pager, next"
- :total="total">
- </el-pagination>
- </div>
- </div>
- <el-dialog title="订单表" :visible.sync="fromVisible" width="40%" :close-on-click-modal="false" destroy-on-close>
- <el-form :model="form" label-width="100px" style="padding-right: 50px" :rules="rules" ref="formRef">
- <el-form-item label="实付金额" prop="bidPay">
- <el-input v-model="form.bidPay" placeholder="实付金额"></el-input>
- </el-form-item>
- <el-form-item label="应付金额" prop="originPay">
- <el-input v-model="form.originPay" placeholder="应付金额"></el-input>
- </el-form-item>
- <el-form-item label="下单用户id" prop="userId">
- <el-input v-model="form.userId" placeholder="下单用户id"></el-input>
- </el-form-item>
- <el-form-item label="收货地址id" prop="addressId">
- <el-input v-model="form.addressId" placeholder="收货地址id"></el-input>
- </el-form-item>
- <el-form-item label="预计送达时间" prop="timePre">
- <el-input v-model="form.timePre" placeholder="预计送达时间"></el-input>
- </el-form-item>
- <el-form-item label="下单时间" prop="timeOrder">
- <el-input v-model="form.timeOrder" placeholder="下单时间"></el-input>
- </el-form-item>
- <el-form-item label="订单状态" prop="orderState">
- <el-input v-model="form.orderState" placeholder="订单状态"></el-input>
- </el-form-item>
- <el-form-item label="订单备注" prop="orderRemark">
- <el-input v-model="form.orderRemark" placeholder="订单备注"></el-input>
- </el-form-item>
- <el-form-item label="交易单号" prop="transCode">
- <el-input v-model="form.transCode" placeholder="交易单号"></el-input>
- </el-form-item>
- <el-form-item label="购买清单:商品id,商品名称,商品数量" prop="orderProductsLists">
- <el-input v-model="form.orderProductsLists" placeholder="购买清单:商品id,商品名称,商品数量"></el-input>
- </el-form-item>
- <el-form-item label="购买的店铺id" prop="storeId">
- <el-input v-model="form.storeId" placeholder="购买的店铺"></el-input>
- </el-form-item>
- </el-form>
- <div slot="footer" class="dialog-footer">
- <el-button @click="fromVisible = false">取 消</el-button>
- <el-button type="primary" @click="save">确 定</el-button>
- </div>
- </el-dialog>
- <el-dialog :visible.sync="fromProductsVisible" width="70%" :close-on-click-modal="false" destroy-on-close>
- <el-descriptions title="订单详情" :column="3" border>
- <el-descriptions-item label="订单号">{{formProductDetails.transCode}}</el-descriptions-item>
- <el-descriptions-item label="订单状态">
- <template slot="label">
- <i class="el-icon-goods"/>
- 订单类型
- </template>
- <el-tag type="success">
- {{formProductDetails.orderState}}
- </el-tag>
- </el-descriptions-item>
- <el-descriptions-item label="预计送达时间">
- <template slot="label">
- <i class="el-icon-goods"/>
- 预计送达时间
- </template>
- {{formProductDetails.timePre}}
- </el-descriptions-item>
- <el-descriptions-item label="订单下单时间">
- <template slot="label">
- <i class="el-icon-goods"/>
- 订单下单时间
- </template>
- {{formProductDetails.timeOrder}}
- </el-descriptions-item>
- <el-descriptions-item label="订单备注">
- <template slot="label">
- <i class="el-icon-goods"/>
- 订单备注
- </template>
- <span style="color:#F56C6C">{{formProductDetails.orderRemark}}</span>
- </el-descriptions-item>
- <el-descriptions-item label="订单额定金额">
- <template slot="label">
- <i class="el-icon-goods"/>
- 订单额定金额
- </template>
- {{formProductDetails.originPay}}
- </el-descriptions-item>
- <el-descriptions-item label="订单实付金额">
- <template slot="label">
- <i class="el-icon-goods"/>
- 订单实付金额
- </template>
- <el-tag type="info" >¥{{formProductDetails.bidPay}}</el-tag>
- </el-descriptions-item>
- <el-descriptions-item label="收货地址">
- <template slot="label">
- <i class="el-icon-goods"/>
- 收货地址
- </template>
- {{formProductDetails.address?.address}}
- <!-- order表没有连接地址-->
- </el-descriptions-item>
- <el-descriptions-item label="收货人电话">
- <template slot="label">
- <i class="el-icon-goods"/>
- 收货人电话
- </template>
- {{formProductDetails.address?.phone}}
- </el-descriptions-item>
- <el-descriptions-item label="收货人">
- <template slot="label">
- <i class="el-icon-goods"/>
- 收货人
- </template>
- {{formProductDetails.user?.name}}
- </el-descriptions-item>
- </el-descriptions >
- <!-- 下单用户详情 -->
- <!-- <el-descriptions title="下单用户详情" :column="3" border>-->
- <!-- <el-descriptions-item label="用户名">-->
- <!-- <template slot="label">-->
- <!-- <i class="el-icon-goods"/>-->
- <!-- 下单用户名-->
- <!-- </template>-->
- <!-- {{formProductDetails.user?.username}}-->
- <!-- </el-descriptions-item>-->
- <!-- <el-descriptions-item label="用户昵称">-->
- <!-- <template slot="label">-->
- <!-- <i class="el-icon-goods"/>-->
- <!-- 下单用户名-->
- <!-- </template>-->
- <!-- {{formProductDetails.user?.username}}-->
- <!-- </el-descriptions-item>-->
- <!-- <el-descriptions-item label="用户联系方式">-->
- <!-- <template slot="label">-->
- <!-- <i class="el-icon-goods"/>-->
- <!-- 用户联系方式-->
- <!-- </template>-->
- <!-- {{formProductDetails.user?.phone}}-->
- <!-- </el-descriptions-item>-->
- <!-- </el-descriptions>-->
- <!-- 下单商品FPD -->
- <el-table :data="formProductDetails.orderProductsLists" style="margin-top: 5px">
- <el-table-column prop="productName" label="商品名称">
- </el-table-column>
- <el-table-column prop="count" label="商品数量">
- <template v-slot="scope">
- <span icon="el-icon-close"></span> {{scope.row.count}}
- </template>
- </el-table-column>
- <el-table-column prop="productIcons" label="图片">
- <template v-slot="scope">
- <div>
- <el-image style="width: 50px; height: 50px" :src="scope.row.productIcons" :preview-src-list="[scope.row.avatar]"/>
- </div>
- </template>
- </el-table-column>
- </el-table>
- </el-dialog>
- </div>
- </template>
- <script>
- import Vue from "vue";
- export default {
- name: "Orders",
- // props{},
- data() {
- return {
- tableData: [], // 所有的数据
- pageNum: 1, // 当前的页码
- pageSize: 10, // 每页显示的个数
- total: 0,
- username: null,
- fromVisible: false,
- fromProductsVisible: false, // 订单详情
- form: {},
- formProductDetails:{},// 当前订单详情
- user: JSON.parse(localStorage.getItem('xm-user') || '{}'),
- rules: {
- },
- ids: [],
- ENUM_STATE:{"ARRIVED" : "已送达","WAIT":"待送达","FINISHED":"已完成","CANCEL":"已取消"},
- STATE_COLOR:{"已送达" :"success","待送达":"danger","已取消":"info"},
- ENUM_ORDER:{"已送达":true,"已完成":true}, // 禁用 为true
- }
- },
- created() {
- this.load(1)
- },
- mounted(){
- this.$bus.$on("update:store",this.updateOrders)
- },
- methods: {
- handleAdd() { // 新增数据
- this.form = {} // 新增数据的时候清空数据
- this.fromVisible = true // 打开弹窗
- },
- handleEdit(row) { // 编辑数据
- this.form = JSON.parse(JSON.stringify(row)) // 给form对象赋值 注意要深拷贝数据
- this.fromVisible = true // 打开弹窗
- },
- save() { // 保存按钮触发的逻辑 它会触发新增或者更新
- this.$refs.formRef.validate((valid) => {
- if (valid) {
- this.$request({
- url: this.form.id ? '/orders/update' : '/orders/add',
- method: this.form.id ? 'PUT' : 'POST',
- data: this.form
- }).then(res => {
- if (res.code === '200') { // 表示成功保存
- this.$message.success('保存成功')
- this.load(1)
- this.fromVisible = false
- } else {
- this.$message.error(res.msg) // 弹出错误的信息
- }
- })
- }
- })
- },
- del(id) { // 单个删除
- this.$confirm('您确定删除吗?', '确认删除', {type: "warning"}).then(response => {
- this.$request.delete('/orders/delete/' + id).then(res => {
- if (res.code === '200') { // 表示操作成功
- this.$message.success('操作成功')
- this.load(1)
- } else {
- this.$message.error(res.msg) // 弹出错误的信息
- }
- })
- }).catch(() => {
- })
- },
- handleSelectionChange(rows) { // 当前选中的所有的行数据
- this.ids = rows.map(v => v.id)
- },
- delBatch() { // 批量删除
- if (!this.ids.length) {
- this.$message.warning('请选择数据')
- return
- }
- this.$confirm('您确定批量删除这些数据吗?', '确认删除', {type: "warning"}).then(response => {
- this.$request.delete('/orders/delete/batch', {data: this.ids}).then(res => {
- if (res.code === '200') { // 表示操作成功
- this.$message.success('操作成功')
- this.load(1)
- } else {
- this.$message.error(res.msg) // 弹出错误的信息
- }
- })
- }).catch(() => {
- })
- },
- load(pageNum) { // 分页查询
- if (pageNum) this.pageNum = pageNum
- this.$request.get('/orders/selectPage', {
- params: {
- storeId:this.user?.storeId, //修改sdintoreId
- pageNum: this.pageNum,
- pageSize: this.pageSize,
- username: this.username,
- }
- }).then(res => {
- this.tableData = res.data?.list
- this.total = res.data?.total
- console.log(res,"shopOrders")
- })
- },
- reset() {
- this.username = null
- this.load(1)
- },
- handleCurrentChange(pageNum) {
- this.load(pageNum)
- },
- showDetails(row){ // FPD
- console.log("showDetails",row)
- this.fromProductsVisible = true;
- this.formProductDetails = JSON.parse(JSON.stringify(row));
- console.log(row,"row")
- },
- gettagByState(state){
- return this.STATE_COLOR[state]
- },
- checkIsArrived(ZHState){
- if(ZHState){
- return this.ENUM_ORDER[ZHState] || false
- }
- },
- confimArrived(row){ // 修改订单状态为已送达
- console.log(row)
- this.$request.post("/orders/setOrdersStateArrived",{
- id:row.id, //row.id 是orderId
- }).then(res=>{
- // console.log(res)
- // 使用 Vue.set 方法将 res.data 的属性拷贝到 row 对象中
- Object.keys(res.data).forEach(key => {
- Vue.set(row, key, res.data[key]);
- });
- this.$message.success("修改成功")
- })
- },
- updateOrders(){
- this.load(1)
- }
- }
- }
- </script>
- <style scoped>
- </style>
|