|
@@ -1,6 +1,7 @@
|
|
<template>
|
|
<template>
|
|
<div class="page-section">
|
|
<div class="page-section">
|
|
<div class="app-container">
|
|
<div class="app-container">
|
|
|
|
+ <div class="control"><el-button size="small" type="primary" @click="onChange">修改</el-button></div>
|
|
<div class="row">
|
|
<div class="row">
|
|
<div class="col">货物名称:</div>
|
|
<div class="col">货物名称:</div>
|
|
<div class="col">{{ detailData.authParty }}授权牌</div>
|
|
<div class="col">{{ detailData.authParty }}授权牌</div>
|
|
@@ -13,7 +14,6 @@
|
|
<div class="col">物流单号:</div>
|
|
<div class="col">物流单号:</div>
|
|
<div class="col">{{ detailData.logisticsNumber }}</div>
|
|
<div class="col">{{ detailData.logisticsNumber }}</div>
|
|
</div>
|
|
</div>
|
|
-
|
|
|
|
<div class="title">物流详情</div>
|
|
<div class="title">物流详情</div>
|
|
<el-divider />
|
|
<el-divider />
|
|
<div class="info">
|
|
<div class="info">
|
|
@@ -23,17 +23,87 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
+
|
|
|
|
+ <!-- 物流信息修改 -->
|
|
|
|
+ <el-dialog title="机构授权牌寄送" :visible.sync="dialogVisible" width="40%">
|
|
|
|
+ <el-form ref="ruleForm" :model="formData" :rules="rules" label-width="100px">
|
|
|
|
+ <el-form-item label="快递公司:" prop="companyId">
|
|
|
|
+ <el-select v-model="formData.companyId" placeholder="请选择快递公司" clearable>
|
|
|
|
+ <template v-for="item in companyList">
|
|
|
|
+ <el-option :key="item.id" :label="item.companyName" :value="item.id" />
|
|
|
|
+ </template>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="物流编号:" prop="logisticsNumber">
|
|
|
|
+ <el-input v-model="formData.logisticsNumber" placeholder="请输入物流编号" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item v-if="formData.companyId === 222" label="手机号:" prop="mobile">
|
|
|
|
+ <el-input v-model="formData.mobile" placeholder="请输入收货人手机号" maxlength="11" show-word-limit />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="图片备注:" prop="imageRemark">
|
|
|
|
+ <el-input v-show="false" v-model="formData.imageRemark" />
|
|
|
|
+ <upload-image
|
|
|
|
+ tip="请上传jpg/png格式的图片,最大不超过5M,最多可上传6张"
|
|
|
|
+ :multiple="true"
|
|
|
|
+ :limit="6"
|
|
|
|
+ accept=".jpg,.png"
|
|
|
|
+ :image-list="imageRemarkList"
|
|
|
|
+ :before-upload="beforeRemarkImageUpload"
|
|
|
|
+ @success="uploadRemarkImageSuccess"
|
|
|
|
+ @remove="handleRemarkImageRemove"
|
|
|
|
+ />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="备注:" prop="remarks">
|
|
|
|
+ <el-input v-model="formData.remarks" type="textarea" rows="4" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-form>
|
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
|
+ <el-button @click="dialogVisible = false">取 消</el-button>
|
|
|
|
+ <el-button type="primary" @click="onSubmitLogistics">确 定</el-button>
|
|
|
|
+ </span>
|
|
|
|
+ </el-dialog>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script>
|
|
<script>
|
|
-import { logisticsDetails } from '@/api/logistics'
|
|
|
|
|
|
+import { fetchCompanyList, logisticsDetails, logisticsSend } from '@/api/logistics'
|
|
|
|
+import UploadImage from '@/components/UploadImage'
|
|
|
|
+import { isMobile } from '@/utils/validate'
|
|
export default {
|
|
export default {
|
|
|
|
+ components: { UploadImage },
|
|
data() {
|
|
data() {
|
|
|
|
+ // 表单校验手机号
|
|
|
|
+ const mobileValidate = (rule, value, callback) => {
|
|
|
|
+ if (!isMobile(value)) {
|
|
|
|
+ callback(new Error('手机号格式不正确'))
|
|
|
|
+ } else {
|
|
|
|
+ callback()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
return {
|
|
return {
|
|
authId: '',
|
|
authId: '',
|
|
detailData: {},
|
|
detailData: {},
|
|
- logisticInfo: []
|
|
|
|
|
|
+ logisticInfo: [],
|
|
|
|
+ dialogVisible: false,
|
|
|
|
+ formData: {
|
|
|
|
+ authId: '',
|
|
|
|
+ companyId: '',
|
|
|
|
+ logisticsNumber: '',
|
|
|
|
+ imageList: '',
|
|
|
|
+ remarks: '',
|
|
|
|
+ imageRemark: '',
|
|
|
|
+ mobile: ''
|
|
|
|
+ },
|
|
|
|
+ rules: {
|
|
|
|
+ companyId: [{ required: true, message: '快递公司名称不能为空', trigger: ['change'] }],
|
|
|
|
+ logisticsNumber: [{ required: true, message: '物流编号不能为空', trigger: ['blur'] }],
|
|
|
|
+ mobile: [
|
|
|
|
+ { required: true, message: '收货人手机号不能为空', trigger: ['blur'] },
|
|
|
|
+ { validator: mobileValidate, trigger: ['blur'] }
|
|
|
|
+ ]
|
|
|
|
+ },
|
|
|
|
+ companyList: [],
|
|
|
|
+ imageRemarkList: []
|
|
}
|
|
}
|
|
},
|
|
},
|
|
created() {
|
|
created() {
|
|
@@ -45,11 +115,73 @@ export default {
|
|
try {
|
|
try {
|
|
const res = await logisticsDetails({ authId: this.authId })
|
|
const res = await logisticsDetails({ authId: this.authId })
|
|
this.detailData = { ...this.detailData, ...res.data }
|
|
this.detailData = { ...this.detailData, ...res.data }
|
|
- this.logisticInfo = res.data.info && JSON.parse(res.data.info)
|
|
|
|
- console.log(this.logisticInfo)
|
|
|
|
|
|
+ if (res.data.info) {
|
|
|
|
+ this.logisticInfo = JSON.parse(res.data.info)
|
|
|
|
+ }
|
|
|
|
+ this.initLogistData(res.data)
|
|
|
|
+ } catch (error) {
|
|
|
|
+ console.log(error)
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ initLogistData(data) {
|
|
|
|
+ this.formData.authId = this.authId
|
|
|
|
+ this.formData.companyId = data.companyCode
|
|
|
|
+ this.formData.logisticsNumber = data.logisticsNumber
|
|
|
|
+ this.formData.imageList = data.imageList
|
|
|
|
+ this.formData.remarks = data.remarks
|
|
|
|
+ this.formData.imageRemark = data.remarksImage
|
|
|
|
+ this.formData.mobile = data.mobile
|
|
|
|
+ if (data.imageList && data.imageList.length > 0) {
|
|
|
|
+ this.imageRemarkList = data.imageList.map((item) => ({ name: '图片备注', url: item }))
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ onChange() {
|
|
|
|
+ this.fetchCompanyList()
|
|
|
|
+ this.dialogVisible = true
|
|
|
|
+ },
|
|
|
|
+ async onSubmitLogistics() {
|
|
|
|
+ try {
|
|
|
|
+ await this.$refs.ruleForm.validate()
|
|
} catch (error) {
|
|
} catch (error) {
|
|
console.log(error)
|
|
console.log(error)
|
|
|
|
+ return
|
|
}
|
|
}
|
|
|
|
+ try {
|
|
|
|
+ await logisticsSend(this.formData)
|
|
|
|
+ this.$message.success('发货成功')
|
|
|
|
+ this.dialogVisible = false
|
|
|
|
+ this.getList()
|
|
|
|
+ } catch (error) {
|
|
|
|
+ this.$message.error('发货失败')
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ async fetchCompanyList() {
|
|
|
|
+ try {
|
|
|
|
+ const res = await fetchCompanyList()
|
|
|
|
+ this.companyList = res.data
|
|
|
|
+ } catch (error) {
|
|
|
|
+ console.log(error)
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ uploadRemarkImageSuccess({ response, file, fileList }) {
|
|
|
|
+ this.imageRemarkList = fileList
|
|
|
|
+ this.formData.imageRemark = fileList.length
|
|
|
|
+ this.formData.imageList = fileList.map((item) => item.response.data)
|
|
|
|
+ },
|
|
|
|
+ handleRemarkImageRemove({ file, fileList }) {
|
|
|
|
+ this.imageRemarkList = fileList
|
|
|
|
+ this.formData.imageRemark = fileList.length
|
|
|
|
+ this.formData.imageList = fileList.map((item) => item.response.data)
|
|
|
|
+ },
|
|
|
|
+ beforeRemarkImageUpload(file) {
|
|
|
|
+ const flag = file.size / 1024 / 1024 < 1
|
|
|
|
+ if (!flag) {
|
|
|
|
+ this.$message.error('医疗许可证图片大小不能超过 1MB!')
|
|
|
|
+ }
|
|
|
|
+ return flag
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -58,15 +190,22 @@ export default {
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
.page-section {
|
|
.page-section {
|
|
width: 100%;
|
|
width: 100%;
|
|
- height: calc(100vh - 84px);
|
|
|
|
|
|
+ min-height: calc(100vh - 84px);
|
|
background: #f7f7f7;
|
|
background: #f7f7f7;
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
padding: 20px;
|
|
padding: 20px;
|
|
}
|
|
}
|
|
|
|
|
|
.app-container {
|
|
.app-container {
|
|
|
|
+ position: relative;
|
|
background: #fff;
|
|
background: #fff;
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
|
|
+
|
|
|
|
+ .control {
|
|
|
|
+ position: absolute;
|
|
|
|
+ right: 20px;
|
|
|
|
+ top: 20px;
|
|
|
|
+ }
|
|
.row {
|
|
.row {
|
|
display: flex;
|
|
display: flex;
|
|
justify-content: flex-start;
|
|
justify-content: flex-start;
|