|
|
@@ -0,0 +1,1405 @@
|
|
|
+<template>
|
|
|
+ <div class="BidSystemDeepeningOrderDetail">
|
|
|
+ <Toptitle title="深化单详情">
|
|
|
+ <slot name="titleButton">
|
|
|
+ <Button @click="goback()" type="primary" style="margin-right: 10px"
|
|
|
+ >完成</Button
|
|
|
+ >
|
|
|
+ <Button
|
|
|
+ @click="showSupModal = true"
|
|
|
+ v-show="!isChecked"
|
|
|
+ type="primary"
|
|
|
+ style="margin-right: 10px"
|
|
|
+ >项目辅料</Button
|
|
|
+ >
|
|
|
+ <Button
|
|
|
+ @click="handleOpenModal"
|
|
|
+ type="primary"
|
|
|
+ v-show="currencyTab == 'name2'"
|
|
|
+ style="margin-right: 10px"
|
|
|
+ >批量下拆单</Button
|
|
|
+ >
|
|
|
+ <Button
|
|
|
+ @click="goback()"
|
|
|
+ type="primary"
|
|
|
+ ghost
|
|
|
+ style="margin-right: 10px"
|
|
|
+ >返回</Button
|
|
|
+ >
|
|
|
+ </slot>
|
|
|
+ </Toptitle>
|
|
|
+ <Tabs value="name1" @on-click="handleCurTabChange">
|
|
|
+ <TabPane
|
|
|
+ label="块状形式"
|
|
|
+ name="name1"
|
|
|
+ style="overflow: hidden; overflow-y: auto"
|
|
|
+ >
|
|
|
+ <div class="top_search">
|
|
|
+ <div><span>订单号:</span>{{ formData.order_no }}</div>
|
|
|
+ <div><span>小区名称:</span>{{ formData.residential_name }}</div>
|
|
|
+ <div><span>客户姓名:</span>{{ formData.client_name }}</div>
|
|
|
+ <div>
|
|
|
+ <span>紧急程度:</span
|
|
|
+ ><span
|
|
|
+ v-for="_item in warningList"
|
|
|
+ :key="_item.id"
|
|
|
+ v-show="_item.id == formData.warning_state"
|
|
|
+ >{{ _item.title }}</span
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span>收款:</span
|
|
|
+ >{{ formData.pay_state == 1 ? "已收款" : "未收款" }}
|
|
|
+ </div>
|
|
|
+ <div><span>详细地址:</span>{{ formData.address }}</div>
|
|
|
+ <div><span>手机号:</span>{{ formData.mobile }}</div>
|
|
|
+ <div>
|
|
|
+ <span>开始日期:</span>{{ func.replaceDate(formData.start_time) }}
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span>交付日期:</span>{{ func.replaceDate(formData.end_time) }}
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span>业务员:</span>
|
|
|
+ <span
|
|
|
+ v-for="item in salesmanList"
|
|
|
+ :key="item.id"
|
|
|
+ v-show="formData.salesman == item.id"
|
|
|
+ >{{ item.nickname }}</span
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span>订单类型:</span
|
|
|
+ >{{ formData.renovation_type == 1 ? "工装" : "家装" }}
|
|
|
+ </div>
|
|
|
+ <div v-for="item in formData.special" :key="item.id">
|
|
|
+ <span>{{ item.key + ":" }}</span>
|
|
|
+ {{ item.value }}
|
|
|
+ </div>
|
|
|
+ <div><span>备注:</span>{{ formData.remark }}</div>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class="table-data"
|
|
|
+ v-for="(item, index) in formData.list"
|
|
|
+ :key="item.id"
|
|
|
+ >
|
|
|
+ <div class="addAreaForm">
|
|
|
+ <div class="addFormInfo">
|
|
|
+ <div><span>区域编码:</span>{{ item.num }}</div>
|
|
|
+ <div><span>区域名称:</span>{{ item.title }}</div>
|
|
|
+ <div><span>单位:</span>{{ item.unit }}</div>
|
|
|
+ <div><span>工程量:</span>{{ item.quantity }}</div>
|
|
|
+ <div><span>户型:</span>{{ item.house_type }}</div>
|
|
|
+ <div v-for="ele in item.special" :key="ele.id">
|
|
|
+ <span>{{ ele.key }}:</span>{{ ele.value }}
|
|
|
+ </div>
|
|
|
+ <div><span>备注:</span>{{ item.remark }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="addAreaTable">
|
|
|
+ <Table
|
|
|
+ :columns="tableColumns"
|
|
|
+ max-height="500"
|
|
|
+ :data="item.product"
|
|
|
+ border
|
|
|
+ >
|
|
|
+ <template slot="urlSet" slot-scope="{ row }">
|
|
|
+ <span
|
|
|
+ class="urlSetStyle"
|
|
|
+ v-for="(item, index) in row.url"
|
|
|
+ :key="index"
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ :src="$store.state.ip + item"
|
|
|
+ @click="(e) => handleImgClick(e, row)"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ <template slot="statusSlot" slot-scope="{ row }">
|
|
|
+ {{ row.status == 0 ? "已完成" : "未完成" }}
|
|
|
+ </template>
|
|
|
+ <template slot="set" slot-scope="{ row, index }">
|
|
|
+ <a
|
|
|
+ style="margin: 0 5px"
|
|
|
+ @click="handleSet(row, index, 2, item)"
|
|
|
+ >详情</a
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+ </Table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </TabPane>
|
|
|
+ <TabPane
|
|
|
+ label="列表形式"
|
|
|
+ name="name2"
|
|
|
+ style="overflow: hidden; overflow-y: auto"
|
|
|
+ >
|
|
|
+ <div class="top_search">
|
|
|
+ <Form :model="formData" :label-width="100" class="top_search_form">
|
|
|
+ <FormItem label="订单号:">
|
|
|
+ {{ formData.order_no }}
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="项目名称:">
|
|
|
+ {{ formData.residential_name }}
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="客户姓名:">
|
|
|
+ {{ formData.client_name }}
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="紧急程度:">
|
|
|
+ <span
|
|
|
+ v-for="_item in warningList"
|
|
|
+ :key="_item.id"
|
|
|
+ v-show="_item.id == formData.warning_state"
|
|
|
+ :style="{ color: _item.color }"
|
|
|
+ >{{ _item.title }}
|
|
|
+ </span>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="项目定金:">
|
|
|
+ {{ formData.front_money }}
|
|
|
+ <!-- <RadioGroup v-model="formData.pay_state"
|
|
|
+ size="small">
|
|
|
+ <Radio :label=0
|
|
|
+ :disabled="isChecked">未收款</Radio>
|
|
|
+ <Radio :label=1
|
|
|
+ :disabled="isChecked">已收款</Radio>
|
|
|
+ </RadioGroup> -->
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="详细地址:">
|
|
|
+ {{ formData.address }}
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="手机号:">
|
|
|
+ {{ formData.mobile }}
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="开始日期:">
|
|
|
+ {{
|
|
|
+ formData.start_time
|
|
|
+ ? func.replaceDateNoHMS(formData.start_time)
|
|
|
+ : ""
|
|
|
+ }}
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="结束日期:">
|
|
|
+ {{
|
|
|
+ formData.end_time
|
|
|
+ ? func.replaceDateNoHMS(formData.end_time)
|
|
|
+ : ""
|
|
|
+ }}
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="业务员:">
|
|
|
+ <span
|
|
|
+ v-for="_item in salesmanList"
|
|
|
+ :key="_item.id"
|
|
|
+ v-show="_item.id == formData.salesman"
|
|
|
+ :style="{ color: _item.color }"
|
|
|
+ >{{ _item.nickname }}
|
|
|
+ </span>
|
|
|
+ </FormItem>
|
|
|
+ <!-- <FormItem label="订单类型:">
|
|
|
+ <Select v-model="formData.type"
|
|
|
+ :disabled="isChecked"
|
|
|
+ size="small"
|
|
|
+ style="width:200px">
|
|
|
+ <Option label='工装'
|
|
|
+ :value=1></Option>
|
|
|
+ <Option label='家装'
|
|
|
+ :value=2></Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem> -->
|
|
|
+ <FormItem
|
|
|
+ v-for="item in formData.special"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.key + ':'"
|
|
|
+ >
|
|
|
+ {{ item.value }}
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="备注:">
|
|
|
+ {{ formData.remark }}
|
|
|
+ </FormItem>
|
|
|
+ </Form>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <Table
|
|
|
+ :columns="listTableColumns"
|
|
|
+ :data="listTableData"
|
|
|
+ @on-selection-change="handleSelection"
|
|
|
+ :max-height="500"
|
|
|
+ border
|
|
|
+ >
|
|
|
+ </Table>
|
|
|
+ </div>
|
|
|
+ </TabPane>
|
|
|
+ </Tabs>
|
|
|
+ <!-- 项目辅料弹窗 -->
|
|
|
+ <Modal title="项目辅料" v-model="showSupModal" :width="400">
|
|
|
+ <div>
|
|
|
+ <div class="supModalBtn">
|
|
|
+ <Button @click="handleAddSup" type="primary">新增</Button>
|
|
|
+ </div>
|
|
|
+ <Table :columns="supTableColumns" :data="supTableData" border>
|
|
|
+ <template slot="combine" slot-scope="{ row }">
|
|
|
+ <Select v-model="row.order_no" size="small">
|
|
|
+ <Option
|
|
|
+ v-for="item in combineList"
|
|
|
+ :value="item.id"
|
|
|
+ :key="item.id"
|
|
|
+ >{{ item.title }}</Option
|
|
|
+ >
|
|
|
+ </Select>
|
|
|
+ </template>
|
|
|
+ <template slot="supSet" slot-scope="{ row, index }">
|
|
|
+ <a
|
|
|
+ style="margin: 0 5px; color: red"
|
|
|
+ @click="handleSupSet(row, index)"
|
|
|
+ >删除</a
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+ </Table>
|
|
|
+ </div>
|
|
|
+ <div class="modal-footer" slot="footer">
|
|
|
+ <Button @click="showSupModal = false">取消</Button>
|
|
|
+ <Button type="primary" @click="showSupModal = false">确认</Button>
|
|
|
+ </div>
|
|
|
+ </Modal>
|
|
|
+ <!-- 新增产品弹窗 -->
|
|
|
+ <Modal
|
|
|
+ title="新增产品"
|
|
|
+ v-model="showPDTModal"
|
|
|
+ :mask-closable="false"
|
|
|
+ class="addPDTFormModal"
|
|
|
+ :width="1000"
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ class="addPDTForm"
|
|
|
+ v-for="(item, index) in tempPDTList"
|
|
|
+ :key="item.id"
|
|
|
+ >
|
|
|
+ <Form :label-width="100" :model="item">
|
|
|
+ <FormItem label="产品名称:">
|
|
|
+ <Input
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ placeholder="请输入"
|
|
|
+ v-model="item.title"
|
|
|
+ style="width: 120px"
|
|
|
+ />
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="数量">
|
|
|
+ <Input
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ v-model="item.num"
|
|
|
+ placeholder="请输入"
|
|
|
+ style="width: 120px"
|
|
|
+ />
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="图号:">
|
|
|
+ <Input
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ placeholder="请输入"
|
|
|
+ v-model="item.url_number"
|
|
|
+ style="width: 120px"
|
|
|
+ />
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="图纸">
|
|
|
+ <div class="product-img">
|
|
|
+ <div class="product-add">
|
|
|
+ <div
|
|
|
+ class="items"
|
|
|
+ v-for="(_item, _index) of item.url"
|
|
|
+ :key="_index"
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ @click="looks(_item)"
|
|
|
+ :src="$store.state.ip + _item"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ <Icon
|
|
|
+ size="20"
|
|
|
+ @click="delItems(_index, item.url)"
|
|
|
+ class="delete-img"
|
|
|
+ type="ios-close-circle"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="add-items">
|
|
|
+ <div class="_item">
|
|
|
+ <Icon size="50" type="ios-add" />
|
|
|
+ </div>
|
|
|
+ <input
|
|
|
+ @change="changeIpt($event, item.url)"
|
|
|
+ type="file"
|
|
|
+ class="ipt"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="产品分类">
|
|
|
+ <Select
|
|
|
+ v-model="item.type_id"
|
|
|
+ placeholder="请选择"
|
|
|
+ style="width: 120px"
|
|
|
+ label-in-value
|
|
|
+ @on-change="(e) => hanndleAddPDTTypeChange(item, e)"
|
|
|
+ size="small"
|
|
|
+ >
|
|
|
+ <Option
|
|
|
+ v-for="item in PDTTypeList"
|
|
|
+ :value="item.value"
|
|
|
+ :key="item.value"
|
|
|
+ >{{ item.label }}</Option
|
|
|
+ >
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ <div
|
|
|
+ style="display: contents"
|
|
|
+ v-for="el in item.tempPDTTypeList"
|
|
|
+ :key="el"
|
|
|
+ >
|
|
|
+ <FormItem
|
|
|
+ :label="_item.title"
|
|
|
+ v-for="_item in item.tempMeasureList"
|
|
|
+ v-show="el == _item.id"
|
|
|
+ :key="_item.id"
|
|
|
+ >
|
|
|
+ <Input
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ v-model="_item.value"
|
|
|
+ placeholder="请输入"
|
|
|
+ style="width: 120px"
|
|
|
+ />
|
|
|
+ </FormItem>
|
|
|
+ </div>
|
|
|
+ <FormItem label="价格:">
|
|
|
+ <Input
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ v-model="item.price"
|
|
|
+ placeholder="请输入备注"
|
|
|
+ style="width: 120px"
|
|
|
+ />
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="备注:">
|
|
|
+ <Input
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ v-model="item.remark"
|
|
|
+ placeholder="请输入备注"
|
|
|
+ style="width: 120px"
|
|
|
+ />
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="工艺属性">
|
|
|
+ <Button
|
|
|
+ @click="handleProcessAdd(item, index)"
|
|
|
+ size="small"
|
|
|
+ type="text"
|
|
|
+ style="color: #57a3f3"
|
|
|
+ >添加属性</Button
|
|
|
+ >
|
|
|
+ </FormItem>
|
|
|
+ </Form>
|
|
|
+ <div class="addPDTProcess">
|
|
|
+ <div
|
|
|
+ v-for="(_item, _index) in item.addPDTProcessAttrList"
|
|
|
+ :key="_item.id"
|
|
|
+ >
|
|
|
+ <span>属性{{ _index + 1 }}</span>
|
|
|
+ <Select
|
|
|
+ :value="_item.id"
|
|
|
+ size="small"
|
|
|
+ @on-change="
|
|
|
+ (value) => handleAddPDTAttrChange(_item, _index, value)
|
|
|
+ "
|
|
|
+ style="width: 80px"
|
|
|
+ >
|
|
|
+ <Option
|
|
|
+ v-for="__item in PDTProcessAttrList"
|
|
|
+ :key="__item.id"
|
|
|
+ :value="__item.id"
|
|
|
+ :label="__item.title"
|
|
|
+ >
|
|
|
+ </Option>
|
|
|
+ </Select>
|
|
|
+ <Select
|
|
|
+ :value="_item.type_id"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ label-in-value
|
|
|
+ @on-change="
|
|
|
+ (value) => handleAddPDTAttrDetailChange(_item, _index, value)
|
|
|
+ "
|
|
|
+ size="small"
|
|
|
+ style="width: 80px"
|
|
|
+ >
|
|
|
+ <Option
|
|
|
+ v-for="__item in _item.PDTProcessAttrDetailList"
|
|
|
+ :key="__item.id"
|
|
|
+ :value="__item.id"
|
|
|
+ :label="__item.title"
|
|
|
+ />
|
|
|
+ </Select>
|
|
|
+ <div class="dele_icon">
|
|
|
+ <Icon
|
|
|
+ v-show="item.addPDTProcessAttrList.length != 1"
|
|
|
+ type="ios-trash"
|
|
|
+ @click="
|
|
|
+ handleAddPDTDetailDele(item.addPDTProcessAttrList, _index)
|
|
|
+ "
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="addPDTBtn">
|
|
|
+ <Button
|
|
|
+ type="primary"
|
|
|
+ v-show="false"
|
|
|
+ style="margin-right: 10px"
|
|
|
+ @click="handleAddPDTCopy(item, index)"
|
|
|
+ >复制</Button
|
|
|
+ >
|
|
|
+ <Button
|
|
|
+ type="primary"
|
|
|
+ v-show="false"
|
|
|
+ style="margin-right: 10px"
|
|
|
+ @click="handleAddPDTAdd(index)"
|
|
|
+ >添加</Button
|
|
|
+ >
|
|
|
+ <Button
|
|
|
+ type="error"
|
|
|
+ v-show="false"
|
|
|
+ style="margin-right: 10px"
|
|
|
+ @click="handleAddPDTDele(index)"
|
|
|
+ >删除</Button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="modal-footer" slot="footer">
|
|
|
+ <Button @click="showPDTModal = false">取消</Button>
|
|
|
+ <Button type="primary" @click="handleAddPDTConfirm">确认</Button>
|
|
|
+ </div>
|
|
|
+ </Modal>
|
|
|
+ <!-- 批量下深化 -->
|
|
|
+ <Modal
|
|
|
+ v-model="processModal"
|
|
|
+ title="下深化"
|
|
|
+ @on-ok="handleProcess"
|
|
|
+ @on-cancel="processModal = false"
|
|
|
+ >
|
|
|
+ <div>
|
|
|
+ <div class="process_modal">
|
|
|
+ <span>深化人员:</span>
|
|
|
+ <Select v-model="process_man" style="width: 150px">
|
|
|
+ <Option
|
|
|
+ v-for="item in processManList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.nickname"
|
|
|
+ :value="item.id"
|
|
|
+ ></Option>
|
|
|
+ </Select>
|
|
|
+ </div>
|
|
|
+ <div class="process_modal">
|
|
|
+ <span>选择时间:</span>
|
|
|
+ <DatePicker
|
|
|
+ type="date"
|
|
|
+ v-model="process_start_time"
|
|
|
+ placeholder="年/月/日"
|
|
|
+ style="width: 150px"
|
|
|
+ ></DatePicker>
|
|
|
+ 至
|
|
|
+ <DatePicker
|
|
|
+ type="date"
|
|
|
+ v-model="process_end_time"
|
|
|
+ placeholder="年/月/日"
|
|
|
+ style="width: 150px"
|
|
|
+ ></DatePicker>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </Modal>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+// 这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
|
|
|
+// 例如:import 《组件名称》 from '《组件路径》';
|
|
|
+import UploadImg from "./uploadImg/index.vue";
|
|
|
+export default {
|
|
|
+ name: "",
|
|
|
+ components: {
|
|
|
+ UploadImg,
|
|
|
+ },
|
|
|
+ props: {},
|
|
|
+ // import引入的组件需要注入到对象中才能使用
|
|
|
+ data() {
|
|
|
+ // 这里存放数据
|
|
|
+ return {
|
|
|
+ headers: { Authorization: localStorage.getItem("token") },
|
|
|
+ salesmanList: [],
|
|
|
+ PDTTypeList: [],
|
|
|
+ combineList: [],
|
|
|
+ tempPDTList: [
|
|
|
+ {
|
|
|
+ url: [],
|
|
|
+ process_property: "",
|
|
|
+ process_properties: [],
|
|
|
+ tempPDTTypeList: [],
|
|
|
+ measure: "",
|
|
|
+ //新增产品工艺属性列表
|
|
|
+ addPDTProcessAttrList: [
|
|
|
+ {
|
|
|
+ showValue: "",
|
|
|
+ showId: "",
|
|
|
+ PDTProcessAttrDetailList: [],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ supTableData: [{}],
|
|
|
+ showPDTModal: false,
|
|
|
+ showSupModal: false,
|
|
|
+ formData: {
|
|
|
+ order_no: "",
|
|
|
+ residential_name: "",
|
|
|
+ client_name: "",
|
|
|
+ address: "",
|
|
|
+ mobile: "",
|
|
|
+ pay_state: "",
|
|
|
+ warning_state: "",
|
|
|
+ salesman: "",
|
|
|
+ remark: "",
|
|
|
+ start_time: "",
|
|
|
+ end_time: "",
|
|
|
+ type: "",
|
|
|
+ //区域列表
|
|
|
+ list: [
|
|
|
+ {
|
|
|
+ areaIndex: 1,
|
|
|
+ num: "",
|
|
|
+ title: "",
|
|
|
+ unit: "",
|
|
|
+ quantity: "",
|
|
|
+ house_type: "",
|
|
|
+ remark: "",
|
|
|
+ order_no: "",
|
|
|
+ product: [
|
|
|
+ // {
|
|
|
+ // title:'',
|
|
|
+ // num:'',
|
|
|
+ // measure:'',
|
|
|
+ // process_property:'',
|
|
|
+ // url:'',
|
|
|
+ // url_number:'',
|
|
|
+ // remark:''
|
|
|
+ // }
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ // {
|
|
|
+ // areaIndex: 2,
|
|
|
+ // num: '',
|
|
|
+ // title: '',
|
|
|
+ // unit: '',
|
|
|
+ // quantity: '',
|
|
|
+ // house_type: '',
|
|
|
+ // remark: '',
|
|
|
+ // order_no: '',
|
|
|
+ // product: []
|
|
|
+ // },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ tableColumns: [
|
|
|
+ { title: "序号", key: "index", align: "center", minWidth: 80 },
|
|
|
+ { title: "产品名称", key: "title", align: "center", minWidth: 140 },
|
|
|
+ { title: "数量", key: "num", align: "center", minWidth: 80 },
|
|
|
+ { title: "价格", key: "price", align: "center", minWidth: 80 },
|
|
|
+ { title: "规格", key: "measure", align: "center", minWidth: 140 },
|
|
|
+ {
|
|
|
+ title: "工艺属性",
|
|
|
+ key: "process_property",
|
|
|
+ align: "center",
|
|
|
+ minWidth: 140,
|
|
|
+ tooltip: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "图纸",
|
|
|
+ align: "center",
|
|
|
+ key: "url",
|
|
|
+ minWidth: 80,
|
|
|
+ slot: "urlSet",
|
|
|
+ // render: (h, params) => {
|
|
|
+ // const { row } = params
|
|
|
+ // return h('div', row.url.map((item, index) => {
|
|
|
+ // return h('img', {
|
|
|
+ // attrs: {
|
|
|
+ // src: this.$store.state.ip + item,
|
|
|
+ // style: 'max-width:50px;max-height:50px;position:relative;top:3px;'
|
|
|
+ // },
|
|
|
+ // on: {
|
|
|
+ // click: (e) => {
|
|
|
+ // // this.axios('/api/orders_img', { params: { id: row.id, type: 1 } }).then(res => {
|
|
|
+ // // if (res.code == 200) {
|
|
|
+ // // row.imgs = res.data
|
|
|
+ // let list = []
|
|
|
+ // row.url.forEach(el => {
|
|
|
+ // list.push({ 'img_url': el })
|
|
|
+ // });
|
|
|
+ // this.$previewImg({
|
|
|
+ // list,
|
|
|
+ // baseUrl: this.$store.state.ip,
|
|
|
+ // baseImgField: 'img_url',
|
|
|
+ // baseTitleField: ''
|
|
|
+ // })
|
|
|
+ // // }
|
|
|
+ // // })
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ // }))
|
|
|
+ // }
|
|
|
+ },
|
|
|
+ { title: "左右式", key: "url_number", align: "center", minWidth: 90 },
|
|
|
+ { title: "图号", key: "url_number", align: "center", minWidth: 90 },
|
|
|
+ // { title: '型号', key: 'model', align: 'center', minWidth: 80 },
|
|
|
+ { title: "备注", key: "remark", align: "center", minWidth: 80 },
|
|
|
+ {
|
|
|
+ title: "状态",
|
|
|
+ key: "status",
|
|
|
+ align: "center",
|
|
|
+ minWidth: 80,
|
|
|
+ slot: "statusSlot",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "操作",
|
|
|
+ key: "remark",
|
|
|
+ align: "center",
|
|
|
+ width: "120",
|
|
|
+ slot: "set",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ productDetail: {},
|
|
|
+ supTableColumns: [
|
|
|
+ { title: "序号", key: "name", align: "center" },
|
|
|
+ { title: "组合名称", key: "name", align: "center", slot: "combine" },
|
|
|
+ { title: "操作", key: "name", align: "center", slot: "supSet" },
|
|
|
+ ],
|
|
|
+ listTableColumns: [
|
|
|
+ { type: "selection", align: "center", minWidth: 100 },
|
|
|
+ { title: "区域编码", key: "num", align: "center", minWidth: 100 },
|
|
|
+ { title: "区域名称", key: "title", align: "center", minWidth: 100 },
|
|
|
+ { title: "单位", key: "unit", align: "center", minWidth: 100 },
|
|
|
+ { title: "工程量", key: "quantity", align: "center", minWidth: 100 },
|
|
|
+ { title: "户型", key: "house_type", align: "center", minWidth: 100 },
|
|
|
+ { title: "备注", key: "remark", align: "center", minWidth: 100 },
|
|
|
+ { title: "产品名称", key: "title", align: "center", minWidth: 100 },
|
|
|
+ { title: "数量", key: "num", align: "center", minWidth: 100 },
|
|
|
+ { title: "价格", key: "price", align: "center", minWidth: 100 },
|
|
|
+ { title: "规格", key: "measure", align: "center", minWidth: 100 },
|
|
|
+ {
|
|
|
+ title: "工艺属性",
|
|
|
+ key: "process_property",
|
|
|
+ align: "center",
|
|
|
+ minWidth: 100,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "图纸",
|
|
|
+ key: "url",
|
|
|
+ align: "center",
|
|
|
+ minWidth: 100,
|
|
|
+ render: (h, params) => {
|
|
|
+ const { row } = params;
|
|
|
+ let url = row.url ? row.url : [];
|
|
|
+ return h("img", {
|
|
|
+ attrs: {
|
|
|
+ src: this.$store.state.ip + url[0],
|
|
|
+ style:
|
|
|
+ "max-width:50px;max-height:50px;position:relative;top:3px;",
|
|
|
+ },
|
|
|
+ on: {
|
|
|
+ click: (e) => {
|
|
|
+ // this.axios('/api/orders_img', { params: { id: row.id, type: 1 } }).then(res => {
|
|
|
+ // row.imgs = res.data
|
|
|
+ let list = [];
|
|
|
+ row.url.forEach((el) => {
|
|
|
+ list.push({ img_url: el });
|
|
|
+ });
|
|
|
+ this.$previewImg({
|
|
|
+ list,
|
|
|
+ baseUrl: this.$store.state.ip,
|
|
|
+ baseImgField: "img_url",
|
|
|
+ baseTitleField: "",
|
|
|
+ });
|
|
|
+ // })
|
|
|
+ },
|
|
|
+ },
|
|
|
+ });
|
|
|
+ },
|
|
|
+ },
|
|
|
+ { title: "左右式", key: "title", align: "center", minWidth: 100 },
|
|
|
+ { title: "图号", key: "url_number", align: "center", minWidth: 100 },
|
|
|
+ { title: "备注", key: "remark", align: "center", minWidth: 100 },
|
|
|
+ ],
|
|
|
+ listTableData: [{}, {}, {}, {}, {}, {}, {}],
|
|
|
+ //是否查看
|
|
|
+ isChecked: false,
|
|
|
+ PDTProcessAttrList: [],
|
|
|
+ // 测量字段列表
|
|
|
+ measureList: [],
|
|
|
+ order_area_id: "",
|
|
|
+ uploadData: {
|
|
|
+ order_no: this.$route.query.order_no,
|
|
|
+ title: "",
|
|
|
+ },
|
|
|
+ contactSpecValueList: [{ key: "", value: "" }],
|
|
|
+ areaSpecValueList: [{ key: "", value: "" }],
|
|
|
+ productSpecValueList: [{ key: "", value: "" }],
|
|
|
+ processManList: [],
|
|
|
+ process_man: "",
|
|
|
+ process_start_time: "",
|
|
|
+ process_end_time: "",
|
|
|
+ warningList: [],
|
|
|
+ selected: [],
|
|
|
+ processModal: false,
|
|
|
+ currencyTab: "",
|
|
|
+ };
|
|
|
+ },
|
|
|
+ // 生命周期 - 创建完成(可以访问当前this实例)
|
|
|
+ created() {
|
|
|
+ //2编辑 3详情 4变更 5变更记录
|
|
|
+ this.$route.query.type == 3 ? (this.isChecked = true) : "";
|
|
|
+ this.$route.query.order_no
|
|
|
+ ? (this.formData.order_no = this.$route.query.order_no)
|
|
|
+ : "";
|
|
|
+ // 获取工艺属性
|
|
|
+ this.axios("/api/basics_properties_index").then((res) => {
|
|
|
+ this.PDTProcessAttrList = res.data.data;
|
|
|
+ });
|
|
|
+ // 获取组合管理
|
|
|
+ this.axios("/api/material_combination").then((res) => {
|
|
|
+ this.combineList = res.data.data;
|
|
|
+ });
|
|
|
+ // 获取紧急程度
|
|
|
+ this.axios.get("/api/warning_list").then((res) => {
|
|
|
+ this.warningList = res.data.data;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 生命周期 - 挂载完成(可以访问DOM元素)
|
|
|
+ mounted() {
|
|
|
+ this.axios("/api/user").then(
|
|
|
+ (res) => (
|
|
|
+ (this.salesmanList = res.data.data),
|
|
|
+ (this.processManList = res.data.data)
|
|
|
+ )
|
|
|
+ );
|
|
|
+ this.axios("/api/parts_product_list").then((res) => {
|
|
|
+ this.PDTTypeList = res.data;
|
|
|
+ this.PDTTypeList.forEach((el) => {
|
|
|
+ el.value = el.id;
|
|
|
+ el.label = el.title;
|
|
|
+ });
|
|
|
+ });
|
|
|
+ //获取基础测量字段列表
|
|
|
+ this.axios("/api/basics_measure_index").then((res) => {
|
|
|
+ this.measureList = res.data.data;
|
|
|
+ });
|
|
|
+ this.initData(this.formData.order_no);
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ async handleBeforeUpload(row) {
|
|
|
+ // row.name
|
|
|
+ console.log("row :>> ", row);
|
|
|
+ this.uploadData.title = row.name.substring(0, row.name.indexOf("."));
|
|
|
+ return true;
|
|
|
+ },
|
|
|
+ onProgress(e) {
|
|
|
+ console.log(e);
|
|
|
+ },
|
|
|
+ initData(order_no) {
|
|
|
+ this.axios({
|
|
|
+ method: "get",
|
|
|
+ url: "/api/order_area_list",
|
|
|
+ params: {
|
|
|
+ order_no,
|
|
|
+ },
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ this.formData = res.data;
|
|
|
+ this.formData.list.forEach((element, index) => {
|
|
|
+ element.product.forEach((el, i) => {
|
|
|
+ el.index = i + 1;
|
|
|
+ el.measures.forEach((item) => {
|
|
|
+ el[item.e_title] = item.value;
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ this.formData.list.forEach((element) => {
|
|
|
+ // 产品特殊字段→ 弹窗窗口,table表头
|
|
|
+ let arr = [];
|
|
|
+ res.data.head[3].length > 0 &&
|
|
|
+ res.data.head[3].forEach((item) => {
|
|
|
+ arr.push({
|
|
|
+ title: item.key,
|
|
|
+ key: item.key,
|
|
|
+ align: "center",
|
|
|
+ minWidth: 80,
|
|
|
+ });
|
|
|
+ });
|
|
|
+ this.tableColumns = [
|
|
|
+ { title: "序号", key: "index", align: "center", minWidth: 80 },
|
|
|
+ {
|
|
|
+ title: "产品名称",
|
|
|
+ key: "title",
|
|
|
+ align: "center",
|
|
|
+ tooltip: true,
|
|
|
+ minWidth: 100,
|
|
|
+ },
|
|
|
+ { title: "数量", key: "num", align: "center", minWidth: 80 },
|
|
|
+ { title: "价格", key: "price", align: "center", minWidth: 80 },
|
|
|
+ {
|
|
|
+ title: "规格",
|
|
|
+ key: "measure",
|
|
|
+ align: "center",
|
|
|
+ tooltip: true,
|
|
|
+ minWidth: 140,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "工艺属性",
|
|
|
+ key: "process_property",
|
|
|
+ align: "center",
|
|
|
+ tooltip: true,
|
|
|
+ minWidth: 120,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "图纸",
|
|
|
+ align: "center",
|
|
|
+ key: "url",
|
|
|
+ minWidth: 100,
|
|
|
+ render: (h, params) => {
|
|
|
+ const { row } = params;
|
|
|
+ let url = row.url ? row.url : [];
|
|
|
+ return h("img", {
|
|
|
+ attrs: {
|
|
|
+ src: this.$store.state.ip + url[0],
|
|
|
+ style:
|
|
|
+ "max-width:50px;max-height:50px;position:relative;top:3px;",
|
|
|
+ },
|
|
|
+ on: {
|
|
|
+ click: (e) => {
|
|
|
+ // this.axios('/api/orders_img', { params: { id: row.id, type: 1 } }).then(res => {
|
|
|
+ // row.imgs = res.data
|
|
|
+ let list = [];
|
|
|
+ row.url.forEach((el) => {
|
|
|
+ list.push({ img_url: el });
|
|
|
+ });
|
|
|
+ this.$previewImg({
|
|
|
+ list,
|
|
|
+ baseUrl: this.$store.state.ip,
|
|
|
+ baseImgField: "img_url",
|
|
|
+ baseTitleField: "",
|
|
|
+ });
|
|
|
+ // })
|
|
|
+ },
|
|
|
+ },
|
|
|
+ });
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "图号",
|
|
|
+ key: "url_number",
|
|
|
+ align: "center",
|
|
|
+ tooltip: true,
|
|
|
+ minWidth: 80,
|
|
|
+ },
|
|
|
+ ...arr,
|
|
|
+ { title: "备注", key: "remark", align: "center", minWidth: 80 },
|
|
|
+ {
|
|
|
+ title: "操作",
|
|
|
+ key: "remark",
|
|
|
+ align: "center",
|
|
|
+ slot: "set",
|
|
|
+ minWidth: 120,
|
|
|
+ fixed: "right",
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ });
|
|
|
+ // 订单特殊字段
|
|
|
+ this.formData.special &&
|
|
|
+ this.formData.special.forEach((element) => {
|
|
|
+ this.formData.head[1].forEach((item) => {
|
|
|
+ if (element.head_id == item.id) {
|
|
|
+ element = Object.assign(element, item);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ this.contactForm = this.formData.head[1]
|
|
|
+ ? this.formData.head[1]
|
|
|
+ : [{ key: "", value: "" }];
|
|
|
+ // 区域特殊字段
|
|
|
+ this.formData.list.forEach((element) => {
|
|
|
+ element.special &&
|
|
|
+ element.special.forEach((ele) => {
|
|
|
+ this.formData.head[2].forEach((item) => {
|
|
|
+ if (ele.head_id == item.id) {
|
|
|
+ ele = Object.assign(ele, item);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+ this.areaSpecValueList = this.formData.head[2]
|
|
|
+ ? this.formData.head[2]
|
|
|
+ : [{ key: "", value: "" }];
|
|
|
+ // 产品特殊字段→ 弹窗窗口,table表头
|
|
|
+ this.formData.list.forEach((area) => {
|
|
|
+ area.product.forEach((pdt) => {
|
|
|
+ pdt.special &&
|
|
|
+ pdt.special.forEach((element) => {
|
|
|
+ this.formData.head[3].forEach((item) => {
|
|
|
+ if (element.head_id == item.id) {
|
|
|
+ element = Object.assign(element, item);
|
|
|
+ pdt[element.key] = element.value;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+ this.productSpecValueList = this.formData.head[3]
|
|
|
+ ? this.formData.head[3]
|
|
|
+ : [{ key: "", value: "" }];
|
|
|
+ })
|
|
|
+ .catch((err) => {});
|
|
|
+ },
|
|
|
+ goback() {
|
|
|
+ this.$router.go(-1);
|
|
|
+ },
|
|
|
+ handleSelection(selection) {
|
|
|
+ this.selected = selection;
|
|
|
+ },
|
|
|
+ postData() {
|
|
|
+ this.axios({
|
|
|
+ method: "post",
|
|
|
+ url: "/api/order_area_product_save",
|
|
|
+ data: {
|
|
|
+ order_no: this.formData.order_no,
|
|
|
+ order_area_id: "",
|
|
|
+ order_area_product_id: "",
|
|
|
+ list: "",
|
|
|
+ },
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ this.$Message.success(res.msg);
|
|
|
+ })
|
|
|
+ .catch((err) => {});
|
|
|
+ },
|
|
|
+ // 1深化 2详情
|
|
|
+ handleSet(row, index, type, item) {
|
|
|
+ if (type == 3) {
|
|
|
+ this.$Modal.confirm({
|
|
|
+ title: "确认删除?",
|
|
|
+ content: "此操作确认后不可恢复,请确认!",
|
|
|
+ onOk: () => {
|
|
|
+ this.axios({
|
|
|
+ method: "post",
|
|
|
+ url: "/api/order_area_deep_del",
|
|
|
+ data: {
|
|
|
+ id: row.id,
|
|
|
+ },
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ this.$Message.success(res.msg);
|
|
|
+ this.initData(this.formData.order_no);
|
|
|
+ })
|
|
|
+ .catch((err) => {});
|
|
|
+ },
|
|
|
+ onCancel: () => {},
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ this.$router.push({
|
|
|
+ path: "/cms/BidSystem/DeepeningOrder/edit",
|
|
|
+ query: {
|
|
|
+ type,
|
|
|
+ order_no: this.formData.order_no,
|
|
|
+ order_area_id: item.id,
|
|
|
+ order_area_product_id: row.id,
|
|
|
+ },
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 删除工艺属性
|
|
|
+ handleAddPDTDetailDele(arr, index) {
|
|
|
+ arr.splice(index, 1);
|
|
|
+ },
|
|
|
+ //新增产品复制
|
|
|
+ handleAddPDTCopy(item, index) {
|
|
|
+ const temp = JSON.parse(JSON.stringify(item));
|
|
|
+ this.tempPDTList.splice(index + 1, 0, temp);
|
|
|
+ },
|
|
|
+ //新增产品添加
|
|
|
+ handleAddPDTAdd(index) {
|
|
|
+ this.tempPDTList.splice(index + 1, 0, { addPDTProcessAttrList: [] });
|
|
|
+ },
|
|
|
+ //新增产品删除
|
|
|
+ handleAddPDTDele(index) {
|
|
|
+ this.tempPDTList.splice(index, 1);
|
|
|
+ },
|
|
|
+ //新增产品→新增区域确认
|
|
|
+ handleAddPDTConfirm() {
|
|
|
+ this.tempPDTList.forEach((element) => {
|
|
|
+ // element.measure = `${element.length ? element.length : 0}*${element.width ? element.width : 0}*${element.height ? element.height : 0}`
|
|
|
+ element.addPDTProcessAttrList.forEach((el, i) => {
|
|
|
+ if (i == element.tempMeasureList.length - 1) {
|
|
|
+ element.process_property += el.showValue;
|
|
|
+ element.process_properties += el.showId;
|
|
|
+ } else {
|
|
|
+ element.process_property += el.showValue + ",";
|
|
|
+ element.process_properties += el.showId + ",";
|
|
|
+ }
|
|
|
+ });
|
|
|
+ element.tempMeasureList.forEach((el, i) => {
|
|
|
+ if (i == element.tempMeasureList.length - 1) {
|
|
|
+ element.measure += `${el.e_title}${el.value}`;
|
|
|
+ } else {
|
|
|
+ element.measure += `${el.e_title}${el.value}*`;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ this.axios({
|
|
|
+ method: "post",
|
|
|
+ url: "/api/order_area_deep_add",
|
|
|
+ data: {
|
|
|
+ order_no: this.formData.order_no,
|
|
|
+ order_area_id: this.order_area_id,
|
|
|
+ ...this.tempPDTList[0],
|
|
|
+ },
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ this.$Message.success(res.msg);
|
|
|
+ this.showPDTModal = false;
|
|
|
+ this.initData(this.formData.order_no);
|
|
|
+ })
|
|
|
+ .catch((err) => {});
|
|
|
+ // this.tempPDTList = [
|
|
|
+ // {
|
|
|
+ // addPDTProcessAttrList:[{}]
|
|
|
+ // }
|
|
|
+ // ]
|
|
|
+ },
|
|
|
+ //项目辅料新增
|
|
|
+ handleAddSup() {
|
|
|
+ this.supTableData.push({ index: "", title: "" });
|
|
|
+ this.supTableData.forEach((element, index) => {
|
|
|
+ element.index = index + 1;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //项目辅料删除
|
|
|
+ handleSupSet(row, index) {
|
|
|
+ this.supTableData.splice(index, 1);
|
|
|
+ },
|
|
|
+ //添加工艺属性
|
|
|
+ handleProcessAdd(item, index) {
|
|
|
+ this.tempPDTList[index].addPDTProcessAttrList.push({
|
|
|
+ PDTProcessAttrDetailList: [],
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //选择工艺属性
|
|
|
+ handleAddPDTAttrChange(item, index, value) {
|
|
|
+ this.axios("/api/properties_index", { params: { id: value } }).then(
|
|
|
+ (res) => {
|
|
|
+ item.PDTProcessAttrDetailList = res.data.data;
|
|
|
+ }
|
|
|
+ );
|
|
|
+ },
|
|
|
+ //选择工艺属性细节
|
|
|
+ handleAddPDTAttrDetailChange(item, index, value) {
|
|
|
+ item.showValue = value.label;
|
|
|
+ item.showId = value.value;
|
|
|
+ },
|
|
|
+ looks(img) {
|
|
|
+ const array = [{ img_url: img }];
|
|
|
+ this.$previewImg({
|
|
|
+ list: array,
|
|
|
+ baseUrl: this.$store.state.ip,
|
|
|
+ baseImgField: "img_url",
|
|
|
+ baseTitleField: "",
|
|
|
+ });
|
|
|
+ },
|
|
|
+ delItems(n, arr) {
|
|
|
+ arr.splice(n, 1);
|
|
|
+ },
|
|
|
+ changeIpt(e, row) {
|
|
|
+ let file = e.target.files[0];
|
|
|
+ this.postImg(file, row);
|
|
|
+ e.target.value = null;
|
|
|
+ },
|
|
|
+ postImg(file, row) {
|
|
|
+ let formData = new FormData();
|
|
|
+ formData.append("file", file);
|
|
|
+ this.axios.post("/api/upload_pic", formData).then((res) => {
|
|
|
+ row.push(res.data.url);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 产品分类选择→对应不同测量字段
|
|
|
+ hanndleAddPDTTypeChange(item, e) {
|
|
|
+ this.axios("/api/basics_product_index", {
|
|
|
+ params: { title: e.label },
|
|
|
+ }).then((res) => {
|
|
|
+ item.tempPDTTypeList = res.data.data[0].measure_id.split(",");
|
|
|
+ item.tempMeasureList = this.measureList;
|
|
|
+ this.measureList.forEach((el) => {
|
|
|
+ item[el.e_title] = "";
|
|
|
+ });
|
|
|
+ });
|
|
|
+ // basics_measure_index
|
|
|
+ },
|
|
|
+ handleImgClick(e, row) {
|
|
|
+ const list = [{ img_url: e.target.src }];
|
|
|
+ this.$previewImg({
|
|
|
+ list,
|
|
|
+ baseUrl: "",
|
|
|
+ baseImgField: "img_url",
|
|
|
+ baseTitleField: "",
|
|
|
+ });
|
|
|
+ },
|
|
|
+ uploadError(err) {
|
|
|
+ this.$Message.error(err.msg || "上传失败");
|
|
|
+ },
|
|
|
+ //导入成功
|
|
|
+ uploadSuccess(res) {
|
|
|
+ if (res.code == 200) {
|
|
|
+ this.$Message.success(res.msg || "上传成功");
|
|
|
+ // const temp = res.data;
|
|
|
+ // let list = [...this.postInfo.children, ...temp];
|
|
|
+ } else {
|
|
|
+ this.$Message.warning(res.msg || "上传失败");
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleProcess() {
|
|
|
+ this.axios({
|
|
|
+ method: "get",
|
|
|
+ url: "/api/order_area_pull",
|
|
|
+ params: {
|
|
|
+ order_no: this.order_no,
|
|
|
+ sub_status: 1,
|
|
|
+ process_man: this.process_man,
|
|
|
+ process_start_time: this.func.replaceDateNoHMS(
|
|
|
+ this.process_start_time
|
|
|
+ ),
|
|
|
+ process_end_time: this.func.replaceDateNoHMS(this.process_end_time),
|
|
|
+ },
|
|
|
+ }).then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ this.$Message.success(res.msg);
|
|
|
+ this.getData(this.proxyObj);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ handleOpenModal() {
|
|
|
+ if (this.selected.length < 1) {
|
|
|
+ this.$Message.warning("请选择数据");
|
|
|
+ } else {
|
|
|
+ this.processModal = true;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleCurTabChange(name) {
|
|
|
+ this.currencyTab = name;
|
|
|
+ if (name == "name2" && this.listTableData.length < 1) {
|
|
|
+ this.axios
|
|
|
+ .get("/api/order_area_deep_detail_list?", {
|
|
|
+ params: { order_no: this.$route.query.order_no },
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ console.log(res);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ },
|
|
|
+ // 监听属性 类似于data概念
|
|
|
+ computed: {},
|
|
|
+ // 监控data中的数据变化
|
|
|
+ watch: {},
|
|
|
+ beforeCreate() {}, // 生命周期 - 创建之前
|
|
|
+ beforeMount() {}, // 生命周期 - 挂载之前
|
|
|
+ beforeUpdate() {}, // 生命周期 - 更新之前
|
|
|
+ updated() {}, // 生命周期 - 更新之后
|
|
|
+ beforeDestroy() {}, // 生命周期 - 销毁之前
|
|
|
+ destroyed() {}, // 生命周期 - 销毁完成
|
|
|
+ activated() {}, // 如果页面有keep-alive缓存功能,这个函数会触发
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang='scss' scoped>
|
|
|
+.BidSystemDeepeningOrderDetail {
|
|
|
+ overflow: hidden;
|
|
|
+ overflow-y: auto;
|
|
|
+ position: relative;
|
|
|
+ top: 20px;
|
|
|
+ height: 85%;
|
|
|
+ padding-bottom: 20px;
|
|
|
+ .top_search {
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-start;
|
|
|
+ align-items: center;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ width: 100%;
|
|
|
+ padding: 10px 0;
|
|
|
+ font-size: 14px;
|
|
|
+ div {
|
|
|
+ width: 200px;
|
|
|
+ padding: 5px;
|
|
|
+ }
|
|
|
+ .top_search_form {
|
|
|
+ // width: 800px;
|
|
|
+ // display: flex;
|
|
|
+ // justify-content: space-around;
|
|
|
+ /deep/ .ivu-form-item {
|
|
|
+ display: inline-block;
|
|
|
+ width: 300px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .addAreaForm {
|
|
|
+ font-size: 14px;
|
|
|
+ .addFormInfo {
|
|
|
+ width: 80%;
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-start;
|
|
|
+ align-items: center;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ padding: 10px 0;
|
|
|
+ div {
|
|
|
+ width: 200px;
|
|
|
+ padding: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .table-data {
|
|
|
+ position: relative;
|
|
|
+ padding: 15px;
|
|
|
+ margin: 10px;
|
|
|
+ margin-bottom: 30px;
|
|
|
+ border-radius: 5px;
|
|
|
+ box-shadow: 1px 1px 5px 1px #999;
|
|
|
+ .addBtn {
|
|
|
+ position: absolute;
|
|
|
+ right: 20px;
|
|
|
+ top: 20px;
|
|
|
+ }
|
|
|
+ /deep/ .ivu-form-item {
|
|
|
+ display: inline-block;
|
|
|
+ width: 220px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.addPDTFormModal {
|
|
|
+ /deep/ .ivu-modal-body {
|
|
|
+ height: 400px;
|
|
|
+ overflow: hidden;
|
|
|
+ overflow-y: auto;
|
|
|
+ }
|
|
|
+}
|
|
|
+.addPDTForm {
|
|
|
+ position: relative;
|
|
|
+ border-bottom: 1px solid #e8eaec;
|
|
|
+ padding-bottom: 30px;
|
|
|
+ /deep/ .ivu-form-item {
|
|
|
+ display: inline-block;
|
|
|
+ width: 300px;
|
|
|
+ }
|
|
|
+ .addPDTBtn {
|
|
|
+ position: absolute;
|
|
|
+ right: 10px;
|
|
|
+ bottom: 25px;
|
|
|
+ }
|
|
|
+}
|
|
|
+.addPDTProcess {
|
|
|
+ width: 300px;
|
|
|
+ padding-bottom: 15px;
|
|
|
+ div {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-around;
|
|
|
+ padding: 5px 0;
|
|
|
+ span {
|
|
|
+ padding-top: 6px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.product-img {
|
|
|
+ padding-top: 10px;
|
|
|
+}
|
|
|
+.process_modal {
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ padding: 10px;
|
|
|
+}
|
|
|
+.product-add {
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ .ipt {
|
|
|
+ position: absolute;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ opacity: 0;
|
|
|
+ cursor: pointer;
|
|
|
+ outline: none;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ }
|
|
|
+ .add-items {
|
|
|
+ width: 40px;
|
|
|
+ height: 40px;
|
|
|
+ border: 1px dotted #e7e7e7;
|
|
|
+ border-radius: 5px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ overflow: hidden;
|
|
|
+ position: relative;
|
|
|
+ flex-direction: column;
|
|
|
+ background: #f4f5f7;
|
|
|
+ .item {
|
|
|
+ width: 46px;
|
|
|
+ height: 46px;
|
|
|
+ background: #3764ff;
|
|
|
+ opacity: 0.6;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ border-radius: 50%;
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .items {
|
|
|
+ width: 40px;
|
|
|
+ height: 40px;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ background: #e7e7e7;
|
|
|
+ margin-right: 10px;
|
|
|
+ border-radius: 5px;
|
|
|
+ position: relative;
|
|
|
+ img {
|
|
|
+ max-width: 40px;
|
|
|
+ max-height: 40px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.supModalBtn {
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-end;
|
|
|
+ margin-bottom: 10px;
|
|
|
+}
|
|
|
+.urlSetStyle {
|
|
|
+ img {
|
|
|
+ max-width: 100px;
|
|
|
+ }
|
|
|
+}
|
|
|
+/deep/ .ivu-table-wrapper {
|
|
|
+ overflow: visible;
|
|
|
+} //穿透iview
|
|
|
+/deep/.ivu-tabs-nav-scroll {
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+}
|
|
|
+</style>
|