Commit d7145a32 authored by obt's avatar obt

行业应用部分bug修复

parents 748b770c b7ff6206
......@@ -43,3 +43,14 @@ export function userAddressList(query) {
data: query
});
}
/**
* 联系客服-意见反馈-订单投诉列表
*/
export function feedbackInfoList(query) {
return fetch({
url: '/api/website/feedbackInfo/getAll',
method: 'get',
params: query
});
}
import fetch from 'utils/fetch';
// 卫星列表
export function getSatelliteData(obj) {
return fetch({
url: '/api/datacenter/bg/imagePrice/pages',
method: 'get',
params: obj
});
}
// 已入库数据列表
export function getDateList(obj) {
return fetch({
url: '/api/datacenter/bg/imageData/pages',
method: 'get',
params: obj
});
}
// 分辨率列表
export function getResolutionData(obj) {
return fetch({
url: '/api/datacenter/bg/resolution/pages',
method: 'get',
params: obj
});
}
// 全部分辨率列表
export function getResolutionAll(obj) {
return fetch({
url: '/api/datacenter/web/resolution/app/unauth/all',
method: 'get',
params: obj
});
}
// 全部卫星列表
export function getimagePriceAll(obj) {
return fetch({
url: '/api/datacenter/web/imagePrice/app/unauth/all',
method: 'get',
params: obj
});
}
// 删除分辨率
export function delResolution(obj) {
return fetch({
url: '/api/datacenter/bg/resolution/del?id=' + obj.id,
method: 'DELETE'
// data: obj
});
}
// 删除卫星传感器
export function delimagePrice(obj) {
return fetch({
url: '/api/datacenter/bg/imagePrice/del?id=' + obj.id,
method: 'DELETE'
// data: obj
});
}
// 添加分辨率
export function addResolution(obj) {
return fetch({
url: '/api/datacenter/bg/resolution',
method: 'post',
data: obj
});
}
// 修改分辨率
export function updateResolution(obj) {
return fetch({
url: '/api/datacenter/bg/resolution/' + obj.id,
method: 'PUT',
data: obj
});
}
// 添加卫星传感器
export function addimagePrice(obj) {
return fetch({
url: '/api/datacenter/bg/imagePrice',
method: 'post',
data: obj
});
}
// 修改卫星传感器
export function updateimagePrice(obj) {
return fetch({
url: '/api/datacenter/bg/imagePrice/' + obj.id,
method: 'PUT',
data: obj
});
}
import fetch from 'utils/fetch';
//获取影像图库列表
// 获取影像图库列表
export function page(query) {
return fetch({
url: '/api/website/imageImgStorage/getList',
......@@ -7,7 +7,7 @@ export function page(query) {
params: query
});
}
//新增或修改影像图库
// 新增或修改影像图库
export function update(query) {
return fetch({
url: '/api/website/imageImgStorage/addUpdate',
......@@ -15,7 +15,16 @@ export function update(query) {
data: query
});
}
//获取所有相似图像
// 影像图库上下架
export function updateStatus(query) {
return fetch({
url: '/api/website/imageImgStorage/updateStatus',
method: 'post',
data: query
});
}
// 获取所有相似图像
export function getAll(query) {
return fetch({
url: '/api/website/imageInfoRelation/getAll',
......@@ -23,11 +32,10 @@ export function getAll(query) {
params: query
});
}
///api/website/imageImgStorage/getDetail/{id}
// /api/website/imageImgStorage/getDetail/{id}
export function getDetail(query) {
return fetch({
url: `/api/website/imageImgStorage/getDetail/${query}`,
method: 'get'
});
}
import fetch from 'utils/fetch';
// 定制列表
export function getCustomList(obj) {
return fetch({
url: '/api/website/customForm/pageList',
method: 'get',
params: obj
});
}
// 订单列表
export function getOrderList(query) {
return fetch({
url: 'api/website/orderInfo/getOrderList',
method: 'get',
params: query
});
}
/**
* 订单发货
*/
export function sendGoods(query) {
return fetch({
url: 'api/website/orderInfo/orderSend',
method: 'post',
data: query
});
}
/**
* 发票发货
*/
export function invoiceSend(query) {
return fetch({
url: 'api/website/orderInfo/invoiceSend',
method: 'post',
data: query
});
}
// 定制转订单
export function createOrder(obj) {
return fetch({
url: '/api/website/orderInfo/customerToOrderInfo',
method: 'post',
data: obj
});
}
/**
* 添加定制数据
*/
export function setOrderItem(obj) {
return fetch({
url: '/api/website/orderInfo/setOrderItem',
method: 'post',
data: obj
});
}
/**
* 选择定制数据
*/
export function getItemByType(obj) {
return fetch({
url: '/api/website/orderInfo/getItemByType',
method: 'get',
params: obj
});
}
/**
* 对公支付审核
*/
export function updatePayStatus(obj) {
return fetch({
url: '/api/website/orderInfo/updatePayStatus',
method: 'post',
data: obj
});
}
/**
* 对公支付信息
*/
export function getCompanyInfoByType(query) {
return fetch({
url: 'api/website/commonInfo/web/app/unauth/getByType',
method: 'get',
params: query
});
}
/**
* 回复
*/
export function feedbackInfoUpdate(query) {
return fetch({
url: 'api/website/feedbackInfo/updateObj',
method: 'post',
data: query
});
}
This diff is collapsed.
......@@ -3,20 +3,20 @@ import {
} from 'utils/dateFormattor';
export function toEast8Date(dateStr) {
if (typeof (dateStr) == 'undefined' || JSON.stringify(dateStr) === '{}') {
if (typeof dateStr == 'undefined' || JSON.stringify(dateStr) === '{}') {
return undefined;
}
let timezone = 8; //目标时区时间,东八区
let offset_GMT = new Date().getTimezoneOffset(); // 本地时间和格林威治的时间差,单位为分钟
let nowDate = new Date(dateStr).getTime(); // 本地时间距 1970 年 1 月 1 日午夜(GMT 时间)之间的毫秒数
const timezone = 8; // 目标时区时间,东八区
const offset_GMT = new Date().getTimezoneOffset(); // 本地时间和格林威治的时间差,单位为分钟
const nowDate = new Date(dateStr).getTime(); // 本地时间距 1970 年 1 月 1 日午夜(GMT 时间)之间的毫秒数
return new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000);
}
export function newEast8Date() {
let timezone = 8; //目标时区时间,东八区
let offset_GMT = new Date().getTimezoneOffset(); // 本地时间和格林威治的时间差,单位为分钟
let nowDate = new Date().getTime(); // 本地时间距 1970 年 1 月 1 日午夜(GMT 时间)之间的毫秒数
const timezone = 8; // 目标时区时间,东八区
const offset_GMT = new Date().getTimezoneOffset(); // 本地时间和格林威治的时间差,单位为分钟
const nowDate = new Date().getTime(); // 本地时间距 1970 年 1 月 1 日午夜(GMT 时间)之间的毫秒数
return new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000);
}
......@@ -27,10 +27,10 @@ export function deepCopyDate(date) {
export function convertDate2Str(object) {
let ownPropertyNames = Object.getOwnPropertyNames(object);
for (let index in ownPropertyNames) {
let key = ownPropertyNames[index];
if ('[object Date]' === Object.prototype.toString.call(object[key])) {
const ownPropertyNames = Object.getOwnPropertyNames(object);
for (const index in ownPropertyNames) {
const key = ownPropertyNames[index];
if (Object.prototype.toString.call(object[key]) === '[object Date]') {
object[key] = formatDate(object[key], 'yyyy-MM-dd hh:mm:ss');
}
}
......@@ -38,10 +38,17 @@ export function convertDate2Str(object) {
export function timestamp2Date(timestamp) {
let date = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
let str = timestamp + ''
if( str.length == 10){
timestamp = timestamp * 1000
}
const date = new Date(timestamp); // 时间戳为10位需*1000,时间戳为13位的话不需乘1000
return formatDate(date, 'yyyy-MM-dd hh:mm:ss');
}
export function timestamp2DateAuto(timestamp, str) {
const date = new Date(timestamp); // 时间戳为10位需*1000,时间戳为13位的话不需乘1000
return formatDate(date, str);
}
/*
num 获取当天多少天后的日期
*/
......@@ -87,7 +94,7 @@ export function getCurrentYearMonth() {
* 返回yyyy-MM-dd
* */
export function getYMD_hm(timestamp) {
let date = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
const date = new Date(timestamp); // 时间戳为10位需*1000,时间戳为13位的话不需乘1000
return formatDate(date, 'yyyy-MM-dd hh:mm');
}
......@@ -95,7 +102,7 @@ export function getYMD_hm(timestamp) {
* 返回yyyy-MM-dd
* */
export function getYMD(timestamp) {
let date = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
const date = new Date(timestamp); // 时间戳为10位需*1000,时间戳为13位的话不需乘1000
return formatDate(date, 'yyyy-MM-dd');
}
......
<template>
<div class="main">
<el-form>
<el-row>
<el-col :span="6">
<el-form-item label="名称">
<el-input
v-model="listQuery.name"
style="width: 70%"
placeholder="请输入名称"
></el-input>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="卫星">
<el-select
v-model="listQuery.imageSatelliteType"
placeholder="请选择卫星"
>
<el-option label="全部" :value="undefined"></el-option>
<el-option
v-for="(item, idx) in imgPrices"
:key="idx"
:label="item.satelliteName"
:value="item.imageSatelliteType"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="分辨率">
<el-select
v-model="listQuery.imageResolution"
placeholder="请选择分辨率"
>
<el-option label="全部" :value="undefined"></el-option>
<el-option
v-for="(item, idx) in resolutions"
:key="idx"
:label="item.resolutionName"
:value="item.resolution"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-button type="primary" @click="search">搜索</el-button>
<el-button type="info" @click="clear">清除搜索</el-button>
</el-col>
</el-row>
</el-form>
<el-table border :data="list" style="margin-top: 20px; width: 100%">
<el-table-column prop="name" label="名称" align="center">
</el-table-column>
<el-table-column prop="imageSatelliteType" label="卫星" align="center">
</el-table-column>
<el-table-column
prop="imageSatelliteTypeDisplay"
label="卫星描述"
align="center"
>
</el-table-column>
<el-table-column prop="imageResolution" label="分辨率" align="center">
</el-table-column>
<el-table-column prop="imageTakeTimeStr" label="拍摄时间" align="center">
</el-table-column>
<el-table-column prop="imageCloudage" label="云量" align="center">
</el-table-column>
<el-table-column prop="imageSensorId" label="传感器id" align="center">
</el-table-column>
<el-table-column prop="imageSensorType" label="传感器标识" align="center">
</el-table-column>
<el-table-column prop="dataId" label="数据id" align="center">
</el-table-column>
</el-table>
<el-pagination
style="margin-top: 20px"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="listQuery.page"
:page-sizes="[10, 20, 30, 40]"
:page-size="listQuery.limit"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
</el-pagination>
</div>
</template>
<script>
import {
getDateList,
getResolutionAll,
getimagePriceAll,
} from "api/website/archiveDataManagement";
import { timestamp2DateAuto } from "../../../utils/dateUtils";
export default {
data() {
return {
list: [{}],
total: 0,
resolutions: [],
imgPrices: [],
listQuery: {
page: 1,
limit: 10,
},
};
},
created() {
this.getList();
this.getResolutions();
this.getImgPrices();
},
methods: {
getResolutions() {
getResolutionAll().then((res) => {
if (res.status == 200) {
this.resolutions = res.data;
}
});
},
getImgPrices() {
getimagePriceAll().then((res) => {
if (res.status == 200) {
this.imgPrices = res.data;
}
});
},
search() {
this.listQuery.page = 1;
this.getList();
},
clear() {
this.listQuery = {
page: 1,
limit: 10,
};
this.getList();
},
getList() {
getDateList(this.listQuery).then((res) => {
if (res.status == 200) {
this.total = res.data.totalCount;
this.list = res.data.data;
this.list.map((item) => {
item.imageTakeTimeStr = timestamp2DateAuto(
item.imageTakeTime,
"yyyy-MM-dd hh:mm:ss"
);
});
}
});
},
handleSizeChange(val) {
this.listQuery.page = 1;
this.listQuery.limit = val;
this.getList();
},
handleCurrentChange(val) {
this.listQuery.page = val;
this.getList();
},
},
};
</script>
<style lang="scss" scoped>
.main {
box-sizing: border-box;
padding: 36px;
}
</style>
<template>
<div class="main">
<el-row>
<el-button type="primary" @click="addItem">添加分辨率</el-button>
</el-row>
<el-table border :data="list" style="margin-top: 20px; width: 100%">
<el-table-column prop="resolutionName" label="分辨率名称" align="center">
</el-table-column>
<el-table-column prop="resolution" label="分辨率标识" align="center">
</el-table-column>
<el-table-column prop="sort" label="排序" align="center">
</el-table-column>
<el-table-column label="状态" align="center">
<template slot-scope="{ row }">
<span v-if="row.status == 1">上架</span>
<span v-if="row.status == 2">下架</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="{ row }">
<el-row>
<el-button type="text" @click="edit(row)">编辑</el-button>
<el-button
v-if="row.status == 1"
type="text"
@click="changeSate(row, 2)"
>下架</el-button
>
<el-button
v-if="row.status == 2"
type="text"
@click="changeSate(row, 1)"
>上架</el-button
>
<el-button type="text" @click="delItem(row)">删除</el-button>
</el-row>
</template>
</el-table-column>
</el-table>
<el-pagination
style="margin-top: 20px"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="listQuery.page"
:page-sizes="[10, 20, 30, 40]"
:page-size="listQuery.limit"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
</el-pagination>
<el-dialog
:title="titleText"
:visible.sync="showAddOrUpd"
width="30%"
@close="showAddOrUpd = false"
>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="分辨率名称" prop="resolutionName">
<el-input v-model="form.resolutionName" style="width: 80%"></el-input>
</el-form-item>
<el-form-item label="分辨率标识" prop="resolution">
<el-input v-model="form.resolution" style="width: 80%"></el-input>
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input-number
:min="0"
:step="1"
:precision="0"
v-model="form.sort"
></el-input-number>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="showAddOrUpd = false">取 消</el-button>
<el-button type="primary" @click="addOrUpdOk('form')">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {
getResolutionData,
delResolution,
addResolution,
updateResolution,
} from "api/website/archiveDataManagement";
export default {
data() {
return {
list: [{}],
total: 0,
listQuery: {
page: 1,
limit: 10,
},
form: {
resolutionName: undefined,
resolution: undefined,
sort: 0,
status: 2,
},
rules: {
resolutionName: [
{ required: true, message: "请输入分辨率名称", trigger: "blur" },
],
resolution: [
{ required: true, message: "请输入分辨率标识", trigger: "blur" },
],
sort: [{ required: true, message: "请输入排序", trigger: "blur" }],
},
showAddOrUpd: false,
titleText: "",
};
},
created() {
this.getList();
},
methods: {
addItem() {
this.showAddOrUpd = true;
this.titleText = "添加分辨率";
this.form = {
resolutionName: undefined,
resolution: undefined,
sort: 0,
status: 2,
};
},
edit(row) {
this.showAddOrUpd = true;
this.titleText = "修改分辨率";
this.form = row;
},
changeSate(row, state) {
let data = {
id: row.id,
status: state,
};
updateResolution(data).then((res) => {
if (res.status == 200) {
this.$message.success("修改成功");
this.getList();
} else {
this.$message.warning(res.message);
}
});
},
addOrUpdOk(formname) {
this.$refs[formname].validate((valid) => {
if (valid) {
if (this.form.id) {
//编辑
updateResolution(this.form).then((res) => {
if (res.status == 200) {
this.$message.success("修改成功");
this.getList();
this.showAddOrUpd = false;
} else {
this.$message.warning(res.message);
}
});
} else {
//添加
addResolution(this.form).then((res) => {
if (res.status == 200) {
this.$message.success("添加成功");
this.listQuery.page = 1;
this.getList();
this.showAddOrUpd = false;
} else {
this.$message.warning(res.message);
}
});
}
} else {
return false;
}
});
},
delItem(row) {
this.$confirm("是否删除", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
delResolution({ id: Number(row.id) }).then((res) => {
if (res.status == 200) {
this.$message.success("删除成功");
this.getList();
} else {
this.$message.warning(res.message);
}
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消",
});
});
},
getList() {
getResolutionData(this.listQuery).then((res) => {
if (res.status == 200) {
this.total = res.data.totalCount;
this.list = res.data.data;
}
});
},
handleSizeChange(val) {
this.listQuery.page = 1;
this.listQuery.limit = val;
this.getList();
},
handleCurrentChange(val) {
this.listQuery.page = val;
this.getList();
},
},
};
</script>
<style lang="scss" scoped>
.main {
box-sizing: border-box;
padding: 36px;
}
</style>
<template>
<div class="main">
<el-row>
<el-button type="primary" @click="addItem">添加卫星传感器</el-button>
</el-row>
<el-table border :data="list" style="margin-top: 20px; width: 100%">
<el-table-column prop="satelliteName" label="卫星名称" align="center">
</el-table-column>
<el-table-column
prop="imageSatelliteType"
label="卫星标识"
align="center"
>
</el-table-column>
<el-table-column prop="imageResolution" label="分辨率标识" align="center">
</el-table-column>
<el-table-column prop="imageSensorType" label="传感器" align="center">
</el-table-column>
<el-table-column prop="sensorName" label="传感器名称" align="center">
</el-table-column>
<el-table-column prop="price" label="价格" align="center">
</el-table-column>
<el-table-column label="状态" align="center">
<template slot-scope="{ row }">
<span v-if="row.status == 0">不可用</span>
<span v-if="row.status == 1">可用</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="{ row }">
<el-row>
<el-button type="text" @click="edit(row)">编辑</el-button>
<el-button
v-if="row.status == 1"
type="text"
@click="changeSate(row, 0)"
>设为不可用</el-button
>
<el-button
v-if="row.status == 0"
type="text"
@click="changeSate(row, 1)"
>设为可用</el-button
>
<el-button type="text" @click="delItem(row)">删除</el-button>
</el-row>
</template>
</el-table-column>
</el-table>
<el-pagination
style="margin-top: 20px"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="listQuery.page"
:page-sizes="[10, 20, 30, 40]"
:page-size="listQuery.limit"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
</el-pagination>
<el-dialog
:title="titleText"
:visible.sync="showAddOrUpd"
width="30%"
@close="showAddOrUpd = false"
>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="卫星名称" prop="satelliteName">
<el-input v-model="form.satelliteName" style="width: 80%"></el-input>
</el-form-item>
<el-form-item label="卫星标识" prop="imageSatelliteType">
<el-input
v-model="form.imageSatelliteType"
style="width: 80%"
></el-input>
</el-form-item>
<el-form-item label="分辨率标识" prop="imageResolution">
<el-input
v-model="form.imageResolution"
style="width: 80%"
></el-input>
</el-form-item>
<el-form-item label="传感器" prop="imageSensorType">
<el-input
v-model="form.imageSensorType"
style="width: 80%"
></el-input>
</el-form-item>
<el-form-item label="传感器名称" prop="sensorName">
<el-input v-model="form.sensorName" style="width: 80%"></el-input>
</el-form-item>
<el-form-item label="价格" prop="price">
<el-input-number
:min="0"
:step="0.01"
:precision="2"
v-model="form.price"
></el-input-number>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="showAddOrUpd = false">取 消</el-button>
<el-button type="primary" @click="addOrUpdOk('form')">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {
getSatelliteData,
delimagePrice,
addimagePrice,
updateimagePrice,
} from "api/website/archiveDataManagement";
export default {
data() {
return {
list: [{}],
total: 0,
listQuery: {
page: 1,
limit: 10,
},
form: {
satelliteName: undefined,
imageSatelliteType: undefined,
imageResolution: undefined,
imageSensorType: undefined,
sensorName: undefined,
price: 0,
status: 0,
},
rules: {
satelliteName: [
{ required: true, message: "请输入卫星名称", trigger: "blur" },
],
imageSatelliteType: [
{ required: true, message: "请输入卫星标识", trigger: "blur" },
],
imageResolution: [
{ required: true, message: "请输入分辨率标识", trigger: "blur" },
],
imageSensorType: [
{ required: true, message: "请输入传感器", trigger: "blur" },
],
sensorName: [
{ required: true, message: "请输入传感器名称", trigger: "blur" },
],
price: [{ required: true, message: "请输入价格", trigger: "blur" }],
},
showAddOrUpd: false,
titleText: "",
};
},
created() {
this.getList();
},
methods: {
getList() {
getSatelliteData(this.listQuery).then((res) => {
if (res.status == 200) {
this.total = res.data.totalCount;
this.list = res.data.data;
}
});
},
addItem() {
this.showAddOrUpd = true;
this.titleText = "添加卫星传感器";
this.form = {
satelliteName: undefined,
imageSatelliteType: undefined,
imageResolution: undefined,
imageSensorType: undefined,
sensorName: undefined,
price: 0,
status: 0,
};
this.$nextTick(() => {
this.$refs["form"].clearValidate();
});
},
edit(row) {
this.showAddOrUpd = true;
this.titleText = "修改卫星传感器";
this.form = row;
this.$nextTick(() => {
this.$refs["form"].clearValidate();
});
},
changeSate(row, state) {
let data = {
id: row.id,
status: state,
};
updateimagePrice(data).then((res) => {
if (res.status == 200) {
this.$message.success("修改成功");
this.getList();
} else {
this.$message.warning(res.message);
}
});
},
addOrUpdOk(formname) {
this.$refs[formname].validate((valid) => {
if (valid) {
if (this.form.id) {
//编辑
updateimagePrice(this.form).then((res) => {
if (res.status == 200) {
this.$message.success("修改成功");
this.getList();
this.showAddOrUpd = false;
} else {
this.$message.warning(res.message);
}
});
} else {
//添加
addimagePrice(this.form).then((res) => {
if (res.status == 200) {
this.$message.success("添加成功");
this.listQuery.page = 1;
this.getList();
this.showAddOrUpd = false;
} else {
this.$message.warning(res.message);
}
});
}
} else {
return false;
}
});
},
delItem(row) {
this.$confirm("是否删除", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
delimagePrice({ id: Number(row.id) }).then((res) => {
if (res.status == 200) {
this.$message.success("删除成功");
this.getList();
} else {
this.$message.warning(res.message);
}
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消",
});
});
},
handleSizeChange(val) {
this.listQuery.page = 1;
this.listQuery.limit = val;
this.getList();
},
handleCurrentChange(val) {
this.listQuery.page = val;
this.getList();
},
},
};
</script>
<style lang="scss" scoped>
.main {
box-sizing: border-box;
padding: 36px;
}
</style>
<template>
<div class="user-list">
<!-- 头部 -->
<div class="head">
<div>订单投诉</div>
</div>
<!-- 主体 -->
<div class="app-container calendar-list-container">
<!-- 数据列表 -->
<el-table :data="list" v-loading.body="listLoading" border fit highlight-current-row style="width: 100%">
<el-table-column align="center" label="用户ID" width="120">
<template slot-scope="scope">
{{scope.row.userId}}
</template>
</el-table-column>
<el-table-column align="center" label="姓名" prop="name"></el-table-column>
<el-table-column align="center" label="电话" prop="phone"></el-table-column>
<el-table-column align="center" label="订单编号" prop="orderNo"></el-table-column>
<el-table-column align="center" label="创建时间">
<template slot-scope="scope">
{{scope.row.crtTime}}
</template>
</el-table-column>
<el-table-column align="center" label="内容">
<template slot-scope="scope">
{{ scope.row.content}}
</template>
</el-table-column>
<el-table-column align="center" label="回复内容">
<template slot-scope="scope">
{{ scope.row.responseInfo}}
</template>
</el-table-column>
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<el-button
v-if="!scope.row.responseInfo"
size="small"
class="el-button el-button--text el-button--small"
@click="handleDeal(scope.row)"
>回复</el-button>
</template>
</el-table-column>
<!-- <el-table-column align="center" label="状态">-->
<!-- <template slot-scope="scope">-->
<!-- &lt;!&ndash; 根据状态获取对应中文 &ndash;&gt;-->
<!-- {{ getStatus(scope.row.status) }}-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<div v-show="!listLoading" class="pagination-container">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page.sync="listQuery.page" :page-sizes="[10,20,30, 50]" :page-size="listQuery.limit"
layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
</div>
</div>
<!-- 回复 -->
<deal-dialog v-if="dealVisible" :one-row="oneRow" v-on:dealEvent="dealEvent"></deal-dialog>
</div>
</template>
<script type="javascript">
import dealDialog from "./dealDialog";
import { feedbackInfoList } from 'api/userManagement/index'
import {timestamp2Date} from '@/utils/dateUtils';
export default {
name: 'userManagement',
components: {
dealDialog
},
computed:{
getStatus(status) {
return (status) => {
let a = ""
switch(status) {
case 0: a = '启用'; break;
case 1: a = '禁用'; break;
default: a = '未知';break
}
return a
}
},
},
data() {
return {
times: [],
listLoading: false,
list: [], // 用户列表
total: 0, // 总条数
listQuery: {
page: 1,
limit: 20,
type: 3 //1、联系客服,2、意见反馈,3、订单反馈
},
oneRow: {}, // 当前操作项
dealVisible: false, // 回复弹窗
invoiceDialogVisible: false, // 查看发票弹窗
addressDialogVisible: false // 查看地址弹窗
}
},
created() {
this.getList()
},
methods:{
/**
* 搜索
*/
handleSearch(){
this.listQuery.page = 1
this.getList() // 获取用户列表
},
/**
* 回复
*/
handleDeal(row){
this.oneRow = row
this.dealVisible = true
},
/**
* 回复-返回
*/
dealEvent(e){
this.dealVisible = false
if(e){
this.getList()
}
},
/**
* 查看发票-返回界面
*/
invoiceEvent(){
this.invoiceDialogVisible = false
},
/**
* 查看地址-返回界面
*/
addressEvent(){
this.addressDialogVisible = false
},
/**
* 启用、禁用
*/
changeStatus(row){
this.$confirm("是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
// 0、启用,1、禁用
updateStatus({id: row.userId, status: row.status == 1?0:1}).then((response) => {
if(response.status == 200){
this.$notify({
title: "成功",
message: "操作成功",
type: "success",
duration: 2000
});
this.getList()
} else {
this.$notify({
title: '失败',
message: response.message,
type: 'error',
duration: 2000
})
}
});
}).catch(()=>{})
},
/**
* 查看发票
*/
handleInvoice(){
this.invoiceDialogVisible = true
},
/**
* 查看地址
*/
handleAddress(){
this.addressDialogVisible = true
},
/**
* 清除搜索
*/
handleCleanSearch(){
this.listQuery = {
page: 1,
limit: 20,
mobile: undefined, // 手机号
realName: undefined, // 真实姓名
userId: undefined, // 用户id
status: undefined, // 0:启用 1:禁用
registrationTimeBegin: undefined, // 开始时间
registrationTimeEnd: undefined // 结束时间
}
this.times = []
this.getList() // 获取用户列表
},
/**
* 获取用户列表
*/
getList(){
this.listLoading = true
feedbackInfoList(this.listQuery).then(response => {
if(response.status == 200){
response.data.data.map(function(item){
item.crtTimeStr = timestamp2Date(item.createTime);
})
this.list = response.data.data;
this.total = response.data.totalCount;
this.listLoading = false;
} else {
this.listLoading = false
this.$notify({
title: '失败',
message: response.message,
type: 'error',
duration: 2000
})
}
})
},
handleSizeChange(val) {
this.listQuery.limit = val;
this.getList();
},
handleCurrentChange(val) {
this.listQuery.page = val;
this.getList();
}
}
}
</script>
<style lang="scss">
.user-list {
.head {
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 20px;
width: 100%;
border-bottom: 1px solid #e6e6e6;
height: 57px;
}
}
</style>
<template>
<div class="user-list">
<!-- 头部 -->
<div class="head">
<div>联系客服</div>
</div>
<!-- 主体 -->
<div class="app-container calendar-list-container">
<!-- 数据列表 -->
<el-table :data="list" v-loading.body="listLoading" border fit highlight-current-row style="width: 100%">
<el-table-column align="center" label="用户ID" width="120">
<template slot-scope="scope">
{{scope.row.userId}}
</template>
</el-table-column>
<el-table-column align="center" label="姓名" prop="name"></el-table-column>
<el-table-column align="center" label="电话" prop="phone"></el-table-column>
<el-table-column align="center" label="创建时间">
<template slot-scope="scope">
{{scope.row.crtTime}}
</template>
</el-table-column>
<el-table-column align="center" label="内容">
<template slot-scope="scope">
{{ scope.row.content}}
</template>
</el-table-column>
<el-table-column align="center" label="回复内容">
<template slot-scope="scope">
{{ scope.row.responseInfo}}
</template>
</el-table-column>
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<el-button
v-if="!scope.row.responseInfo"
size="small"
class="el-button el-button--text el-button--small"
@click="handleDeal(scope.row)"
>回复</el-button>
</template>
</el-table-column>
<!-- <el-table-column align="center" label="状态">-->
<!-- <template slot-scope="scope">-->
<!-- &lt;!&ndash; 根据状态获取对应中文 &ndash;&gt;-->
<!-- {{ getStatus(scope.row.status) }}-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<div v-show="!listLoading" class="pagination-container">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page.sync="listQuery.page" :page-sizes="[10,20,30, 50]" :page-size="listQuery.limit"
layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
</div>
</div>
<!-- 回复 -->
<deal-dialog v-if="dealVisible" :one-row="oneRow" v-on:dealEvent="dealEvent"></deal-dialog>
</div>
</template>
<script type="javascript">
import dealDialog from "./dealDialog";
import { feedbackInfoList } from 'api/userManagement/index'
import {timestamp2Date} from '@/utils/dateUtils';
export default {
name: 'userManagement',
computed:{
getStatus(status) {
return (status) => {
let a = ""
switch(status) {
case 0: a = '启用'; break;
case 1: a = '禁用'; break;
default: a = '未知';break
}
return a
}
},
},
components: {
dealDialog
},
data() {
return {
times: [],
listLoading: false,
list: [], // 用户列表
total: 0, // 总条数
listQuery: {
page: 1,
limit: 20,
type: 1 //1、联系客服,2、意见反馈,3、订单反馈
},
oneRow: {}, // 当前操作项
dealVisible: false, // 回复弹窗
invoiceDialogVisible: false, // 查看发票弹窗
addressDialogVisible: false // 查看地址弹窗
}
},
created() {
this.getList()
},
methods:{
/**
* 搜索
*/
handleSearch(){
this.listQuery.page = 1
this.getList() // 获取用户列表
},
/**
* 回复
*/
handleDeal(row){
this.oneRow = row
this.dealVisible = true
},
/**
* 回复-返回
*/
dealEvent(e){
this.dealVisible = false
if(e){
this.getList()
}
},
/**
* 查看发票-返回界面
*/
invoiceEvent(){
this.invoiceDialogVisible = false
},
/**
* 查看地址-返回界面
*/
addressEvent(){
this.addressDialogVisible = false
},
/**
* 启用、禁用
*/
changeStatus(row){
this.$confirm("是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
// 0、启用,1、禁用
updateStatus({id: row.userId, status: row.status == 1?0:1}).then((response) => {
if(response.status == 200){
this.$notify({
title: "成功",
message: "操作成功",
type: "success",
duration: 2000
});
this.getList()
} else {
this.$notify({
title: '失败',
message: response.message,
type: 'error',
duration: 2000
})
}
});
}).catch(()=>{})
},
/**
* 查看发票
*/
handleInvoice(){
this.invoiceDialogVisible = true
},
/**
* 查看地址
*/
handleAddress(){
this.addressDialogVisible = true
},
/**
* 清除搜索
*/
handleCleanSearch(){
this.listQuery = {
page: 1,
limit: 20,
mobile: undefined, // 手机号
realName: undefined, // 真实姓名
userId: undefined, // 用户id
status: undefined, // 0:启用 1:禁用
registrationTimeBegin: undefined, // 开始时间
registrationTimeEnd: undefined // 结束时间
}
this.times = []
this.getList() // 获取用户列表
},
/**
* 获取用户列表
*/
getList(){
this.listLoading = true
feedbackInfoList(this.listQuery).then(response => {
if(response.status == 200){
response.data.data.map(function(item){
item.crtTimeStr = timestamp2Date(item.createTime);
})
this.list = response.data.data;
this.total = response.data.totalCount;
this.listLoading = false;
} else {
this.listLoading = false
this.$notify({
title: '失败',
message: response.message,
type: 'error',
duration: 2000
})
}
})
},
handleSizeChange(val) {
this.listQuery.limit = val;
this.getList();
},
handleCurrentChange(val) {
this.listQuery.page = val;
this.getList();
}
}
}
</script>
<style lang="scss">
.user-list {
.head {
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 20px;
width: 100%;
border-bottom: 1px solid #e6e6e6;
height: 57px;
}
}
</style>
<template>
<el-dialog title="回复" :visible.sync="isVisible" width="600px" class="send-main">
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-form-item label="回复内容" prop="responseInfo">
<el-input type="textarea" v-model="form.responseInfo" placeholder="请输入回复内容" :maxlength="400"></el-input>
</el-form-item>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel">取 消</el-button>
<el-button type="primary" v-if="!isClick" @click="okSend('form')">确 定</el-button>
<el-button type="primary" v-else style="opacity: 0.6;" disabled>确 定</el-button>
</div>
</el-dialog>
</template>
<script type="javascript">
import {feedbackInfoUpdate} from 'api/website/order/index'
export default {
props: ['oneRow'],
name: 'dealDialog',
data() {
return {
isClick: false, // 是否点击了发货
rules: {
responseInfo: { required: true, message: '请输入回复内容', trigger: 'blur' }
},
form: {
id: this.oneRow.id,
responseInfo: '' // 回复内容
},
isVisible: false,
}
},
watch: {
isVisible(newValue, oldValue) {
if (!newValue) {
this.$emit('dealEvent', false)
}
}
},
mounted() {
this.isVisible = true
},
methods: {
/**
* 弹框-取消
* */
cancel() {
this.$emit('dealEvent', false)
},
/**
* 回复
*/
okSend(formName) {
let _this = this
if(this.isClick){
return
}
this.isClick = true
setTimeout(function(){
_this.isClick = false
}, 2000)
const set = this.$refs;
set[formName].validate((valid) => {
if (valid) {
feedbackInfoUpdate(this.form).then((response) => {
if(response.status == 200){
this.$notify({
title: "成功",
message: "操作成功",
type: "success",
duration: 2000
});
this.$emit('dealEvent', true)
} else {
this.$notify({
title: '失败',
message: response.message,
type: 'error',
duration: 2000
})
}
});
}
})
}
}
}
</script>
<style lang="scss">
.send-main{
.send-info{
border: 1px solid #eee;
padding: 20px;
margin-bottom: 20px;
margin-top: 20px;
}
.invoice-item{
padding: 20px;
border: 1px solid #eee;
.invoice-item-text{
margin-top: 10px;
}
}
}
</style>
<template>
<div class="user-list">
<!-- 头部 -->
<div class="head">
<div>意见反馈</div>
</div>
<!-- 主体 -->
<div class="app-container calendar-list-container">
<!-- 数据列表 -->
<el-table :data="list" v-loading.body="listLoading" border fit highlight-current-row style="width: 100%">
<el-table-column align="center" label="用户ID" width="120">
<template slot-scope="scope">
{{scope.row.userId}}
</template>
</el-table-column>
<el-table-column align="center" label="姓名" prop="name"></el-table-column>
<el-table-column align="center" label="电话" prop="phone"></el-table-column>
<el-table-column align="center" label="创建时间">
<template slot-scope="scope">
{{scope.row.crtTime}}
</template>
</el-table-column>
<el-table-column align="center" label="内容">
<template slot-scope="scope">
{{ scope.row.content}}
</template>
</el-table-column>
<el-table-column align="center" label="回复内容">
<template slot-scope="scope">
{{ scope.row.responseInfo}}
</template>
</el-table-column>
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<el-button
v-if="!scope.row.responseInfo"
size="small"
class="el-button el-button--text el-button--small"
@click="handleDeal(scope.row)"
>回复</el-button>
</template>
</el-table-column>
<!-- <el-table-column align="center" label="状态">-->
<!-- <template slot-scope="scope">-->
<!-- &lt;!&ndash; 根据状态获取对应中文 &ndash;&gt;-->
<!-- {{ getStatus(scope.row.status) }}-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<div v-show="!listLoading" class="pagination-container">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page.sync="listQuery.page" :page-sizes="[10,20,30, 50]" :page-size="listQuery.limit"
layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
</div>
</div>
<!-- 回复 -->
<deal-dialog v-if="dealVisible" :one-row="oneRow" v-on:dealEvent="dealEvent"></deal-dialog>
</div>
</template>
<script type="javascript">
import dealDialog from "./dealDialog";
import { feedbackInfoList } from 'api/userManagement/index'
import {timestamp2Date} from '@/utils/dateUtils';
export default {
name: 'userManagement',
components: {
dealDialog
},
computed:{
getStatus(status) {
return (status) => {
let a = ""
switch(status) {
case 0: a = '启用'; break;
case 1: a = '禁用'; break;
default: a = '未知';break
}
return a
}
},
},
data() {
return {
times: [],
listLoading: false,
list: [], // 用户列表
total: 0, // 总条数
listQuery: {
page: 1,
limit: 20,
type: 2 //1、联系客服,2、意见反馈,3、订单反馈
},
oneRow: {}, // 当前操作项
dealVisible: false, // 回复弹窗
invoiceDialogVisible: false, // 查看发票弹窗
addressDialogVisible: false // 查看地址弹窗
}
},
created() {
this.getList()
},
methods:{
/**
* 搜索
*/
handleSearch(){
this.listQuery.page = 1
this.getList() // 获取用户列表
},
/**
* 查看发票-返回界面
*/
invoiceEvent(){
this.invoiceDialogVisible = false
},
/**
* 查看地址-返回界面
*/
addressEvent(){
this.addressDialogVisible = false
},
/**
* 启用、禁用
*/
changeStatus(row){
this.$confirm("是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
// 0、启用,1、禁用
updateStatus({id: row.userId, status: row.status == 1?0:1}).then((response) => {
if(response.status == 200){
this.$notify({
title: "成功",
message: "操作成功",
type: "success",
duration: 2000
});
this.getList()
} else {
this.$notify({
title: '失败',
message: response.message,
type: 'error',
duration: 2000
})
}
});
}).catch(()=>{})
},
/**
* 查看发票
*/
handleInvoice(){
this.invoiceDialogVisible = true
},
/**
* 查看地址
*/
handleAddress(){
this.addressDialogVisible = true
},
/**
* 回复
*/
handleDeal(row){
this.oneRow = row
this.dealVisible = true
},
/**
* 回复-返回
*/
dealEvent(e){
this.dealVisible = false
if(e){
this.getList()
}
},
/**
* 清除搜索
*/
handleCleanSearch(){
this.listQuery = {
page: 1,
limit: 20,
mobile: undefined, // 手机号
realName: undefined, // 真实姓名
userId: undefined, // 用户id
status: undefined, // 0:启用 1:禁用
registrationTimeBegin: undefined, // 开始时间
registrationTimeEnd: undefined // 结束时间
}
this.times = []
this.getList() // 获取用户列表
},
/**
* 获取用户列表
*/
getList(){
this.listLoading = true
feedbackInfoList(this.listQuery).then(response => {
if(response.status == 200){
response.data.data.map(function(item){
item.crtTimeStr = timestamp2Date(item.createTime);
})
this.list = response.data.data;
this.total = response.data.totalCount;
this.listLoading = false;
} else {
this.listLoading = false
this.$notify({
title: '失败',
message: response.message,
type: 'error',
duration: 2000
})
}
})
},
handleSizeChange(val) {
this.listQuery.limit = val;
this.getList();
},
handleCurrentChange(val) {
this.listQuery.page = val;
this.getList();
}
}
}
</script>
<style lang="scss">
.user-list {
.head {
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 20px;
width: 100%;
border-bottom: 1px solid #e6e6e6;
height: 57px;
}
}
</style>
This diff is collapsed.
This diff is collapsed.
<template>
<el-dialog title="发货详情" :visible.sync="isVisible" class="send-main">
<div class="invoice-item" v-if="oneRow.orderEInvoice && oneRow.invoiceStatus >= 3">
<div class="flex-aic-jcb">
<div class="invoice-item-text"><label>{{ oneRow.orderEInvoice.titleType == 1 ? "公司名称" : "个人名称" }}{{ oneRow.orderEInvoice.titleName }}</label> </div>
<div
style="
color: #0a84ff;
font-size: 12px;
background: #d9eafa;
border-radius: 2px;
padding: 2px 5px;
">
{{ oneRow.orderEInvoice.type == 1 ? "普通发票" : "增值税专用发票" }}-{{
oneRow.orderEInvoice.titleType == 1 ? "企业" : "个人" }}
</div>
</div>
<div class="invoice-item-text" v-if="oneRow.orderEInvoice.titleType == 1 && oneRow.orderEInvoice.type == 2" ><label>地址:{{ oneRow.orderEInvoice.province }}{{ oneRow.orderEInvoice.city }}{{ oneRow.orderEInvoice.town}}{{ oneRow.orderEInvoice.address }}</label> </div>
<div class="invoice-item-text" v-if="oneRow.orderEInvoice.titleType == 1 && oneRow.orderEInvoice.type == 2"> <label>电话:{{ oneRow.orderEInvoice.phone }}</label> </div>
<div class="invoice-item-text" v-if="oneRow.orderEInvoice.titleType == 1 && oneRow.orderEInvoice.type == 2"> <label>开户行:{{ oneRow.orderEInvoice.openBank }}</label></div>
<div class="invoice-item-text" v-if="oneRow.orderEInvoice.titleType == 1 && oneRow.orderEInvoice.type == 2"><label>账号:{{ oneRow.orderEInvoice.account }}</label></div>
<div class="flex-aic-jcb">
<span class="invoice-item-text" v-if="oneRow.orderEInvoice.titleType == 1"><label>税号:{{ oneRow.orderEInvoice.taxCode }}</label></span>
</div>
<el-form label-width="80px" style="margin-top: 20px;">
<el-row>
<el-form-item label="快递公司">
<el-input style="width:300px" v-model="oneRow.orderEInvoice.trackingImg" placeholder="请输入快递公司" :maxlength="40" disabled></el-input>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="快递单号">
<el-input style="width:300px" v-model="oneRow.orderEInvoice.trackingNumber" placeholder="请输入快递单号" :maxlength="40" disabled></el-input>
</el-form-item>
</el-row>
</el-form>
</div>
<div class="send-info" v-if="oneRow.shippingStatus == 2">
<div class="flex-aic-jcb">
<label>联系人:{{oneRow.receiveName}}</label>
<label style="border:1px solid #409EFF;color: #409EFF;font-size: 12px;padding: 2px 6px;border-radius:4px;">个人信息</label>
</div>
<div style="margin: 10px 0;"><label>手机号:{{oneRow.receivePhone}}</label></div>
<div><label>地址:{{oneRow.receiveAddress}}</label></div>
<el-form label-width="80px" style="margin-top: 20px;">
<el-row>
<el-form-item label="快递公司">
<el-input style="width:300px" v-model="oneRow.trackingImg" placeholder="请输入快递公司" :maxlength="40" disabled></el-input>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="快递单号">
<el-input style="width:300px" v-model="oneRow.trackingNumber" placeholder="请输入快递单号" :maxlength="40" disabled></el-input>
</el-form-item>
</el-row>
</el-form>
</div>
</el-dialog>
</template>
<script type="javascript">
export default {
props: ['oneRow'],
name: 'orderSendDetail',
data() {
return {
isVisible: false,
}
},
created() {
},
watch: {
isVisible(newValue, oldValue) {
if (!newValue) {
this.$emit('detailEvent', false)
}
}
},
mounted() {
this.isVisible = true
},
methods: {
/**
* 弹框-取消
* */
cancel() {
this.$emit('detailEvent', false)
},
sure: function() {
this.$emit('detailEvent', false)
}
}
}
</script>
<style lang="scss">
.send-main{
.send-info{
border: 1px solid #eee;
padding: 20px;
margin-bottom: 20px;
margin-top: 20px;
}
.invoice-item{
padding: 20px;
border: 1px solid #eee;
.invoice-item-text{
margin-top: 10px;
}
}
}
</style>
<template>
<el-dialog title="选择数据" :visible.sync="isVisible" width="600px" class="data-main">
<!-- <el-button type="primary" @click="jumpUrl()">新 增</el-button>-->
<div class="flex-aic" v-for="(iitem, index) in list" style="position:relative;margin-bottom: 10px;">
<el-input v-model="iitem.name" placeholder="请输入关键字" style="width: 60%;margin-right:10px;"></el-input>
<div class="ab-main" v-if="iitem.showTab">
<p v-for="item in iitem.dataList" @click="chooseItem(iitem, item)">{{item.name}}</p>
<p v-if="iitem.dataList.length<=0" @click="chooseItem(iitem)">无匹配内容</p>
</div>
<el-button type="primary" @click="handleChoose(iitem)" slot="reference">搜索</el-button>
<el-button type="primary" v-if="index == list.length - 1" @click="handleAdd()" style="margin-left: 10px;">+</el-button>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel">取 消</el-button>
<el-button type="primary" v-if="!isClick" @click="okSend()">提 交</el-button>
<el-button type="primary" v-else style="opacity: 0.6;" disabled>提 交</el-button>
</div>
</el-dialog>
</template>
<script type="javascript">
import { getItemByType, setOrderItem } from 'api/website/order/index'
export default {
props: ['oneRow'],
name: 'selectDataDialog',
data() {
return {
isClick: false, // 是否点击了发货
loading: false,
list: [{id: 1, dataList: [], name: ''}], // 已选数组
isVisible: false,
}
},
watch: {
isVisible(newValue, oldValue) {
if (!newValue) {
this.$emit('selectDataEvent', false)
}
}
},
mounted() {
this.isVisible = true
},
methods: {
/**
* 新增
*/
handleAdd(){
this.list.push({id: this.list.length+1, dataList: [], name: ''})
},
/**
* 选择数据
*/
chooseItem(iitem, item){
if(item){
iitem.checkedObj = item
iitem.name = item.name
} else {
iitem.checkedObj = undefined
iitem.name = ''
}
iitem.showTab = false
this.$forceUpdate()
},
/**
* 搜索
*/
handleChoose(row){
this.list.map(function(item){
item.showTab = false;
})
this.getList(row)
},
/**
* 弹框-取消
* */
cancel() {
this.$emit('selectDataEvent', false)
},
/**
* 选择数据列表
*/
getList(row) {
let _this = this
getItemByType({type: this.oneRow.type, name: row.name}).then((response) => {
if(response.status == 200){
row.dataList = response.data
row.showTab = true
_this.$forceUpdate()
} else {
this.$notify({
title: '失败',
message: response.message,
type: 'error',
duration: 2000
})
}
});
},
/**
* 新增-跳转界面
*/
jumpUrl(){
if(this.oneRow.type == 1){
// 标准数据新增
} else if(this.oneRow.type == 2){
// 行业应用
this.$router.push({path:'/industryApplication/applicationList'})
} else if(this.oneRow.type == 3){
// 影像图库
this.$router.push({path:'/webSiteManagement/imageLibrary'})
}
},
/**
* 确定
*/
okSend() {
let _this = this
if(this.isClick){
return
}
this.isClick = true
setTimeout(function(){
_this.isClick = false
}, 2000)
let itemInfoDtoList = []
this.list.map(function(item){
if(item.checkedObj){
let p = {
id: item.checkedObj.id,
type: item.checkedObj.type // 类型 1、标准数据,2、影像图库,3、行业应用信息,
}
itemInfoDtoList.push(p)
}
})
if(itemInfoDtoList.length<=0){
this.$message.warning("请选择数据")
return;
}
let params = {
orderId: this.oneRow.orderId,
itemInfoDtoList: itemInfoDtoList
}
setOrderItem(params).then((response) => {
if(response.status == 200){
this.$notify({
title: "成功",
message: "操作成功",
type: "success",
duration: 2000
});
this.$emit('selectDataEvent', true)
} else {
this.$notify({
title: '失败',
message: response.message,
type: 'error',
duration: 2000
})
}
});
}
}
}
</script>
<style lang="scss">
.data-main{
.el-dialog{
height: calc(100vh - 260px);
min-height:300px;
}
.el-dialog .el-dialog__body{
overflow: auto;
height: calc(100vh - 400px);
min-height: 150px;
}
.ab-main{
position: absolute;
top: 45px;
padding: 0 20px;
border-radius: 4px;
width: 60%;
max-height: 200px;
overflow: auto;
background: rgb(255, 255, 255);
border: 1px solid rgb(244, 244, 244);
z-index: 9;
box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
p{
cursor: pointer;
padding-bottom: 10px;
border-bottom: 1px solid #f4f4f4;
}
p:last-child{
border-bottom: none;
}
}
.ab-main::-webkit-scrollbar, .el-dialog__body::-webkit-scrollbar{width: 0px;}
}
</style>
<template>
<el-dialog :title="title" :visible.sync="isVisible" width="600px" class="send-main">
<div class="invoice-item" v-if="oneRow.orderEInvoice && title=='发票发货'">
<div class="flex-aic-jcb">
<div class="invoice-item-text"><label>{{ oneRow.orderEInvoice.titleType == 1 ? "公司名称" : "个人名称" }}{{ oneRow.orderEInvoice.titleName }}</label> </div>
<div
style="
color: #0a84ff;
font-size: 12px;
background: #d9eafa;
border-radius: 2px;
padding: 2px 5px;
">
{{ oneRow.orderEInvoice.type == 1 ? "普通发票" : "增值税专用发票" }}-{{
oneRow.orderEInvoice.titleType == 1 ? "企业" : "个人" }}
</div>
</div>
<div class="invoice-item-text" v-if="oneRow.orderEInvoice.titleType == 1 && oneRow.orderEInvoice.type == 2" ><label>地址:{{ oneRow.orderEInvoice.province }}{{ oneRow.orderEInvoice.city }}{{ oneRow.orderEInvoice.town}}{{ oneRow.orderEInvoice.address }}</label> </div>
<div class="invoice-item-text" v-if="oneRow.orderEInvoice.titleType == 1 && oneRow.orderEInvoice.type == 2"> <label>电话:{{ oneRow.orderEInvoice.phone }}</label> </div>
<div class="invoice-item-text" v-if="oneRow.orderEInvoice.titleType == 1 && oneRow.orderEInvoice.type == 2"> <label>开户行:{{ oneRow.orderEInvoice.openBank }}</label></div>
<div class="invoice-item-text" v-if="oneRow.orderEInvoice.titleType == 1 && oneRow.orderEInvoice.type == 2"><label>账号:{{ oneRow.orderEInvoice.account }}</label></div>
<div class="flex-aic-jcb">
<span class="invoice-item-text" v-if="oneRow.orderEInvoice.titleType == 1"><label>税号:{{ oneRow.orderEInvoice.taxCode }}</label></span>
</div>
</div>
<div class="send-info">
<div class="flex-aic-jcb">
<label>联系人:{{oneRow.receiveName}}</label>
<label style="border:1px solid #409EFF;color: #409EFF;font-size: 12px;padding: 2px 6px;border-radius:4px;">个人信息</label>
</div>
<div style="margin: 10px 0;"><label>手机号:{{oneRow.receivePhone}}</label></div>
<div><label>地址:{{oneRow.receiveAddress}}</label></div>
</div>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-form-item label="快递公司" prop="trackingImg">
<el-input style="width:300px" v-model="form.trackingImg" placeholder="请输入快递公司" :maxlength="40"></el-input>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="快递单号" prop="trackingNumber">
<el-input style="width:300px" v-model="form.trackingNumber" placeholder="请输入快递单号" :maxlength="40"></el-input>
</el-form-item>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel">取 消</el-button>
<el-button type="primary" v-if="!isClick" @click="okSend('form')">发 货</el-button>
<el-button type="primary" v-else style="opacity: 0.6;" disabled>发 货</el-button>
</div>
</el-dialog>
</template>
<script type="javascript">
import {sendGoods, invoiceSend} from 'api/website/order/index'
export default {
props: ['oneRow', 'title'],
name: 'send',
data() {
return {
isClick: false, // 是否点击了发货
rules: {
trackingImg: { required: true, message: '请输入快递公司', trigger: 'blur' },
trackingNumber: {required: true, message: '请输入快递单号', trigger: 'blur'}
},
form: {
orderId: this.oneRow.orderId,
trackingNumber: undefined, // 快递单号
trackingImg: undefined // 快递公司
},
isVisible: false,
}
},
watch: {
isVisible(newValue, oldValue) {
if (!newValue) {
this.$emit('sendEvent', false)
}
}
},
mounted() {
this.isVisible = true
},
methods: {
/**
* 弹框-取消
* */
cancel() {
this.$emit('sendEvent', false)
},
/**
* 发货
*/
okSend(formName) {
let _this = this
if(this.isClick){
return
}
this.isClick = true
setTimeout(function(){
_this.isClick = false
}, 2000)
const set = this.$refs;
set[formName].validate((valid) => {
if (valid) {
if(this.title == '发票发货'){
invoiceSend(this.form).then((response) => {
if(response.status == 200){
this.$notify({
title: "成功",
message: "操作成功",
type: "success",
duration: 2000
});
this.$emit('sendEvent', true)
} else {
this.$notify({
title: '失败',
message: response.message,
type: 'error',
duration: 2000
})
}
});
} else {
// 订单发货
sendGoods(this.form).then((response) => {
if(response.status == 200){
this.$notify({
title: "成功",
message: "操作成功",
type: "success",
duration: 2000
});
this.$emit('sendEvent', true)
} else {
this.$notify({
title: '失败',
message: response.message,
type: 'error',
duration: 2000
})
}
});
}
}
})
}
}
}
</script>
<style lang="scss">
.send-main{
.send-info{
border: 1px solid #eee;
padding: 20px;
margin-bottom: 20px;
margin-top: 20px;
}
.invoice-item{
padding: 20px;
border: 1px solid #eee;
.invoice-item-text{
margin-top: 10px;
}
}
}
</style>
......@@ -19,7 +19,7 @@
<el-form-item label="用户ID">
<el-input v-model="listQuery.userId" placeholder="请输入用户ID"></el-input>
</el-form-item>
<el-form-item label="创建时间">
<el-form-item label="注册时间">
<el-date-picker
v-model="times"
type="datetimerange"
......@@ -58,7 +58,7 @@
<!-- <img style="width: 40px;height: 40px;border-radius: 50%;" :src="scope.row.headimgurl" @click.stop="showPreview(scope.row.headimgurl)"/>-->
</template>
</el-table-column>
<el-table-column align="center" label="创建时间">
<el-table-column align="center" label="注册时间">
<template slot-scope="scope">
{{scope.row.crtTimeStr}}
</template>
......
......@@ -234,7 +234,9 @@ export default {
filterParams(row) {
let a = {};
for (let i in this.formObject.formVal) {
a[i] = row[i] || null
if (row[i] !== '') {
a[i] = row[i]
}
}
return a
},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment