Ver Fonte

批量修改放箱号

qukaidi há 3 meses atrás
pai
commit
1631e6c842

+ 8 - 0
src/api/boxManagement/buyContainer/index.js

@@ -357,4 +357,12 @@ export const exportTemplateById = (params) => {
     method: 'get',
     params:params
   })
+}
+// 批量修改放箱号
+export const batchContainerNumber = (data) => {
+  return request({
+    url: '/api/blade-los/tradingBox/batchContainerNumber',
+    method: 'post',
+    data: data
+  })
 }

+ 596 - 516
src/components/dicSelect/main.vue

@@ -1,549 +1,629 @@
 <template>
-    <!-- 中文下拉 -->
-    <div>
-        <div style="display: flex;">
-            <el-tooltip effect="dark" :disabled="!collapseTags"
-                :content="collapseTags ? (value ? value.join(';') : null) : value" placement="top">
-                <el-select ref="mySelect" style="width:100%" v-model="value" @input="inputChange"
-                    :placeholder="'请选择 ' + placeholder" @change="selectChange" @clear="clear" :clearable="clearable"
-                    :multiple="multiple" :filterable="filterable" :remote="remote" :remote-method="remoteMethod"
-                    :loading="loading" :size="size" :disabled="disabled" :collapse-tags="collapseTags"
-                    @visible-change="visibleChange" :allow-create="allowCreate">
-                    <el-option v-for="item in options" :key="item[key]" :label="item[label]"
-                        :value="item[keyValue ? keyValue : label]" :disabled="item.disabled">
-                        <span v-if="slotRight" style="float: left">{{ item[label] }}</span>
-                        <span v-if="slotRight"
-                            style="float: right; color: #8492a6; font-size: 13px; max-width: 200px; white-space: nowrap; overflow: hidden;text-overflow: ellipsis;">{{
-                                item[rightLabel]
-                            }}</span>
-                        <span v-if="diySlot"
-                            style="float: left;white-space: nowrap; overflow: hidden;text-overflow: ellipsis;"
-                            :style="{ 'max-width': (selectWidth - 30) + 'px' }">{{
-                                item[label]
-                            }}</span>
-                    </el-option>
-                </el-select>
-            </el-tooltip>
-            <el-button v-if="searchShow" icon="el-icon-search" size="small" :disabled="disabled" @click="open()" />
-        </div>
-        <el-dialog title="客户" :visible.sync="dialogVisible" width="70%" :before-close="false" @closed="closed"
-            append-to-body>
-            <span>
-                <el-row v-if="treeShow">
-                    <el-col :span="4">
-                        <el-card class="box-card">
-                            <avue-tree ref="tree" :option="treeOption" :data="treeData" @node-click="nodeClick">
-                            </avue-tree>
-                        </el-card>
-
-                    </el-col>
-                    <el-col :span="20">
-                        <avue-crud :option="option" :table-loading="loading" :data="dataList" :page.sync="page"
-                            :search.sync="query" v-model="form" id="out-table" ref="crud" @row-del="rowDel"
-                            @search-change="searchChange" @search-reset="searchReset"
-                            @selection-change="selectionChange" @current-change="currentChange"
-                            @size-change="sizeChange" @on-load="onLoad">
-                        </avue-crud>
-                    </el-col>
-                </el-row>
-                <avue-crud v-else :option="option" :table-loading="loading" :data="dataList" :page.sync="page"
-                    :search.sync="query" v-model="form" id="out-table" ref="crud" @row-del="rowDel"
-                    @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
-                    @current-change="currentChange" @size-change="sizeChange" @on-load="onLoad">
-                </avue-crud>
-            </span>
-            <span slot="footer" class="dialog-footer">
-                <el-button size="small" @click="dialogVisible = false">取 消</el-button>
-                <el-button size="small" type="primary" :disabled="this.selectionList.length != 1" @click="importData">确
-                    定</el-button>
-            </span>
-        </el-dialog>
+  <!-- 中文下拉 -->
+  <div>
+    <div style="display: flex;">
+      <el-tooltip effect="dark" :disabled="!collapseTags" :content="collapseTags ? (value ? value.join(';') : null) : value" placement="top">
+        <el-select
+          ref="mySelect"
+          style="width:100%"
+          v-model="value"
+          @input="inputChange"
+          :placeholder="'请选择 ' + placeholder"
+          @change="selectChange"
+          @clear="clear"
+          :clearable="clearable"
+          :multiple="multiple"
+          :filterable="filterable"
+          :remote="remote"
+          :remote-method="remoteMethod"
+          :loading="loading"
+          :size="size"
+          :disabled="disabled"
+          :collapse-tags="collapseTags"
+          @visible-change="visibleChange"
+          :allow-create="allowCreate"
+        >
+          <el-option
+            v-for="item in options"
+            :key="item[key]"
+            :label="item[label]"
+            :value="item[keyValue ? keyValue : label]"
+            :disabled="item.disabled"
+          >
+            <span v-if="slotRight" style="float: left">{{ item[label] }}</span>
+            <span
+              v-if="slotRight"
+              style="float: right; color: #8492a6; font-size: 13px; max-width: 200px; white-space: nowrap; overflow: hidden;text-overflow: ellipsis;"
+              >{{ item[rightLabel] }}</span
+            >
+            <span
+              v-if="diySlot"
+              style="float: left;white-space: nowrap; overflow: hidden;text-overflow: ellipsis;"
+              :style="{ 'max-width': selectWidth - 30 + 'px' }"
+              >{{ item[label] }}</span
+            >
+          </el-option>
+        </el-select>
+      </el-tooltip>
+      <el-button v-if="searchShow" icon="el-icon-search" size="small" :disabled="disabled" @click="open()" />
+      <el-button v-if="multiple && allBtn" size="small" type="text" :disabled="disabled" @click="allPick()">全选</el-button>
     </div>
+    <el-dialog title="客户" :visible.sync="dialogVisible" width="70%" :before-close="false" @closed="closed" append-to-body>
+      <span>
+        <el-row v-if="treeShow">
+          <el-col :span="4">
+            <el-card class="box-card">
+              <avue-tree ref="tree" :option="treeOption" :data="treeData" @node-click="nodeClick"> </avue-tree>
+            </el-card>
+          </el-col>
+          <el-col :span="20">
+            <avue-crud
+              :option="option"
+              :table-loading="loading"
+              :data="dataList"
+              :page.sync="page"
+              :search.sync="query"
+              v-model="form"
+              id="out-table"
+              ref="crud"
+              @row-del="rowDel"
+              @search-change="searchChange"
+              @search-reset="searchReset"
+              @selection-change="selectionChange"
+              @current-change="currentChange"
+              @size-change="sizeChange"
+              @on-load="onLoad"
+            >
+            </avue-crud>
+          </el-col>
+        </el-row>
+        <avue-crud
+          v-else
+          :option="option"
+          :table-loading="loading"
+          :data="dataList"
+          :page.sync="page"
+          :search.sync="query"
+          v-model="form"
+          id="out-table"
+          ref="crud"
+          @row-del="rowDel"
+          @search-change="searchChange"
+          @search-reset="searchReset"
+          @selection-change="selectionChange"
+          @current-change="currentChange"
+          @size-change="sizeChange"
+          @on-load="onLoad"
+        >
+        </avue-crud>
+      </span>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="small" @click="dialogVisible = false">取 消</el-button>
+        <el-button size="small" type="primary" :disabled="this.selectionList.length != 1" @click="importData">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
 </template>
 
 <script>
 import { getDicinit } from "@/api/dicSelect/index";
