123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696 |
- <template>
- <el-dialog
- title="消息"
- :visible.sync="showMessages"
- :append-to-body="true"
- width="50%"
- :show-close="false"
- :close-on-click-modal="false"
- >
- <el-radio-group v-model="type" size="mini" @change="checkFn">
- <el-radio-button :label="0">系统通知</el-radio-button>
- <el-radio-button :label="1">文件下发</el-radio-button>
- <el-radio-button :label="2">返利确认单</el-radio-button>
- <el-radio-button :label="3">物流通知</el-radio-button>
- <el-radio-button :label="4">到货通知</el-radio-button>
- <!-- <el-radio-button :label="5">货满订单</el-radio-button> -->
- </el-radio-group>
- <!-- 系统通知 -->
- <div v-show="type === 0" class="table">
- <el-table
- ref="table"
- v-loading="listLoading"
- class="cql"
- :data="dataList"
- element-loading-text="Loading"
- border
- fit
- highlight-current-row
- stripe
- >
- <el-table-column align="center" type="index" min-width="160" show-overflow-tooltip />
- <el-table-column align="center" label="标题" prop="title" min-width="160" show-overflow-tooltip />
- <el-table-column align="center" label="来源" prop="source" min-width="160" show-overflow-tooltip />
- <el-table-column align="center" label="时间" prop="issueTime" min-width="160" show-overflow-tooltip />
- <el-table-column align="center" label="是否已读" prop="isTopRead" min-width="160" show-overflow-tooltip>
- <template slot-scope="scope">
- {{ scope.row.isTopRead ? '已读' : '未读' }}
- </template>
- </el-table-column>
- <el-table-column align="center" label="操作" min-width="160" show-overflow-tooltip>
- <template slot-scope="scope">
- <el-button
- :style="{
- color: scope.row.readFlag ? '#c0c4cc' : ''
- }"
- type="text"
- class="textColor"
- @click="lookInDialog(scope.row.id)"
- >查看</el-button
- >
- </template>
- </el-table-column>
- </el-table>
- </div>
- <!-- 文件下发 -->
- <div v-show="type === 1" class="table">
- <el-table
- ref="table"
- v-loading="listLoading"
- :data="fileList"
- element-loading-text="Loading"
- border
- fit
- highlight-current-row
- stripe
- >
- <el-table-column align="center" type="index" min-width="160" show-overflow-tooltip />
- <el-table-column align="center" label="标题" prop="title" min-width="160" show-overflow-tooltip />
- <el-table-column align="center" label="来源" prop="operatorNickName" min-width="160" show-overflow-tooltip />
- <el-table-column align="center" label="时间" prop="createTime" min-width="160" show-overflow-tooltip />
- <el-table-column align="center" label="操作" min-width="160" show-overflow-tooltip>
- <template slot-scope="scope">
- <el-button type="text" class="textColor" @click="downloadFn(scope.row.id)">下载</el-button>
- </template>
- </el-table-column>
- </el-table>
- </div>
- <!-- 返利确认单 -->
- <div v-show="type === 2" class="table">
- <el-table
- ref="table"
- v-loading="listLoading"
- :data="rebateList"
- element-loading-text="Loading"
- border
- fit
- highlight-current-row
- stripe
- >
- <el-table-column align="center" type="index" min-width="160" show-overflow-tooltip />
- <el-table-column align="center" label="经销商名称" prop="customerName" min-width="160" show-overflow-tooltip />
- <el-table-column align="center" label="确认人" prop="examineBy" min-width="160" show-overflow-tooltip />
- <el-table-column align="center" label="确认时间" prop="examineTime" min-width="160" show-overflow-tooltip />
- <el-table-column align="center" label="操作" min-width="160" show-overflow-tooltip>
- <template slot-scope="scope">
- <el-button type="text" class="textColor" @click="secondFn(scope.row.rebateOrderId)">{{
- isCustomer ? '确认' : '复核'
- }}</el-button>
- </template>
- </el-table-column>
- </el-table>
- </div>
- <!-- 物流通知 -->
- <div v-show="type === 3" class="table">
- <el-form ref="invoiceOrderForm" :model="invoiceOrderForm" label-width="120px" label-position="left" size="mini">
- <el-row :gutter="20">
- <el-col :xs="24" :sm="12" :lg="8">
- <el-form-item prop="invoiceId" label="发货单">
- <el-input v-model="invoiceOrderForm.invoiceId" placeholder="请输入发货单" />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="8"
- ><el-form-item prop="time" label="发货单时间">
- <el-date-picker
- v-model="invoiceOrderForm.time"
- style="width: 100%"
- type="daterange"
- value-format="yyyy-MM-dd HH:mm:ss"
- range-separator="至"
- start-placeholder="开始日期"
- end-placeholder="结束日期" /></el-form-item
- ></el-col>
- <el-col :xs="24" :sm="12" :lg="8"
- ><el-form-item prop="userName" label="收货客户">
- <el-input v-model="invoiceOrderForm.userName" placeholder="请输入收货客户" /> </el-form-item
- ></el-col>
- <el-col :xs="24" :sm="12" :lg="8"
- ><el-form-item prop="address" label="收货地址">
- <el-input v-model="invoiceOrderForm.address" placeholder="请输入收货地址" /> </el-form-item
- ></el-col>
- <el-col :xs="24" :sm="12" :lg="8"
- ><el-form-item prop="remark" label="内容">
- <el-input v-model="invoiceOrderForm.remark" placeholder="请输入内容" /> </el-form-item
- ></el-col>
- <el-col :xs="24" :sm="12" :lg="8" style="text-align: right">
- <el-button size="mini" @click="handleReset($event, 'invoiceOrde')">重置</el-button>
- <el-button size="mini" type="primary" @click=";(currentPage = 1), getListInvoiceOrder()">查询</el-button>
- </el-col>
- </el-row>
- </el-form>
- <el-table
- ref="table"
- v-loading="listLoading"
- :data="invoiceOrderList"
- element-loading-text="Loading"
- border
- fit
- highlight-current-row
- stripe
- >
- <el-table-column align="center" type="index" min-width="160" show-overflow-tooltip />
- <el-table-column align="center" label="发货单" prop="id" min-width="160" show-overflow-tooltip>
- <template slot-scope="scope">
- <el-link v-if="!isCustomer" type="primary" :underline="false" @click="handleJump(scope.row.id)">{{
- scope.row.id
- }}</el-link>
- <template v-else>{{ scope.row.id }}</template>
- </template>
- </el-table-column>
- <el-table-column align="center" label="内容" prop="orderTrackStatus" min-width="160" show-overflow-tooltip />
- <el-table-column align="center" label="时间" prop="orderTrackTime" min-width="160" show-overflow-tooltip />
- <el-table-column align="center" label="收货地址" prop="address" min-width="160" show-overflow-tooltip>
- <template slot-scope="scope">
- {{ scope.row.address ? scope.row.address : '——' }}
- </template>
- </el-table-column>
- <el-table-column align="center" label="收货客户" prop="receivingName" min-width="160" show-overflow-tooltip>
- <template slot-scope="scope">{{ scope.row.receivingName ? scope.row.receivingName : '——' }}</template>
- </el-table-column>
- <el-table-column align="center" label="操作" min-width="80" show-overflow-tooltip fixed="right">
- <template slot-scope="scope">
- <el-button type="text" class="textColor" @click="handLogistics(scope.row)">查看</el-button>
- </template>
- </el-table-column>
- </el-table>
- </div>
- <!-- 到货通知 -->
- <div v-show="type == 4" class="table">
- <div class="mymain-container">
- <el-form ref="form" label-width="80px" label-position="left" size="mini">
- <el-row>
- <el-col>
- <el-form-item prop="specification" label="规格型号">
- <div style="display: flex">
- <el-input v-model="specification" clearable style="margin-right: 10px" placeholder="请输入规格型号" />
- <el-button @click="handleReset">重置</el-button>
- <el-button type="primary" size="mini" @click=";(currentPage = 1), getArrivalNotice()">查询</el-button>
- </div>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <div class="table">
- <el-table
- ref="table"
- v-loading="listLoading"
- :data="arrivalNoticeList"
- element-loading-text="Loading"
- border
- fit
- highlight-current-row
- stripe
- >
- <el-table-column
- property="materialOldNumber"
- align="left"
- min-width="120"
- label="产品编号"
- show-overflow-tooltip
- />
- <el-table-column
- property="materialNumber"
- align="left"
- min-width="100"
- label="物料编码"
- show-overflow-tooltip
- />
- <el-table-column
- property="materialName"
- align="left"
- min-width="250"
- label="产品名称"
- show-overflow-tooltip
- />
- <el-table-column
- property="specification"
- align="left"
- min-width="350"
- label="规格型号"
- show-overflow-tooltip
- />
- <el-table-column property="stockName" align="left" min-width="100" label="到货仓库" show-overflow-tooltip />
- <el-table-column
- property="updateTime"
- align="left"
- min-width="200"
- label="到货通知时间"
- show-overflow-tooltip
- />
- </el-table>
- </div>
- </div>
- </div>
- <!-- 订单满货通知 -->
- <div v-show="type == 5" class="table">
- <div class="mymain-container">
- <el-form ref="form" label-width="80px" label-position="left" size="mini">
- <el-row>
- <el-col :span="8">
- <el-form-item prop="stockOrderNo" label="订单号">
- <div style="display: flex">
- <el-input v-model="stockOrderNo" clearable style="margin-right: 10px" placeholder="请输入订单号" />
- </div>
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item prop="stockOrderSpecification" label="机型">
- <div style="display: flex">
- <el-input
- v-model="stockOrderSpecification"
- clearable
- style="margin-right: 10px"
- placeholder="请输入机型"
- />
- </div>
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item prop="stockTimes" label="日期">
- <el-date-picker
- v-model="stockTimes"
- style="width: 100%"
- type="daterange"
- value-format="yyyy-MM-dd HH:mm:ss"
- range-separator="至"
- start-placeholder="开始日期"
- end-placeholder="结束日期"
- />
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <div style="float: right">
- <el-button size="mini" @click="handleReset($event, 'stockCost')">重置</el-button>
- <el-button type="primary" size="mini" @click=";(currentPage = 1), getStockCostList()">查询</el-button>
- </div>
- </el-col>
- </el-row>
- </el-form>
- <div class="table">
- <el-table
- ref="table"
- v-loading="listLoading"
- :data="stockCostList"
- element-loading-text="Loading"
- border
- fit
- highlight-current-row
- stripe
- >
- <el-table-column type="index" align="left" min-width="50" label="序号" />
- <el-table-column property="orderId" align="left" min-width="150" label="订单号" show-overflow-tooltip>
- <template slot-scope="scope">
- <el-link type="primary" :underline="false" @click="handleToDaily(scope.row.orderId)">{{
- scope.row.orderId
- }}</el-link>
- </template>
- </el-table-column>
- <el-table-column property="specification" align="left" min-width="250" label="机型" show-overflow-tooltip />
- <el-table-column property="full" align="left" min-width="120" label="是否已生成仓租" show-overflow-tooltip>
- <template slot-scope="scope">
- {{ scope.row.full == 'YES' ? '是' : '否' }}
- </template>
- </el-table-column>
- <el-table-column property="fullTime" align="left" min-width="150" label="货满日期" show-overflow-tooltip />
- <el-table-column property="fullNum" align="left" min-width="80" label="计算天数" show-overflow-tooltip />
- <el-table-column align="center" label="操作" min-width="80" show-overflow-tooltip fixed="right">
- <template slot-scope="scope">
- <el-button type="text" class="textColor" @click="handleToDaily(scope.row.orderId)">查看</el-button>
- </template>
- </el-table-column>
- </el-table>
- </div>
- </div>
- </div>
- <!-- 分页 -->
- <div class="fr">
- <el-pagination
- :current-page="currentPage"
- :page-sizes="[10, 20, 30, 50]"
- :page-size="10"
- layout="total, sizes, prev, pager, next, jumper"
- :total="listTotal"
- @size-change="handleSizeChange"
- @current-change="handleCurrentChange"
- />
- </div>
- <!-- 内层弹窗 -->
- <el-dialog width="40%" title="消息标题" :visible.sync="inDialog" append-to-body>
- <div class="detail-container">
- <div class="title">{{ detailData.title }}</div>
- <div class="text">
- 发布人:{{ detailData.issueNickName }}<el-divider direction="vertical" />发布时间:{{ detailData.issueTime }}
- </div>
- <el-divider />
- <div class="content">{{ detailData.content }}</div>
- <el-divider v-if="detailData.files && detailData.files.length > 0" />
- <div v-if="detailData.files && detailData.files.length > 0" class="file">
- <div>附件:</div>
- <div class="file-list">
- <div v-for="(item, index) in detailData.files" :key="index" class="item">
- <el-image
- v-if="checkFileType(item.url) == 'image'"
- class="img"
- :src="imageURL + item.url"
- :preview-src-list="[imageURL + item.url]"
- />
- <div v-else class="box2" @click="openLink(item.url)">
- <img v-if="checkFileType(item.url) == 'word'" src="@/assets/common/word.png" />
- <img v-if="checkFileType(item.url) == 'excel'" src="@/assets/common/excel.png" />
- <img v-if="checkFileType(item.url) == 'ppt'" src="@/assets/common/ppt.png" />
- <img v-if="checkFileType(item.url) == 'pdf'" src="@/assets/common/pdf.png" />
- <div class="name ellipsis-3">{{ item.name }}</div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div slot="footer" class="dialog-footer">
- <el-button size="mini" type="primary" @click="confirmCheck(detailData.noticeId)">确认接收</el-button>
- <el-button size="mini" @click="inDialog = false">关 闭</el-button>
- </div>
- </el-dialog>
- <el-dialog
- title="物流信息"
- :visible.sync="visible"
- width="60%"
- append-to-body
- :close-on-click-modal="false"
- @close="onClose"
- >
- <el-timeline v-if="logisticsDetail.length" class="logistics" :reverse="false">
- <el-timeline-item
- v-for="(item, index) in logisticsDetail"
- :key="index"
- placement="top"
- type="success"
- :stock-timestamp="item.time"
- >
- <el-row :gutter="20">
- <el-col class="logistics-title"> {{ item.status }} </el-col>
- <el-col>
- <div class="flex">
- <div>{{ item.context }}</div>
- <!-- <div>{{ item.createTime }}</div> -->
- </div>
- </el-col>
- </el-row>
- </el-timeline-item>
- </el-timeline>
- <div v-else class="tip">暂无物流信息</div>
- </el-dialog>
- <div slot="footer" class="dialog-footer">
- <el-button type="primary" size="mini" @click="closeFn">关闭</el-button>
- </div>
- </el-dialog>
- </template>
- <script>
- import { mapGetters } from 'vuex'
- import {
- getNoticeList,
- getComListList,
- getComListDownload,
- getNoticeDetail,
- confirmCheck,
- getRebateOrderList,
- getListInvoiceOrder,
- getStockCostList
- } from '@/api/dashboard'
- import { getArrivalNotice } from '@/api/stock'
- import { getListOrderTrack } from '@/api/supply/pickup'
- import { getFileUrl } from '@/api/common'
- export default {
- // eslint-disable-next-line vue/require-prop-types
- props: ['mesType'],
- data() {
- return {
- imageURL: this.$imageUrl,
- type: 0,
- currentPage: 1,
- pageSize: 10,
- listTotal: 0,
- dataList: [],
- listLoading: false,
- fileList: [],
- inDialog: false,
- detailData: [],
- rebateList: [],
- stockCostList: [],
- invoiceOrderList: [],
- visible: false,
- orderId: '',
- logisticsDetail: [],
- arrivalNoticeList: [],
- specification: '',
- stockOrderNo: '',
- stockTimes: [],
- stockOrderSpecification: '',
- invoiceOrderForm: {
- time: [],
- invoiceId: '',
- address: '',
- startTime: '',
- endTime: '',
- remark: '',
- userName: ''
- },
- fnArr: [
- 'getDataList',
- 'getFileList',
- 'getRebateList',
- 'getListInvoiceOrder',
- 'getArrivalNotice',
- 'getStockCostList'
- ]
- }
- },
- computed: {
- ...mapGetters(['showMessages', 'isCustomer'])
- },
- watch: {
- mesType(newValue, oldValue) {
- if (!oldValue) {
- this.type = newValue
- this[this.fnArr[newValue]]()
- }
- this.$emit('reset')
- }
- },
- created() {
- this[this.fnArr[this.type]]()
- },
- methods: {
- checkFn(i) {
- this.listTotal = 0
- this.pageSize = 10
- this.currentPage = 1
- this.listLoading = false
- this.fnArr[i] && this[this.fnArr[i]]()
- },
- // 获取文件列表数据
- async getFileList() {
- const data = {
- needDown: true,
- pageSize: this.pageSize,
- pageNo: this.currentPage
- }
- const res = await getComListList(data)
- this.fileList = res.data.records
- this.listTotal = res.data.total
- },
- // 获取返利确认单数据
- async getRebateList() {
- const data = {
- pageSize: this.pageSize,
- pageNum: this.currentPage,
- isSecondExamine: false
- }
- const res = await getRebateOrderList(data)
- this.rebateList = res.data.records
- this.listTotal = res.data.total
- },
- // 获取列表数据
- async getDataList() {
- const data = {
- pageSize: this.pageSize,
- pageNum: this.currentPage,
- readFlag: false
- }
- const res = await getNoticeList(data)
- this.dataList = res.data.records
- this.listTotal = res.data.total
- },
- // 获取物流列表
- async getListInvoiceOrder() {
- const time = this.invoiceOrderForm.time || []
- const data = {
- pageSize: this.pageSize,
- pageNum: this.currentPage,
- ...this.invoiceOrderForm,
- startTime: time.length ? time[0] : '',
- endTime: time.length ? time[1] : ''
- }
- const res = await getListInvoiceOrder(data)
- this.invoiceOrderList = res.data.records
- this.listTotal = res.data.total
- },
- async getArrivalNotice() {
- const data = {
- pageSize: this.pageSize,
- pageNum: this.currentPage,
- specification: this.specification
- }
- const res = await getArrivalNotice(data)
- this.arrivalNoticeList = res.data.records
- this.listTotal = res.data.total
- },
- // 订单满货通知
- async getStockCostList() {
- const time = this.stockTimes || []
- const data = {
- pageSize: this.pageSize,
- pageNum: this.currentPage,
- materialName: '',
- materialNumber: '',
- materialOldNumber: '',
- specification: this.stockOrderSpecification,
- orderId: this.stockOrderNo,
- endTime: time.length ? time[0] : '',
- startTime: time.length ? time[1] : ''
- }
- const res = await getStockCostList(data)
- this.stockCostList = res.data.records
- this.listTotal = res.data.total
- },
- handleReset(e, type) {
- this.pageSize = 10
- this.pageNum = 1
- if (type === 'invoiceOrde') {
- this.$refs.invoiceOrderForm.resetFields()
- this.getListInvoiceOrder()
- } else if (type === 'stockCost') {
- this.stockOrderNo = ''
- this.stockOrderSpecification = ''
- this.stockTimes = []
- this.getStockCostList()
- } else {
- this.specification = ''
- this.getArrivalNotice()
- }
- },
- // 更改每页数量
- handleSizeChange(val) {
- this.pageSize = val
- this.currentPage = 1
- this[this.fnArr[this.type]]()
- },
- // 更改当前页
- handleCurrentChange(val) {
- this.currentPage = val
- this[this.fnArr[this.type]]()
- },
- openLink(url) {
- getFileUrl({ key: url }).then(res => {
- window.open(res.data)
- })
- },
- // 复核
- secondFn(id) {
- this.$router.push({
- path: '/finance/rebate_list',
- query: {
- id
- }
- })
- this.type = 0
- this.$emit('reset')
- this.$store.commit('user/showMessage', 'no')
- },
- // 确认查收
- confirmCheck(id) {
- confirmCheck({ noticeIds: id }).then(res => {
- this.$successMsg('查收成功')
- this.inDialog = false
- this[this.fnArr[this.type]]()
- })
- },
- // 检查文件类型
- checkFileType(url) {
- if (!url) return ''
- const fileSuffix = url.substring(url.lastIndexOf('.') + 1)
- if (['jpg', 'jpeg', 'png'].includes(fileSuffix)) {
- return 'image'
- } else if (['doc', 'docx', 'dot', 'wps', 'wpt'].includes(fileSuffix)) {
- return 'word'
- } else if (['xls', 'xlsx', 'xlt', 'et', 'ett'].includes(fileSuffix)) {
- return 'excel'
- } else if (['ppt', 'pptx', 'dps', 'dpt', 'pot', 'pps'].includes(fileSuffix)) {
- return 'ppt'
- } else if (['pdf'].includes(fileSuffix)) {
- return 'pdf'
- } else {
- return ''
- }
- },
- // 查看
- async lookInDialog(id) {
- const res = await getNoticeDetail({ id, isTopRead: true })
- this.detailData = res.data
- this.inDialog = true
- this.getDataList()
- },
- // 下载
- async downloadFn(id) {
- const res = await getComListDownload({ id })
- if (res.data) {
- window.open(this.imageURL + res.data)
- }
- },
- // 关闭
- closeFn() {
- this.type = 0
- this.$emit('reset')
- this.$store.commit('user/showMessage', 'no')
- },
- handLogistics(row) {
- getListOrderTrack({ orderId: row.id }).then(res => {
- this.logisticsDetail = res.data
- })
- this.orderId = row.id
- this.visible = true
- },
- onClose() {
- this.logisticsDetail = []
- this.orderId = ''
- this.visible = false
- },
- handleJump(id) {
- // this.$router.push({ path: `/supply/pickup/sum_list?id=${id}` })
- this.$router.push({ name: 'exwarehouseSum_list', query: { id } })
- this.type = 0
- this.$emit('reset')
- this.$store.commit('user/showMessage', 'no')
- },
- handleToDaily(orderId) {
- // this.$router.push({ path: `/basic_data/dailyWarehouseRent?orderId=${orderId}` })
- this.$router.push({ name: 'dailyWarehouseRent', query: { orderId } })
- this.type = 0
- this.$emit('reset')
- this.$store.commit('user/showMessage', 'no')
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- ::v-deep .el-form-item--mini .el-form-item__content,
- ::v-deep .el-form-item--mini .el-form-item__label {
- line-height: 27px;
- }
- ::v-deep .el-range-editor--mini .el-range-separator {
- line-height: 27px;
- }
- </style>
|