|
@@ -0,0 +1,1022 @@
|
|
|
+<template>
|
|
|
+ <div class="BidSystemDeepeningOrderDetail">
|
|
|
+ <Toptitle title="变更">
|
|
|
+ <slot name="titleButton">
|
|
|
+ <!-- <Button
|
|
|
+ @click="handleFinish()"
|
|
|
+ type="primary"
|
|
|
+ style="margin-right: 10px"
|
|
|
+ >完成</Button
|
|
|
+ > -->
|
|
|
+ <!-- <Upload
|
|
|
+ style="display: inline"
|
|
|
+ name="your_file"
|
|
|
+ :show-upload-list="false"
|
|
|
+ :headers="headers"
|
|
|
+ :on-error="uploadError"
|
|
|
+ :on-success="uploadSuccess"
|
|
|
+ :action="$store.state.ip + '/api/order_area_product_import'"
|
|
|
+ >
|
|
|
+ <Button type="primary" style="margin-right: 10px">导入1</Button>
|
|
|
+ </Upload> -->
|
|
|
+ <Button
|
|
|
+ @click="goback()"
|
|
|
+ type="primary"
|
|
|
+ ghost
|
|
|
+ style="margin-right: 10px"
|
|
|
+ >返回</Button
|
|
|
+ >
|
|
|
+ </slot>
|
|
|
+ </Toptitle>
|
|
|
+ <div >
|
|
|
+ <div class="top_search">
|
|
|
+ <div class="top_search_content">
|
|
|
+ <Form
|
|
|
+ :model="searchData"
|
|
|
+ :label-width="100"
|
|
|
+ class="top_search_form"
|
|
|
+ >
|
|
|
+ <FormItem label="区域编码:">
|
|
|
+ <Select
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ v-model="searchData.area_no"
|
|
|
+ size="small"
|
|
|
+ style="width:120px"
|
|
|
+ >
|
|
|
+ <Option
|
|
|
+ v-for="(_item, _index) in area_no_list"
|
|
|
+ :key="_index"
|
|
|
+ :label="_item"
|
|
|
+ :value="_item"
|
|
|
+ ></Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="区域名称:">
|
|
|
+ <Select
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ v-model="searchData.area_title"
|
|
|
+ size="small"
|
|
|
+ style="width:120px"
|
|
|
+ >
|
|
|
+ <Option
|
|
|
+ v-for="(_item, _index) in area_title_list"
|
|
|
+ :key="_index"
|
|
|
+ :label="_item"
|
|
|
+ :value="_item"
|
|
|
+ ></Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="产品名称:">
|
|
|
+ <Select
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ v-model="searchData.product_title"
|
|
|
+ size="small"
|
|
|
+ style="width:120px"
|
|
|
+ >
|
|
|
+ <Option
|
|
|
+ v-for="(_item, _index) in product_title_list"
|
|
|
+ :key="_index"
|
|
|
+ :label="_item"
|
|
|
+ :value="_item"
|
|
|
+ ></Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="图号:">
|
|
|
+ <Select
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ v-model="searchData.url_number"
|
|
|
+ size="small"
|
|
|
+ style="width:120px"
|
|
|
+ >
|
|
|
+ <Option
|
|
|
+ v-for="(_item, _index) in url_number_list"
|
|
|
+ :key="_index"
|
|
|
+ :label="_item"
|
|
|
+ :value="_item"
|
|
|
+ ></Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem>
|
|
|
+ <Button @click="getListData" type="primary" size="small"
|
|
|
+ >搜索</Button
|
|
|
+ >
|
|
|
+ </FormItem>
|
|
|
+ </Form>
|
|
|
+ </div>
|
|
|
+ <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
|
|
|
+ >
|
|
|
+ <template slot="statusSlot" slot-scope="{ row }">
|
|
|
+ {{ row.status == 1 ? "已完成" : "未完成" }}
|
|
|
+ </template>
|
|
|
+ <template slot="set" slot-scope="{ row, index }">
|
|
|
+ <a
|
|
|
+ style="margin: 0 5px"
|
|
|
+ @click="handleSet(row, index, 2, formData)"
|
|
|
+ >变更</a
|
|
|
+ >
|
|
|
+ <a
|
|
|
+ style="margin: 0 5px"
|
|
|
+ @click="handleSet(row, index, 4, formData)"
|
|
|
+ >详情</a
|
|
|
+ >
|
|
|
+ <a
|
|
|
+ style="margin: 0 5px"
|
|
|
+ @click="handleSet(row, index, 3, formData)"
|
|
|
+ >删除</a
|
|
|
+ >
|
|
|
+ <!-- <a
|
|
|
+ style="margin: 0 5px"
|
|
|
+ @click="handleSet(row, index, 1, formData)"
|
|
|
+ >变更记录</a
|
|
|
+ > -->
|
|
|
+ </template>
|
|
|
+ </Table>
|
|
|
+ </div>
|
|
|
+ <div ref="footercenter" class="footer-center">
|
|
|
+ <Page
|
|
|
+ :total="total"
|
|
|
+ :current.sync="page_index"
|
|
|
+ :show-total="true"
|
|
|
+ :page-size="page_size"
|
|
|
+ :show-sizer="true"
|
|
|
+ :show-elevator="true"
|
|
|
+ @on-change="changePage"
|
|
|
+ @on-page-size-change="changeSize"
|
|
|
+ >
|
|
|
+ </Page>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </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: [],
|
|
|
+ combineList: [],
|
|
|
+ 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: []
|
|
|
+ // },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ productDetail: {},
|
|
|
+ listTableColumns: [
|
|
|
+ { title: "区域编码", key: "area_num", align: "center", minWidth: 100 },
|
|
|
+ {
|
|
|
+ title: "区域名称",
|
|
|
+ key: "area_title",
|
|
|
+ align: "center",
|
|
|
+ minWidth: 100,
|
|
|
+ },
|
|
|
+ { title: "单位", key: "area_unit", align: "center", minWidth: 100 },
|
|
|
+ {
|
|
|
+ title: "工程量",
|
|
|
+ key: "area_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: "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: "left_right_mode",
|
|
|
+ align: "center",
|
|
|
+ minWidth: 100,
|
|
|
+ render: (h, params) => {
|
|
|
+ return h(
|
|
|
+ "span",
|
|
|
+ {},
|
|
|
+ params.row.left_right_mode == 1
|
|
|
+ ? "左式"
|
|
|
+ : params.row.left_right_mode == 2
|
|
|
+ ? "右式"
|
|
|
+ : "无"
|
|
|
+ );
|
|
|
+ },
|
|
|
+ },
|
|
|
+ { title: "图号", key: "url_number", align: "center", minWidth: 100 },
|
|
|
+ { title: "备注", key: "remark", align: "center", minWidth: 100 },
|
|
|
+ {
|
|
|
+ title: "操作",
|
|
|
+ key: "remark",
|
|
|
+ align: "center",
|
|
|
+ width: "220",
|
|
|
+ slot: "set",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ 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: "" }],
|
|
|
+ process_man: "",
|
|
|
+ process_start_time: "",
|
|
|
+ process_end_time: "",
|
|
|
+ warningList: [],
|
|
|
+ selected: [],
|
|
|
+ currencyTab: "",
|
|
|
+ type: this.$route.query.type,
|
|
|
+ page_index: 1,
|
|
|
+ page_size: 10,
|
|
|
+ total: 0,
|
|
|
+ searchData: {},
|
|
|
+ area_no_list: [],
|
|
|
+ area_title_list: [],
|
|
|
+ product_title_list: [],
|
|
|
+ url_number_list: [],
|
|
|
+ oa_id: this.$route.query.oa_id || "",
|
|
|
+ };
|
|
|
+ },
|
|
|
+ // 生命周期 - 创建完成(可以访问当前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.axios("/api/basics_measure_index").then((res) => {
|
|
|
+ this.measureList = res.data.data;
|
|
|
+ });
|
|
|
+ this.getListData(this.formData.order_no, this.oa_id);
|
|
|
+ this.axios({
|
|
|
+ method: "get",
|
|
|
+ url: "/api/order_area_list",
|
|
|
+ params: {
|
|
|
+ order_no:this.$route.query.order_no,
|
|
|
+ oa_id:this.$route.query.oa_id
|
|
|
+ },
|
|
|
+ }).then((res) => {
|
|
|
+ this.formData = res.data;})
|
|
|
+ },
|
|
|
+ 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);
|
|
|
+ },
|
|
|
+ goback() {
|
|
|
+ this.$router.go(-1);
|
|
|
+ },
|
|
|
+ handleSelection(selection) {
|
|
|
+ this.selected = selection;
|
|
|
+ },
|
|
|
+ // 1拆单 2详情
|
|
|
+ handleSet(row, index, type, item) {
|
|
|
+ switch (type) {
|
|
|
+ case 1:
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ this.$router.push({
|
|
|
+ path: "/cms/BidSystem/DeepeningOrder/changeDetail",
|
|
|
+ query: {
|
|
|
+ type,
|
|
|
+ order_no: this.formData.order_no,
|
|
|
+ order_area_id: item.id,
|
|
|
+ order_area_product_id: row.id,
|
|
|
+ },
|
|
|
+ });
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ this.$Modal.confirm({
|
|
|
+ title: "确认删除?",
|
|
|
+ content: "此操作确认后不可恢复,请确认!",
|
|
|
+ onOk: () => {
|
|
|
+ this.axios({
|
|
|
+ method: "post",
|
|
|
+ url: "/api/order_area_deep_del",
|
|
|
+ data: {
|
|
|
+ id: row.id,
|
|
|
+ },
|
|
|
+ }).then((res) => {
|
|
|
+ if (res.doce == 200) {
|
|
|
+ this.$Message.success(res.msg);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ onCancel: () => {},
|
|
|
+ });
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ 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.order_area_product_id,
|
|
|
+ },
|
|
|
+ });
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 删除工艺属性
|
|
|
+ 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);
|
|
|
+ },
|
|
|
+ //项目辅料新增
|
|
|
+ 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;
|
|
|
+ },
|
|
|
+ // handleFinish() {
|
|
|
+ // if (this.selected.length < 1) {
|
|
|
+ // this.$Message.warning("请选择数据");
|
|
|
+ // } else {
|
|
|
+ // const order_area_product_id = this.selected.map(
|
|
|
+ // (item) => item.order_area_product_id || item.id
|
|
|
+ // );
|
|
|
+ // this.$Modal.confirm({
|
|
|
+ // title: "确认完成?",
|
|
|
+ // // content: "此操作确认后不可恢复,请确认!",
|
|
|
+ // onOk: () => {
|
|
|
+ // this.axios({
|
|
|
+ // method: "post",
|
|
|
+ // url: "/api/order_area_product_status",
|
|
|
+ // data: {
|
|
|
+ // order_area_product_id,
|
|
|
+ // },
|
|
|
+ // }).then((res) => {
|
|
|
+ // if (res.code == 200) {
|
|
|
+ // this.$Message.success(res.msg);
|
|
|
+ // this.initData(this.formData.order_no, this.oa_id);
|
|
|
+ // this.handleShowCurrencyArea(item,index)
|
|
|
+ // this.getListData()
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ // },
|
|
|
+ // onCancel: () => {},
|
|
|
+ // });
|
|
|
+ // }
|
|
|
+ // },
|
|
|
+ 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 || "上传失败");
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getListData() {
|
|
|
+ this.axios
|
|
|
+ .get("/api/order_area_detail_list", {
|
|
|
+ params: {
|
|
|
+ order_no: this.$route.query.order_no,
|
|
|
+ ...this.searchData,
|
|
|
+ page_index: this.page_index,
|
|
|
+ page_size: this.page_size,
|
|
|
+ oa_id: this.oa_id,
|
|
|
+ },
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ this.area_no_list = res.data.area_no;
|
|
|
+ this.area_title_list = res.data.area_title;
|
|
|
+ this.product_title_list = res.data.product_title;
|
|
|
+ this.url_number_list = res.data.url_number;
|
|
|
+ this.listTableData = res.data.data;
|
|
|
+ this.listTableData.map((item) => {
|
|
|
+ !item.url && (item.url = []);
|
|
|
+ res.data.imgs.map((element) => {
|
|
|
+ if (item.sign_id == element.sign_id) {
|
|
|
+ item.url.push({ img_url: element.img_url });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ this.total = res.data.total;
|
|
|
+ this.$forceUpdate();
|
|
|
+ });
|
|
|
+ },
|
|
|
+ changePage(e) {
|
|
|
+ this.page_index = e;
|
|
|
+ this.getListData();
|
|
|
+ },
|
|
|
+ changeSize(e) {
|
|
|
+ this.page_size = e;
|
|
|
+ this.getListData();
|
|
|
+ },
|
|
|
+ // 展示区域产品
|
|
|
+ handleShowCurrencyArea(item, index) {
|
|
|
+ const preObj = this.formData.list.filter((item) => item.isCurrencyArea);
|
|
|
+ // 判断当前打开是否与上一个是否一致
|
|
|
+ if (preObj.length > 0) {
|
|
|
+ // 1.1移除上一个展开区域及产品
|
|
|
+ this.formData.list.forEach((element) => {
|
|
|
+ element.product = [];
|
|
|
+ if (element.id == preObj[0].id) {
|
|
|
+ element.isCurrencyArea = false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ // 2.获取当前展开区域及产品
|
|
|
+ item.isCurrencyArea = true;
|
|
|
+ this.axios
|
|
|
+ .get("/api/order_area_list_product", {
|
|
|
+ params: {
|
|
|
+ order_no: this.$route.query.order_no,
|
|
|
+ oa_id: this.$route.query.oa_id,
|
|
|
+ area_id: item.id,
|
|
|
+ type: 2,
|
|
|
+ },
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ if (!item.product) {
|
|
|
+ item.product = [];
|
|
|
+ }
|
|
|
+ item.product = res.data;
|
|
|
+ item.product.forEach((pdt, index) => {
|
|
|
+ pdt.index = index + 1;
|
|
|
+ pdt.special &&
|
|
|
+ pdt.special.length > 0 &&
|
|
|
+ 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.push(element);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+ this.$forceUpdate();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ // 2.获取当前展开区域及产品
|
|
|
+ item.isCurrencyArea = true;
|
|
|
+ this.axios
|
|
|
+ .get("/api/order_area_list_product", {
|
|
|
+ params: {
|
|
|
+ order_no: this.$route.query.order_no,
|
|
|
+ oa_id: this.$route.query.oa_id,
|
|
|
+ area_id: item.id,
|
|
|
+ type: 2,
|
|
|
+ },
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ if (!item.product) {
|
|
|
+ item.product = [];
|
|
|
+ }
|
|
|
+ item.product = res.data;
|
|
|
+ item.product.forEach((pdt, index) => {
|
|
|
+ pdt.index = index + 1;
|
|
|
+ pdt.special &&
|
|
|
+ pdt.special.length > 0 &&
|
|
|
+ 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.push(element);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+ this.$forceUpdate();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ },
|
|
|
+ // 监听属性 类似于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_name1 {
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-start;
|
|
|
+ align-items: center;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ width: 100%;
|
|
|
+ padding: 10px 0;
|
|
|
+ font-size: 14px;
|
|
|
+ div {
|
|
|
+ width: 220px;
|
|
|
+ padding: 5px;
|
|
|
+ span {
|
|
|
+ display: inline-block;
|
|
|
+ min-width: 40px;
|
|
|
+ max-width: 150px;
|
|
|
+ text-align: justify;
|
|
|
+ text-justify: newspaper;
|
|
|
+ word-break: break-all;
|
|
|
+ vertical-align: middle;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .top_search_content {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ }
|
|
|
+ .top_search_form {
|
|
|
+ // width: 800px;
|
|
|
+ // display: flex;
|
|
|
+ // justify-content: space-around;
|
|
|
+ /deep/ .ivu-form-item {
|
|
|
+ display: inline-block;
|
|
|
+ width: 300px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .top_search {
|
|
|
+ padding: 20px 0;
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-start;
|
|
|
+ align-items: center;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ width: 100%;
|
|
|
+ padding: 10px 0;
|
|
|
+ font-size: 14px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-start;
|
|
|
+ align-items: center;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ width: 100%;
|
|
|
+ padding: 10px 0;
|
|
|
+ font-size: 14px;
|
|
|
+ .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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.footer-center {
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ padding: 10px 0;
|
|
|
+}
|
|
|
+.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>
|