-import { bcorpstypedefineList } from "@/api/iosBasicData/bcorpstypedefine"
+import { bcorpstypedefineList } from "@/api/iosBasicData/bcorpstypedefine";
 export default {
-    data() {
-        return {
-            dialogVisible: false,
-            options: [],
-            loading: false,
-            data: {},
-            form: {},
-            query: {},
-            page: {
-                pageSize: 10,
-                currentPage: 1,
-                total: 0
-            },
-            dataList: [],
-            selectionList: [],
-            option: {
-                height: 400,
-                calcHeight: 30,
-                tip: false,
-                searchIcon: true,
-                searchIndex: 3,
-                searchShow: true,
-                searchMenuSpan: 6,
-                border: true,
-                index: true,
-                selection: true,
-                header: false,
-                menu: false,
-                column: [
-                    {
-                        label: "编码",
-                        prop: "code",
-                        search: true,
-                        rules: [{
-                            required: true,
-                            message: "请输入单位编码",
-                            trigger: "blur"
-                        }],
-                        overHidden: true,
-                    },
-                    {
-                        label: "中文名称",
-                        prop: "cnName",
-                        search: true,
-                        rules: [{
-                            required: true,
-                            message: "请输入中文名称",
-                            trigger: "blur"
-                        }],
-                        overHidden: true,
-                    },
-                    {
-                        label: "英文名称",
-                        prop: "enName",
-                        search: true,
-                        rules: [{
-                            required: true,
-                            message: "请输入英文名称",
-                            trigger: "blur"
-                        }],
-                        overHidden: true,
-                    },
-                    {
-                        label: "状态",
-                        prop: "status",
-                        type: 'select',
-                        search: true,
-                        dicData: [{
-                            label: '启用',
-                            value: 0
-                        }, {
-                            label: '停用',
-                            value: 1
-                        }],
-                        rules: [{
-                            required: true,
-                            message: "请输入状态",
-                            trigger: "blur"
-                        }],
-                        overHidden: true,
-                    },
-                    {
-                        label: "备注",
-                        prop: "remarks",
-                        span: 24,
-                        type: 'textarea',
-                        width: "180",
-                        slot: true,
-                        minRows: 3,
-                        overHidden: true,
-
-                    },
-                ],
-                designer: null,
-            },
-            treeOption: {
-                nodeKey: "id",
-                lazy: true,
-                treeLoad: function (node, resolve) {
-                    const parentId = node.level === 0 ? 0 : node.data.id;
-                },
-                addBtn: false,
-                menu: false,
-                size: "small",
-                props: {
-                    labelText: "标题",
-                    label: "cnName",
-                    value: "id",
-                    children: "children"
-                }
-            },
-            treeData: [],
-            selectWidth: 0,
-            obtained: true,
+  data() {
+    return {
+      dialogVisible: false,
+      options: [],
+      loading: false,
+      data: {},
+      form: {},
+      query: {},
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      dataList: [],
+      selectionList: [],
+      option: {
+        height: 400,
+        calcHeight: 30,
+        tip: false,
+        searchIcon: true,
+        searchIndex: 3,
+        searchShow: true,
+        searchMenuSpan: 6,
+        border: true,
+        index: true,
+        selection: true,
+        header: false,
+        menu: false,
+        column: [
+          {
+            label: "编码",
+            prop: "code",
+            search: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入单位编码",
+                trigger: "blur"
+              }
+            ],
+            overHidden: true
+          },
+          {
+            label: "中文名称",
+            prop: "cnName",
+            search: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入中文名称",
+                trigger: "blur"
+              }
+            ],
+            overHidden: true
+          },
+          {
+            label: "英文名称",
+            prop: "enName",
+            search: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入英文名称",
+                trigger: "blur"
+              }
+            ],
+            overHidden: true
+          },
+          {
+            label: "状态",
+            prop: "status",
+            type: "select",
+            search: true,
+            dicData: [
+              {
+                label: "启用",
+                value: 0
+              },
+              {
+                label: "停用",
+                value: 1
+              }
+            ],
+            rules: [
+              {
+                required: true,
+                message: "请输入状态",
+                trigger: "blur"
+              }
+            ],
+            overHidden: true
+          },
+          {
+            label: "备注",
+            prop: "remarks",
+            span: 24,
+            type: "textarea",
+            width: "180",
+            slot: true,
+            minRows: 3,
+            overHidden: true
+          }
+        ],
+        designer: null
+      },
+      treeOption: {
+        nodeKey: "id",
+        lazy: true,
+        treeLoad: function(node, resolve) {
+          const parentId = node.level === 0 ? 0 : node.data.id;
+        },
+        addBtn: false,
+        menu: false,
+        size: "small",
+        props: {
+          labelText: "标题",
+          label: "cnName",
+          value: "id",
+          children: "children"
         }
+      },
+      treeData: [],
+      selectWidth: 0,
+      obtained: true
+    };
+  },
+  props: {
+    activateCreated: {
+      type: Boolean,
+      default: true
     },
-    props: {
-        activateCreated: {
-            type: Boolean,
-            default: true
-        },
-        slotRight: {
-            type: Boolean,
-            default: false
-        },
-        diySlot: {
-            type: Boolean,
-            default: false
-        },
-        key: {
-            type: [String, Number],
-            default: null
-        },
-        label: {
-            type: String,
-            default: ''
-        },
-        rightLabel: {
-            type: String,
-            default: ''
-        },
-        keyValue: {
-            type: [String, Number],
-            default: null
-        },
-        res: {
-            type: String,
-            default: ''
-        },
-        placeholder: {
-            type: String,
-            default: '请输入'
-        },
-        clearable: {
-            type: Boolean,
-            default: true
-        },
-        value: {
-            type: [String, Number],
-            default: ''
-        },
-        method: {
-            type: String,
-            default: 'GET'
-        },
-        url: {
-            type: String,
-            default: ''
-        },
-        dataName: {
-            type: String,
-            default: ''
-        },
-        multiple: {
-            type: Boolean,
-            default: false
-        },
-        filterable: {
-            type: Boolean,
-            default: false
-        },
-        remote: {
-            type: Boolean,
-            default: false
-        },
-        size: {
-            type: String,
-            default: 'small'
-        },
-        disabled: {
-            type: Boolean,
-            default: false
-        },
-        searchShow: {
-            type: Boolean,
-            default: false
-        },
-        treeShow: {
-            type: Boolean,
-            default: false
-        },
-        mockData: {
-            type: Array,
-            default: function () {
-                return [];
-            }
-        },
-        collapseTags: {
-            type: Boolean,
-            default: false
-        },
-        default: {
-            type: Boolean,
-            default: false
-        },
-        defaultValue: {
-            type: String,
-            default: ''
-        },
-        disabledLabel: {
-            type: String,
-            default: ''
-        },
-        dataType: {
-            type: String,
-            default: ''
-        },
-        multipleStrings: {
-            type: Boolean,
-            default: false
-        },
-        allowCreate: {
-            type: Boolean,
-            default: false
-        },
-        initData: {
-            type: Boolean,
-            default: false
-        }
+    slotRight: {
+      type: Boolean,
+      default: false
+    },
+    diySlot: {
+      type: Boolean,
+      default: false
+    },
+    key: {
+      type: [String, Number],
+      default: null
+    },
+    label: {
+      type: String,
+      default: ""
+    },
+    rightLabel: {
+      type: String,
+      default: ""
+    },
+    keyValue: {
+      type: [String, Number],
+      default: null
+    },
+    res: {
+      type: String,
+      default: ""
+    },
+    placeholder: {
+      type: String,
+      default: "请输入"
+    },
+    clearable: {
+      type: Boolean,
+      default: true
+    },
+    value: {
+      type: [String, Number],
+      default: ""
+    },
+    method: {
+      type: String,
+      default: "GET"
+    },
+    url: {
+      type: String,
+      default: ""
+    },
+    dataName: {
+      type: String,
+      default: ""
+    },
+    multiple: {
+      type: Boolean,
+      default: false
+    },
+    filterable: {
+      type: Boolean,
+      default: false
+    },
+    remote: {
+      type: Boolean,
+      default: false
+    },
+    size: {
+      type: String,
+      default: "small"
+    },
+    disabled: {
+      type: Boolean,
+      default: false
+    },
+    searchShow: {
+      type: Boolean,
+      default: false
+    },
+    treeShow: {
+      type: Boolean,
+      default: false
+    },
+    mockData: {
+      type: Array,
+      default: function() {
+        return [];
+      }
+    },
+    collapseTags: {
+      type: Boolean,
+      default: false
+    },
+    default: {
+      type: Boolean,
+      default: false
+    },
+    defaultValue: {
+      type: String,
+      default: ""
+    },
+    disabledLabel: {
+      type: String,
+      default: ""
+    },
+    dataType: {
+      type: String,
+      default: ""
+    },
+    multipleStrings: {
+      type: Boolean,
+      default: false
     },
-    model: {
-        prop: "value",
-        event: "selectedValue"
+    allowCreate: {
+      type: Boolean,
+      default: false
     },
-    created() {
+    initData: {
+      type: Boolean,
+      default: false
     },
-    mounted() {
-        if (this.activateCreated) {
-            if (this.initData) {
-                this.getDicData()
+    allBtn: {
+      type: Boolean,
+      default: false
+    }
+  },
+  model: {
+    prop: "value",
+    event: "selectedValue"
+  },
+  created() {},
+  mounted() {
+    if (this.activateCreated) {
+      if (this.initData) {
+        this.getDicData();
+      }
+    } else {
+      this.options = this.mockData;
+    }
+    if (this.diySlot) {
+      this.$nextTick(() => {
+        this.selectWidth = this.$refs.mySelect.$el.offsetWidth;
+        this.$refs.mySelect.$el.querySelector(".el-select-dropdown").style.width = `${this.selectWidth}px`;
+      });
+    }
+  },
+  watch: {
+    value: {
+      handler(val, oldVal) {
+        if (this.dataType == "string") {
+          if (val) {
+            if (typeof val == "string") {
+              this.value = val.split(",");
             }
-        } else {
-            this.options = this.mockData
+          } else {
+            this.value = [];
+          }
         }
-        if (this.diySlot) {
-            this.$nextTick(() => {
-                this.selectWidth = this.$refs.mySelect.$el.offsetWidth;
-                this.$refs.mySelect.$el.querySelector('.el-select-dropdown').style.width = `${this.selectWidth}px`;
-            });
+      },
+      deep: true,
+      immediate: true
+    }
+  },
+  methods: {
+    visibleChange(status) {
+      if (status) {
+        if (this.options.length == 0) {
+          this.data = {};
+          this.getDicData();
         }
+        this.$emit("visibleChange");
+      }
     },
-    watch: {
-        value: {
-            handler(val, oldVal) {
-                if (this.dataType == 'string') {
-                    if (val) {
-                        if (typeof val == 'string') {
-                            this.value = val.split(',')
-                        }
-                    } else {
-                        this.value = []
-                    }
-                }
-            },
-            deep: true,
-            immediate: true
+    inputChange() {
+      if (this.dataType == "string") {
+        if (this.value && this.value.length) {
+          this.$emit("selectedValue", this.value.join(","));
+        } else {
+          this.$emit("selectedValue", null);
         }
+      } else {
+        this.$emit("selectedValue", this.value);
+      }
     },
-    methods: {
-        visibleChange(status) {
-            if (status) {
-                if (this.options.length == 0) {
-                    this.data = {}
-                    this.getDicData()
-                }
-                this.$emit('visibleChange')
-            }
-        },
-        inputChange() {
-            if (this.dataType == 'string') {
-                if (this.value && this.value.length) {
-                    this.$emit('selectedValue', this.value.join(','))
-                } else {
-                    this.$emit('selectedValue', null)
+    open() {
+      this.dialogVisible = true;
+      this.getTree();
+    },
+    // 获取客户类别
+    getTree() {
+      bcorpstypedefineList(1, 50).then(res => {
+        this.treeData = res.data.data.records;
+      });
+    },
+    nodeClick(data) {
+      this.query.corpTypeName = data.cnName;
+      this.onLoad(this.page, this.query);
+    },
+    closed() {
+      this.query = {};
+      this.selectionList = [];
+    },
+    remoteMethod(query) {
+      if (query !== "") {
+        setTimeout(() => {
+          this.data[this.dataName] = query;
+          this.getDicData();
+        }, 200);
+      } else {
+        setTimeout(() => {
+          this.data = this.$options.data().data;
+          this.getDicData();
+        }, 200);
+      }
+    },
+    getDicData() {
+      if (this.url) {
+        this.loading = true;
+        getDicinit(this.method, this.url, this.data)
+          .then(res => {
+            if (this.res) {
+              res.data.data[this.res].forEach(e => {
+                if (this.disabledLabel.split(",").some(item => item == e[this.label])) {
+                  e.disabled = true;
                 }
+              });
+              this.options = res.data.data[this.res];
             } else {
-                this.$emit('selectedValue', this.value)
-            }
-
-        },
-        open() {
-            this.dialogVisible = true
-            this.getTree()
-        },
-        // 获取客户类别
-        getTree() {
-            bcorpstypedefineList(1, 50).then(res => {
-                this.treeData = res.data.data.records
-            })
-        },
-        nodeClick(data) {
-            this.query.corpTypeName = data.cnName
-            this.onLoad(this.page, this.query);
-        },
-        closed() {
-            this.query = {}
-            this.selectionList = []
-        },
-        remoteMethod(query) {
-            if (query !== '') {
-                setTimeout(() => {
-                    this.data[this.dataName] = query
-                    this.getDicData()
-                }, 200);
-            } else {
-                setTimeout(() => {
-                    this.data = this.$options.data().data
-                    this.getDicData()
-                }, 200);
+              res.data.data.forEach(e => {
+                if (this.disabledLabel.split(",").some(item => item == e[this.label])) {
+                  e.disabled = true;
+                }
+              });
+              this.options = res.data.data;
             }
-        },
-        getDicData() {
-            if (this.url) {
-                this.loading = true
-                getDicinit(this.method, this.url, this.data).then(res => {
-                    if (this.res) {
-                        res.data.data[this.res].forEach(e => {
-                            if (this.disabledLabel.split(",").some(item => item == e[this.label])) {
-                                e.disabled = true
-                            }
-                        })
-                        this.options = res.data.data[this.res]
-                    } else {
-                        res.data.data.forEach(e => {
-                            if (this.disabledLabel.split(",").some(item => item == e[this.label])) {
-                                e.disabled = true
-                            }
-                        })
-                        this.options = res.data.data
-                    }
-                }).finally(() => {
-                    this.loading = false;
-                })
-            } else {
-                this.options = this.mockData
+          })
+          .finally(() => {
+            this.loading = false;
+          });
+      } else {
+        this.options = this.mockData;
+      }
+    },
+    IdGetDicData(data) {
+      this.loading = true;
+      getDicinit(this.method, this.url, data)
+        .then(res => {
+          if (this.res) {
+            this.options = res.data.data[this.res];
+          } else {
+            this.options = res.data.data;
+          }
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    selectChange(row) {
+      if (this.dataType == "string") {
+        let data = [];
+        let ids = [];
+        let multipleData = [];
+        this.options.forEach(e => {
+          if (row.length) {
+            if (this.keyValue) {
+              row.forEach(item => {
+                if (item == e[this.keyValue]) {
+                  data.push(e[this.label]);
+                  this.$emit("selectChange", data.join(","));
+                }
+              });
             }
-
-        },
-        IdGetDicData(data) {
-            this.loading = true
-            getDicinit(this.method, this.url, data).then(res => {
-                if (this.res) {
-                    this.options = res.data.data[this.res]
-                } else {
-                    this.options = res.data.data
+            if (this.label) {
+              row.forEach(item => {
+                if (item == e[this.label]) {
+                  ids.push(e.id);
+                  data.push(e[this.label]);
+                  if (this.multipleStrings) {
+                    multipleData.push(e);
+                    this.$emit("selectChange", {
+                      ids: ids.join(","),
+                      names: data.join(","),
+                      multipleData: multipleData
+                    });
+                  } else {
+                    this.$emit("selectChange", {
+                      ids: ids.join(","),
+                      names: data.join(",")
+                    });
+                  }
                 }
-            }).finally(() => {
-                this.loading = false;
-            })
-        },
-        selectChange(row) {
-            if (this.dataType == 'string') {
-                let data = []
-                let ids = []
-                let multipleData = []
-                this.options.forEach(e => {
-                    if (row.length) {
-                        if (this.keyValue) {
-                            row.forEach(item => {
-                                if (item == e[this.keyValue]) {
-                                    data.push(e[this.label])
-                                    this.$emit('selectChange', data.join(','))
-                                }
-                            })
-
-                        }
-                        if (this.label) {
-                            row.forEach(item => {
-                                if (item == e[this.label]) {
-                                    ids.push(e.id)
-                                    data.push(e[this.label])
-                                    if (this.multipleStrings) {
-                                        multipleData.push(e)
-                                        this.$emit('selectChange', {
-                                            ids: ids.join(','),
-                                            names: data.join(','),
-                                            multipleData: multipleData
-                                        })
-                                    } else {
-                                        this.$emit('selectChange', {
-                                            ids: ids.join(','),
-                                            names: data.join(','),
-                                        })
-                                    }
-
-                                }
-
-                            })
-                        }
-                    } else {
-                        this.$emit('selectChange', null)
-                    }
-
-                })
-            } else {
-                this.options.forEach(e => {
-                    if (this.keyValue) {
-                        if (row == e[this.keyValue]) {
-                            this.$emit('selectChange', e)
-                        }
-                    }
-                    if (this.label) {
-                        if (row == e[this.label]) {
-                            this.$emit('selectChange', e)
-                        }
-                    }
-                })
+              });
             }
-
-        },
-        clear() {
-            if (this.url) {
-                this.data = this.$options.data().data
-                this.getDicData()
+          } else {
+            this.$emit("selectChange", null);
+          }
+        });
+      } else {
+        this.options.forEach(e => {
+          if (this.keyValue) {
+            if (row == e[this.keyValue]) {
+              this.$emit("selectChange", e);
             }
-            this.$emit('selectChange', null)
-        },
-        importData() {
-            this.dialogVisible = false
-            this.$emit('selectChange', this.selectionList[0])
-        },
-        searchChange(params, done) {
-            this.page.currentPage = 1;
-            this.onLoad(this.page, this.query);
-            done();
-        },
-        selectionChange(list) {
-            this.selectionList = list;
-        },
-        currentChange(currentPage) {
-            this.page.currentPage = currentPage;
-        },
-        sizeChange(pageSize) {
-            this.page.pageSize = pageSize;
-        },
-        refreshChange() {
-            this.onLoad(this.page, this.query);
-        },
-        onLoad(page, params = {}) {
-            let obj = {}
-            obj = {
-                current: page.currentPage,
-                size: page.pageSize,
-                ...Object.assign(params, this.query),
+          }
+          if (this.label) {
+            if (row == e[this.label]) {
+              this.$emit("selectChange", e);
             }
-            this.loading = true
-            getDicinit(this.method, this.url, obj).then(res => {
-                this.dataList = res.data.data.records
-                this.page.total = res.data.data.total;
-            }).finally(() => {
-                this.loading = false;
-            })
-        },
+          }
+        });
+      }
+    },
+    clear() {
+      if (this.url) {
+        this.data = this.$options.data().data;
+        this.getDicData();
+      }
+      this.$emit("selectChange", null);
+    },
+    allPick() {
+      if (this.label) {
+        let data = [];
+        let ids = [];
+        let multipleData = [];
+        this.options.forEach(e => {
+          ids.push(e.id);
+          data.push(e[this.label]);
+          if (this.multipleStrings) {
+            multipleData.push(e);
+            this.$emit("selectChange", {
+              ids: ids.join(","),
+              names: data.join(","),
+              multipleData: multipleData
+            });
+          } else {
+            this.$emit("selectChange", {
+              ids: ids.join(","),
+              names: data.join(",")
+            });
+          }
+        });
+      }
+    },
+    importData() {
+      this.dialogVisible = false;
+      this.$emit("selectChange", this.selectionList[0]);
+    },
+    searchChange(params, done) {
+      this.page.currentPage = 1;
+      this.onLoad(this.page, this.query);
+      done();
+    },
+    selectionChange(list) {
+      this.selectionList = list;
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}) {
+      let obj = {};
+      obj = {
+        current: page.currentPage,
+        size: page.pageSize,
+        ...Object.assign(params, this.query)
+      };
+      this.loading = true;
+      getDicinit(this.method, this.url, obj)
+        .then(res => {
+          this.dataList = res.data.data.records;
+          this.page.total = res.data.data.total;
+        })
+        .finally(() => {
+          this.loading = false;
+        });
     }
-}
+  }
+};
 </script>
 
 <style lang="scss" scoped>
 /deep/ .el-col-md-8 {
-    width: 24.33333%;
+  width: 24.33333%;
 }
 </style>

+ 1 - 1
src/styles/variables.scss

@@ -134,5 +134,5 @@ p {
   padding-right: 2px;
 }
 .el-button--text{
-  padding: 0 5px;
+  padding: 0;
 }

+ 3 - 1
src/views/boxManagement/LSCabinet/index.vue

@@ -195,7 +195,9 @@ export default {
   },
   methods: {
     searchReset() {
-      this.query = {};
+      this.query = {
+        longTermDays:0
+      };
     },
     // 搜索按钮点击
     searchChange(params, done) {

+ 7 - 8
src/views/boxManagement/containerNumber/detailsPage.vue

@@ -568,7 +568,6 @@ import dicSelect from "@/components/dicSelect/main";
 import checkSchedule from "@/components/checkH/checkSchedule.vue";
 import businessReports from "@/components/tradeAgency/businessReports.vue";
 import reports from "@/components/tradeAgency/reports.vue";
-import changeCN from "./components/changeCn.vue";
 import { bcurrencyGetExrate } from "@/api/iosBasicData/rateManagement";
 import { getToken } from "@/util/auth";
 import _ from "lodash";
@@ -1440,16 +1439,16 @@ export default {
           }
         ],
         column: [
-          // {
-          //   label: "提单号",
-          //   prop: "mblno",
-          //   width: 100,
-          //   overHidden: true
-          // },
+          {
+            label: "提单号",
+            prop: "mblno",
+            width: 120,
+            overHidden: true
+          },
           {
             label: "分单号",
             prop: "hblno",
-            width: 200,
+            width: 120,
             overHidden: true
           },
           {

+ 6 - 0
src/views/iosBasicData/OceanFreightImport/bills/assembly/DistributionBox/containers.vue

@@ -424,6 +424,12 @@ export default {
             overHidden: true
           },
           {
+            label: "放箱号",
+            prop: "containerNumber",
+            width: 100,
+            overHidden: true
+          },
+          {
             label: "PODCY",
             prop: "podStationCname",
             width: "140",

+ 30 - 10
src/views/iosBasicData/OceanFreightImport/bills/index.vue

@@ -206,16 +206,19 @@
             </span>
           </div>
         </template>
-        <!-- <template slot="status" slot-scope="{ row }">
-                    <div>
-                        <span v-if="row.status == item.dictKey" v-for="(item, index) in auditStatusList" :key="index"
-                            :style="{ 'background-color': item.colour }"
-                            style="color: #fff;border-radius: 30px;padding: 2px 15px;text-align: center;width: 80px;">
-                            {{ item.dictValue }}
-                        </span>
-                    </div>
-
-                </template> -->
+        <template slot="status" slot-scope="{ row }">
+          <div>
+            <span
+              v-if="row.status == item.dictKey"
+              v-for="(item, index) in auditStatusList"
+              :key="index"
+              :style="{ 'background-color': item.colour }"
+              style="color: #fff;border-radius: 30px;padding: 2px 15px;text-align: center;width: 80px;"
+            >
+              {{ item.dictValue }}
+            </span>
+          </div>
+        </template>
         <template slot="corpCnName" slot-scope="scope">
           <span
             style="color: #1e9fff;cursor: pointer;width: 100%;overflow:hidden;white-space: nowrap;text-overflow: ellipsis;"
@@ -1871,6 +1874,23 @@ export default {
       });
     },
     rowStyle({ row, column, rowIndex, columnIndex }) {
+      // if (row.status == 2) {
+      //   return {
+      //     // color: '#fff',
+      //     backgroundColor: "#fbd26a"
+      //   };
+      // }
+      if (row.status == 3) {
+        return {
+          // color: '#fff',
+          backgroundColor: "#ced094"
+        };
+      }
+      // if (row.status == 4) {
+      //   return {
+      //     backgroundColor: "#fbc4c4"
+      //   };
+      // }
       if (rowIndex % 2 != 0) {
         return {
           backgroundColor: "#ecf5ff"

+ 2 - 2
src/views/iosBasicData/SeafreightExportF/bills/assembly/EntrustmentLnformation/precontainers.vue

@@ -55,7 +55,7 @@
           size="mini"
           type="text"
           @click.stop="pick(row)"
-          :disabled="seeDisabled"
+          :disabled="seeDisabled||!assemblyForm.hblno"
         >
           选择
         </el-button>
@@ -64,7 +64,7 @@
           size="mini"
           type="text"
           @click.stop="rowRevoke(row)"
-          :disabled="seeDisabled"
+          :disabled="seeDisabled||!assemblyForm.hblno"
         >
           撤销
         </el-button>

+ 3 - 1
src/views/iosBasicData/SeafreightExportF/bills/assembly/components/costTemplate.vue

@@ -5,7 +5,7 @@
         <tempalte slot="shippingCompanyCname">
           <dic-select
             v-model="form.shippingCompanyCname"
-            placeholder="港口"
+            placeholder="船公司"
             key="id"
             label="cnName"
             url="/blade-los/bcorps/listAll?status=0&corpTypeName=船公司"
@@ -16,6 +16,8 @@
             dataType="string"
             @selectChange="dicChange('shippingCompanyCname', $event)"
             :multipleStrings="true"
+            :allBtn="true"
+            :initData="true"
           ></dic-select>
         </tempalte>
         <tempalte slot="branchName">

+ 30 - 9
src/views/iosBasicData/SeafreightExportF/bills/index.vue

@@ -200,15 +200,19 @@
             </span>
           </div>
         </template>
-        <!-- <template slot="status" slot-scope="{ row }">
-                    <div>
-                        <span v-if="row.status == item.dictKey" v-for="(item, index) in auditStatusList" :key="index"
-                            :style="{ 'background-color': item.colour }"
-                            style="color: #fff;border-radius: 30px;padding: 2px 15px;text-align: center;">
-                            {{ item.dictValue }}
-                        </span>
-                    </div>
-                </template> -->
+        <template slot="status" slot-scope="{ row }">
+          <div>
+            <span
+              v-if="row.status == item.dictKey"
+              v-for="(item, index) in auditStatusList"
+              :key="index"
+              :style="{ 'background-color': item.colour }"
+              style="color: #fff;border-radius: 30px;padding: 2px 15px;text-align: center;"
+            >
+              {{ item.dictValue }}
+            </span>
+          </div>
+        </template>
         <template slot="corpCnName" slot-scope="scope">
           <span
             style="color: #1e9fff;cursor: pointer;width: 100%;overflow:hidden;white-space: nowrap;text-overflow: ellipsis;"
@@ -1996,6 +2000,23 @@ export default {
       });
     },
     rowStyle({ row, column, rowIndex, columnIndex }) {
+      // if (row.status == 2) {
+      //   return {
+      //     // color: '#fff',
+      //     backgroundColor: "#fbd26a"
+      //   };
+      // }
+      if (row.status == 3) {
+        return {
+          // color: '#fff',
+          backgroundColor: "#ced094"
+        };
+      }
+      // if (row.status == 4) {
+      //   return {
+      //     backgroundColor: "#fbc4c4"
+      //   };
+      // }
       if (rowIndex % 2 != 0) {
         return {
           backgroundColor: "#ecf5ff"

+ 214 - 0
src/views/iosBasicData/financialManagement/finstlbills/components/viewMore.vue

@@ -0,0 +1,214 @@
+<template>
+  <div>
+    <el-dialog title="费用信息" :visible.sync="dialogVisible" append-to-body width="50%" :before-close="handleClose">
+      <span style="font-size:18px;font-weight:600;margin-left:10px;">
+        <span style="color: #67C23A;margin-right: 10px;"> 应收本币:{{ form.amountDr || 0 }}元 </span>
+        <span style="color: #E6A23C;margin-right: 10px;"> 应付本币:{{ form.amountCr || 0 }}元 </span>
+        <span style="color: #67C23A;margin-right: 10px;"> 应收外币:{{ form.amountDrUsd || 0 }}元 </span>
+        <span style="color: #E6A23C;margin-right: 10px;"> 应付外币:{{ form.amountCrUsd || 0 }}元 </span>
+      </span>
+      <avue-crud
+        v-if="dialogVisible"
+        :option="option"
+        :data="pageData"
+        ref="crud"
+        :page.sync="page"
+        @size-change="sizeChange"
+        @current-change="currentChange"
+        @selection-change="selectionChange"
+      >
+      </avue-crud>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false" size="mini">取 消</el-button>
+        <el-button type="primary" @click="submit" size="mini">拆 单</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { selectComplyWithData, splitBoxNumber } from "@/api/iosBasicData/bills";
+export default {
+  props: {},
+  data() {
+    return {
+      allData: [],
+      pageData: [],
+      form: {},
+      dialogVisible: false,
+      loading: false,
+      option: {
+        height: "600px",
+        calcHeight: 30,
+        menuWidth: 60,
+        tip: false,
+        menu: false,
+        border: true,
+        addBtn: false,
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        refreshBtn: false,
+        header: false,
+        index: true,
+        selection: true,
+        align: "center",
+        column: [
+          {
+            label: "所属公司",
+            prop: "branchName",
+            width: 120,
+            overHidden: true
+          },
+          {
+            label: "客户名称",
+            prop: "corpCnName",
+            width: 120,
+            overHidden: true
+          },
+          {
+            label: "收付",
+            prop: "dc",
+            width: 60,
+            type: "select",
+            dicData: [
+              {
+                label: "收",
+                value: "D"
+              },
+              {
+                label: "付",
+                value: "C"
+              }
+            ],
+            overHidden: true
+          },
+          {
+            label: "费用名称",
+            prop: "feeCnName",
+            width: 80,
+            overHidden: true
+          },
+          {
+            label: "对账金额",
+            prop: "currentStlAmount",
+            width: 100,
+            overHidden: true
+          },
+          {
+            label: "币别",
+            prop: "currentStlCurCode",
+            width: 60,
+            overHidden: true
+          },
+          {
+            label: "汇率",
+            prop: "currentStlExrate",
+            width: 80,
+            overHidden: true
+          },
+          {
+            label: "MB/L NO",
+            prop: "mblno",
+            width: 100,
+            overHidden: true
+          },
+          {
+            label: "HB/L NO",
+            prop: "hblno",
+            width: 100,
+            overHidden: true
+          },
+
+          {
+            label: "起运港",
+            prop: "polCnName",
+            width: 100,
+            overHidden: true
+          },
+          {
+            label: "目的港",
+            prop: "podCnName",
+            width: 80,
+            overHidden: true
+          },
+          {
+            label: "箱型箱量",
+            prop: "quantityCntrDescr",
+            width: 80,
+            overHidden: true
+          },
+          {
+            label: "船名",
+            prop: "vesselEnName",
+            width: 80,
+            overHidden: true
+          },
+          {
+            label: "航次",
+            prop: "voyageNo",
+            width: 80,
+            overHidden: true
+          },
+          {
+            label: "备注",
+            prop: "remarks",
+            width: 120,
+            overHidden: true
+          }
+        ]
+      },
+      page: {
+        currentPage: 1,
+        total: 0,
+        pageSize: 50
+      }
+    };
+  },
+  created() {
+  },
+  methods: {
+    openDialog(row, list) {
+      this.dialogVisible = true;
+      this.form = {};
+      this.allData = [];
+      this.page = {
+        currentPage: 1,
+        total: 0,
+        pageSize: 50
+      };
+      this.form = row;
+      this.allData = list;
+      this.getList();
+    },
+    sizeChange(val) {
+      this.page.currentPage = 1;
+      this.page.pageSize = val;
+      this.getList();
+    },
+    currentChange(val) {
+      this.page.currentPage = val;
+      this.getList();
+    },
+    getList() {
+      const start = (this.page.currentPage - 1) * this.page.pageSize;
+      const end = start + this.page.pageSize;
+      this.pageData = this.allData.slice(start, end);
+    }
+  }
+};
+</script>
+
+<style scoped>
+::v-deep#out-table .back-one {
+  background: #ecf5ff !important;
+  text-align: center;
+  padding: 4px 0;
+}
+
+::v-deep#out-table .back-two {
+  background: #ecf5ff !important;
+  text-align: center;
+  padding: 4px 0;
+}
+</style>

+ 9 - 9
src/views/iosBasicData/financialManagement/finstlbills/detailsPage.vue

@@ -80,22 +80,20 @@
                   @saveColumn="saveColumn('crud', 'option', 'optionBack', 492)"
                 >
                   <template slot="menuLeft">
-                    <el-button
-                      size="small"
-                      type="danger"
-                      style="margin-left: 10px"
-                      :disabled="editDisabled || handleSelectionData.length == 0"
-                      @click="batchDeletefun"
+                    <el-button size="small" type="danger" :disabled="editDisabled || handleSelectionData.length == 0" @click="batchDeletefun"
                       >选定删除
                     </el-button>
-                    <el-button size="small" type="danger" style="margin-left: 10px" :disabled="editDisabled" @click="allDelete">全部删除 </el-button>
-                    <span style="font-size:18px;font-weight:600;margin-left:10px;">
+                    <el-button size="small" type="danger" style="margin-right: 10px" :disabled="editDisabled" @click="allDelete">全部删除 </el-button>
+                    <span style="font-size:18px;font-weight:600;">
                       <span style="color: #67C23A;margin-right: 10px;"> 应收本币:{{ form.amountDr || 0 }}元 </span>
                       <span style="color: #E6A23C;margin-right: 10px;"> 应付本币:{{ form.amountCr || 0 }}元 </span>
                       <span style="color: #67C23A;margin-right: 10px;"> 应收外币:{{ form.amountDrUsd || 0 }}元 </span>
                       <span style="color: #E6A23C;margin-right: 10px;"> 应付外币:{{ form.amountCrUsd || 0 }}元 </span>
                     </span>
                   </template>
+                  <template slot="page">
+                    <el-button type="text" @click="viewMore">查看更多</el-button>
+                  </template>
                 </avue-crud>
               </trade-card>
             </el-col>
@@ -295,6 +293,7 @@
 
     <!--报表组件-->
     <reportContainer ref="reportContainer"></reportContainer>
+    <view-more ref="viewMore"></view-more>
   </div>
 </template>
 
@@ -320,8 +319,9 @@ import reportContainer from "@/views/iosBasicData/report-container/report-contai
 import { getList as getreportsList, reportsGetReportData } from "@/api/iosBasicData/reports";
 import dicSelect from "@/components/dicSelect/main";
 import { getToken } from "@/util/auth";
+import viewMore from "./components/viewMore.vue";
 export default {
-  components: { reportContainer, reportformsList, reports, SearchQuery, expand, finstlbillsitems, dicSelect },
+  components: { reportContainer, reportformsList, reports, SearchQuery, expand, finstlbillsitems, dicSelect, viewMore },
   props: {
     detailData: {
       type: Object

+ 59 - 3
src/views/ow/owPut/detailsPage.vue

@@ -220,6 +220,36 @@
                   style="width: 100%;"
                 ></el-input-number>
               </template>
+              <template slot-scope="{}" slot="cancelNumberLabel">
+                <span style="color: #F56C6C;">取消箱量:</span>
+              </template>
+              <template slot="cancelNumber">
+                <el-input-number
+                  v-model="form.cancelNumber"
+                  :disabled="fixData || (fixData && form.whetherEnable == '是')"
+                  :min="0"
+                  :max="form.boxNumber - form.suitcaseNum"
+                  :precision="0"
+                  :controls="false"
+                  placeholder="请输入 取消箱量"
+                  style="width: 100%;"
+                  class="error-input"
+                ></el-input-number>
+              </template>
+              <template slot-scope="{}" slot="boxTubeRemarksLabel">
+                <span style="color: #F56C6C;">箱管备注:</span>
+              </template>
+              <template slot="boxTubeRemarks">
+                <el-input
+                  v-model="form.boxTubeRemarks"
+                  :disabled="editDisabled || (fixData && form.whetherEnable == '是')"
+                  type="textarea"
+                  :autosize="{ minRows: 2, maxRows: 4 }"
+                  placeholder="请输入 箱管备注"
+                  style="width: 100%;"
+                  class="error-input"
+                ></el-input>
+              </template>
             </avue-form>
           </trade-card>
           <trade-card title="箱明细">
@@ -274,7 +304,7 @@
                 </el-button> -->
                 <el-tag style="margin-right: 8px;">
                   空箱进场:
-                  {{ form.tradingBoxItemsList.filter(item => item.status == "待使用").length || 0 }}
+                  {{ form.tradingBoxItemsList.filter(item => item.status != "作废").length || 0 }}
                 </el-tag>
                 <el-tag type="success" style="margin-right: 8px;">
                   空箱出场:
@@ -289,7 +319,7 @@
                 <el-tag type="danger">
                   盘存:
                   {{
-                    form.tradingBoxItemsList.filter(item => item.status == "待使用").length -
+                    form.tradingBoxItemsList.filter(item => item.status != "作废").length -
                       form.tradingBoxItemsList.filter(item => item.status == "使用中" || item.status == "已还箱" || item.status == "退租").length || 0
                   }}
                 </el-tag>
@@ -1830,12 +1860,25 @@ export default {
             labelWidth: 180
           },
           {
+            label: "取消箱量",
+            prop: "cancelNumber",
+            disabled: true
+          },
+          {
             label: "备注",
             prop: "remarks",
             type: "textarea",
             disabled: false,
             minRows: 2,
             span: 6
+          },
+          {
+            label: "箱管备注",
+            prop: "boxTubeRemarks",
+            type: "textarea",
+            minRows: 2,
+            span: 6,
+            disabled: false
           }
         ]
       },
@@ -4141,7 +4184,7 @@ export default {
           podCode: this.form.podCname,
           podEname: this.form.podCname,
           podCname: this.form.podCname,
-          activationDate: null
+          activationDate: dateFormat(new Date(), "yyyy-MM-dd 00:00:00")
         };
         this.activationDialog = true;
       }
@@ -5437,4 +5480,17 @@ export default {
   font-size: 16px;
   color: #54bcbd;
 }
+
+::v-deep .error-input .el-input.is-disabled .el-input__inner {
+  color: #f56c6c !important;
+}
+::v-deep .error-input .el-textarea .is-disabled .el-textarea__inner {
+  color: #f56c6c !important;
+}
+::v-deep .error-input .el-input__inner {
+  color: #f56c6c !important;
+}
+::v-deep .error-input .el-textarea__inner {
+  color: #f56c6c !important;
+}
 </style>

+ 298 - 0
src/views/ow/owTask/components/changeCn.vue

@@ -0,0 +1,298 @@
+<template>
+  <div>
+    <el-dialog title="更改放箱号" :visible.sync="dialogVisible" append-to-body width="60%" :before-close="handleClose">
+      <avue-crud
+        v-if="dialogVisible"
+        :option="option"
+        :data="data"
+        :table-loading="loading"
+        :page.sync="page"
+        :search.sync="query"
+        ref="crud"
+        @search-change="searchChange"
+        @search-reset="searchReset"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @current-row-change="handleCurrentRowChange"
+        @on-load="onLoad"
+      ></avue-crud>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false" size="mini">取 消</el-button>
+        <el-button type="primary" @click="submit" size="mini">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { getList, batchContainerNumber } from "@/api/boxManagement/buyContainer";
+import dicSelect from "@/components/dicSelect/main";
+import { dateFormat } from "@/util/date";
+export default {
+  props: {},
+  components: {
+    dicSelect
+  },
+  data() {
+    return {
+      selectionList: [],
+      form: {},
+      dialogVisible: false,
+      loading: false,
+      query: {},
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      option: {
+        height: 400,
+        searchShow: true,
+        searchMenuSpan: 18,
+        border: true,
+        index: true,
+        addBtn: false,
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        menu: false,
+        searchIcon: true,
+        highlightCurrentRow: true,
+        align: "center",
+        searchIndex: 3,
+        header: false,
+        column: [
+          {
+            label: "放箱号",
+            prop: "containerNumber",
+            width: 120,
+            overHidden: true,
+            search: true
+          },
+          {
+            label: "provider",
+            prop: "purchaseCompanyName",
+            width: 150,
+            overHidden: true
+            // search: true,
+            // type: "select",
+            // filterable: true,
+            // remote: true,
+            // dicUrl: "/api/blade-los/bcorps/selectList?status=0&corpTypeName=箱东&size=5&current=1&shortName={{key}}",
+            // props: {
+            //   label: "shortName",
+            //   value: "shortName",
+            //   desc: "code",
+            //   res: "data.records"
+            // }
+          },
+          {
+            label: "起运港",
+            prop: "polCname",
+            width: 150,
+            overHidden: true
+            // search: true,
+            // type: "select",
+            // filterable: true,
+            // remote: true,
+            // dicUrl: "/api/blade-los/bports/list?status=0&size=5&current=1&cnName={{key}}",
+            // props: {
+            //   label: "cnName",
+            //   value: "cnName",
+            //   desc: "code",
+            //   res: "data.records"
+            // }
+          },
+          {
+            label: "起运港提/送箱场站",
+            prop: "polStationCname",
+            width: 150,
+            overHidden: true
+            // search: true,
+            // searchLabelWidth: 120,
+            // type: "select",
+            // filterable: true,
+            // remote: true,
+            // dicUrl: "/api/blade-los/bcorps/selectList?corpTypeName=场站&status=0&size=5&current=1&cnName={{key}}",
+            // props: {
+            //   label: "cnName",
+            //   value: "cnName",
+            //   desc: "code",
+            //   res: "data.records"
+            // }
+          },
+          {
+            label: "箱型",
+            prop: "boxTypeQuantityOne",
+            width: 100,
+            overHidden: true
+            // search: true,
+            // type: "select",
+            // filterable: true,
+            // remote: true,
+            // dicUrl: "/api/blade-los/bcntrtypes/list?status=0&size=20&current=1&cnName={{key}}",
+            // props: {
+            //   label: "cnName",
+            //   value: "cnName",
+            //   res: "data.records"
+            // }
+          },
+          {
+            label: "有效日期起",
+            prop: "effectiveDate",
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+            width: 120,
+            overHidden: true
+          },
+          {
+            label: "有效日期止",
+            prop: "expiryDate",
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+            width: 120,
+            overHidden: true
+          }
+        ]
+      },
+      rowObj: {}
+    };
+  },
+  created() {},
+  methods: {
+    openDialog(val, list) {
+      this.rowObj = {};
+      this.form = val;
+      this.selectionList = list;
+      this.dialogVisible = true;
+    },
+    handleCurrentRowChange(row) {
+      this.rowObj = row;
+    },
+    searchReset() {
+      this.query = this.$options.data().query;
+      // this.onLoad(this.page);
+    },
+    // 搜索按钮点击
+    searchChange(params, done) {
+      this.page.currentPage = 1;
+      this.onLoad(this.page, this.query);
+      done();
+    },
+    selectionChange(list) {
+      this.selectionList = list;
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+    },
+    onLoad(page, params = {}) {
+      let obj = {};
+      obj = {
+        type: "OW-N",
+        purchaseCompanyName: this.form.purchaseCompanyName,
+        polCname: this.form.polCname,
+        boxTypeQuantityOne: this.form.boxTypeQuantityOne,
+        // effectiveDate: dateFormat(new Date()),
+        // expiryDate: dateFormat(new Date()),
+        ...Object.assign(params, this.query)
+      };
+      this.loading = true;
+      getList(page.currentPage, page.pageSize, obj)
+        .then(res => {
+          this.data = res.data.data.records;
+          this.page.total = res.data.data.total;
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    submit() {
+      if (!this.rowObj.id) {
+        return this.$message.error("请选择数据");
+      }
+      let obj = {
+        id: this.form.id,
+        containerNumber: this.rowObj.containerNumber,
+        srcId: this.rowObj.id,
+        tradingBoxItemsList: this.selectionList
+      };
+      const loading = this.$loading({
+        lock: true,
+        text: "加载中",
+        spinner: "el-icon-loading",
+        background: "rgba(255,255,255,0.7)"
+      });
+      batchContainerNumber(obj)
+        .then(res => {
+          this.$message.success("操作成功!");
+          this.dialogVisible = false;
+          this.$emit("getUpdate");
+        })
+        .finally(() => {
+          loading.close();
+        });
+    },
+    //自定义列保存
+    async saveColumn(ref, option, optionBack, code) {
+      /**
+       * 已定义全局方法,直接使用,saveColumnData保存列数据方法,参数传值(表格名称,当前表格的option数据)
+       * 已定义全局方法,直接使用,getColumnName方法用来获取枚举值,参数根据自己定义的code值获取中文名
+       * 一定要执行异步操作,要等接口成功返回,才能执行下一行代码
+       */
+      const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);
+      if (inSave) {
+        this.$message.success("保存成功");
+        //关闭窗口
+        this.$refs[ref].$refs.dialogColumn.columnBox = false;
+        this.searchReset();
+      }
+    },
+    //自定义列重置
+    async resetColumn(ref, option, optionBack, code) {
+      this[option] = this[optionBack];
+      const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
+      if (inSave) {
+        this.$message.success("重置成功");
+        this.$refs[ref].$refs.dialogColumn.columnBox = false;
+      }
+    },
+
+    // 更改表格颜色
+    headerClassName(tab) {
+      //颜色间隔
+      let back = "";
+      if (tab.columnIndex >= 0 && tab.column.level === 1) {
+        if (tab.columnIndex % 2 === 0) {
+          back = "back-one";
+        } else if (tab.columnIndex % 2 === 1) {
+          back = "back-two";
+        }
+      }
+      return back;
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+::v-deep#out-table .back-one {
+  background: #ecf5ff !important;
+  text-align: center;
+  padding: 4px 0;
+}
+
+::v-deep#out-table .back-two {
+  background: #ecf5ff !important;
+  text-align: center;
+  padding: 4px 0;
+}
+
+::v-deep .el-col-md-8 {
+  width: 24.33333%;
+}
+</style>

+ 12 - 3
src/views/ow/owTask/detailsPage.vue

@@ -349,6 +349,9 @@
                 <el-button type="primary" size="small" :disabled="editDisabled" @click="allClick('批量修改POD场站')">
                   批量修改POD场站
                 </el-button>
+                 <el-button type="primary" size="small" :disabled="editDisabled||selectionList.length==0" @click="allClick('批量修改放箱号')">
+                  批量修改放箱号
+                </el-button>
                 <el-button type="success" size="small" :disabled="!form.id || form.tradingBoxItemsList.length == 0" @click="allClick('客户还箱')"
                   >客户还箱</el-button
                 >
@@ -358,7 +361,7 @@
                   @click="$refs.print.openDialog()">打印报表
                 </el-button> -->
                 <el-tag style="margin-right: 8px;">
-                  空箱进场:
+                  空箱进场:{{ form.tradingBoxItemsList.filter(item => item.status != "作废").length }}
                   {{ form.tradingBoxItemsList.filter(item => item.status != "作废").length || 0 }}
                 </el-tag>
                 <el-tag type="success" style="margin-right: 8px;">
@@ -1395,7 +1398,8 @@
       pageLabel="OW(拿)"
     ></fee-modify>
     <fee-modify-view ref="feeModifyView" :form="form"></fee-modify-view>
-  </div>
+    <change-cn ref="changeCn" @getUpdate="getDetail(form.id)"></change-cn>
+ </div>
 </template>
 
 <script>
@@ -1445,6 +1449,7 @@ import feeModify from "@/components/feeModify/main.vue";
 import feeModifyView from "@/components/feeModify/view.vue";
 import _ from "lodash";
 import { Header } from "element-ui";
+import changeCn from "./components/changeCn.vue";
 export default {
   name: "detailsPage",
   data() {
@@ -3565,7 +3570,8 @@ export default {
     businessReports,
     reports,
     feeModify,
-    feeModifyView
+    feeModifyView,
+    changeCn
   },
   props: {
     detailData: Object,
@@ -5455,6 +5461,9 @@ export default {
         };
         this.podDialog = true;
       }
+      if(name=='批量修改放箱号'){
+                this.$refs.changeCn.openDialog(this.form,this.selectionList)
+      }
       if (name == "合并生成") {
         for (let item of this.selecPickList) {
           if (item.whetherGenerateCost == 1) {