caojunjie 2 rokov pred
rodič
commit
36ee498610

+ 42 - 0
src/api/iosBasicData/bcorpstypedefine.js

@@ -0,0 +1,42 @@
+import request from '@/router/axios';
+
+export const bcorpstypedefineList = (current, size, params) => {
+  return request({
+    url: '/api/blade-los/bcorpstypedefine/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const bcorpstypedefineDetail = (id) => {
+  return request({
+    url: '/api/blade-los/bcorpstypedefine/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const bcorpstypedefineRemove = (ids) => {
+  return request({
+    url: '/api/blade-los/bcorpstypedefine/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const bcorpstypedefineSubmit = (row) => {
+  return request({
+    url: '/api/blade-los/bcorpstypedefine/submit',
+    method: 'post',
+    data: row
+  })
+}
+

+ 8 - 0
src/enums/column-name.js

@@ -1341,6 +1341,14 @@ const columnName = [{
     code: 303,
     name: '货运代理-基础资料-费用模板'
   },
+  {
+    code: 304,
+    name: '货运代理-基础资料-客户资料'
+  },
+  {
+    code: 304.1,
+    name: '货运代理-基础资料-客户类别'
+  },
 ]
 export const getColumnName = (key) => {
   for (let index = 0; index < columnName.length; index++) {

+ 15 - 6
src/views/businessManagement/salesOrder/detailsPageEdit.vue

@@ -2692,6 +2692,8 @@ export default {
       if (this.policyDataTwo.length > 0 || this.goodsListPolicy.length > 0 || this.buyAndGiveList.length > 0) {
         buyFree = this.deepClone((this.policyDataTwo.concat(this.goodsListPolicy)).concat(this.buyAndGiveList))
       }
+        console.log(this.policyData,'上面选择的数据')
+        console.log(this.goodsListPolicy,'下面选择的数据')
       for (let item in list) {
         if (this.policyData.length > 0 || this.buyAndGiveList > 0) {
           if (!list[item].specialOffer) {
@@ -2714,12 +2716,14 @@ export default {
           this.$set(list[item], 'inputMold', 1)
           this.$set(list[item], 'goodType', 0)
         } else {
-          if (!list[item].salePrice) {
+
+          if (!list[item].salesPrice) {
             getMarketPrice({
               code: list[item].code,
               isFreight: this.form.isFreight,
               isLabel: this.form.isLabel
             }).then(response => {
+
               if (response.data.data.length > 0) {
                 this.$set(list[item], 'price', response.data.data[0].salePrice)
               } else {
@@ -2728,12 +2732,12 @@ export default {
               this.priceChange(list[item])
             })
           } else {
-            this.$set(list[item], 'price', list[item].salePrice)
+            this.$set(list[item], 'price', list[item].salesPrice)
             this.priceChange(list[item])
           }
           this.$set(list[item], 'inputMold', 2)
           this.$set(buyFree[item], 'inputMold', 2)
-          this.$set(buyFree[item], 'price', '0')
+          this.$set(buyFree[item], 'price', list[item].salesPrice)
           this.$set(buyFree[item], 'orderQuantity', list[item].salesVolume)
           this.$set(buyFree[item], 'itemType', list[item].typeno)
           this.$set(list[item], 'goodType', 0)
@@ -2774,7 +2778,7 @@ export default {
           }
           this.$set(list[item], 'cname', list[item].productCategory)
           this.$set(list[item], 'sort', this.maxGoodsNum + 1)
-          console.log(list[item])
+
           this.$set(list[item], 'purchaseAmount', list[item].purchasePrice)
 
           // 积分
@@ -2791,6 +2795,7 @@ export default {
             this.$set(buyFree[item], 'cname', list[item].productCategory)
             this.$set(buyFree[item], 'sort', this.maxGoodsNum + 2)
             this.$set(buyFree[item], 'purchaseAmount', list[item].purchasePrice)
+
             this.$set(buyFree[item], 'purchaseRebatePrice', list[item].purchaseRebatePrice)
 
             // 积分
@@ -2798,7 +2803,12 @@ export default {
             this.$set(buyFree[item], 'integral', 0)
             this.$set(buyFree[item], 'shopQuality', 0)
             this.$set(buyFree[item], 'goodType', 0)
-            console.log(list[item].code);
+
+              // 把采购价格赋值给返利价格
+            this.$set(buyFree[item], 'purchaseRebatePrice', buyFree[item].purchaseAmount)
+              // 把买的库区赋值给赠的库区上
+              this.$set(buyFree[item], 'storageId', list[item].storageId)
+
             this.maxGoodsNum++
             delete buyFree[item].id
             delete buyFree[item].pid
@@ -2840,7 +2850,6 @@ export default {
           }).catch(err=>{
             this.$refs.crudContact.rowCellAdd(list[item]);
           })
-          console.log(list[item].purchaseAmount);
             // this.$refs.crudContact.rowCellAdd(list[item]);
             console.log('rest>>>', this.$refs.crudContact);
           this.$nextTick(() => {

+ 401 - 0
src/views/iosBasicData/bcorps/bcorpstypedefine.vue

@@ -0,0 +1,401 @@
+<template>
+  <basic-container>
+    <avue-crud :option="option"
+               :table-loading="loading"
+               :data="data"
+               :page.sync="page"
+               :permission="permissionList"
+               id="out-table"
+               :header-cell-class-name="headerClassName"
+               :before-open="beforeOpen"
+               v-model="form"
+               ref="crud"
+               @row-update="rowUpdate"
+               @row-save="rowSave"
+               @row-del="rowDel"
+               @search-change="searchChange"
+               @search-reset="searchReset"
+               @selection-change="selectionChange"
+               @current-change="currentChange"
+               @size-change="sizeChange"
+               @refresh-change="refreshChange"
+               @resetColumn="resetColumnTwo('crud', 'option', 'optionBack', 304.1)"
+               @saveColumn="saveColumnTwo('crud', 'option', 'optionBack', 304.1)"
+               @on-load="onLoad">
+      <template slot="menuLeft">
+        <el-button type="danger"
+                   size="small"
+                   icon="el-icon-delete"
+                   plain
+                   @click="handleDelete">删 除
+        </el-button>
+      </template>
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+  import {bcorpstypedefineList, bcorpstypedefineDetail, bcorpstypedefineSubmit, bcorpstypedefineRemove} from "@/api/iosBasicData/bcorpstypedefine";
+  import {mapGetters} from "vuex";
+
+  export default {
+    data() {
+      return {
+        form: {},
+        query: {},
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        selectionList: [],
+        option:{},
+        optionBack: {
+          height:'auto',
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 24,
+            labelWidth:100,
+          border: true,
+          index: true,
+          viewBtn: true,
+          selection: true,
+          dialogClickModal: false,
+          column: [
+            // {
+            //   label: "父主键",
+            //   prop: "parentId",
+            //   rules: [{
+            //     required: true,
+            //     message: "请输入父主键",
+            //     trigger: "blur"
+            //   }]
+            // },
+            {
+              label: "客户类型",
+              prop: "corpType",
+              rules: [{
+                required: true,
+                message: "请输入客户类型,每种类型3位字母",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "中文类别名称",
+              prop: "cnName",
+                width:100,
+                search: true,
+                searchLabelWidth:100,
+              rules: [{
+                required: true,
+                message: "请输入中文类别名称",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "英文类别名称",
+              prop: "enName",
+                width:100,
+                search: true,
+                searchLabelWidth:100,
+              rules: [{
+                required: true,
+                message: "请输入英文类别名称",
+                trigger: "blur"
+              }]
+            },
+            // {
+            //   label: "祖籍列表",
+            //   prop: "ancestors",
+            //   rules: [{
+            //     required: true,
+            //     message: "请输入祖籍列表",
+            //     trigger: "blur"
+            //   }]
+            // },
+            {
+              label: "排序",
+              prop: "sort",
+              rules: [{
+                required: true,
+                message: "请输入排序",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "状态",
+              prop: "status",
+                type:'select',
+                dicData:[{
+                    label:'启用',
+                    value:0
+                },{
+                    label:'停用',
+                    value:1
+                }],
+              rules: [{
+                required: true,
+                message: "请输入状态",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "是否已删除(0 否 1是)",
+              prop: "isDeleted",
+                hide:true,
+                display:false,
+            },
+              {
+                  label: "版本",
+                  prop: "version",
+                  hide:true,
+                  display:false,
+              },
+              {
+                  label: "主键",
+                  prop: "id",
+                  hide:true,
+                  display:false,
+              },
+              {
+                  label: "创建人 Id",
+                  prop: "createUser",
+                  hide:true,
+                  display:false,
+              },
+              {
+                  label: "创建人",
+                  prop: "createUserName",
+                  display:false,
+              },
+              {
+                  label: "创建部门 Id",
+                  prop: "createDept",
+                  hide:true,
+                  display:false,
+              },
+              {
+                  label: "创建部门",
+                  prop: "createDeptName",
+                  display:false,
+              },
+              {
+                  label: "创建时间",
+                  prop: "createTime",
+                  width:160,
+                  display:false,
+              },
+              {
+                  label: "修改人 Id",
+                  prop: "updateUser",
+                  hide:true,
+                  display:false,
+              },
+              {
+                  label: "修改人",
+                  prop: "updateUserName",
+                  hide:true,
+                  display:false,
+              },
+              {
+                  label: "修改时间",
+                  prop: "updateTime",
+                  width:160,
+                  display:false,
+              },
+            {
+              label: "备注",
+              prop: "remarks",
+                span:24,
+                type: 'textarea',
+                width: "180",
+                slot: true,
+                minRows: 3,
+            },
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          // addBtn: this.vaildData(this.permission.bcorpstypedefine_add, false),
+          // viewBtn: this.vaildData(this.permission.bcorpstypedefine_view, false),
+          // delBtn: this.vaildData(this.permission.bcorpstypedefine_delete, false),
+          // editBtn: this.vaildData(this.permission.bcorpstypedefine_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+      async created() {
+          this.option = await this.getColumnData(this.getColumnName(304.1), this.optionBack);
+      },
+    methods: {
+      rowSave(row, done, loading) {
+        bcorpstypedefineSubmit(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          window.console.log(error);
+        });
+      },
+      rowUpdate(row, index, done, loading) {
+        bcorpstypedefineSubmit(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          console.log(error);
+        });
+      },
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return bcorpstypedefineRemove(row.id);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return bcorpstypedefineRemove(this.ids);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$refs.crud.toggleSelection();
+          });
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          bcorpstypedefineDetail(this.form.id).then(res => {
+            this.form = res.data.data;
+          });
+        }
+        done();
+      },
+      searchReset() {
+        this.query = {};
+        this.onLoad(this.page);
+      },
+      searchChange(params, done) {
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done();
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      selectionClear() {
+        this.selectionList = [];
+        this.$refs.crud.toggleSelection();
+      },
+      currentChange(currentPage){
+        this.page.currentPage = currentPage;
+      },
+      sizeChange(pageSize){
+        this.page.pageSize = pageSize;
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query);
+      },
+      onLoad(page, params = {}) {
+        this.loading = true;
+        bcorpstypedefineList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      },
+        //自定义列保存
+        async saveColumnTwo(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;
+            }
+        },
+        //自定义列重置
+        async resetColumnTwo(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 scoped>
+::v-deep#out-table .back-one {
+    background: #ecf5ff !important;
+}
+::v-deep#out-table .back-two {
+    background: #ecf5ff !important;
+}
+</style>

+ 320 - 201
src/views/iosBasicData/bcorps/index.vue

@@ -1,60 +1,75 @@
 <template>
   <div>
-  <basic-container v-show="isShow" class="page-crad">
-    <avue-crud :option="option"
-               :table-loading="loading"
-               :data="data"
-               :page.sync="page"
-               :permission="permissionList"
-               :before-open="beforeOpen"
-               v-model="form"
-               ref="crud"
-               @row-update="rowUpdate"
-               @row-save="rowSave"
-               @row-del="rowDel"
-               @search-change="searchChange"
-               @search-reset="searchReset"
-               @selection-change="selectionChange"
-               @current-change="currentChange"
-               @size-change="sizeChange"
-               @refresh-change="refreshChange"
-               @on-load="onLoad">
-      <template slot="menuLeft">
-        <!-- <el-button type="danger"
-                   size="small"
-                   icon="el-icon-delete"
-                   plain
-                   v-if="permission.bcorps_delete"
-                   @click="handleDelete">删 除
-        </el-button> -->
-      </template>
-      <template slot-scope="{ row, index }" slot="menu">
-          <el-button type="text" size="small" @click.stop="editOpen(row)">
-            查看
-          </el-button>
-          <!-- <el-button type="text" size="small" @click.stop="editOpen(row, 1)">
-            编辑
-          </el-button> -->
-          <el-button
-            type="text"
-            size="small"
-            @click.stop="rowDel(row, index)"
-            :disabled="row.status > 0"
-          >
-            删除
-          </el-button>
-        </template>
-    </avue-crud>
-  </basic-container>
-    <detailPage
-      v-if="!isShow"
-      ref="detail"
-      @goBack="goBack"
-      @copyOrder="copyOrder"
-      :detailData="detailData"
-    ></detailPage>
-    
-    
+      <el-row>
+          <el-col :span="5">
+              <div class="box">
+                  <el-scrollbar>
+                      <basic-container>
+                          <avue-tree :option="treeOption" :data="customTypeData" @node-click="nodeClick" />
+                      </basic-container>
+                  </el-scrollbar>
+              </div>
+          </el-col>
+          <el-col :span="19">
+              <basic-container v-show="isShow" class="page-crad">
+                  <avue-crud :option="option"
+                             :table-loading="loading"
+                             :data="data"
+                             :page.sync="page"
+                             :permission="permissionList"
+                             id="out-table"
+                             :header-cell-class-name="headerClassName"
+                             :before-open="beforeOpen"
+                             v-model="form"
+                             ref="crud"
+                             @row-update="rowUpdate"
+                             @row-save="rowSave"
+                             @row-del="rowDel"
+                             @search-change="searchChange"
+                             @search-reset="searchReset"
+                             @selection-change="selectionChange"
+                             @current-change="currentChange"
+                             @size-change="sizeChange"
+                             @refresh-change="refreshChange"
+                             @resetColumn="resetColumnTwo('crud', 'option', 'optionBack', 304)"
+                             @saveColumn="saveColumnTwo('crud', 'option', 'optionBack', 304)"
+                             @on-load="onLoad">
+                      <template slot="menuLeft">
+                          <!-- <el-button type="danger"
+                                     size="small"
+                                     icon="el-icon-delete"
+                                     plain
+                                     v-if="permission.bcorps_delete"
+                                     @click="handleDelete">删 除
+                          </el-button> -->
+                      </template>
+                      <template slot-scope="{ row, index }" slot="menu">
+                          <el-button type="text" size="small" @click.stop="editOpen(row)">
+                              查看
+                          </el-button>
+                          <!-- <el-button type="text" size="small" @click.stop="editOpen(row, 1)">
+                            编辑
+                          </el-button> -->
+                          <el-button
+                              type="text"
+                              size="small"
+                              @click.stop="rowDel(row, index)"
+                              :disabled="row.status > 0"
+                          >
+                              删除
+                          </el-button>
+                      </template>
+                  </avue-crud>
+              </basic-container>
+              <detailPage
+                  v-if="!isShow"
+                  ref="detail"
+                  @goBack="goBack"
+                  @copyOrder="copyOrder"
+                  :detailData="detailData"
+              ></detailPage>
+          </el-col>
+      </el-row>
   </div>
 </template>
 
@@ -62,6 +77,7 @@
 import detailPage from "./detailsPage";
   import {getBcorpsList, getBcorpsDetail, addBcorps, updateBcorps, removeBcorps} from "@/api/iosBasicData/bcorps";
   import {mapGetters} from "vuex";
+  import {bcorpstypedefineList} from "@/api/iosBasicData/bcorpstypedefine"
 
   export default {
   components: {
@@ -69,6 +85,25 @@ import detailPage from "./detailsPage";
   },
     data() {
       return {
+          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: "value",
+                  children: "children"
+              }
+          },
+          // 客户类别数据
+          customTypeData:[],
+
         form: {},
         query: {},
       detailData: {},
@@ -80,12 +115,13 @@ import detailPage from "./detailsPage";
           total: 0
         },
         selectionList: [],
-        option: {
+        option:{},
+        optionBack: {
           height:'auto',
           calcHeight: 30,
           tip: false,
           searchShow: true,
-          searchMenuSpan: 6,
+          searchMenuSpan: 24,
           border: true,
           index: true,
           viewBtn: true,
@@ -93,98 +129,9 @@ import detailPage from "./detailsPage";
           dialogClickModal: false,
           column: [
             {
-              label: "主键",
-              prop: "id",
-              rules: [{
-                required: true,
-                message: "请输入主键",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "分公司 Id",
-              prop: "branchId",
-              rules: [{
-                required: true,
-                message: "请输入分公司 Id",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "创建人 Id",
-              prop: "createUser",
-              rules: [{
-                required: true,
-                message: "请输入创建人 Id",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "创建人",
-              prop: "createUserName",
-              rules: [{
-                required: true,
-                message: "请输入创建人",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "创建部门 Id",
-              prop: "createDept",
-              rules: [{
-                required: true,
-                message: "请输入创建部门 Id",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "创建部门",
-              prop: "createDeptName",
-              rules: [{
-                required: true,
-                message: "请输入创建部门",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "创建时间",
-              prop: "createTime",
-              rules: [{
-                required: true,
-                message: "请输入创建时间",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "修改人 Id",
-              prop: "updateUser",
-              rules: [{
-                required: true,
-                message: "请输入修改人 Id",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "修改人",
-              prop: "updateUserName",
-              rules: [{
-                required: true,
-                message: "请输入修改人",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "修改时间",
-              prop: "updateTime",
-              rules: [{
-                required: true,
-                message: "请输入修改时间",
-                trigger: "blur"
-              }]
-            },
-            {
               label: "单位编码",
               prop: "code",
+                search: true,
               rules: [{
                 required: true,
                 message: "请输入单位编码",
@@ -194,6 +141,7 @@ import detailPage from "./detailsPage";
             {
               label: "统一社会信用代码",
               prop: "uscc",
+                width: 160,
               rules: [{
                 required: true,
                 message: "请输入统一社会信用代码",
@@ -221,6 +169,7 @@ import detailPage from "./detailsPage";
             {
               label: "中文名称",
               prop: "cnName",
+                search: true,
               rules: [{
                 required: true,
                 message: "请输入中文名称",
@@ -230,6 +179,7 @@ import detailPage from "./detailsPage";
             {
               label: "英文名称",
               prop: "enName",
+                search: true,
               rules: [{
                 required: true,
                 message: "请输入英文名称",
@@ -239,6 +189,7 @@ import detailPage from "./detailsPage";
             {
               label: "国家代码",
               prop: "cntyCode",
+                search: true,
               rules: [{
                 required: true,
                 message: "请输入国家代码",
@@ -248,6 +199,7 @@ import detailPage from "./detailsPage";
             {
               label: "国家名称",
               prop: "cntyName",
+                search: true,
               rules: [{
                 required: true,
                 message: "请输入国家名称",
@@ -275,6 +227,7 @@ import detailPage from "./detailsPage";
             {
               label: "中文地址",
               prop: "cnAddr",
+                search: true,
               rules: [{
                 required: true,
                 message: "请输入中文地址",
@@ -284,6 +237,7 @@ import detailPage from "./detailsPage";
             {
               label: "英文地址",
               prop: "enAddr",
+                search: true,
               rules: [{
                 required: true,
                 message: "请输入英文地址",
@@ -293,6 +247,7 @@ import detailPage from "./detailsPage";
             {
               label: "电话",
               prop: "tel",
+                search: true,
               rules: [{
                 required: true,
                 message: "请输入电话",
@@ -320,6 +275,7 @@ import detailPage from "./detailsPage";
             {
               label: "负责人姓名",
               prop: "mgrName",
+                width:100,
               rules: [{
                 required: true,
                 message: "请输入负责人姓名",
@@ -329,6 +285,7 @@ import detailPage from "./detailsPage";
             {
               label: "联系人姓名",
               prop: "attnName",
+                width:100,
               rules: [{
                 required: true,
                 message: "请输入联系人姓名",
@@ -338,6 +295,7 @@ import detailPage from "./detailsPage";
             {
               label: "联系人电话",
               prop: "attnTel",
+                width:100,
               rules: [{
                 required: true,
                 message: "请输入联系人电话",
@@ -347,6 +305,7 @@ import detailPage from "./detailsPage";
             {
               label: "客户来源类别",
               prop: "sourceType",
+                width:100,
               rules: [{
                 required: true,
                 message: "请输入客户来源类别",
@@ -356,11 +315,8 @@ import detailPage from "./detailsPage";
             {
               label: "部门 Id",
               prop: "deptId",
-              rules: [{
-                required: true,
-                message: "请输入部门 Id",
-                trigger: "blur"
-              }]
+                hide:true,
+                display:false,
             },
             {
               label: "部门名称",
@@ -374,15 +330,13 @@ import detailPage from "./detailsPage";
             {
               label: "业务员 Id",
               prop: "salesId",
-              rules: [{
-                required: true,
-                message: "请输入业务员 Id",
-                trigger: "blur"
-              }]
+                hide:true,
+                display:false,
             },
             {
               label: "业务员姓名",
               prop: "salesName",
+                width:100,
               rules: [{
                 required: true,
                 message: "请输入业务员姓名",
@@ -392,15 +346,13 @@ import detailPage from "./detailsPage";
             {
               label: "所属单位 Id",
               prop: "corpId",
-              rules: [{
-                required: true,
-                message: "请输入所属单位 Id",
-                trigger: "blur"
-              }]
+                hide:true,
+                display:false,
             },
             {
               label: "所属单位名称",
               prop: "corpName",
+                width:100,
               rules: [{
                 required: true,
                 message: "请输入所属单位名称",
@@ -464,6 +416,7 @@ import detailPage from "./detailsPage";
             {
               label: "SCAC 代码",
               prop: "scacCode",
+                width:100,
               rules: [{
                 required: true,
                 message: "请输入SCAC 代码",
@@ -473,6 +426,7 @@ import detailPage from "./detailsPage";
             {
               label: "iGenZong 代码",
               prop: "igenzongCode",
+                width:120,
               rules: [{
                 required: true,
                 message: "请输入iGenZong 代码",
@@ -491,6 +445,7 @@ import detailPage from "./detailsPage";
             {
               label: "船公司代码",
               prop: "carrierCode",
+                width:100,
               rules: [{
                 required: true,
                 message: "请输入船公司代码",
@@ -500,6 +455,7 @@ import detailPage from "./detailsPage";
             {
               label: "场站三字码",
               prop: "cyCode",
+                width:100,
               rules: [{
                 required: true,
                 message: "请输入场站三字码",
@@ -509,6 +465,7 @@ import detailPage from "./detailsPage";
             {
               label: "CMA Laracode",
               prop: "cmaLaracode",
+                width:120,
               rules: [{
                 required: true,
                 message: "请输入CMA Laracode",
@@ -518,6 +475,7 @@ import detailPage from "./detailsPage";
             {
               label: "CMA Location",
               prop: "cmaLocation",
+                width:120,
               rules: [{
                 required: true,
                 message: "请输入CMA Location",
@@ -527,6 +485,7 @@ import detailPage from "./detailsPage";
             {
               label: "ZIM CUCC",
               prop: "zimCucc",
+                width:120,
               rules: [{
                 required: true,
                 message: "请输入ZIM CUCC",
@@ -536,6 +495,7 @@ import detailPage from "./detailsPage";
             {
               label: "关贸云编码",
               prop: "gmyCode",
+                width:100,
               rules: [{
                 required: true,
                 message: "请输入关贸云编码",
@@ -545,6 +505,7 @@ import detailPage from "./detailsPage";
             {
               label: "INTRRA ICUA",
               prop: "inttraIcua",
+                width:100,
               rules: [{
                 required: true,
                 message: "请输入INTRRA ICUA",
@@ -554,6 +515,7 @@ import detailPage from "./detailsPage";
             {
               label: "INTRRA ICUA 联系人",
               prop: "inttraIcuaAttn",
+                width:160,
               rules: [{
                 required: true,
                 message: "请输入INTRRA ICUA 联系人",
@@ -563,6 +525,7 @@ import detailPage from "./detailsPage";
             {
               label: "INTRRA ICUA Email",
               prop: "inttraIcuaEmail",
+                width:140,
               rules: [{
                 required: true,
                 message: "请输入INTRRA ICUA Email",
@@ -572,6 +535,7 @@ import detailPage from "./detailsPage";
             {
               label: "EDI 格式名称",
               prop: "ediFmt",
+                width:120,
               rules: [{
                 required: true,
                 message: "请输入EDI 格式名称",
@@ -581,6 +545,7 @@ import detailPage from "./detailsPage";
             {
               label: "EDI FTP 地址",
               prop: "ediFtp",
+                width: 100,
               rules: [{
                 required: true,
                 message: "请输入EDI FTP 地址",
@@ -597,8 +562,17 @@ import detailPage from "./detailsPage";
               }]
             },
             {
-              label: "是否 VIP 客户,0=否,1=是",
+              label: "是否 VIP 客户",
               prop: "vip",
+                width:120,
+                type:'select',
+                dicData:[{
+                    label:'否',
+                    value:0
+                },{
+                    label:'是',
+                    value:1
+                }],
               rules: [{
                 required: true,
                 message: "请输入是否 VIP 客户,0=否,1=是",
@@ -615,8 +589,17 @@ import detailPage from "./detailsPage";
               }]
             },
             {
-              label: "是否已签约,0=否,1=是",
+              label: "是否已签约",
               prop: "isSigned",
+                type:'select',
+                width: 100,
+                dicData:[{
+                    label:'否',
+                    value:0
+                },{
+                    label:'是',
+                    value:1
+                }],
               rules: [{
                 required: true,
                 message: "请输入是否已签约,0=否,1=是",
@@ -633,7 +616,7 @@ import detailPage from "./detailsPage";
               }]
             },
             {
-              label: "授信等级,A=A级,B=B级,B+=B+级,B-=B-级,C=C级,D=黑名单",
+              label: "授信等级",
               prop: "creditLevel",
               rules: [{
                 required: true,
@@ -698,6 +681,7 @@ import detailPage from "./detailsPage";
             {
               label: "最大欠款额",
               prop: "maxArrears",
+                width:100,
               rules: [{
                 required: true,
                 message: "请输入最大欠款额",
@@ -732,8 +716,16 @@ import detailPage from "./detailsPage";
               }]
             },
             {
-              label: "存在 PS 0=否 1=是",
+              label: "存在",
               prop: "isPs",
+                type:'select',
+                dicData:[{
+                    label:'否',
+                    value:0
+                },{
+                    label:'是',
+                    value:1
+                }],
               rules: [{
                 required: true,
                 message: "请输入存在 PS 0=否 1=是",
@@ -741,8 +733,9 @@ import detailPage from "./detailsPage";
               }]
             },
             {
-              label: "PS(利润分成) 比例",
+              label: "利润分成比例",
               prop: "psRate",
+                width:100,
               rules: [{
                 required: true,
                 message: "请输入PS(利润分成) 比例",
@@ -750,23 +743,32 @@ import detailPage from "./detailsPage";
               }]
             },
             {
-              label: "PS允许付大于收 0=否 1=是",
+              label: "允许付大于收",
               prop: "psAllowLargeCredit",
+                type:'select',
+                width:100,
+                dicData:[{
+                    label:'否',
+                    value:0
+                },{
+                    label:'是',
+                    value:1
+                }],
               rules: [{
                 required: true,
                 message: "请输入PS允许付大于收 0=否 1=是",
                 trigger: "blur"
               }]
             },
-            {
-              label: "详情,主要用于提单信息",
-              prop: "details",
-              rules: [{
-                required: true,
-                message: "请输入详情,主要用于提单信息",
-                trigger: "blur"
-              }]
-            },
+            // {
+            //   label: "详情,主要用于提单信息",
+            //   prop: "details",
+            //   rules: [{
+            //     required: true,
+            //     message: "请输入详情,主要用于提单信息",
+            //     trigger: "blur"
+            //   }]
+            // },
             // {
             //   label: "JSON 对象数组,用于不查询的扩展数据, 例如:[{name: "key1", value: "value1"}]",
             //   prop: "extendedData",
@@ -779,38 +781,98 @@ import detailPage from "./detailsPage";
             {
               label: "版本",
               prop: "version",
-              rules: [{
-                required: true,
-                message: "请输入版本",
-                trigger: "blur"
-              }]
+                hide:true,
+                display:false,
             },
             {
-              label: "状态(0 正常 1停用)",
+              label: "状态",
               prop: "status",
-              rules: [{
-                required: true,
-                message: "请输入状态(0 正常 1停用)",
-                trigger: "blur"
-              }]
-            },
+                type:'select',
+                dicData:[{
+                    label:'启用',
+                    value:0
+                },{
+                    label:'停用',
+                    value:1
+                }],
+              rules: [{
+                required: true,
+                message: "请输入状态",
+                trigger: "blur"
+              }]
+            },
+              {
+                  label: "主键",
+                  prop: "id",
+                  hide:true,
+                  display:false,
+              },
+              {
+                  label: "分公司 Id",
+                  prop: "branchId",
+                  hide:true,
+                  display:false,
+              },
+              {
+                  label: "创建人 Id",
+                  prop: "createUser",
+                  hide:true,
+                  display:false,
+              },
+              {
+                  label: "创建人",
+                  prop: "createUserName",
+                  display:false,
+              },
+              {
+                  label: "创建部门 Id",
+                  prop: "createDept",
+                  hide:true,
+                  display:false,
+              },
+              {
+                  label: "创建部门",
+                  prop: "createDeptName",
+                  display:false,
+              },
+              {
+                  label: "创建时间",
+                  prop: "createTime",
+                  width:160,
+                  display:false,
+              },
+              {
+                  label: "修改人 Id",
+                  prop: "updateUser",
+                  hide:true,
+                  display:false,
+              },
+              {
+                  label: "修改人",
+                  prop: "updateUserName",
+                  display:false,
+              },
+              {
+                  label: "修改时间",
+                  prop: "updateTime",
+                  width:160,
+                  display:false,
+              },
             {
               label: "是否已删除(0 否 1是)",
               prop: "isDeleted",
-              rules: [{
-                required: true,
-                message: "请输入是否已删除(0 否 1是)",
-                trigger: "blur"
-              }]
+                hide:true,
+                display:false,
             },
             {
               label: "备注",
               prop: "remarks",
-              rules: [{
-                required: true,
-                message: "请输入备注",
-                trigger: "blur"
-              }]
+                span:24,
+                type: 'textarea',
+                width: "180",
+                slot: true,
+                minRows: 3,
+
             },
           ]
         },
@@ -835,7 +897,21 @@ import detailPage from "./detailsPage";
         return ids.join(",");
       }
     },
+      async created() {
+          this.option = await this.getColumnData(this.getColumnName(304), this.optionBack);
+          this.bcorpstypedefineListfun()
+      },
     methods: {
+      // 左侧点击回调
+        nodeClick(data){
+            console.log(data,904)
+        },
+        // 获取客户类别
+        bcorpstypedefineListfun(){
+            bcorpstypedefineList().then(res=>{
+                this.customTypeData = res.data.data.records
+            })
+        },
       editOpen(row) {
         this.detailData = {
           id: row.id
@@ -954,10 +1030,53 @@ import detailPage from "./detailsPage";
       },
       goBack() {
         this.isShow = true;
-      }
+      },
+        //自定义列保存
+        async saveColumnTwo(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;
+            }
+        },
+        //自定义列重置
+        async resetColumnTwo(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>
+<style scoped>
+::v-deep#out-table .back-one {
+    background: #ecf5ff !important;
+}
+::v-deep#out-table .back-two {
+    background: #ecf5ff !important;
+}
 </style>

+ 485 - 0
src/views/iosBasicData/losbfeestemplate/feesTemplateItems.vue

@@ -0,0 +1,485 @@
+<!--费用模板详情-->
+<template>
+    <div class="borderless" v-loading="pageLoading">
+        <div class="customer-head">
+            <div class="customer-back">
+                <!--        <i class="back-icon el-icon-arrow-left"></i><i style="font-style:normal">返回管理列表</i>-->
+                <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"
+                           @click="backToList">返回列表
+                </el-button>
+            </div>
+            <div class="add-customer-btn">
+                <el-button  size="small" type="primary" style="margin-right: 8px" v-if="detailData.seeDisabled"
+                            :loading="saveLoading" @click="editHandle">编 辑
+                </el-button>
+                <el-button  size="small" type="primary" style="margin-right: 8px" v-else
+                            :loading="saveLoading" @click="editCustomer">保 存
+                </el-button>
+            </div>
+        </div>
+        <div class="customer-main">
+            <el-form :model="form" ref="form" label-width="100px" class="demo-ruleForm">
+                <containerTitle title="基础资料"></containerTitle>
+                <basic-container :showBtn="true">
+                    <el-row>
+                        <el-col v-for="(item, index) in basicData.column" :key="index" :span="item.span ? item.span : 8"
+                                :class="{ isShow: item.display }" >
+                            <el-form-item :label="item.label" :prop="item.prop" :rules="item.rules">
+                                <el-select v-if="item.type == 'select'"  v-model="form[item.prop]" :placeholder="'请选择' + item.label" clearable
+                                           filterable style="width: 100%" size="small"
+                                           :disabled="item.disabled || detailData.seeDisabled">
+                                    <el-option v-for="(ite, inde) in item.dicData" :key="inde" :label="ite.label"
+                                               :value="ite.value"></el-option>
+                                </el-select>
+                                <el-input type="textarea" v-else-if="item.type === 'textarea'" v-model.trim="form[item.prop]" size="small"
+                                          autocomplete="off" :disabled="item.disabled || detailData.seeDisabled" :placeholder="'请输入' + item.label"></el-input>
+                                <el-input v-else type="age" style="width: 100%;" v-model.trim="form[item.prop]" size="small" autocomplete="off"
+                                          :disabled="item.disabled || detailData.seeDisabled" clearable :placeholder="'请输入' + item.label"></el-input>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </basic-container>
+            </el-form>
+        </div>
+
+        <div class="customer-main margintop">
+            <containerTitle title="费用详细"></containerTitle>
+            <basic-container>
+                <div style="margin-bottom: 10px">
+                    <el-button type="primary"
+                               size="small"
+                               :disabled="detailData.seeDisabled"
+                               @click="feestemplatepingCompanyAdd">新增数据
+                    </el-button>
+                </div>
+                <el-table
+                    stripe
+                    :data="form.feestemplateList"
+                    id="out-table"
+                    :header-cell-class-name="headerClassName"
+                    style="width: 100%">
+                    <el-table-column
+                        prop="remarks"
+                        label="备注">
+                    </el-table-column>
+                    <el-table-column label="操作">
+                        <template slot-scope="scope">
+                            <el-button
+                                type="text"
+                                size="small"
+                                :disabled="detailData.seeDisabled"
+                                @click="feestemplateCompanyEdit(scope.$index, scope.row)">编辑</el-button>
+                            <el-button
+                                size="small"
+                                type="text"
+                                :disabled="detailData.seeDisabled"
+                                @click="feestemplateCompanyDelete(scope.$index, scope.row)">删除</el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+            </basic-container>
+        </div>
+
+
+        <!--费用详细添加弹窗-->
+        <el-dialog
+            title="费用详细"
+            :visible.sync="feestemplateVisible"
+            width="50%"
+            append-to-body
+            :destroy-on-close="true"
+            :modal-append-to-body="false"
+            :before-close="feestemplateClose">
+            <div>
+                <el-form :model="feestemplateForm" ref="feestemplateForm" label-width="100px" class="demo-ruleForm">
+                    <el-row>
+                        <el-col v-for="(item, index) in feestemplateData.column" :key="index" :span="item.span ? item.span : 12"
+                                :class="{ isShow: item.display }" >
+                            <el-form-item :label="item.label" :prop="item.prop" :rules="item.rules">
+                                <div v-if="item.prop == 'corpId'">
+                                    <template slot="corpForm">
+                                        <search-query ref="SearchQuery"
+                                                      :datalist="corpData"
+                                                      title="计量单位"
+                                                      :filterable="true"
+                                                      :clearable="true"
+                                                      :remote="true"
+                                                      :forParameter="{key:'id',label:'cnName',value:'id'}"
+                                                      @remoteMethod="getBunitsListfun" @corpChange="corpChange" >
+                                        </search-query>
+                                    </template>
+                                </div>
+                                <el-input type="textarea" v-else-if="item.type === 'textarea'" v-model.trim="feestemplateForm[item.prop]" size="small"
+                                          autocomplete="off" :disabled="item.disabled" :placeholder="'请输入' + item.label"></el-input>
+                                <el-input v-else type="age" style="width: 100%;" v-model.trim="feestemplateForm[item.prop]" size="small" autocomplete="off"
+                                          :disabled="item.disabled" clearable :placeholder="'请输入' + item.label"></el-input>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-form>
+            </div>
+            <span slot="footer" class="dialog-footer">
+                    <el-button @click="feestemplateVisible = false;">取 消</el-button>
+                    <el-button type="primary" @click="feestemplatecompanyConfirm">确 定</el-button>
+                </span>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import {losbfeestemplateDetail, losbfeestemplateSubmit} from "@/api/iosBasicData/losbfeestemplate";
+import SearchQuery from '@/components/iosbasic-data/searchquery.vue'
+
+export default {
+    components: {SearchQuery},
+    props:{
+        detailData: {
+            type: Object
+        }
+    },
+
+    data(){
+        return {
+            pageLoading:false,
+            saveLoading:false,
+            // 费用详细弹窗
+            feestemplateVisible:false,
+            // 费用详细弹窗绑定的数据
+            feestemplateForm:{},
+            feestemplateIndex:null,
+
+            // 获取到的数据
+            form:{
+                feestemplateList:[]
+            },
+            // 基础资料数据
+            basicData:{
+                column:[
+                    {
+                        label: "业务类型 Id",
+                        prop: "businessTypeId",
+                        rules: [{
+                            required: true,
+                            message: "请输入业务类型 Id",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "业务类型中文名称",
+                        prop: "businessTypeCnName",
+                        rules: [{
+                            required: true,
+                            message: "请输入业务类型中文名称",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "业务类型英文名称",
+                        prop: "businessTypeEnName",
+                        rules: [{
+                            required: true,
+                            message: "请输入业务类型英文名称",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "模版编号",
+                        prop: "code",
+                        search: true,
+                        rules: [{
+                            required: true,
+                            message: "请输入模版编号",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "模版中文名称",
+                        prop: "cnName",
+                        rules: [{
+                            required: true,
+                            message: "请输入模版中文名称",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "模版英文名称",
+                        prop: "enName",
+                        rules: [{
+                            required: true,
+                            message: "请输入模版英文名称",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "收付",
+                        prop: "dc",
+                        type:'select',
+                        dicData:[{
+                            label:'收',
+                            value:'D'
+                        },{
+                            label:'付',
+                            value:'C'
+                        }],
+                        rules: [{
+                            required: true,
+                            message: "请输入收付",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "是否公开共享",
+                        prop: "isShared",
+                        width:100,
+                        type:'select',
+                        dicData:[{
+                            label:'否',
+                            value:0
+                        },{
+                            label:'是',
+                            value:1
+                        }],
+                        rules: [{
+                            required: true,
+                            message: "请输入是否公开共享",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "状态",
+                        prop: "status",
+                        type:'select',
+                        dicData:[{
+                            label:'启用',
+                            value:0
+                        },{
+                            label:'停用',
+                            value:1
+                        }],
+                    },
+                    {
+                        label: "备注",
+                        prop: "remarks",
+                        span:24,
+                        type: 'textarea',
+                        minRows: 3,
+                    },
+
+                ]
+            },
+            // 费用详细数据
+            feestemplateData:{
+                column:[
+                    {
+                        label: "客户",
+                        prop: "corpId",
+                        type:'select',
+                        rules: [{
+                            required: true,
+                            message: "请输入客户 Id",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "客户英文名称",
+                        prop: "corpEnName",
+                        disabled:true,
+                    },
+                    {
+                        label: "费用",
+                        prop: "feeId",
+                        rules: [{
+                            required: true,
+                            message: "请输入费用",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "费用编码",
+                        prop: "feeCode",
+                        disabled:true,
+                    },
+                    // {
+                    //     label: "费用中文名称",
+                    //     prop: "feeCnName",
+                    //     disabled:true,
+                    // },
+                    {
+                        label: "费用英文名称",
+                        prop: "feeEnName",
+                        disabled:true,
+                    },
+                    {
+                        label: "数量规则",
+                        prop: "quantityRule",
+                        rules: [{
+                            required: true,
+                            message: "请输入数量规则,用于根据单位自动计算数量",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "数量",
+                        prop: "quantity",
+                        rules: [{
+                            required: true,
+                            message: "请输入数量",
+                            trigger: "blur"
+                        },{
+                            pattern:/[1-9]\d*.\d*|0\.\d*[1-9]\d*/,
+                            message:"请输入数字",
+                            trigger:'blur'
+                        }]
+                    },
+                    {
+                        label: "单价",
+                        prop: "price",
+                        rules: [{
+                            required: true,
+                            message: "请输入单价",
+                            trigger: "blur"
+                        },{
+                            pattern:/[1-9]\d*.\d*|0\.\d*[1-9]\d*/,
+                            message:"请输入数字",
+                            trigger:'blur'
+                        }]
+                    },
+                    {
+                        label: "币种",
+                        prop: "curCode",
+                        rules: [{
+                            required: true,
+                            message: "请输入币种",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "备注",
+                        prop: "remarks",
+                        span:24,
+                        type: 'textarea',
+                        minRows: 3,
+                    },
+                ]
+            },
+        }
+    },
+    methods:{
+        // 获取详情数据
+        losbfeestemplateDetailfun(id){
+            this.pageLoading = true
+            losbfeestemplateDetail(id).then(res => {
+                this.form = res.data.data;
+                this.pageLoading = false
+            });
+        },
+        // 编辑按钮更改状态
+        editHandle(){
+            this.detailData.seeDisabled = false;
+        },
+        // 保存按钮
+        editCustomer(){
+            this.$refs.form.validate((valid)=>{
+                if (valid) {
+                    this.saveLoading = true
+                    this.losbfeestemplateSubmitfun()
+                }else {
+                    return false;
+                }
+            })
+        },
+        // 保存接口
+        losbfeestemplateSubmitfun(){
+            this.form.extendedData = JSON.stringify(this.form.extendedDataArr)
+            losbfeestemplateSubmit(this.form).then((res)=>{
+                this.$message({
+                    type: "success",
+                    message: "操作成功!"
+                });
+                this.saveLoading = false
+                this.losbfeestemplateDetailfun(res.data.data.id)
+                this.detailData.seeDisabled = true;
+            })
+        },
+
+        // 费用详细添加
+        feestemplatepingCompanyAdd(){
+            this.feestemplateVisible = true
+        },
+        // 费用详细编辑
+        feestemplateCompanyEdit(index,row){
+            this.feestemplateForm = JSON.parse(JSON.stringify(row))
+            this.feestemplateIndex = index
+            this.feestemplateVisible = true
+        },
+        // 费用详细删除
+        feestemplateCompanyDelete(index,row){
+            this.form.feestemplateList.splice(index,1)
+        },
+        // 费用详细确认
+        feestemplatecompanyConfirm(){
+            if (this.feestemplateIndex != null) {
+                this.form.feestemplateList.splice(this.feestemplateIndex,1,this.feestemplateForm)
+            }else {
+                this.form.feestemplateList.push(this.feestemplateForm)
+            }
+            this.feestemplateForm = {}
+            this.feestemplateIndex = null
+            this.feestemplateVisible = false
+        },
+        // 费用详细关闭
+        feestemplateClose(done){
+            this.$confirm('确认关闭?')
+                .then(_ => {
+                    done();
+                })
+                .catch(_ => {});
+        },
+        //返回列表
+        backToList() {
+            this.$emit('goBack')
+        },
+        // 更改表格颜色
+        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 scoped>
+::v-deep#out-table .back-one {
+    background: #ecf5ff !important;
+}
+::v-deep#out-table .back-two {
+    background: #ecf5ff !important;
+}
+.borderless {
+    height: 100%;
+    box-sizing: border-box
+
+}
+.customer-main {
+//margin-top: 20px;
+//width: calc(100% - 140px);
+    margin-bottom: 15px;
+}
+.margintop {
+    margin-top: 10px;
+}
+::v-deep.el-form-item {
+    margin-bottom: 0;
+}
+.isShow {
+    display: none;
+}
+</style>

+ 105 - 33
src/views/iosBasicData/losbfeestemplate/index.vue

@@ -1,47 +1,78 @@
 <template>
-  <basic-container>
-    <avue-crud :option="option"
-               :table-loading="loading"
-               :data="data"
-               :page.sync="page"
-               :permission="permissionList"
-               id="out-table"
-               :header-cell-class-name="headerClassName"
-               :before-open="beforeOpen"
-               v-model="form"
-               ref="crud"
-               @row-update="rowUpdate"
-               @row-save="rowSave"
-               @row-del="rowDel"
-               @search-change="searchChange"
-               @search-reset="searchReset"
-               @selection-change="selectionChange"
-               @current-change="currentChange"
-               @size-change="sizeChange"
-               @refresh-change="refreshChange"
-               @resetColumn="resetColumnTwo('crud', 'option', 'optionBack', 303)"
-               @saveColumn="saveColumnTwo('crud', 'option', 'optionBack', 303)"
-               @on-load="onLoad">
-      <template slot="menuLeft">
-        <el-button type="danger"
-                   size="small"
-                   icon="el-icon-delete"
-                   plain
-                   @click="handleDelete">删 除
-        </el-button>
-      </template>
+  <div>
+      <basic-container v-if="isShow">
+          <avue-crud :option="option"
+                     :table-loading="loading"
+                     :data="data"
+                     :page.sync="page"
+                     :permission="permissionList"
+                     id="out-table"
+                     :header-cell-class-name="headerClassName"
+                     :before-open="beforeOpen"
+                     v-model="form"
+                     ref="crud"
+                     @row-update="rowUpdate"
+                     @row-save="rowSave"
+                     @row-del="rowDel"
+                     @search-change="searchChange"
+                     @search-reset="searchReset"
+                     @selection-change="selectionChange"
+                     @current-change="currentChange"
+                     @size-change="sizeChange"
+                     @refresh-change="refreshChange"
+                     @resetColumn="resetColumnTwo('crud', 'option', 'optionBack', 303)"
+                     @saveColumn="saveColumnTwo('crud', 'option', 'optionBack', 303)"
+                     @on-load="onLoad">
+              <template slot="menuLeft">
+                  <el-button type="primary"
+                             size="small"
+                             icon="el-icon-plus"
+                             @click="addbtnfun()">新增
+                  </el-button>
+                  <el-button type="danger"
+                             size="small"
+                             icon="el-icon-delete"
+                             plain
+                             @click="handleDelete">删 除
+                  </el-button>
+              </template>
+              <template slot-scope="scope" slot="menu">
+                  <el-button
+                      :type="scope.type"
+                      :size="scope.size"
+                      icon="el-icon-edit"
+                      @click.stop="rowCellfun(scope.row, scope.index)"
+                  >编辑
+                  </el-button>
+                  <el-button
+                      :type="scope.type"
+                      :size="scope.size"
+                      icon="el-icon-delete"
+                      @click.stop="rowDel(scope.row, scope.index)"
+                  >删除
+                  </el-button>
+              </template>
 
-    </avue-crud>
-  </basic-container>
+          </avue-crud>
+      </basic-container>
+
+      <fees-templateItems ref="feesTemplateItems" v-if="!isShow" :detailData="detailData" @goBack="goBack"></fees-templateItems>
+  </div>
 </template>
 
 <script>
   import {losbfeestemplateList, losbfeestemplateDetail, losbfeestemplateSubmit, losbfeestemplateRemove} from "@/api/iosBasicData/losbfeestemplate.js";
   import {mapGetters} from "vuex";
+  import feesTemplateItems from "@/views/iosBasicData/losbfeestemplate/feesTemplateItems.vue";
 
   export default {
+      components:{ feesTemplateItems},
     data() {
       return {
+          // 详情传递的数据
+          detailData:{},
+          isShow:true,
+
         form: {},
         query: {},
         loading: true,
@@ -67,6 +98,7 @@
             {
               label: "业务类型 Id",
               prop: "businessTypeId",
+                width:120,
               rules: [{
                 required: true,
                 message: "请输入业务类型 Id",
@@ -76,6 +108,7 @@
             {
               label: "业务类型中文名称",
               prop: "businessTypeCnName",
+                width:160,
               rules: [{
                 required: true,
                 message: "请输入业务类型中文名称",
@@ -85,6 +118,7 @@
             {
               label: "业务类型英文名称",
               prop: "businessTypeEnName",
+                width:160,
               rules: [{
                 required: true,
                 message: "请输入业务类型英文名称",
@@ -104,6 +138,8 @@
             {
               label: "模版中文名称",
               prop: "cnName",
+                width:120,
+                search: true,
               rules: [{
                 required: true,
                 message: "请输入模版中文名称",
@@ -113,6 +149,8 @@
             {
               label: "模版英文名称",
               prop: "enName",
+                width:120,
+                search: true,
               rules: [{
                 required: true,
                 message: "请输入模版英文名称",
@@ -139,6 +177,7 @@
             {
               label: "是否公开共享",
               prop: "isShared",
+                width:100,
                 type:'select',
                 dicData:[{
                     label:'否',
@@ -269,6 +308,39 @@
           this.option = await this.getColumnData(this.getColumnName(303), this.optionBack);
       },
     methods: {
+        // 详情的返回列表
+        goBack(){
+            // 初始化数据
+            // this.detailData = this.$options.data().detailData;
+            if (JSON.stringify(this.$route.query) != "{}") {
+                this.$router.$avueRouter.closeTag();
+                this.$router.push({
+                    path: "/iosBasicData/losbfeestemplate/index"
+                });
+            }
+            this.isShow = true;
+            this.onLoad(this.page, this.search);
+        },
+        // 添加弹窗开启
+        addbtnfun(){
+            this.detailData = {
+                seeDisabled: false,
+            };
+            this.isShow = false
+        },
+        // 编辑详情打开
+        rowCellfun(row,index){
+            this.detailData = {
+                seeDisabled: true,
+                id: row.id
+            };
+            this.isShow = false
+            this.$nextTick(()=>{
+                this.$refs.feesTemplateItems.losbfeestemplateDetailfun(row.id)
+            })
+        },
+
+
       rowSave(row, done, loading) {
         losbfeestemplateSubmit(row).then(() => {
           this.onLoad(this.page);