tianyi 2 weeks ago
parent
commit
defcbf8937
  1. 2
      src/views/app/business/lineManage/addEdit.vue
  2. 53
      src/views/app/business/recharge/recharge.vue
  3. 288
      src/views/app/shop/shop.vue

2
src/views/app/business/lineManage/addEdit.vue

@ -325,7 +325,7 @@
}); });
}, },
checkShop(v) { checkShop(v) {
console.log("数据", v) console.log("数据1", v)
for (let i = 0; i < this.shopList.length; i++) { for (let i = 0; i < this.shopList.length; i++) {
if (this.shopList[i].id == v) { if (this.shopList[i].id == v) {
let data = { let data = {

53
src/views/app/business/recharge/recharge.vue

@ -3,13 +3,16 @@
<Card> <Card>
<Row v-show="openSearch" @keydown.enter.native="handleSearch"> <Row v-show="openSearch" @keydown.enter.native="handleSearch">
<Form ref="searchForm" :model="searchForm" inline :label-width="70"> <Form ref="searchForm" :model="searchForm" inline :label-width="70">
<FormItem label="商家名" prop="rechargeId"> <FormItem label="商品名" prop="productName">
<Input type="text" v-model="searchForm.name" placeholder="请输入商名" clearable <Input type="text" v-model="searchForm.productName" placeholder="请输入商名" clearable
style="width: 200px" /> style="width: 200px" />
</FormItem> </FormItem>
<FormItem label="状态" prop="rechargeName"> <FormItem label="状态" prop="status">
<Input type="text" v-model="searchForm.rechargeName" placeholder="状态" clearable <Select ref="dep" @on-change="checkStatus" style="width:200px">
style="width: 200px" /> <Option v-for="(item, i) in dictData" :key="i" :value="item.value">{{
item.title
}}</Option>
</Select>
</FormItem> </FormItem>
<FormItem style="margin-left: -35px" class="br"> <FormItem style="margin-left: -35px" class="br">
<Button @click="handleSearch" type="primary" icon="ios-search">搜索</Button> <Button @click="handleSearch" type="primary" icon="ios-search">搜索</Button>
@ -84,7 +87,22 @@
pageNumber: 1, pageNumber: 1,
pageSize: 10, pageSize: 10,
}, },
dictData: [{
title: "待成团",
value: 0
}, {
title: "成功",
value: 1
}, {
title: "失败",
value: 2
}, {
title: "面对面",
value: 3
}, {
title: "团长未支付",
value: "-1"
}],
columns: [{ columns: [{
type: "index", type: "index",
width: 60, width: 60,
@ -104,6 +122,12 @@
title: "成团时间", title: "成团时间",
key: "successTime", key: "successTime",
align: "center", align: "center",
render: (h, params) => {
return h(
"div",
this.formatDateTime(params.row.successTime)
);
}
}, },
{ {
title: "几人团/已拼成", title: "几人团/已拼成",
@ -136,6 +160,9 @@
} else if (params.row.status == "2") { } else if (params.row.status == "2") {
re = "失败"; re = "失败";
color = "red"; color = "red";
} else if (params.row.status == "-1"){
re = '团长发起拼团但未支付';
color = "red";
} }
return h("div", [ return h("div", [
h( h(
@ -184,10 +211,24 @@
this.searchForm.pageNumber = v; this.searchForm.pageNumber = v;
this.getDataList(); this.getDataList();
}, },
formatDateTime(isoString) {
if (!isoString) return ''
const date = new Date(isoString)
const year = date.getFullYear()
const month = String(date.getMonth() + 1).padStart(2, '0')
const day = String(date.getDate()).padStart(2, '0')
const hours = String(date.getHours()).padStart(2, '0')
const minutes = String(date.getMinutes()).padStart(2, '0')
const seconds = String(date.getSeconds()).padStart(2, '0')
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
},
changePageSize(v) { changePageSize(v) {
this.searchForm.pageSize = v; this.searchForm.pageSize = v;
this.getDataList(); this.getDataList();
}, },
checkStatus(v){
this.searchForm.status = v
},
handleSearch() { handleSearch() {
this.searchForm.pageNumber = 1; this.searchForm.pageNumber = 1;
this.searchForm.pageSize = 10; this.searchForm.pageSize = 10;

288
src/views/app/shop/shop.vue

@ -14,10 +14,6 @@
<FormItem style="margin-left: -35px" class="br"> <FormItem style="margin-left: -35px" class="br">
<Button @click="handleSearch" type="primary" icon="ios-search">搜索</Button> <Button @click="handleSearch" type="primary" icon="ios-search">搜索</Button>
<Button @click="handleReset">重置</Button> <Button @click="handleReset">重置</Button>
<a class="drop-down" @click="dropDown">
{{ dropDownContent }}
<Icon :type="dropDownIcon"></Icon>
</a>
</FormItem> </FormItem>
</Form> </Form>
</Row> </Row>
@ -25,18 +21,6 @@
<div> <div>
<Button @click="add" type="primary" icon="md-add">添加店铺</Button> <Button @click="add" type="primary" icon="md-add">添加店铺</Button>
<Button @click="delAll" icon="md-trash">批量删除</Button> <Button @click="delAll" icon="md-trash">批量删除</Button>
<Dropdown @on-click="handleDropdown">
<Button>
更多操作
<Icon type="md-arrow-dropdown" />
</Button>
<DropdownMenu slot="list">
<DropdownItem name="reset">重置用户密码</DropdownItem>
<DropdownItem name="exportData">导出所选数据</DropdownItem>
<DropdownItem name="exportAll">导出全部数据</DropdownItem>
<DropdownItem name="importData">导入数据</DropdownItem>
</DropdownMenu>
</Dropdown>
</div> </div>
<div class="icons"> <div class="icons">
<Tooltip content="刷新" placement="top" transfer> <Tooltip content="刷新" placement="top" transfer>
@ -73,49 +57,6 @@
size="small" show-total show-elevator show-sizer></Page> size="small" show-total show-elevator show-sizer></Page>
</Row> </Row>
</Card> </Card>
<!-- 自定义导出数据 -->
<Modal v-model="exportModalVisible" :title="exportTitle" :loading="loadingExport" @on-ok="exportCustomData">
<Form ref="exportForm" :label-width="100">
<FormItem label="导出文件名">
<Input v-model="filename" />
</FormItem>
<FormItem label="自定义导出列">
<CheckboxGroup v-model="chooseColumns">
<Checkbox v-for="(item, i) in exportColumns" :label="item.title" :key="i" :value="item.checked"
:disabled="item.disabled"></Checkbox>
</CheckboxGroup>
</FormItem>
</Form>
</Modal>
<!-- 导入数据 -->
<Drawer title="导入数据" closable v-model="importModalVisible" width="800" draggable>
<div style="
display: flex;
justify-content: space-between;
align-items: center;
">
<Upload action :before-upload="beforeUploadImport" accept=".xls, .xlsx">
<Button :loading="reading" icon="ios-cloud-upload-outline"
style="margin-right: 10px">上传Excel文件</Button>
<span v-if="uploadfile.name">当前选择文件{{ uploadfile.name }}</span>
</Upload>
<Button @click="clearImportData" icon="md-trash">清空数据</Button>
</div>
<Alert type="warning" show-icon>导入前请下载查看导入模版数据文件查看所需字段及说明确保数据格式正确不得修改列英文名称</Alert>
<Table :columns="importColumns" border :height="height" :data="importTableData" ref="importTable"></Table>
<div class="drawer-footer">
<Button @click="downloadTemple" type="info">下载导入模板</Button>
<div style="position: absolute; right: 15px; display: inline-block">
<Button @click="importModalVisible = false">关闭</Button>
<Button :loading="importLoading" :disabled="importTableData.length <= 0" @click="importData"
style="margin-left: 8px" type="primary">
确认导入
<span v-if="importTableData.length > 0">{{ importTableData.length }} 条数据</span>
</Button>
</div>
</div>
</Drawer>
<Modal :title="商品列表" v-model="Visiable" :mask-closable="false" :scrollabele="true" :width="1500"> <Modal :title="商品列表" v-model="Visiable" :mask-closable="false" :scrollabele="true" :width="1500">
<goodsList ref="goodsPage" v-if="Visiable"></goodsList> <goodsList ref="goodsPage" v-if="Visiable"></goodsList>
<div slot="footer" v-show=Visiable> <div slot="footer" v-show=Visiable>
@ -150,19 +91,8 @@
} from "@/api/index"; } from "@/api/index";
import departmentChoose from "@/views/my-components/hiver/department-choose"; import departmentChoose from "@/views/my-components/hiver/department-choose";
import checkPassword from "@/views/my-components/hiver/check-password"; import checkPassword from "@/views/my-components/hiver/check-password";
import {
shortcuts
} from "@/libs/shortcuts";
//
import {
userColumns,
userData
} from "./importTemplate";
//
import {
exportColumn
} from "./exportColumn";
import excel from "@/libs/excel";
import addEdit from "./addEdit.vue"; import addEdit from "./addEdit.vue";
import mernage from "./mernage.vue"; import mernage from "./mernage.vue";
import logisticsAddress from "@/views/app/shop/logisticsAddress.vue"; import logisticsAddress from "@/views/app/shop/logisticsAddress.vue";
@ -193,7 +123,6 @@
courierVisiable:false, courierVisiable:false,
Visiable:false, Visiable:false,
tableSize: "default", tableSize: "default",
height: 510,
showUser: false, showUser: false,
showmernage:false, showmernage:false,
showType: "0", showType: "0",
@ -201,11 +130,6 @@
openSearch: true, openSearch: true,
openTip: true, openTip: true,
loading: true, loading: true,
reading: false,
importLoading: false,
loadingExport: true,
exportModalVisible: false,
importModalVisible: false,
drop: false, drop: false,
dropDownContent: "展开", dropDownContent: "展开",
dropDownIcon: "ios-arrow-down", dropDownIcon: "ios-arrow-down",
@ -233,10 +157,6 @@
regionId:JSON.parse(this.getStore("userInfo")).departmentId, regionId:JSON.parse(this.getStore("userInfo")).departmentId,
remark: "", remark: "",
}, },
selectDate: null,
options: {
shortcuts: shortcuts,
},
form: {}, form: {},
columns: [{ columns: [{
type: "selection", type: "selection",
@ -410,46 +330,13 @@
}, },
}, },
], ],
exportColumns: exportColumn,
chooseColumns: [],
filename: "用户数据",
exportTitle: "确认导出",
exportType: "",
importTableData: [],
importColumns: [],
uploadfile: {
name: "",
},
tempColumns: userColumns,
tempData: userData,
data: [], data: [],
takeData:{},
exportData: [],
total: 0, total: 0,
}; };
}, },
methods: { methods: {
init() { init() {
this.getDataList(); this.getDataList();
//
let array = [];
this.exportColumns.forEach((e) => {
//
if (
!this.getStore("roles").includes("ROLE_ADMIN") &&
e.key == "mobile"
) {
e.title = "[无权导出] " + e.title;
e.disabled = true;
} else {
e.disabled = false;
}
array.push(e.title);
});
this.chooseColumns = array;
},
handleSelectDep(v) {
this.searchForm.departmentId = v;
}, },
changePage(v) { changePage(v) {
this.searchForm.pageNumber = v; this.searchForm.pageNumber = v;
@ -460,12 +347,6 @@
this.searchForm.pageSize = v; this.searchForm.pageSize = v;
this.getDataList(); this.getDataList();
}, },
selectDateRange(v) {
if (v) {
this.searchForm.startDate = v[0];
this.searchForm.endDate = v[1];
}
},
changeTableSize(v) { changeTableSize(v) {
this.tableSize = v; this.tableSize = v;
}, },
@ -501,7 +382,6 @@
this.$refs.searchForm.resetFields(); this.$refs.searchForm.resetFields();
this.searchForm.pageNumber = 1; this.searchForm.pageNumber = 1;
this.searchForm.pageSize = 10; this.searchForm.pageSize = 10;
this.selectDate = null;
this.searchForm.startDate = ""; this.searchForm.startDate = "";
this.searchForm.endDate = ""; this.searchForm.endDate = "";
this.$refs.dep.clearSelect(); this.$refs.dep.clearSelect();
@ -517,35 +397,7 @@
} }
this.getDataList(); this.getDataList();
}, },
handleDropdown(name) {
if (name == "reset") {
if (this.selectList.length <= 0) {
this.$Message.warning("您还未选择要重置密码的用户");
return;
}
this.$refs.checkPass.show();
} else if (name == "exportData") {
if (this.selectList.length <= 0) {
this.$Message.warning("您还未选择要导出的数据");
return;
}
this.exportType = "part";
this.exportModalVisible = true;
this.exportTitle =
"确认导出 " + this.selectList.length + " 条数据(付费)";
} else if (name == "exportAll") {
this.exportType = "all";
this.exportModalVisible = true;
this.exportTitle = "确认导出全部 " + this.total + " 条数据(付费)";
getAllUserData().then((res) => {
if (res.success) {
this.exportData = res.result;
}
});
} else if (name == "importData") {
this.importModalVisible = true;
}
},
resetPass() { resetPass() {
this.$Modal.confirm({ this.$Modal.confirm({
title: "确认重置", title: "确认重置",
@ -572,128 +424,13 @@
}, },
}); });
}, },
exportCustomData() {
if (this.filename == "") {
this.filename = "用户数据";
}
//
let exportColumns = [];
this.exportColumns.forEach((e) => {
this.chooseColumns.forEach((c) => {
if (e.title == c && !e.disabled) {
exportColumns.push(e);
}
});
});
this.exportModalVisible = false;
let title = [];
let key = [];
exportColumns.forEach((e) => {
title.push(e.title);
key.push(e.key);
});
const params = {
title: title,
key: key,
data: this.exportData,
autoWidth: true,
filename: this.filename,
};
excel.export_array_to_excel(params);
},
beforeUploadImport(file) {
this.uploadfile = file;
const fileExt = file.name.split(".").pop().toLocaleLowerCase();
if (fileExt == "xlsx" || fileExt == "xls") {
this.readFile(file);
this.file = file;
} else {
this.$Notice.warning({
title: "文件类型错误",
desc: "所选文件‘ " +
file.name +
" ’不是EXCEL文件,请选择后缀为.xlsx或者.xls的EXCEL文件。",
});
}
return false;
},
//
readFile(file) {
this.reading = true;
const reader = new FileReader();
reader.readAsArrayBuffer(file);
reader.onerror = (e) => {
this.reading = false;
this.$Message.error("文件读取出错");
};
reader.onload = (e) => {
const data = e.target.result;
const {
header,
results
} = excel.read(data, "array");
const tableTitle = header.map((item) => {
return {
title: item,
key: item,
minWidth: 130,
align: "center"
};
});
this.importTableData = results;
this.importColumns = tableTitle;
this.reading = false;
this.$Message.success("读取数据成功");
};
},
clearImportData() {
this.importTableData = [];
this.importColumns = [];
this.uploadfile = {};
},
downloadTemple() {
let title = [];
let key = [];
userColumns.forEach((e) => {
title.push(e.title);
key.push(e.key);
});
const params = {
title: title,
key: key,
data: userData,
autoWidth: true,
filename: "导入用户数据模版",
};
excel.export_array_to_excel(params);
},
importData() {
this.importLoading = true;
importUserData(this.importTableData).then((res) => {
this.importLoading = false;
if (res.success) {
this.importModalVisible = false;
this.getDataList();
this.$Modal.info({
title: "导入结果",
content: res.message,
});
}
});
},
showDetail(v) {
// null""
for (let attr in v) {
if (v[attr] == null) {
v[attr] = "";
}
}
let str = JSON.stringify(v);
let data = JSON.parse(str);
this.form = data;
this.showType = "0";
this.showUser = true;
},
findAllRecord(v) { findAllRecord(v) {
this.courierVisiable = true; this.courierVisiable = true;
this.$nextTick(() => { this.$nextTick(() => {
@ -803,7 +540,6 @@
this.drop = !this.drop; this.drop = !this.drop;
}, },
showSelect(e) { showSelect(e) {
this.exportData = e;
this.selectList = e; this.selectList = e;
}, },
clearSelectAll() { clearSelectAll() {
@ -836,11 +572,9 @@
}); });
}, },
}); });
}, }
}, },
mounted() { mounted() {
//
this.height = Number(document.documentElement.clientHeight - 230);
this.init(); this.init();
}, },
}; };

Loading…
Cancel
Save