| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435 |
- <template>
- <!-- 订单-售后订单 -->
- <div>
- <Card :bordered="false" dis-hover class="ivu-mt" :padding="0">
- <div class="new_card_pd">
- <!-- 筛选条件 -->
- <Form ref="pagination" inline :model="pagination" :label-width="labelWidth"
- :label-position="labelPosition" @submit.native.prevent>
- <FormItem label="员工ID:" label-for="title">
- <div class='flex-search'>
- <Input v-model="pagination.member_id" icon="ios-search" @on-click='openmid' placeholder="请输入员工ID" class="input-add mr14" />
- </div>
- </FormItem>
- <!-- <FormItem label="时间范围:">
- <DatePicker :editable="false" @on-change="onchangeTime" :value="timeVal" format="yyyy/MM/dd"
- type="daterange" placement="bottom-start" placeholder="自定义时间" class="input-add"
- :options="options"></DatePicker>
- </FormItem>
- <FormItem label="业绩类型:">
- <Select v-model="pagination.type" class="input-add">
- <Option v-for="(item, index) in num" :value="item.value" :key="index">{{ item.name }}
- </Option>
- </Select>
- </FormItem> -->
- <Button type="primary" @click="orderSearch()">查询</Button>
- <!-- <FormItem label="订单搜索:" label-for="title">
- <Input v-model="pagination.order_id" placeholder="请输入订单号" class="input-add mr14" />
-
- </FormItem> -->
- </Form>
- </div>
- </Card>
- <!-- <cards-data :cardLists="cardLists"></cards-data> -->
- <Card :bordered="false" dis-hover>
- <!-- 售后订单表格 -->
- <Table :columns="thead" :data="tbody" ref="table" :loading="loading" highlight-row no-userFrom-text="暂无数据"
- no-filtered-userFrom-text="暂无筛选结果">
- <template slot-scope="{ row }" slot="order_id">
- <span v-text="row.order_id" style="display: block"></span>
- <span v-show="row.is_del === 1 && row.delete_time == null" class="span-del">用户已删除</span>
- </template>
- <template slot-scope="{ row }" slot="nickname">
- <div>用户名:{{ row.real_name }}</div>
- <div>手机号:{{ row.user_phone }}</div>
- </template>
- <template slot-scope="{ row, index }" slot="user">
- <span class="tabBox_pice">{{row.user && row.user.nickname ? row.user.nickname + '(UID:' +row.user.uid+')':''}}</span>
- </template>
- <template slot-scope="{ row, index }" slot="name">
- <span class="tabBox_pice">{{showName(row.member_id)}}</span>
- </template>
- <template slot-scope="{ row }" slot="info">
- <div class="tabBox" v-for="(val, i) in row.info" :key="i">
- <div class="tabBox_img" v-viewer>
- <img v-lazy="val.slider_image" />
- </div>
- <span class="tabBox_tit">{{ val.store_name }}</span>
- <span class="tabBox_pice">{{'¥' + val.pay_price}}</span>
- </div>
- </template>
- <template slot-scope="{ row, index }" slot="pay_price">
- <span class="tabBox_pice">{{'¥' + showPrice(row.info)}}</span>
- </template>
- <template slot-scope="{ row, index }" slot="reservation_time">
- <span class="tabBox_pice">{{showTime(row.reservation_time)}}</span>
- </template>
- <template slot-scope="{ row, index }" slot="store">
- <span class="tabBox_pice">{{row.store.name}}</span>
- </template>
- <template slot-scope="{ row, index }" slot="pay_time">
- <span class="tabBox_pice">{{row.create_time| formatDate}}</span>
- </template>
- <template slot-scope="{ row, index }" slot="action">
- <a @click="black(row)" v-if="!row.content">回执</a>
- <Divider type="vertical" v-if="!row.content"/>
- <a @click="del(row)">删除</a>
- </template>
- </Table>
- <div class="acea-row row-right page">
- <Page :total="total" :current="pagination.page" show-elevator show-total @on-change="pageChange"
- :page-size="pagination.limit" />
- </div>
- </Card>
- <Modal v-model="modals" width='80' mask title="员工选择">
- <staffList :is_reservation='0' @getProductId='checkmember'></staffList>
- <template #footer>
- <Button @click="memberListShow=false">取消</Button>
- </template>
- </Modal>
- <Modal
- v-model="tsmodals"
- scrollable
- closable
- title="回执"
- :mask-closable="false"
- >
- <Input
- v-model="msg"
- type="textarea"
- :rows="4"
- placeholder="请输入回执内容"
- />
- <div slot="footer">
- <Button
- type="primary"
- size="large"
- long
- :loading="mtsmodals_loading"
- @click="oks"
- >确定</Button
- >
- </div>
- </Modal>
- </div>
- </template>
- <script>
- import {
- formatDate
- } from '@/utils/validate';
- import {
- getYgList
- } from '@/api/store'
- import {
- mapState
- } from "vuex";
- import {
- getKpi
- } from "@/api/agent"
- import {
- getDs,
- getTs,
- tsBack,
- delTs
- } from "@/api/finance"
- import timeOptions from "@/utils/timeOptions";
- import cardsData from "@/components/cards/cards";
- import staffList from "@/components/staffList/index";
- export default {
- components: {
- cardsData,
- staffList
- },
- filters: {
- formatDate(time) {
- if (time !== 0) {
- let date = new Date(time * 1000);
- return formatDate(date, 'yyyy-MM-dd hh:mm');
- }
- }
- },
- data() {
- return {
- blaclItem: {},
- msg: '',
- mtsmodals_loading: false,
- tsmodals: false,
- modals:false,
- cardLists: [],
- thead: [{
- title: "id",
- align: "id",
- key: "id",
- minWidth: 50,
- }, {
- title: "订单编号",
- align: "order_id",
- key: "order_id",
- minWidth: 150,
- },
- // subscribe_id
-
- {
- title: "用户",
- align: "user",
- slot: "user",
- minWidth: 80,
- },
- {
- title: "员工",
- align: "name",
- slot: "name",
- minWidth: 80,
- },
- {
- title: "投诉原因",
- key: "reason",
- minWidth: 70,
- },
- {
- title: "投诉时间",
- slot: "pay_time",
- minWidth: 130,
- },
- {
- title: "回执",
- key: "content",
- minWidth: 130,
- },
- {
- title: "操作",
- slot: "action",
- // fixed: "right",
- minWidth: 100,
- },
- ],
- tbody: [],
- num: [{
- name: '全部',
- value: 0
- }, {
- name: '销售业绩',
- value: 1
- },
- {
- name: '手工业绩',
- value: 2
- },
- ],
- loading: false,
- total: 0,
- pagination: {
- type: 0,
- member_id: '',
- page: 1,
- limit: 15,
- create_time: "",
- status: 0
- },
- options: timeOptions,
- timeVal: [],
- name: "",
- staffList: []
- };
- },
- computed: {
- ...mapState("order", ["orderChartType"]),
- // ...mapState("admin/layout", ["isMobile"]),
- labelWidth() {
- return this.isMobile ? undefined : 96;
- },
- labelPosition() {
- return this.isMobile ? "top" : "right";
- },
- },
- created() {
- this.getYgList()
- },
- methods: {
- oks() {
-
- if(this.msg == '' ) {
- return this.$Message.error('请输入回执内容');
- }
- tsBack({
- id: this.blaclItem.id,
- content: this.msg
- }).then(res => {
- this.$Message.success(res.msg);
- this.blaclItem = {}
- this.tsmodals = false;
- this.getList();
- })
-
- },
- black(row) {
- this.blaclItem = row;
- this.tsmodals = true;
- },
- del(row) {
- let that = this;
- this.$Modal.confirm({
- title: "确认删除",
- content: '<p>确定删除吗?</p><p>删除后将无法恢复,请谨慎操作!</p>',
- loading: true,
- onOk: () => {
- this.$Modal.remove();
- delTs(row.id).then(res=> {
- that.$Message.success('删除完成');
- that.getList();
- })
- },
- onCancel: () => {
- // this.$Message.info('取消成功');
- }
- });
- },
- getYgList() {
- getYgList({
- page: 1,
- limit:100
- }).then(res => {
- this.staffList = res.data.list;
- this.getOrderList();
- })
- },
- showName(id) {
- let obj = {};
- obj = this.staffList.find(item => item.id == id)
- if(obj && obj.id) {
- return obj.name
- }else {
- return '--'
- }
- },
- // 打开弹窗
- openmid(e) {
- this.modals = true;
- },
- // 选中员工
- checkmember(res) {
- let data = res[0];
- this.modals = false;
- this.pagination.member_id = data.id;
- },
- showTime(time) {
- var date = new Date(time * 1000);
- var year = date.getFullYear(); // 获取年份
- var month = ("0" + (date.getMonth() + 1)).slice(-2); // 获取月份(注意月份从 0 开始,需要加 1)
- var day = ("0" + date.getDate()).slice(-2); // 获取日期
- var hours = ("0" + date.getHours()).slice(-2); // 获取小时
- var minutes = ("0" + date.getMinutes()).slice(-2); // 获取分钟
- var seconds = ("0" + date.getSeconds()).slice(-2); // 获取秒钟
- var dateString = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds; // 自定义时间格式
- return dateString
- },
- showPrice(list) {
- let price = 0;
- list.forEach(item => {
- price += item.pay_price * 1
- })
- return price.toFixed(2)
- },
- // 具体日期搜索();
- onchangeTime(e) {
- console.log(e, 'eeeeeee')
- this.pagination.page = 1;
- this.timeVal = e;
- this.pagination.create_time = this.timeVal[0] ? this.timeVal.join("-") : "";
- },
- // 订单列表
- getOrderList() {
- this.loading = true;
- getTs(this.pagination)
- .then((res) => {
- this.loading = false;
- const {
- count,
- data,
- num
- } = res.data;
- this.total = count;
- this.tbody = data;
- })
- .catch((err) => {
- this.loading = false;
- this.$Message.error(err.msg);
- });
- },
- // 分页
- pageChange(index) {
- this.pagination.page = index;
- this.getOrderList();
- },
- // 订单搜索
- orderSearch() {
- this.pagination.page = 1;
- this.getOrderList();
- },
- },
- };
- </script>
- <style lang="stylus" scoped>
- .span-del {
- color: #ed4014;
- display: block
- }
- .code {
- position: relative;
- }
- .QRpic {
- width: 180px;
- height: 259px;
- img {
- width: 100%;
- height: 100%;
- }
- }
- .tabBox {
- width: 100%;
- height: 100%;
- display: flex;
- align-items: center;
- .tabBox_img {
- width: 30px;
- height: 30px;
- img {
- width: 100%;
- height: 100%;
- }
- }
- .tabBox_tit {
- width: 245px;
- height: 30px;
- line-height: 30px;
- font-size: 12px !important;
- margin: 0 2px 0 10px;
- letter-spacing: 1px;
- box-sizing: border-box;
- }
- }
- .tabBox+.tabBox {
- margin-top: 5px;
- }
- .pictrue-box {
- display: flex;
- align-item: center;
- }
- .pictrue {
- width: 25px;
- height: 25px;
- }
- </style>
|