1 line
27 KiB
JSON
1 line
27 KiB
JSON
{"remainingRequest":"D:\\phpstudy_pro\\WWW\\travel\\admin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\phpstudy_pro\\WWW\\travel\\admin\\src\\views\\order\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\phpstudy_pro\\WWW\\travel\\admin\\src\\views\\order\\index.vue","mtime":1718763151762},{"path":"D:\\phpstudy_pro\\WWW\\travel\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1718764957200},{"path":"D:\\phpstudy_pro\\WWW\\travel\\admin\\node_modules\\babel-loader\\lib\\index.js","mtime":1718764959024},{"path":"D:\\phpstudy_pro\\WWW\\travel\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1718764957200},{"path":"D:\\phpstudy_pro\\WWW\\travel\\admin\\node_modules\\vue-loader\\lib\\index.js","mtime":1718764959862}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQovLyBpbXBvcnQgUGFnaW5hdGlvbiBmcm9tICdAL2NvbXBvbmVudHMvUGFnaW5hdGlvbicNCmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJ0AvY29tcG9uZW50cy9QYWdpbmF0aW9uRml4ZWQnDQoNCmV4cG9ydCBkZWZhdWx0IHsNCiAgbmFtZTogJ09yZGVybGlzdCcsDQogIGNvbXBvbmVudHM6IHsgUGFnaW5hdGlvbiB9LA0KICBkYXRhKCkgew0KICAgIHJldHVybiB7DQogICAgICBhY3RpdmU6ICdmb2xsb3cnLA0KICAgICAgdHlwZXM6IHsgMDogJycsIDE6ICcnLCAyOiAnJywgMzogJ3ByaW1hcnknLCA0OiAnc3VjY2VzcycsIDU6ICd3YXJuaW5nJyB9LA0KICAgICAgc3RhdHVzX2FycjogWyflvoXot5/ov5snLCAn6Lef6L+b5LitJywgJ+W3suaguOmUgCcsICfmoLjplIDlpLHotKUnLCAn5pS+5byD6Lef5Y2VJ10sDQogICAgICB0eXBlX2FycjogWyctJywgJ+aUtuebiicsICfmlK/lh7onXSwNCiAgICAgIHRpbWV0eXBlX2Fycjoge30sDQogICAgICBvcmRlcl9zdGF0dXM6IFsnIzllOWY5YycsICcjMDRiY2Q5JywgJyNmYzk5MDQnLCAnIzExOTNmNCcsICcjNDhiMTRiJywgJyNlYjE2NjInLCAnIzlkMWNiNSddLA0KICAgICAgZm9sbG93X3N0YXR1czogWycjOWU5ZjljJywgJyMwNGJjZDknLCAnI2ZjOTkwNCcsICcjMTE5M2Y0JywgJyM0OGIxNGInLCAnI2ViMTY2MiddLA0KICAgICAgb3B0aW9uczogW10sDQogICAgICB2YWx1ZTogbnVsbCwNCiAgICAgIG5leHRfZm9sbG93OiBudWxsLA0KICAgICAgbGlzdDogW10sDQogICAgICB0b3RhbDogMCwNCiAgICAgIGxpc3RMb2FkaW5nOiB0cnVlLA0KICAgICAgbGlzdFF1ZXJ5OiB7DQogICAgICAgIHBhZ2U6IDEsDQogICAgICAgIGxpbWl0OiAxMCwNCiAgICAgICAgdGltZXM6IFtdLA0KICAgICAgICBzdGF0dXM6IG51bGwsDQogICAgICAgIGFkbWluOiBudWxsLA0KICAgICAgICB6aHVibzogbnVsbA0KICAgICAgfSwNCiAgICAgIGl0ZW06IHsgbmV4dF9mb2xsb3c6ICcnLCBwZXJzb25uZWw6IHt9fSwNCiAgICAgIGZvbGxvdzogW10sDQoNCiAgICAgIGRpYWxvZ1Zpc2libGU6IGZhbHNlLA0KICAgICAgZGlhbG9nMlZpc2libGU6IGZhbHNlLA0KICAgICAgZm9ybToge30NCiAgICB9DQogIH0sDQogIGNyZWF0ZWQoKSB7DQogICAgdGhpcy5saXN0UXVlcnkuc3RhdHVzID0gdGhpcy4kcm91dGUucXVlcnkuc3RhdHVzIHx8IG51bGwNCiAgICB0aGlzLmxpc3RRdWVyeS56aHVibyA9IHRoaXMuJHJvdXRlLnF1ZXJ5LnpodWJvIHx8IG51bGwNCiAgICBpZiAodGhpcy4kcm91dGUucXVlcnkuc3RhcnQgJiYgdGhpcy4kcm91dGUucXVlcnkuZW5kKSB7DQogICAgICB0aGlzLmxpc3RRdWVyeS50aW1lcyA9IFt0aGlzLiRyb3V0ZS5xdWVyeS5zdGFydCwgdGhpcy4kcm91dGUucXVlcnkuZW5kXQ0KICAgIH0NCg0KICAgIHRoaXMuZ2V0TGlzdCgpDQogICAgdGhpcy5nZXRTaG9ydGN1dENvbnRlbnQoKQ0KICB9LA0KICBtZXRob2RzOiB7DQogICAgZ2V0TGlzdCgkaXNfZXhjZWwpIHsNCiAgICAgIHRoaXMubGlzdFF1ZXJ5LmV4Y2VsID0gbnVsbA0KICAgICAgaWYgKCRpc19leGNlbCA9PSAxKSB7DQogICAgICAgIHRoaXMubGlzdFF1ZXJ5LmV4Y2VsID0gMQ0KICAgICAgICBjb25zdCBpc2RhdGUgPSB0aGlzLmxpc3RRdWVyeS50aW1lc1swXSBpbnN0YW5jZW9mIERhdGUNCiAgICAgICAgY29uc3QgcGFyYW1zID0gew0KICAgICAgICAgIC4uLnRoaXMubGlzdFF1ZXJ5LA0KICAgICAgICAgIHRpbWVzOiBbaXNkYXRlID8gdGhpcy5saXN0UXVlcnkudGltZXNbMF0udG9JU09TdHJpbmcoKSA6ICcnLCBpc2RhdGUgPyB0aGlzLmxpc3RRdWVyeS50aW1lc1sxXS50b0lTT1N0cmluZygpIDogJyddDQogICAgICAgIH0NCiAgICAgICAgd2luZG93Lm9wZW4oJy9hZG1pbi9vcmRlci9pbmRleD8nICsgdGhpcy5vYmplY3RUb1F1ZXJ5KHBhcmFtcykpDQogICAgICAgIHJldHVybg0KICAgICAgfQ0KDQogICAgICB0aGlzLiRheGlvcy5nZXQoJy9hZG1pbi9vcmRlci9pbmRleCcsIHsgcGFyYW1zOiB0aGlzLmxpc3RRdWVyeSB9KS50aGVuKHJlc3BvbnNlID0+IHsNCiAgICAgICAgdGhpcy5saXN0ID0gcmVzcG9uc2UuZGF0YS5kYXRhDQogICAgICAgIHRoaXMudG90YWwgPSByZXNwb25zZS5kYXRhLnRvdGFsDQogICAgICAgIHRoaXMudGltZXR5cGVfYXJyID0gcmVzcG9uc2UuZXh0LnRpbWV0eXBlLA0KICAgICAgICB0aGlzLm9zcyA9IHJlc3BvbnNlLmV4dC5vc3MNCiAgICAgICAgdGhpcy5saXN0TG9hZGluZyA9IGZhbHNlDQogICAgICB9KQ0KICAgIH0sDQogICAgb2JqZWN0VG9RdWVyeShvYmopIHsNCiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopLm1hcChrZXkgPT4gew0KICAgICAgICBjb25zdCB2YWx1ZSA9IG9ialtrZXldDQogICAgICAgIGlmICh2YWx1ZSA9PSB1bmRlZmluZWQgfHwgdmFsdWUgPT0gbnVsbCkgcmV0dXJuICcnDQogICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoa2V5KSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkNCiAgICAgIH0pLmpvaW4oJyYnKQ0KICAgIH0sDQogICAgb25JbmZvKGl0ZW0pIHsNCiAgICAgIHRoaXMudmFsdWUgPSBudWxsDQogICAgICB0aGlzLm5leHRfZm9sbG93ID0gbnVsbA0KICAgICAgdGhpcy4kc2V0KGl0ZW0sICduZXh0X2ZvbGxvdycsIG51bGwpDQogICAgICB0aGlzLml0ZW0gPSBpdGVtDQogICAgICB0aGlzLmFjdGl2ZSA9ICdmb2xsb3cnDQogICAgICB0aGlzLiRheGlvcy5nZXQoJy9hZG1pbi9vcmRlci9pbmZvJywgeyBwYXJhbXM6IHsgaWQ6IGl0ZW0uaWQgfX0pLnRoZW4ocmVzID0+IHsNCiAgICAgICAgdGhpcy5pdGVtID0gcmVzLmRhdGENCiAgICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gdHJ1ZQ0KICAgICAgfSkuY2F0Y2goZXJyID0+IHsNCg0KICAgICAgfSkNCiAgICB9LA0KICAgIG9uU2F2ZShpdGVtKSB7DQogICAgICBjb25zb2xlLmxvZyh0aGlzLm5leHRfZm9sbG93KQ0KICAgICAgdGhpcy4kYXhpb3MucG9zdCgnL2FkbWluL29yZGVyL3NhdmUnLCB7IGlkOiBpdGVtLmlkLCBjaGVja19zbjogaXRlbS5jaGVja19zbiwgaXNfd2VjaGF0OiBpdGVtLmlzX3dlY2hhdCwgdHJhdmVsX2VuZDogaXRlbS50cmF2ZWxfZW5kLCB0cmF2ZWxfZGF0ZTogaXRlbS50cmF2ZWxfZGF0ZSwgZGVzYzogaXRlbS5kZXNjLCBzdGF0dXM6IGl0ZW0uc3RhdHVzLCBuZXh0X2ZvbGxvdzogdGhpcy5uZXh0X2ZvbGxvdywgcGVyc29ubmVsOiB0aGlzLml0ZW0ucGVyc29ubmVsIH0pLnRoZW4ocmVzID0+IHsNCiAgICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gZmFsc2UNCiAgICAgICAgdGhpcy5pdGVtID0geyBuZXh0X2ZvbGxvdzogJycsIHBlcnNvbm5lbDoge319DQogICAgICB9KS5jYXRjaChlcnIgPT4gew0KDQogICAgICB9KQ0KICAgIH0sDQogICAgb25QYXNzKGZvcm0pIHsNCiAgICAgIHRoaXMuJGF4aW9zLnBvc3QoJy9hZG1pbi9vcmRlci9wYXNzJywgeyBjaGVja19zbjogZm9ybS5jaGVja19zbiB9KS50aGVuKHJlcyA9PiB7DQogICAgICAgIHRoaXMuZGlhbG9nMlZpc2libGUgPSBmYWxzZQ0KICAgICAgICB0aGlzLmZvcm0gPSB7fQ0KICAgICAgfSkuY2F0Y2goZXJyID0+IHsNCg0KICAgICAgfSkNCiAgICB9LA0KICAgIG9uQ2hhbmdlKGZyb20pIHsNCiAgICAgIHRoaXMuJHNldCh0aGlzLml0ZW0sICdkZXNjJywgZnJvbSArICh0aGlzLml0ZW0uZGVzYyAhPSB1bmRlZmluZWQgPyB0aGlzLml0ZW0uZGVzYyA6ICcnKSkNCiAgICB9LA0KICAgIGhhbmRsZUNoYW5nZShvcykgew0KICAgICAgY29uc29sZS5sb2cob3MpDQogICAgfSwNCiAgICBnZXRTaG9ydGN1dENvbnRlbnQoKSB7DQogICAgICB0aGlzLmxpc3RMb2FkaW5nID0gdHJ1ZQ0KICAgICAgdGhpcy4kYXhpb3MuZ2V0KCcvYWRtaW4vc2hvcnRjdXRDb250ZW50L2xpc3QnLCB7IHBhcmFtczogeyBwYWdlOiAxLCBsaW1pdDogNTAsIHN0YXR1czogMSB9fSkudGhlbihyZXNwb25zZSA9PiB7DQogICAgICAgIGZvciAoY29uc3QgciBvZiByZXNwb25zZS5kYXRhLmRhdGEpIHsNCiAgICAgICAgICB0aGlzLm9wdGlvbnMucHVzaCh7IHZhbHVlOiByLmlkLCBsYWJlbDogci5jb250ZW50IH0pDQogICAgICAgIH0NCiAgICAgIH0pLmNhdGNoKCgpID0+IHsNCiAgICAgIH0pDQogICAgfQ0KICB9DQp9DQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiWA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/views/order","sourcesContent":["<template>\r\n <div class=\"app-container\">\r\n\r\n <div class=\"filter-container\">\r\n <el-input v-model=\"listQuery.sn\" placeholder=\"订单号\" style=\"width: 200px;\" class=\"filter-item\" />\r\n\r\n <el-input v-model=\"listQuery.mobile\" placeholder=\"手机号\" style=\"width: 200px;\" class=\"filter-item\" />\r\n\r\n <el-input v-model=\"listQuery.zhubo\" placeholder=\"主播\" style=\"width: 100px;\" class=\"filter-item\" />\r\n\r\n <el-input v-model=\"listQuery.admin\" placeholder=\"客服\" style=\"width: 100px;\" class=\"filter-item\" />\r\n\r\n <el-cascader\r\n v-model=\"listQuery.os_status\"\r\n placeholder=\"平台状态\"\r\n :options=\"oss\"\r\n class=\"filter-item\"\r\n @change=\"handleChange\"\r\n />\r\n\r\n <el-select v-model=\"listQuery.status\" filterable placeholder=\"跟进状态\" class=\"filter-item\" style=\"width: 120px;\">\r\n <el-option\r\n key=\"\"\r\n label=\"请选择\"\r\n value=\"\"\r\n />\r\n <el-option\r\n v-for=\"(v,k) in status_arr\"\r\n :key=\"k\"\r\n :label=\"v\"\r\n :value=\"k\"\r\n />\r\n </el-select>\r\n\r\n <el-select v-model=\"listQuery.timetype\" filterable placeholder=\"时间\" class=\"filter-item\" style=\"width: 120px;\">\r\n <el-option\r\n key=\"\"\r\n label=\"请选择\"\r\n value=\"\"\r\n />\r\n <el-option\r\n v-for=\"(v,k) in timetype_arr\"\r\n :key=\"k\"\r\n :label=\"v\"\r\n :value=\"k\"\r\n />\r\n </el-select>\r\n\r\n <el-date-picker\r\n v-model=\"listQuery.times\"\r\n class=\"filter-item\"\r\n type=\"datetimerange\"\r\n range-separator=\"至\"\r\n start-placeholder=\"开始日期\"\r\n :default-time=\"['00:00:00', '23:59:59']\"\r\n end-placeholder=\"结束日期\"\r\n />\r\n\r\n <el-button class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"getList\">\r\n 搜索\r\n </el-button>\r\n\r\n <el-button class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"getList(1)\">\r\n 导出\r\n </el-button>\r\n\r\n <el-button class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"dialog2Visible = true\">\r\n 核单\r\n </el-button>\r\n\r\n </div>\r\n\r\n <el-table v-loading=\"listLoading\" :data=\"list\" border fit highlight-current-row style=\"width: 100%\">\r\n\r\n <el-table-column align=\"center\" fixed width=\"120\" label=\"操作\">\r\n <template slot-scope=\"scope\">\r\n <el-button :type=\"types[scope.row.order_status]\" size=\"small\" icon=\"el-icon-edit\" @click=\"onInfo(scope.row)\">\r\n 跟进\r\n </el-button>\r\n </template>\r\n </el-table-column>\r\n\r\n <el-table-column align=\"center\" fixed label=\"电话\" width=\"120\" prop=\"mobile\" />\r\n\r\n <el-table-column align=\"center\" fixed label=\"平台\" width=\"80\" prop=\"os_name\" />\r\n\r\n <el-table-column align=\"center\" fixed label=\"直播\" width=\"60\">\r\n <template slot-scope=\"scope\">\r\n <el-tag v-if=\"scope.row.is_zhibo\">是</el-tag>\r\n <el-tag v-else type=\"info\">否</el-tag>\r\n </template>\r\n </el-table-column>\r\n\r\n <el-table-column align=\"center\" label=\"订单号\" width=\"180\" prop=\"sn\" />\r\n\r\n <el-table-column width=\"138px\" align=\"center\" label=\"下单时间\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.create_at | parseTime('{y}-{m}-{d} {h}:{i}') }}</span>\r\n </template>\r\n </el-table-column>\r\n\r\n <el-table-column align=\"center\" label=\"状态\" width=\"80\">\r\n <template slot-scope=\"scope\">\r\n <div style=\"padding: 1px 5px; border-radius: 3px;\" :style=\"{color:order_status[scope.row.order_status],border:`1px solid ${order_status[scope.row.order_status]}`}\" type=\"primary\">{{ scope.row.order_status_name }}</div>\r\n </template>\r\n </el-table-column>\r\n\r\n <el-table-column align=\"center\" label=\"跟进状态\" width=\"90\">\r\n <template slot-scope=\"scope\">\r\n <div style=\"padding: 1px 5px; border-radius: 3px;\" :style=\"{color:follow_status[scope.row.status],border:`1px solid ${follow_status[scope.row.status]}`}\" type=\"primary\">{{ scope.row.status_name }}</div>\r\n </template>\r\n </el-table-column>\r\n\r\n <el-table-column align=\"center\" width=\"500px\" label=\"标题\" prop=\"product_name\" />\r\n <el-table-column width=\"138px\" align=\"center\" label=\"跟进备注\" prop=\"remark\" />\r\n\r\n <el-table-column align=\"center\" label=\"联系人\" width=\"120\" prop=\"contact\" />\r\n\r\n <!-- <el-table-column align=\"center\" label=\"微信\" width=\"80\">\r\n <template slot-scope=\"scope\">\r\n <i v-if=\"scope.row.is_wechat>0\" class=\"el-icon-circle-check\"></i>\r\n </template>\r\n </el-table-column> -->\r\n\r\n <el-table-column width=\"138px\" align=\"center\" label=\"出行时间\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.travel_date | parseTime('{y}-{m}-{d}') }}</span>\r\n </template>\r\n </el-table-column>\r\n\r\n <el-table-column width=\"138px\" align=\"center\" label=\"跟进时间\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.last_follow | parseTime('{y}-{m}-{d} {h}:{i}') }}</span>\r\n </template>\r\n </el-table-column>\r\n\r\n <el-table-column align=\"center\" label=\"核单\" width=\"80\">\r\n <template slot-scope=\"scope\">\r\n <i v-if=\"scope.row.is_check == 1\" class=\"el-icon-check\" />\r\n <i v-if=\"scope.row.is_check == 2\" class=\"el-icon-close\" />\r\n </template>\r\n </el-table-column>\r\n <el-table-column align=\"center\" width=\"138px\" label=\"分类\" prop=\"category_desc\" />\r\n\r\n <el-table-column align=\"center\" label=\"总金额\" width=\"120\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.total_price/100 }}</span>\r\n </template>\r\n </el-table-column>\r\n\r\n <el-table-column align=\"center\" width=\"80px\" label=\"人数\" prop=\"quantity\" />\r\n <el-table-column align=\"center\" label=\"跟单人\" width=\"80\" prop=\"admin.username\" />\r\n <el-table-column align=\"center\" label=\"主播\" width=\"80\" prop=\"anchor.username\" />\r\n <el-table-column width=\"138px\" align=\"center\" label=\"修改时间\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.update_time | parseTime('{y}-{m}-{d} {h}:{i}') }}</span>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n\r\n <pagination\r\n v-show=\"total>0\"\r\n :total=\"total\"\r\n :page.sync=\"listQuery.page\"\r\n :limit.sync=\"listQuery.limit\"\r\n @pagination=\"getList\"\r\n />\r\n\r\n <el-dialog title=\"订单跟进\" :visible.sync=\"dialogVisible\">\r\n <el-form label-width=\"130px\" :model=\"item\">\r\n <el-form-item label=\"产品名称\">\r\n {{ item.product_name }}\r\n </el-form-item>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"产品状态\">\r\n {{ item.order_status_name }}\r\n </el-form-item>\r\n <el-form-item label=\"数量\">\r\n {{ item.quantity }}\r\n </el-form-item>\r\n <el-form-item label=\"联系人\">\r\n {{ item.contact }}\r\n </el-form-item>\r\n <el-form-item label=\"手机\">\r\n {{ item.mobile }}\r\n </el-form-item>\r\n <el-form-item label=\"下单时间\">\r\n {{ item.create_at | parseTime('{y}-{m}-{d} {h}:{i}') }}\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"人员\">\r\n <el-row>\r\n <el-col :span=\"3\">大人</el-col>\r\n <el-col :span=\"5\"><el-input v-model=\"item.personnel.adult\" name=\"adult\" placeholder=\"大人\" /></el-col>\r\n <el-col :span=\"3\">老人</el-col>\r\n <el-col :span=\"5\"><el-input v-model=\"item.personnel.old\" name=\"adult\" placeholder=\"老人\" /></el-col>\r\n <el-col :span=\"3\">小孩</el-col>\r\n <el-col :span=\"5\"><el-input v-model=\"item.personnel.child\" name=\"child\" placeholder=\"小孩\" /></el-col>\r\n </el-row>\r\n </el-form-item>\r\n\r\n <el-form-item label=\"核销码\">\r\n <el-input v-model=\"item.check_sn\" name=\"check_sn\" placeholder=\"请输入平台核销码\" />\r\n </el-form-item>\r\n\r\n <el-form-item label=\"加微信\">\r\n <el-checkbox v-model=\"item.is_wechat\" :true-label=\"1\" :false-label=\"0\">已加微信</el-checkbox>\r\n </el-form-item>\r\n\r\n <el-form-item label=\"出游日期\">\r\n <el-date-picker\r\n v-model=\"item.travel_date\"\r\n type=\"date\"\r\n placeholder=\"选择日期时间\"\r\n />\r\n </el-form-item>\r\n\r\n <el-form-item label=\"返回日期\">\r\n <el-date-picker\r\n v-model=\"item.travel_end\"\r\n type=\"date\"\r\n placeholder=\"选择日期时间\"\r\n />\r\n </el-form-item>\r\n\r\n <el-form-item label=\"下次跟进时间\">\r\n <el-date-picker\r\n v-model=\"next_follow\"\r\n type=\"datetime\"\r\n placeholder=\"选择日期时间\"\r\n />\r\n </el-form-item>\r\n\r\n </el-col>\r\n </el-row>\r\n <el-form-item label=\"跟进状态\">\r\n <template v-for=\"(v,k) in status_arr\">\r\n <el-radio v-if=\"k > 0\" v-model=\"item.status\" :label=\"k\" border>{{ v }}</el-radio>\r\n </template>\r\n </el-form-item>\r\n <el-form-item label=\"快捷跟进\" style=\"width: 600px;\">\r\n <el-select v-model=\"value\" placeholder=\"请选择\" @change=\"onChange\">\r\n <el-form-item style=\"display: inline-flex;text-align: left;width: 770px;\">\r\n <el-option\r\n v-for=\"item in options\"\r\n :key=\"item.value\"\r\n style=\"width: 250px;display: inline-flex;word-break: break-all;\"\r\n :label=\"item.label\"\r\n :value=\"item.label\"\r\n />\r\n </el-form-item>\r\n </el-select>\r\n </el-form-item>\r\n\r\n <el-form-item label=\"跟进说明\">\r\n <el-input v-model=\"item.desc\" type=\"textarea\" />\r\n </el-form-item>\r\n\r\n </el-form>\r\n\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"onSave(item)\">保 存</el-button>\r\n </div>\r\n\r\n <el-tabs v-model=\"active\" type=\"border-card\">\r\n <el-tab-pane name=\"follow\" label=\"跟进记录\">\r\n\r\n <el-table\r\n :data=\"item.follow\"\r\n style=\"width: 100%\"\r\n >\r\n <el-table-column\r\n label=\"日期\"\r\n width=\"138\"\r\n >\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.create_time | parseTime('{y}-{m}-{d} {h}:{i}') }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column\r\n label=\"跟进人\"\r\n width=\"110\"\r\n prop=\"name\"\r\n />\r\n <el-table-column\r\n label=\"状态\"\r\n width=\"80\"\r\n >\r\n <template slot-scope=\"scope\">\r\n <span>{{ status_arr[scope.row.status] }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column\r\n prop=\"desc\"\r\n label=\"跟进说明\"\r\n />\r\n </el-table>\r\n\r\n </el-tab-pane>\r\n <el-tab-pane name=\"finance\" label=\"财务记录\">\r\n <el-table\r\n :data=\"item.finance\"\r\n style=\"width: 100%\"\r\n >\r\n <el-table-column\r\n label=\"日期\"\r\n >\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.create_time | parseTime('{y}-{m}-{d} {h}:{i}') }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column\r\n label=\"类型\"\r\n width=\"110\"\r\n >\r\n <template slot-scope=\"scope\">\r\n <span>{{ type_arr[scope.row.type] }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column\r\n label=\"状态\"\r\n width=\"120\"\r\n >\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.total/100 }}</span>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </el-tab-pane>\r\n </el-tabs>\r\n\r\n </el-dialog>\r\n\r\n <el-dialog title=\"纯核销\" :visible.sync=\"dialog2Visible\">\r\n <el-form label-width=\"160px\" :model=\"form\">\r\n <el-form-item label=\"平台\">\r\n <el-radio v-model=\"form.os\" label=\"1\">美团</el-radio>\r\n </el-form-item>\r\n <el-form-item label=\"核销码\">\r\n <el-input v-model=\"form.check_sn\" placeholder=\"请输入平台核销码\" />\r\n </el-form-item>\r\n </el-form>\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"onPass(form)\">保 存</el-button>\r\n </div>\r\n </el-dialog>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\n// import Pagination from '@/components/Pagination'\r\nimport Pagination from '@/components/PaginationFixed'\r\n\r\nexport default {\r\n name: 'Orderlist',\r\n components: { Pagination },\r\n data() {\r\n return {\r\n active: 'follow',\r\n types: { 0: '', 1: '', 2: '', 3: 'primary', 4: 'success', 5: 'warning' },\r\n status_arr: ['待跟进', '跟进中', '已核销', '核销失败', '放弃跟单'],\r\n type_arr: ['-', '收益', '支出'],\r\n timetype_arr: {},\r\n order_status: ['#9e9f9c', '#04bcd9', '#fc9904', '#1193f4', '#48b14b', '#eb1662', '#9d1cb5'],\r\n follow_status: ['#9e9f9c', '#04bcd9', '#fc9904', '#1193f4', '#48b14b', '#eb1662'],\r\n options: [],\r\n value: null,\r\n next_follow: null,\r\n list: [],\r\n total: 0,\r\n listLoading: true,\r\n listQuery: {\r\n page: 1,\r\n limit: 10,\r\n times: [],\r\n status: null,\r\n admin: null,\r\n zhubo: null\r\n },\r\n item: { next_follow: '', personnel: {}},\r\n follow: [],\r\n\r\n dialogVisible: false,\r\n dialog2Visible: false,\r\n form: {}\r\n }\r\n },\r\n created() {\r\n this.listQuery.status = this.$route.query.status || null\r\n this.listQuery.zhubo = this.$route.query.zhubo || null\r\n if (this.$route.query.start && this.$route.query.end) {\r\n this.listQuery.times = [this.$route.query.start, this.$route.query.end]\r\n }\r\n\r\n this.getList()\r\n this.getShortcutContent()\r\n },\r\n methods: {\r\n getList($is_excel) {\r\n this.listQuery.excel = null\r\n if ($is_excel == 1) {\r\n this.listQuery.excel = 1\r\n const isdate = this.listQuery.times[0] instanceof Date\r\n const params = {\r\n ...this.listQuery,\r\n times: [isdate ? this.listQuery.times[0].toISOString() : '', isdate ? this.listQuery.times[1].toISOString() : '']\r\n }\r\n window.open('/admin/order/index?' + this.objectToQuery(params))\r\n return\r\n }\r\n\r\n this.$axios.get('/admin/order/index', { params: this.listQuery }).then(response => {\r\n this.list = response.data.data\r\n this.total = response.data.total\r\n this.timetype_arr = response.ext.timetype,\r\n this.oss = response.ext.oss\r\n this.listLoading = false\r\n })\r\n },\r\n objectToQuery(obj) {\r\n return Object.keys(obj).map(key => {\r\n const value = obj[key]\r\n if (value == undefined || value == null) return ''\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(value)\r\n }).join('&')\r\n },\r\n onInfo(item) {\r\n this.value = null\r\n this.next_follow = null\r\n this.$set(item, 'next_follow', null)\r\n this.item = item\r\n this.active = 'follow'\r\n this.$axios.get('/admin/order/info', { params: { id: item.id }}).then(res => {\r\n this.item = res.data\r\n this.dialogVisible = true\r\n }).catch(err => {\r\n\r\n })\r\n },\r\n onSave(item) {\r\n console.log(this.next_follow)\r\n this.$axios.post('/admin/order/save', { id: item.id, check_sn: item.check_sn, is_wechat: item.is_wechat, travel_end: item.travel_end, travel_date: item.travel_date, desc: item.desc, status: item.status, next_follow: this.next_follow, personnel: this.item.personnel }).then(res => {\r\n this.dialogVisible = false\r\n this.item = { next_follow: '', personnel: {}}\r\n }).catch(err => {\r\n\r\n })\r\n },\r\n onPass(form) {\r\n this.$axios.post('/admin/order/pass', { check_sn: form.check_sn }).then(res => {\r\n this.dialog2Visible = false\r\n this.form = {}\r\n }).catch(err => {\r\n\r\n })\r\n },\r\n onChange(from) {\r\n this.$set(this.item, 'desc', from + (this.item.desc != undefined ? this.item.desc : ''))\r\n },\r\n handleChange(os) {\r\n console.log(os)\r\n },\r\n getShortcutContent() {\r\n this.listLoading = true\r\n this.$axios.get('/admin/shortcutContent/list', { params: { page: 1, limit: 50, status: 1 }}).then(response => {\r\n for (const r of response.data.data) {\r\n this.options.push({ value: r.id, label: r.content })\r\n }\r\n }).catch(() => {\r\n })\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.app-container {\r\n position: relative;\r\n padding-bottom: 60px; /* 分页条的高度 */\r\n}\r\n\r\n.filter-container,\r\n.el-table {\r\n padding-bottom: 52px; /* 分页条的高度,以避免内容重叠 */\r\n}\r\n</style>\r\n"]}]} |