Browse Source

Merge branch 'xiaoqin' into mergeBranch

codeMan 2 years ago
parent
commit
0ae52ffbfc
34 changed files with 3542 additions and 30 deletions
  1. 140 0
      src/HDrpManagement/afterSalesmag/components/add.vue
  2. 90 0
      src/HDrpManagement/afterSalesmag/components/check.vue
  3. 148 0
      src/HDrpManagement/afterSalesmag/components/edit.vue
  4. 106 0
      src/HDrpManagement/afterSalesmag/components/selectOrder.vue
  5. 43 0
      src/HDrpManagement/afterSalesmag/components/submit.vue
  6. 68 0
      src/HDrpManagement/afterSalesmag/index.vue
  7. 275 0
      src/HDrpManagement/afterSalesmag/modules/detail.vue
  8. 156 0
      src/HDrpManagement/afterSalesmag/modules/productDetail/add.vue
  9. 146 0
      src/HDrpManagement/afterSalesmag/modules/productDetail/index.vue
  10. 136 0
      src/HDrpManagement/aftersalesBill/components/add.vue
  11. 148 0
      src/HDrpManagement/aftersalesBill/components/edit.vue
  12. 106 0
      src/HDrpManagement/aftersalesBill/components/selectOrder.vue
  13. 62 0
      src/HDrpManagement/aftersalesBill/index.vue
  14. 246 0
      src/HDrpManagement/aftersalesBill/modules/detail.vue
  15. 158 0
      src/HDrpManagement/aftersalesBill/modules/productDetail/add.vue
  16. 146 0
      src/HDrpManagement/aftersalesBill/modules/productDetail/index.vue
  17. 90 0
      src/HDrpManagement/bankStatement/components/add.vue
  18. 164 0
      src/HDrpManagement/bankStatement/components/confirm.vue
  19. 93 0
      src/HDrpManagement/bankStatement/components/edit.vue
  20. 58 0
      src/HDrpManagement/bankStatement/index.vue
  21. 160 0
      src/HDrpManagement/bankStatement/modules/detail.vue
  22. 0 1
      src/HDrpManagement/projectChange/modules/detail.vue
  23. 13 2
      src/HDrpManagement/promotion/index.vue
  24. 2 2
      src/HDrpManagement/promotion/modules/detail.vue
  25. 1 1
      src/HDrpManagement/promotion/modules/productModel/index.vue
  26. 182 0
      src/HDrpManagement/salerPromotion/components/productDetail.vue
  27. 148 0
      src/HDrpManagement/salerPromotion/components/productModel.vue
  28. 146 0
      src/HDrpManagement/salerPromotion/components/promotionPrice.vue
  29. 14 24
      src/HDrpManagement/salerPromotion/index.vue
  30. 59 0
      src/HDrpManagement/salerPromotion/modules/detail.vue
  31. 60 0
      src/components/customBtn/index.vue
  32. 2 0
      src/main.js
  33. 63 0
      src/router/HDrpManagement.js
  34. 113 0
      src/template/selectAgent/index.vue

+ 140 - 0
src/HDrpManagement/afterSalesmag/components/add.vue

@@ -0,0 +1,140 @@
+<template>
+  <div>
+    <el-button size="mini" type="primary" @click="dialogFormVisible = true">新 建</el-button>
+    <el-drawer title="新建返退单" append-to-body :visible.sync="dialogFormVisible" size="40%" :show-close="false">
+      <div class="drawer__panel">
+        <el-row :gutter="20">
+          <el-form :model="form" :rules="rules" ref="form" label-width="100px" label-position="right" size="mini">
+            <el-col :span="24">
+              <el-form-item label="经销商:" prop="enterprisename">
+                  <selectAgent ref="agent" @selectRow="agentChange">
+                    <el-input readonly type="text" slot="input" size="small" @focus="$refs.agent.visible=true" v-model="form.enterprisename"></el-input>
+                  </selectAgent>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="订单号:" prop="sonum">
+                <selectOrder ref="order" @selectRow="orderChange">
+                    <el-input readonly :disabled="!form.sys_enterpriseid" type="text" slot="input" size="small" @focus="$refs.order.listData(),$refs.order.visible=true" v-model="form.sonum"></el-input>
+                </selectOrder>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="单据日期:" prop="billdate">
+                <el-date-picker
+                  style="width:100%"
+                  v-model="form.billdate"
+                  type="date"
+                  value-format="yyyy-MM-dd"
+                  placeholder="选择开始日期">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="返退原因:" prop="reason">
+                <el-input type="textarea" size="small" v-model="form.reason"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="是否实物退回" prop="isitemreturn">
+                <el-checkbox :true-label="1" :false-label="0" v-model="form.isitemreturn"></el-checkbox>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="dialogFormVisible = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import selectAgent from '@/template/selectAgent/index'
+import selectOrder from './selectOrder'
+export default {
+  name: "add",
+  components:{selectAgent,selectOrder},
+  data(){
+    return {
+      visible:false,
+      dialogFormVisible:false,
+      form:{
+        "sa_aftersalesmagid":0,
+        "sa_orderid":"",
+        "sys_enterpriseid":"",
+        "reason":"",
+        "isitemreturn":true,
+        "billdate":"",
+        "enterprisename":'',
+        "sonum":""
+      },
+      rules:{
+        enterprisename:[
+          { required: true, message: '请选择经销商', trigger: 'change'},
+        ],
+        sa_orderid:[
+          { required: true, message: '请选择订单', trigger: 'change'}
+        ],
+        billdate:[
+          { required: true, message: '请选择单据日期', trigger: 'change'}
+        ],
+      }
+    }
+  },
+  watch: {
+    dialogFormVisible (val) {
+      if (!val) {
+        this.$refs['form'].resetFields()
+        
+      }
+    }
+  },
+  created () {
+    this.form.billdate = new Date().getFullYear() + '-' + parseInt(new Date().getMonth() + 1) + '-' + parseInt(new Date().getDate())
+  },
+  methods:{
+    onSubmit(){
+      console.log(this.form)
+      this.$refs['form'].validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": "20230104160503",
+          "version":1,
+          "content": this.form
+        })
+        this.tool.showMessage(res,()=>{
+          this.$emit('onSuccess')
+          this.dialogFormVisible = false
+        })
+      })
+    },
+    agentChange (data) {
+      console.log(data);
+      this.form.sys_enterpriseid = data.sys_enterpriseid
+      this.form.enterprisename = data.enterprisename
+      this.$refs.order.param.content.sys_enterpriseid = data.sys_enterpriseid
+      this.$refs.agent.visible = false
+
+      this.form.sa_orderid = ''
+      this.form.sonum = ''
+    },
+    orderChange (data) {
+      this.form.sa_orderid = data.sa_orderid
+      this.form.sonum = data.sonum
+      this.$refs.order.visible = false
+    }
+  }
+}
+</script>
+
+<style scoped>
+.dialog-footer {
+  margin-top: 0;
+}
+.el-input {
+  width: 100% !important;
+}
+</style>

+ 90 - 0
src/HDrpManagement/afterSalesmag/components/check.vue

@@ -0,0 +1,90 @@
+<template>
+  <div>
+    <el-button type="primary" size="mini" @click="checkBtn">审 核</el-button>
+    <el-dialog :visible.sync="drawer" append-to-body width="50%">
+      <el-row :gutter="20">
+        <el-form :model="form" :rules="rules" ref="form" label-width="90px" label-position="right" size="mini">
+          <el-col :span="20">
+            <el-form-item label="退款金额" prop="returnamount">
+              <el-input v-model="form.returnamount" placeholder="退款金额"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="20">
+            <el-form-item label="物流单号" prop="logisticno">
+              <el-input v-model="form.logisticno" placeholder="请填写物流单号"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-form>
+      </el-row>
+      <div class="dialog-footer">
+        <el-button size="small" @click="drawer = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="warning" @click="onSubmit" class="normal-btn-width btn-warning">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  name: '',
+  props:['data'],
+  data() {
+    return {
+      drawer:false,
+      form:{
+        "sa_aftersalesmagid":'',
+        "logisticno":"",
+        "returnamount":''
+      },
+      rules:{
+        // logisticno:[
+        //   { required: true, message: '请填写物流号', trigger: 'blur'},
+        // ],
+        // returnamount:[
+        //   { required: true, message: '请填写退款金额', trigger: 'blur'}
+        // ]
+      }
+    };
+  },
+  computed:{
+  },
+  watch:{
+  },
+  methods: {
+    checkBtn () {
+      this.drawer = true
+      console.log('触发');
+      
+    },
+    onSubmit (status) {
+      this.$refs['form'].validate(async (valid) => {
+        if (!valid) return false
+        this.form.sa_aftersalesmagid = this.$route.query.id
+        let res2 = await this.$api.requested({
+          "id": 20230104161103,
+          "version":1,
+          "content": {
+              "sa_aftersalesmagid":this.$route.query.id,
+              "ischeck":true
+          }
+        })
+        this.tool.showMessage(res2,async () => {
+          const res = await this.$api.requested({
+            "id": "20230105100203",
+            "content": this.form
+          })
+          this.tool.showMessage(res,()=>{
+            this.$emit('onSuccess')
+            this.$refs['form'].resetFields();
+            this.drawer = false
+          })
+        })
+      })
+    }
+  },
+};
+</script>
+
+<style scoped>
+
+</style>

+ 148 - 0
src/HDrpManagement/afterSalesmag/components/edit.vue

@@ -0,0 +1,148 @@
+<template>
+  <div>
+    <el-button size="mini" type="primary" @click="editBtn">编 辑</el-button>
+    <el-drawer title="新建返退单" append-to-body :visible.sync="dialogFormVisible" size="40%" :show-close="false">
+      <div class="drawer__panel">
+        <el-row :gutter="20">
+          <el-form :model="form" :rules="rules" ref="form" label-width="100px" label-position="right" size="mini">
+            <el-col :span="24">
+              <el-form-item label="经销商:" prop="enterprisename">
+                  <selectAgent ref="agent" @selectRow="agentChange">
+                    <el-input readonly type="text" slot="input" size="small" @focus="$refs.agent.visible=true" v-model="form.enterprisename"></el-input>
+                  </selectAgent>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="订单号:" prop="sonum">
+                <selectOrder ref="order" @selectRow="orderChange">
+                    <el-input readonly :disabled="!form.sys_enterpriseid" type="text" slot="input" size="small" @focus="$refs.order.listData(),$refs.order.visible=true" v-model="form.sonum"></el-input>
+                </selectOrder>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="单据日期:" prop="billdate">
+                <el-date-picker
+                  style="width:100%"
+                  v-model="form.billdate"
+                  type="date"
+                  value-format="yyyy-MM-dd"
+                  placeholder="选择开始日期">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="返退原因:" prop="reason">
+                <el-input type="textarea" size="small" v-model="form.reason"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="是否实物退回" prop="isitemreturn">
+                <el-checkbox :true-label="1" :false-label="0" v-model="form.isitemreturn"></el-checkbox>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="dialogFormVisible = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import selectAgent from '@/template/selectAgent/index'
+import selectOrder from './selectOrder'
+export default {
+  name: "add",
+  props:['data'],
+  components:{selectAgent,selectOrder},
+  data(){
+    return {
+      visible:false,
+      dialogFormVisible:false,
+      form:{
+        "sa_aftersalesmagid":0,
+        "sa_orderid":"",
+        "sys_enterpriseid":"",
+        "reason":"",
+        "isitemreturn":true,
+        "billdate":"",
+        "enterprisename":'',
+        "sonum":""
+      },
+      rules:{
+        enterprisename:[
+          { required: true, message: '请选择经销商', trigger: 'change'},
+        ],
+        sa_orderid:[
+          { required: true, message: '请选择订单', trigger: 'change'}
+        ],
+        billdate:[
+          { required: true, message: '请选择单据日期', trigger: 'change'}
+        ],
+      }
+    }
+  },
+  watch: {
+    dialogFormVisible (val) {
+      if (!val) {
+        this.$refs['form'].resetFields()
+        
+      }
+    }
+  },
+  created () {
+    
+  },
+  methods:{
+    editBtn () {
+      this.dialogFormVisible = true
+      this.form = Object.assign({},this.form,this.data)
+      this.$nextTick(() => {
+        this.$refs.order.param.content.sys_enterpriseid = this.form.sys_enterpriseid
+      })
+    },
+    onSubmit(){
+      console.log(this.form)
+      this.$refs['form'].validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": "20230104160503",
+          "version":1,
+          "content": this.form
+        })
+        this.tool.showMessage(res,()=>{
+          this.$emit('onSuccess')
+          this.dialogFormVisible = false
+        })
+      })
+    },
+    agentChange (data) {
+      console.log(data);
+      this.form.sys_enterpriseid = data.sys_enterpriseid
+      this.form.enterprisename = data.enterprisename
+      this.$refs.order.param.content.sys_enterpriseid = data.sys_enterpriseid
+      this.$refs.agent.visible = false
+
+      this.form.sa_orderid = ''
+      this.form.sonum = ''
+    },
+    orderChange (data) {
+      this.form.sa_orderid = data.sa_orderid
+      this.form.sonum = data.sonum
+      this.$refs.order.visible = false
+    }
+  }
+}
+</script>
+
+<style scoped>
+.dialog-footer {
+  margin-top: 0;
+}
+.el-input {
+  width: 100% !important;
+}
+</style>

+ 106 - 0
src/HDrpManagement/afterSalesmag/components/selectOrder.vue

@@ -0,0 +1,106 @@
+<template>
+  <div> 
+    <el-dialog :visible.sync="visible" append-to-body width="50%">
+      <div class="flex-align-center flex-between mt-10">
+        <el-input style="width:200px" size="small"  suffix-icon="el-icon-search" v-model="param.content.where.condition" placeholder="搜索" @keyup.enter.native="listData(param.content.pageNumber = 1)" @clear="listData(param.content.pageNumber = 1)" clearable></el-input>
+      </div>
+      <div>
+        <el-table
+          ref="multipleTable"
+          :data="tableData"
+          style="width: 100%"
+          size="mini"
+          border>
+          <el-table-column
+            prop="sonum"
+            label="订单号">
+          </el-table-column>
+          <el-table-column
+            prop="type"
+            label="订单类型">
+          </el-table-column>
+          <el-table-column
+            prop="tradefield"
+            label="领域">
+          </el-table-column>
+          <el-table-column
+            prop="rebate_userate"
+            label="订单使用返利占比">
+          </el-table-column>
+          
+          <el-table-column
+            label="操作"
+            width="90">
+            <template slot-scope="scope">
+              <el-button type="text" size="small" @click="selectRow(scope.row)">选 择</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+        <div style="margin-top:16px;text-align:right">
+          <el-pagination
+            background
+            small
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="currentPage"
+            :page-size="param.content.pageSize"
+            layout="total, prev, pager, next, jumper"
+            :total="total">
+          </el-pagination>
+        </div>
+      </div>
+    </el-dialog>
+    <slot name="input"></slot>
+  </div>
+</template>
+
+<script>
+export default {
+  data () {
+    return {
+      visible:false,
+      param:{
+        "id": 20230105110003,
+        "version":1,
+        "content": {
+            "sys_enterpriseid":'',
+          "where":{
+              "condition":""
+          }
+        }
+      },
+      tableData: [],
+      total:0,
+      currentPage:0
+    }
+  },
+  methods:{
+    async listData () {
+      const res = await this.$api.requested(this.param)
+      this.tableData = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+      console.log(this.tableData);
+      
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData()
+    },
+    selectRow (row) {
+      this.$emit('selectRow',row)
+    }
+  },
+  created () {
+  },
+}
+
+</script>
+<style>
+</style>

+ 43 - 0
src/HDrpManagement/afterSalesmag/components/submit.vue

@@ -0,0 +1,43 @@
+<template>
+  <div>
+    <el-button type="primary" size="mini" @click="submit">提 交</el-button>
+  </div>
+</template>
+
+<script>
+export default {
+  name: '',
+  data() {
+    return {
+    };
+  },
+  computed:{
+  },
+  watch:{
+  },
+  methods: {
+    submit () {
+      this.$confirm('确定提交当前返退单吗?','提示',{
+        confirmButtonText:'确定',
+        cancelButtonText:'取消',
+        type:'warning'
+      }).then(async () => {
+        let res = await this.$api.requested({
+          "id": 20230105161603,
+          "version":1,
+          "content": {
+              "sa_aftersalesmagid":this.$route.query.id
+          }
+        })
+        this.tool.showMessage(res,() => {
+          this.$emit('onSuccess')
+        })
+      })
+    }
+  },
+};
+</script>
+
+<style scoped>
+
+</style>

+ 68 - 0
src/HDrpManagement/afterSalesmag/index.vue

@@ -0,0 +1,68 @@
+
+<template>
+  <div>
+    <basicLayout 
+      ref="list" 
+      :oldFormPath="{
+        add:'HDrpManagement/afterSalesmag/components',
+      }"
+      tableName="afterSalesMagTable" 
+      idName="sa_aftersalesmagid" 
+      :apiId="{query:20230104160703,del:'20230104160803'}"
+      :options="options"
+      :detailPath="{
+        path:'/afterSalesmagDetail'
+      }"
+      @listData="list">
+      <div slot="custom">
+        <div class="label_center">
+          <p class="search__label">状态:</p>
+          <el-select @clear="$refs.list.param.content.pageNumber = 1 ;$refs.list.param.content.where.status = '';$refs.list.listData()" v-model="status" clearable style="margin-right:10px" size="small" placeholder="请选择状态" @change="$refs.list.param.content.pageNumber = 1 ;$refs.list.param.content.where.status = status;$refs.list.listData()">
+            <el-option label="新建" value="新建" />
+            <el-option label="提交" value="提交" />
+            <el-option label="审核" value="审核" />
+            <el-option label="复核" value="复核" />
+          </el-select>
+        </div>
+      </div>
+      <template v-slot:tbList="scope">
+        <span v-if="scope.data.column.columnname == 'status'">
+          <span style="color:#333333" v-if="scope.data.column.data[[scope.data.column.columnname]] == '新建'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
+          <span style="color:#333333" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '新建'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
+          <span style="color:#3874f6" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '审核'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
+          <span style="color:#52C41A" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '发布'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
+        </span>
+        <div v-else-if="scope.data.column.columnname == 'isitemreturn'">
+          <span>{{scope.data.column.data[[scope.data.column.columnname]] ? '是' : '否'}}</span>
+        </div>
+        <span v-else>
+          {{scope.data.column.data[[scope.data.column.columnname]]}}
+        </span>
+        <div v-if="scope.data.column.columnname != 'operation' && !scope.data.column.data[[scope.data.column.columnname]] && scope.data.column.data[[scope.data.column.columnname]] !== 0">--</div>
+      </template>
+      <template v-slot:tbOpreation="scope">
+      </template>
+    </basicLayout>
+  </div>
+</template>
+
+<script>
+export default {
+  data () {
+    return {
+      options:[],
+      status:''
+      
+    }
+  },
+  methods:{
+    list(data) {
+      console.log(data);
+      
+    }
+  }
+}
+
+</script>
+<style>
+</style>

+ 275 - 0
src/HDrpManagement/afterSalesmag/modules/detail.vue

@@ -0,0 +1,275 @@
+<template>
+<!-- :tabs="['详细信息']" -->
+  <div>
+    <basicDetails
+        ref="details"
+        :titleText="mainData.billno"
+        :editData="mainData"
+        :mainAreaData="mainAreaData"
+        turnPageId="20230104160703"
+        idname="sa_aftersalesmagid"
+        ownertable="sa_aftersalesmag"
+        delApiId="20230104160803"
+        :statusCheck="[{key:'status',value:'审核'},{key:'status',value:'复核'},{key:'status',value:'提交'}]"
+        tags=""
+        :tabs="['商品明细','详细信息']"
+        @pageChange="pageChange"
+        @onEditSuccess="queryMainData($route.query.id)">
+      <div slot="tags">
+      </div>
+      <div slot="customOperation" >
+        <Edit v-if="tool.checkAuth($route.name,'update') && mainData.status == '新建'" class="inline-16" @onSuccess="queryMainData()" :data="mainData" />
+        <customBtn
+          class="inline-16"
+          btnName="提 交"
+          message="确定提交当前返退单吗?"
+          idName="20230105161603"
+          keyName="sa_aftersalesmagid"
+          :id="$route.query.id"
+          @onSuccess="queryMainData()"
+          v-if="mainData.status == '新建' && tool.checkAuth($route.name,'submit')"
+        />
+        <customBtn
+          class="inline-16"
+          btnName="取 消 提 交"
+          message="当前返退单确定取消提交吗?"
+          idName="20230105161703"
+          keyName="sa_aftersalesmagid"
+          :id="$route.query.id"
+          @onSuccess="queryMainData()" 
+          v-if="mainData.status == '提交' && tool.checkAuth($route.name,'cancelSubmit')"
+        />
+        <Check 
+          class="inline-16"
+          @onSuccess="queryMainData()"
+          v-if="mainData.status == '提交' && tool.checkAuth($route.name,'check')"
+          ></Check>
+        <customBtn
+          class="inline-16"
+          btnName="反 审 核"
+          message="确定反审核当前返退单吗?"
+          idName="20230104161103"
+          keyName="sa_aftersalesmagid"
+          :paramData="[{key:'ischeck',value:false}]"
+          :id="$route.query.id"
+          @onSuccess="queryMainData()" 
+          v-if="mainData.status == '审核' && tool.checkAuth($route.name,'cancelCheck')"
+        />
+        <customBtn
+          class="inline-16"
+          btnName="复 核"
+          message="确定复核当前返退单吗?"
+          idName="20230104160903"
+          keyName="sa_aftersalesmagid"
+          :id="$route.query.id"
+          @onSuccess="queryMainData()" 
+          v-if="mainData.status == '审核' && tool.checkAuth($route.name,'reCheck')"
+        />
+      </div>
+      <div slot="slot0" >
+        <productDetail ref="productDetail">
+          <addProduct @onSuccess="$refs.productDetail.listData()" v-if="mainData" slot="addProduct" :data="mainData" />
+          <template v-slot:editProduct="scope">
+            <el-button class="inline-16" type="text" size="mini" :disabled="!isEdit" @click="$refs.productDetail.currentProduct=scope.data">编 辑</el-button>            
+          </template>
+          <template v-slot:delProduct="scope">
+            <delete-btn 
+              message="确定删除当前商品吗?"
+              slot="delProduct"
+              nameId="20230105111203" 
+              nameKey="sa_aftersalesmag_itemsids" 
+              :id="scope.data.sa_aftersalesmag_itemsid"
+              @deleteSuccess="$refs.productDetail.listData()"
+              v-if="mainData.status == '新建' && tool.checkAuth($route.name,'delete')"
+            ></delete-btn>
+          </template>
+        </productDetail>
+      </div>
+      <div slot="slot1" >
+        <base-info v-if="detailInfo" :detailInfo="detailInfo"></base-info>
+      </div>
+    </basicDetails>
+  </div>
+</template>
+
+<script>
+import BaseInfo from '@/HDrpManagement/projectChange/modules/modules/baseInfo/baseInfo'
+import Edit from '../components/edit'
+import productDetail from './productDetail/index'
+import addProduct from './productDetail/add'
+
+import Check from '../components/check'
+export default {
+  name: "detail",
+  data() {
+    return {
+      mainData:'',
+      mainAreaData:{},
+      detailInfo:'',
+      isEdit:true
+    }
+  },
+  components:{
+    BaseInfo,
+    Edit,
+    productDetail,
+    addProduct,
+    Check
+  },
+  provide () {
+    return {
+      isEdit: () => this.isEdit
+    }
+  },
+  methods:{
+    async queryMainData(id) {
+      const res = await this.$api.requested({
+        "id": "20230104160603",
+        "content": {
+          "sa_aftersalesmagid": this.$route.query.id
+        }
+      })
+      this.mainData = res.data
+      this.mainData.status != '新建' ? this.isEdit = false : this.isEdit = true
+      console.log(this.mainData);
+      this.changeDataStructure()
+      
+    },
+    changeDataStructure() {
+      this.mainAreaData = [
+        {
+          label:'单号',
+          value:this.mainData.billno
+        },
+        {
+          label:'单据日期',
+          value:this.mainData.billdate
+        },
+        {
+          label:'状态',
+          value:this.mainData.status
+        },
+        {
+          label:'经销商编号',
+          value:this.mainData.agentnum
+        },
+        {
+          label:'经销商',
+          value:this.mainData.enterprisename
+        },
+        {
+          label:'来源单号',
+          value:this.mainData.sonum
+        },
+        {
+          label:'订单使用返利占比',
+          value:this.mainData.rebate_userate
+        },
+        {
+          label:'订单账户',
+          value:this.mainData.accountname
+        },
+        {
+          label:'是否实物退回',
+          value:this.mainData.isitemreturn ? '是' : '否'
+        },
+        {
+          label:'退款金额',
+          value:this.mainData.returnamount
+        },
+        {
+          label:'物流单号',
+          value:this.mainData.logisticno
+        },
+        {
+          label:'原因',
+          value:this.mainData.reason
+        }
+      ]
+      this.detailInfo = {
+        baseInfo:[
+          {
+            label:'单号',
+            value:this.mainData.billno
+          },
+          {
+            label:'单据日期',
+            value:this.mainData.billdate
+          },
+          {
+            label:'状态',
+            value:this.mainData.STATUS
+          },
+          {
+            label:'经销商编号',
+            value:this.mainData.agentnum
+          },
+          {
+            label:'经销商',
+            value:this.mainData.enterprisename
+          },
+          {
+            label:'来源单号',
+            value:this.mainData.sonum
+          },
+          {
+            label:'订单使用返利占比',
+            value:this.mainData.rebate_userate
+          },
+          {
+            label:'订单账户',
+            value:this.mainData.accountname
+          },
+          {
+            label:'是否实物退回',
+            value:this.mainData.isitemreturn ? '是' : '否'
+          },
+          {
+            label:'退款金额',
+            value:this.mainData.returnamount
+          },
+          {
+            label:'物流单号',
+            value:this.mainData.logisticno
+          },
+          {
+            label:'原因',
+            value:this.mainData.reason
+          }
+        ],
+        systemInfo: [
+          {label:'创建人',value:this.mainData.createby},
+          {label:'创建时间',value:this.mainData.createdate},
+          {label:'提交人',value:this.mainData.submitby},
+          {label:'提交时间',value:this.mainData.submitdate},
+          {label:'审核人',value:this.mainData.checkby},
+          {label:'审核时间',value:this.mainData.checkdate},
+          {label:'复核人',value:this.mainData.recheckby},
+          {label:'复核时间',value:this.mainData.recheckdate},
+        ]
+      }
+    },
+    // 监听切换数据,上一页,下一页
+    pageChange (id,rowindex,tabIndex) {
+      this.flag = false
+      tabIndex = this.$route.query.tabIndex
+      this.$router.replace({path:'/afterSalesmagDetail',query:{id:id,rowindex:rowindex,tabIndex:tabIndex}})
+      this.queryMainData(id)
+    },
+    onSuccess(){
+      this.visible = false
+      this.queryMainData(this.$route.query.id)
+      this.$emit('onSuccess')
+    }
+  },
+  mounted () {
+    this.queryMainData(this.$route.query.id)
+  },
+  created() {
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 156 - 0
src/HDrpManagement/afterSalesmag/modules/productDetail/add.vue

@@ -0,0 +1,156 @@
+<template>
+  <div>
+    <el-button size="mini" type="primary" :disabled="!isEdit()" @click="addBtn">添 加</el-button>
+    <el-drawer append-to-body :visible.sync="dialogFormVisible" size="70%">
+      <div slot="title" style="font-size: 15px">
+        添加商品
+      </div>
+      <div class="drawer__panel">
+        <el-input style="width:250px;margin-bottom:10px" size="small" placeholder="请输入搜索内容" clearable @clear="getOrderList(params.content.pageNumber=1)" v-model="params.content.where.condition" @keyup.enter.native="getOrderList(params.content.pageNumber=1)"></el-input>
+        <selectTable @selectChange="selectChange" v-if="dialogFormVisible" idName="sa_orderitemsid" ref="table" v-model="result" :layout="tablecols" :data="orderList" :custom="true" height="500px"  @upDateData="upDateData">
+           <template v-slot:customcol="scope">
+              <div>{{scope.column.data[scope.column.columnname]}}</div>
+            </template>
+        </selectTable>
+        <div class="container normal-panel" style="text-align:right">
+          <el-pagination
+              style="text-align:right"
+              background
+              small
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+              :current-page="params.content.pageNumber"
+              :page-size="params.content.pageSize"
+              layout="total, prev, pager, next, jumper"
+              :total="total">
+          </el-pagination>
+        </div>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="dialogFormVisible = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" :disabled="isLength" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import selectTable from '@/components/selectTable/index'
+import { log } from '@antv/g2plot/lib/utils'
+export default {
+  name: "add",
+  props:['data','disabled'],
+  inject:['isEdit'],
+  components:{selectTable},
+  data(){
+    return {
+      result:[],
+      selectArr:[],
+      isLength:true,
+      dialogFormVisible:false,
+      orderList:[],
+      tablecols:[],
+      total:0,
+      params: {
+        "id": 20230105110903,
+        "content": {
+          "pageNumber": 1,
+          "pageSize": 20,
+          "sa_orderid":'',
+          "sa_aftersalesmagid":'',
+          "where": {
+              "condition": ""
+          }
+        }
+      }
+    }
+  },
+  computed: {
+    isEdit () {
+      return function (data) {
+        console.log(this.selectArr.some(item => item == data));
+        let is = this.selectArr.some(item => item == data)
+        return is
+      }
+    }
+  },
+  created () {
+    this.getOrderList()
+    this.tablecols = this.tool.tabelCol(this.$route.name).addPorductDetailTable.tablecols
+  },
+  watch: {
+    dialogFormVisible (val) {
+      if(!val) {
+        this.$refs.table.allArr = []
+      }
+    }
+  },
+  methods:{
+    addBtn () {
+      this.dialogFormVisible = true
+      this.getOrderList()
+    },
+    async onSubmit(){
+      let data = this.$refs.table.allArr.map(item => {
+        return {
+          "sa_aftersalesmag_itemsid":0,
+          "sa_orderitemsid":item.sa_orderitemsid,
+          "itemid": item.itemid,
+          "reason":"",
+          "qty":item.qty ,
+          "price":item.price
+        }
+      })
+      let res = await this.$api.requested({
+        "id": "20230105111003",
+        "content": {
+            "sa_aftersalesmagid": this.$route.query.id,
+            "iteminfos": data
+        }
+      })
+      this.tool.showMessage(res,()=>{
+        this.$emit('onSuccess')
+        this.dialogFormVisible = false
+      })
+    },
+    async getOrderList () {
+      this.params.content.sa_orderid = this.data.sa_orderid
+      this.params.content.sa_aftersalesmagid = this.data.sa_aftersalesmagid
+      let res = await this.$api.requested(this.params)
+      console.log(res.data);
+      
+      this.orderList = res.data
+      this.total = res.total
+      console.log(res);
+      
+    },
+    selectChange (data) {
+      this.selectArr = data
+      this.isLength = data.length < 1
+    },
+    upDateData (data) {
+      this.selectArr = data
+      this.isLength = data.length < 1
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.params.content.pageSize = val
+      this.getOrderList()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.params.content.pageNumber = val
+      this.getOrderList()
+    },
+  }
+}
+</script>
+
+<style scoped>
+.dialog-footer {
+  margin-top: 0;
+}
+.el-select {
+  width: 100%;
+}
+</style>

+ 146 - 0
src/HDrpManagement/afterSalesmag/modules/productDetail/index.vue

@@ -0,0 +1,146 @@
+
+<template>
+  <div>
+    <div style="display:flex;align-items:center">
+      <el-input
+          placeholder="请输入搜索内容"
+          suffix-icon="el-icon-search"
+          v-model="params.content.where.condition"
+          style="width:200px"
+          size="mini"
+          class="input-with-select inline-16"
+          @keyup.native.enter="listData(params.content.pageNumber=1)"
+          @clear="clearData"
+          clearable>
+      </el-input>
+      <slot name="addProduct"></slot>
+    </div>
+    <div style="margin-top: 15px">
+      <tableLayout :layout="tablecols" :data="list" :opwidth="200"  :custom="true" :width="false"  :height="tableHieght" fixedName="operation">
+        <template v-slot:customcol="scope">
+          <div v-if="scope.column.columnname == 'price'">
+            <el-input size="small" v-if="currentProduct.sa_aftersalesmag_itemsid == scope.column.data.sa_aftersalesmag_itemsid" v-model="scope.column.data.price"></el-input>
+            <span v-else>{{scope.column.data.price}}</span>
+          </div>
+          <div v-else-if="scope.column.columnname == 'qty'">
+            <el-input size="small" v-if="currentProduct.sa_aftersalesmag_itemsid == scope.column.data.sa_aftersalesmag_itemsid" v-model="scope.column.data.qty"></el-input>
+            <span v-else>{{scope.column.data.qty}}</span>
+          </div>
+          <div v-else-if="scope.column.columnname == 'reason'">
+            <div v-if="currentProduct.sa_aftersalesmag_itemsid == scope.column.data.sa_aftersalesmag_itemsid">
+              <el-input type="textarea" size="mini" v-model="scope.column.data.reason"></el-input>
+            </div>
+            <div v-else>{{scope.column.data.reason ? scope.column.data.reason : '--'}}</div>
+          </div>
+          <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
+          <p v-if="!scope.column.data[scope.column.columnname] && scope.column.data[scope.column.columnname] !== 0 && scope.column.columnname != 'operation'&& scope.column.columnname != 'reason'">--</p>
+        </template>
+        <template v-slot:opreation="scope">
+          <el-button class="inline-16" type="text" size="mini" @click="save(scope.data)" v-if="currentProduct.sa_aftersalesmag_itemsid == scope.data.sa_aftersalesmag_itemsid">保 存</el-button>
+          <slot v-else name="editProduct" :data="scope.data"></slot>
+          <slot name="delProduct" :data="scope.data"></slot>
+        </template>
+      </tableLayout>
+    </div>
+    <div style="margin-top:16px;text-align:right">
+      <el-pagination
+          background
+          small
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page="params.content.pageNumber"
+          :page-size="params.content.pageSize"
+          layout="total, prev, pager, next, jumper"
+          :total="total">
+      </el-pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props:["data"],
+  data () {
+    return {
+      tableHieght:"calc(100vh - 380px)",
+      tablecols:[],
+      list:[],
+      total:0,
+      params:{
+        "id": 20230105111103,
+        "version":1,
+        "content": {
+            "sa_aftersalesmagid":'',
+            "pageNumber":1,
+            "pageSize":20,
+            "where":{
+              "condition":''
+            }
+        }
+      },
+      options:[
+      ],
+      productList:'',
+      currentProduct:{}
+    }
+  },
+  methods:{
+    async save (data) {
+      let res = await this.$api.requested({
+        "id": "20230105111003",
+        "version":1,
+        "content": {
+            "sa_aftersalesmagid":this.$route.query.id,
+            "iteminfos":[
+                {
+                    "sa_aftersalesmag_itemsid":data.sa_aftersalesmag_itemsid,
+                    "sa_orderitemsid":data.sa_orderitemsid,
+                    "itemid": data.itemid,
+                    "reason":data.reason,
+                    "qty":data.qty,
+                    "price":data.price
+                }
+            ]
+
+        }
+      })
+      this.tool.showMessage(res,() => {
+        this.$emit('onSuccess')
+        this.listData()
+        this.currentProduct = ''
+      })
+    },
+    async listData(){
+      this.params.content.sa_aftersalesmagid = this.$route.query.id
+      const res = await this.$api.requested(this.params)
+      this.list = res.data
+      this.total = res.total
+      console.log(this.list)
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.params.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.params.content.pageNumber = val
+      this.listData()
+    },
+    clearData(){
+      this.listData()
+    },
+    queryClick(){
+      this.listData()
+    }
+  },
+  created() {
+    this.listData()
+    this.tablecols = this.tool.tabelCol(this.$route.name).ProductDetailTable.tablecols
+  }
+}
+
+</script>
+<style scoped>
+
+</style>

+ 136 - 0
src/HDrpManagement/aftersalesBill/components/add.vue

@@ -0,0 +1,136 @@
+<template>
+  <div>
+    <el-button size="mini" type="primary" @click="dialogFormVisible = true">新 建</el-button>
+    <el-drawer title="新建返退单" append-to-body :visible.sync="dialogFormVisible" size="40%" :show-close="false">
+      <div class="drawer__panel">
+        <el-row :gutter="20">
+          <el-form :model="form" :rules="rules" ref="form" label-width="100px" label-position="right" size="mini">
+            <!-- <el-col :span="24">
+              <el-form-item label="经销商:" prop="enterprisename">
+                  <selectAgent ref="agent" @selectRow="agentChange">
+                    <el-input readonly type="text" slot="input" size="small" @focus="$refs.agent.visible=true" v-model="form.enterprisename"></el-input>
+                  </selectAgent>
+              </el-form-item>
+            </el-col> -->
+            <el-col :span="24">
+              <el-form-item label="订单号:" prop="sonum">
+                <selectOrder ref="order" @selectRow="orderChange">
+                    <el-input readonly type="text" slot="input" size="small" @focus="$refs.order.listData(),$refs.order.visible=true" v-model="form.sonum"></el-input>
+                </selectOrder>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="单据日期:" prop="billdate">
+                <el-date-picker
+                  style="width:100%"
+                  v-model="form.billdate"
+                  type="date"
+                  value-format="yyyy-MM-dd"
+                  placeholder="选择开始日期">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="返退原因:" prop="reason">
+                <el-input type="textarea" size="small" v-model="form.reason"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="是否实物退回" prop="isitemreturn">
+                <el-checkbox :true-label="1" :false-label="0" v-model="form.isitemreturn"></el-checkbox>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="dialogFormVisible = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import selectAgent from '@/template/selectAgent/index'
+import selectOrder from './selectOrder'
+export default {
+  name: "add",
+  components:{selectAgent,selectOrder},
+  data(){
+    return {
+      visible:false,
+      dialogFormVisible:false,
+      form:{
+        "sa_aftersalesmagid":0,
+        "sa_orderid":0,
+        "reason":"",
+        "isitemreturn":true,
+        "billdate":"",
+        "enterprisename":'',
+        "sonum":""
+      },
+      rules:{
+        enterprisename:[
+          { required: true, message: '请选择经销商', trigger: 'change'},
+        ],
+        sa_orderid:[
+          { required: true, message: '请选择订单', trigger: 'change'}
+        ],
+        billdate:[
+          { required: true, message: '请选择单据日期', trigger: 'change'}
+        ],
+      }
+    }
+  },
+  watch: {
+    dialogFormVisible (val) {
+      if (!val) {
+        this.$refs['form'].resetFields()
+        
+      }
+    }
+  },
+  created () {
+    this.form.billdate = new Date().getFullYear() + '-' + parseInt(new Date().getMonth() + 1) + '-' + parseInt(new Date().getDate())
+  },
+  methods:{
+    onSubmit(){
+      console.log(this.form)
+      this.$refs['form'].validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": "20230104160503",
+          "version":1,
+          "content": this.form
+        })
+        this.tool.showMessage(res,()=>{
+          this.$emit('onSuccess')
+          this.dialogFormVisible = false
+        })
+      })
+    },
+    agentChange (data) {
+      console.log(data);
+      this.form.sys_enterpriseid = data.sys_enterpriseid
+      this.form.enterprisename = data.enterprisename
+      this.$refs.order.param.content.sys_enterpriseid = data.sys_enterpriseid
+      this.$refs.agent.visible = false
+    },
+    orderChange (data) {
+      this.form.sa_orderid = data.sa_orderid
+      this.form.sonum = data.sonum
+      this.$refs.order.visible = false
+    }
+  }
+}
+</script>
+
+<style scoped>
+.dialog-footer {
+  margin-top: 0;
+}
+.el-input {
+  width: 100% !important;
+}
+</style>

+ 148 - 0
src/HDrpManagement/aftersalesBill/components/edit.vue

@@ -0,0 +1,148 @@
+<template>
+  <div>
+    <el-button size="mini" type="primary" @click="editBtn">编 辑</el-button>
+    <el-drawer title="新建返退单" append-to-body :visible.sync="dialogFormVisible" size="40%" :show-close="false">
+      <div class="drawer__panel">
+        <el-row :gutter="20">
+          <el-form :model="form" :rules="rules" ref="form" label-width="100px" label-position="right" size="mini">
+            <el-col :span="24">
+              <el-form-item label="经销商:" prop="enterprisename">
+                  <selectAgent ref="agent" @selectRow="agentChange">
+                    <el-input readonly type="text" slot="input" size="small" @focus="$refs.agent.visible=true" v-model="form.enterprisename"></el-input>
+                  </selectAgent>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="订单号:" prop="sonum">
+                <selectOrder ref="order" @selectRow="orderChange">
+                    <el-input readonly :disabled="!form.sys_enterpriseid" type="text" slot="input" size="small" @focus="$refs.order.listData(),$refs.order.visible=true" v-model="form.sonum"></el-input>
+                </selectOrder>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="单据日期:" prop="billdate">
+                <el-date-picker
+                  style="width:100%"
+                  v-model="form.billdate"
+                  type="date"
+                  value-format="yyyy-MM-dd"
+                  placeholder="选择开始日期">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="返退原因:" prop="reason">
+                <el-input type="textarea" size="small" v-model="form.reason"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="是否实物退回" prop="isitemreturn">
+                <el-checkbox :true-label="1" :false-label="0" v-model="form.isitemreturn"></el-checkbox>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="dialogFormVisible = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import selectAgent from '@/template/selectAgent/index'
+import selectOrder from './selectOrder'
+export default {
+  name: "add",
+  props:['data'],
+  components:{selectAgent,selectOrder},
+  data(){
+    return {
+      visible:false,
+      dialogFormVisible:false,
+      form:{
+        "sa_aftersalesmagid":0,
+        "sa_orderid":"",
+        "sys_enterpriseid":"",
+        "reason":"",
+        "isitemreturn":true,
+        "billdate":"",
+        "enterprisename":'',
+        "sonum":""
+      },
+      rules:{
+        enterprisename:[
+          { required: true, message: '请选择经销商', trigger: 'change'},
+        ],
+        sa_orderid:[
+          { required: true, message: '请选择订单', trigger: 'change'}
+        ],
+        billdate:[
+          { required: true, message: '请选择单据日期', trigger: 'change'}
+        ],
+      }
+    }
+  },
+  watch: {
+    dialogFormVisible (val) {
+      if (!val) {
+        this.$refs['form'].resetFields()
+        
+      }
+    }
+  },
+  created () {
+    
+  },
+  methods:{
+    editBtn () {
+      this.dialogFormVisible = true
+      this.form = Object.assign({},this.form,this.data)
+      this.$nextTick(() => {
+        this.$refs.order.param.content.sys_enterpriseid = this.form.sys_enterpriseid
+      })
+    },
+    onSubmit(){
+      console.log(this.form)
+      this.$refs['form'].validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": "20230104160503",
+          "version":1,
+          "content": this.form
+        })
+        this.tool.showMessage(res,()=>{
+          this.$emit('onSuccess')
+          this.dialogFormVisible = false
+        })
+      })
+    },
+    agentChange (data) {
+      console.log(data);
+      this.form.sys_enterpriseid = data.sys_enterpriseid
+      this.form.enterprisename = data.enterprisename
+      this.$refs.order.param.content.sys_enterpriseid = data.sys_enterpriseid
+      this.$refs.agent.visible = false
+
+      this.form.sa_orderid = ''
+      this.form.sonum = ''
+    },
+    orderChange (data) {
+      this.form.sa_orderid = data.sa_orderid
+      this.form.sonum = data.sonum
+      this.$refs.order.visible = false
+    }
+  }
+}
+</script>
+
+<style scoped>
+.dialog-footer {
+  margin-top: 0;
+}
+.el-input {
+  width: 100% !important;
+}
+</style>

+ 106 - 0
src/HDrpManagement/aftersalesBill/components/selectOrder.vue

@@ -0,0 +1,106 @@
+<template>
+  <div> 
+    <el-dialog :visible.sync="visible" append-to-body width="50%">
+      <div class="flex-align-center flex-between mt-10">
+        <el-input style="width:200px" size="small"  suffix-icon="el-icon-search" v-model="param.content.where.condition" placeholder="搜索" @keyup.enter.native="listData(param.content.pageNumber = 1)" @clear="listData(param.content.pageNumber = 1)" clearable></el-input>
+      </div>
+      <div>
+        <el-table
+          ref="multipleTable"
+          :data="tableData"
+          style="width: 100%"
+          size="mini"
+          border>
+          <el-table-column
+            prop="sonum"
+            label="订单号">
+          </el-table-column>
+          <el-table-column
+            prop="type"
+            label="订单类型">
+          </el-table-column>
+          <el-table-column
+            prop="tradefield"
+            label="领域">
+          </el-table-column>
+          <el-table-column
+            prop="rebate_userate"
+            label="订单使用返利占比">
+          </el-table-column>
+          
+          <el-table-column
+            label="操作"
+            width="90">
+            <template slot-scope="scope">
+              <el-button type="text" size="small" @click="selectRow(scope.row)">选 择</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+        <div style="margin-top:16px;text-align:right">
+          <el-pagination
+            background
+            small
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="currentPage"
+            :page-size="param.content.pageSize"
+            layout="total, prev, pager, next, jumper"
+            :total="total">
+          </el-pagination>
+        </div>
+      </div>
+    </el-dialog>
+    <slot name="input"></slot>
+  </div>
+</template>
+
+<script>
+export default {
+  data () {
+    return {
+      visible:false,
+      param:{
+        "id": 20230105110003,
+        "version":1,
+        "content": {
+          "where":{
+              "condition":""
+          }
+        }
+      },
+      tableData: [],
+      total:0,
+      currentPage:0
+    }
+  },
+  methods:{
+    async listData () {
+      const res = await this.$api.requested(this.param)
+      this.tableData = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+      console.log(this.tableData);
+      
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData()
+    },
+    selectRow (row) {
+      this.$emit('selectRow',row)
+    }
+  },
+  created () {
+    this.listData()
+  },
+}
+
+</script>
+<style>
+</style>

+ 62 - 0
src/HDrpManagement/aftersalesBill/index.vue

@@ -0,0 +1,62 @@
+
+<template>
+  <div>
+    <basicLayout 
+      ref="list" 
+      :oldFormPath="{
+        add:'HDrpManagement/aftersalesBill/components',
+      }"
+      tableName="afterSalesMagTable" 
+      idName="sa_aftersalesmagid" 
+      :apiId="{query:20230105161503,del:''}"
+      :options="options"
+      :detailPath="{
+        path:'/aftersalesBillDetail'
+      }">
+      <div slot="custom">
+        <div class="label_center">
+          <p class="search__label">状态:</p>
+          <el-select @clear="$refs.list.param.content.pageNumber = 1 ;$refs.list.param.content.where.status = '';$refs.list.listData()" v-model="status" clearable style="margin-right:10px" size="small" placeholder="请选择状态" @change="$refs.list.param.content.pageNumber = 1 ;$refs.list.param.content.where.status = status;$refs.list.listData()">
+            <el-option label="新建" value="新建" />
+            <el-option label="提交" value="提交" />
+            <el-option label="审核" value="审核" />
+            <el-option label="复核" value="复核" />
+          </el-select>
+        </div>
+      </div>
+      <template v-slot:tbList="scope">
+        <span v-if="scope.data.column.columnname == 'status'">
+          <span style="color:#333333" v-if="scope.data.column.data[[scope.data.column.columnname]] == '新建'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
+          <span style="color:#3874f6" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '审核'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
+          <span style="color:#52C41A" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '发布'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
+        </span>
+        <div v-else-if="scope.data.column.columnname == 'isitemreturn'">
+          <span>{{scope.data.column.data[[scope.data.column.columnname]] ? '是' : '否'}}</span>
+        </div>
+        <span v-else>
+          {{scope.data.column.data[[scope.data.column.columnname]]}}
+        </span>
+        <div v-if="scope.data.column.columnname != 'operation' && !scope.data.column.data[[scope.data.column.columnname]] && scope.data.column.data[[scope.data.column.columnname]] !== 0">--</div>
+      </template>
+      <template v-slot:tbOpreation="scope">
+      </template>
+    </basicLayout>
+  </div>
+</template>
+
+<script>
+export default {
+  data () {
+    return {
+      options:[],
+      status:''
+      
+    }
+  },
+  methods:{
+  }
+}
+
+</script>
+<style>
+</style>

+ 246 - 0
src/HDrpManagement/aftersalesBill/modules/detail.vue

@@ -0,0 +1,246 @@
+<template>
+<!-- :tabs="['详细信息']" -->
+  <div>
+    <basicDetails
+        ref="details"
+        :titleText="mainData.billno"
+        :editData="mainData"
+        :mainAreaData="mainAreaData"
+        turnPageId="20230104160703"
+        idname="sa_aftersalesmagid"
+        ownertable="sa_aftersalesmag"
+        delApiId="20230104160803"
+        :statusCheck="[{key:'status',value:'审核'},{key:'status',value:'复核'},{key:'status',value:'提交'}]"
+        tags=""
+        :tabs="['商品明细','详细信息']"
+        @pageChange="pageChange"
+        @onEditSuccess="queryMainData($route.query.id)">
+      <div slot="tags">
+      </div>
+      <div slot="customOperation" >
+        <Edit v-if="tool.checkAuth($route.name,'update') && mainData.status == '新建'" class="inline-16" @onSuccess="queryMainData()" :data="mainData" />
+        <customBtn
+          class="inline-16"
+          btnName="提 交"
+          message="确定提交当前返退单吗?"
+          idName="20230105161603"
+          keyName="sa_aftersalesmagid"
+          :id="$route.query.id"
+          @onSuccess="queryMainData()"
+          v-if="mainData.status == '新建' && tool.checkAuth($route.name,'submit')"
+        />
+        <customBtn
+          class="inline-16"
+          btnName="取 消 提 交"
+          message="当前返退单确定取消提交吗?"
+          idName="20230105161703"
+          keyName="sa_aftersalesmagid"
+          :id="$route.query.id"
+          @onSuccess="queryMainData()" 
+          v-if="mainData.status == '提交' && tool.checkAuth($route.name,'cancelSubmit')"
+        />
+      </div>
+      <div slot="slot0" >
+        <productDetail ref="productDetail">
+          <addProduct @onSuccess="$refs.productDetail.listData()" v-if="mainData" slot="addProduct" :data="mainData" />
+          <template v-slot:editProduct="scope">
+            <el-button class="inline-16" type="text" size="mini" :disabled="!isEdit" @click="$refs.productDetail.currentProduct=scope.data">编 辑</el-button>            
+          </template>
+          <template v-slot:delProduct="scope">
+            <delete-btn 
+              message="确定删除当前商品吗?"
+              slot="delProduct"
+              nameId="20230105111203" 
+              nameKey="sa_aftersalesmag_itemsids" 
+              :id="scope.data.sa_aftersalesmag_itemsid"
+              @deleteSuccess="$refs.productDetail.listData()"
+              v-if="mainData.status == '新建' && tool.checkAuth($route.name,'delete')"
+            ></delete-btn>
+          </template>
+        </productDetail>
+      </div>
+      <div slot="slot1" >
+        <base-info v-if="detailInfo" :detailInfo="detailInfo"></base-info>
+      </div>
+    </basicDetails>
+  </div>
+</template>
+
+<script>
+import BaseInfo from '@/HDrpManagement/projectChange/modules/modules/baseInfo/baseInfo'
+import Edit from '../components/edit'
+import productDetail from './productDetail/index'
+import addProduct from './productDetail/add'
+export default {
+  name: "detail",
+  data() {
+    return {
+      mainData:'',
+      mainAreaData:{},
+      detailInfo:'',
+      isEdit:true
+    }
+  },
+  components:{
+    BaseInfo,
+    Edit,
+    productDetail,
+    addProduct
+  },
+  provide () {
+    return {
+      isEdit: () => this.isEdit
+    }
+  },
+  methods:{
+    async queryMainData(id) {
+      const res = await this.$api.requested({
+        "id": "20230104160603",
+        "content": {
+          "sa_aftersalesmagid": this.$route.query.id
+        }
+      })
+      this.mainData = res.data
+      this.mainData.status != '新建' ? this.isEdit = false : this.isEdit = true
+      console.log(this.mainData);
+      this.changeDataStructure()
+      
+    },
+    changeDataStructure() {
+      this.mainAreaData = [
+        {
+          label:'单号',
+          value:this.mainData.billno
+        },
+        {
+          label:'单据日期',
+          value:this.mainData.billdate
+        },
+        {
+          label:'状态',
+          value:this.mainData.status
+        },
+        {
+          label:'经销商编号',
+          value:this.mainData.agentnum
+        },
+        {
+          label:'经销商',
+          value:this.mainData.enterprisename
+        },
+        {
+          label:'来源单号',
+          value:this.mainData.sonum
+        },
+        {
+          label:'订单使用返利占比',
+          value:this.mainData.rebate_userate
+        },
+        {
+          label:'订单账户',
+          value:this.mainData.accountname
+        },
+        {
+          label:'是否实物退回',
+          value:this.mainData.isitemreturn ? '是' : '否'
+        },
+        {
+          label:'退款金额',
+          value:this.mainData.returnamount
+        },
+        {
+          label:'物流单号',
+          value:this.mainData.logisticno
+        },
+        {
+          label:'原因',
+          value:this.mainData.reason
+        }
+      ]
+      this.detailInfo = {
+        baseInfo:[
+          {
+            label:'单号',
+            value:this.mainData.billno
+          },
+          {
+            label:'单据日期',
+            value:this.mainData.billdate
+          },
+          {
+            label:'状态',
+            value:this.mainData.STATUS
+          },
+          {
+            label:'经销商编号',
+            value:this.mainData.agentnum
+          },
+          {
+            label:'经销商',
+            value:this.mainData.enterprisename
+          },
+          {
+            label:'来源单号',
+            value:this.mainData.sonum
+          },
+          {
+            label:'订单使用返利占比',
+            value:this.mainData.rebate_userate
+          },
+          {
+            label:'订单账户',
+            value:this.mainData.accountname
+          },
+          {
+            label:'是否实物退回',
+            value:this.mainData.isitemreturn ? '是' : '否'
+          },
+          {
+            label:'退款金额',
+            value:this.mainData.returnamount
+          },
+          {
+            label:'物流单号',
+            value:this.mainData.logisticno
+          },
+          {
+            label:'原因',
+            value:this.mainData.reason
+          }
+        ],
+        systemInfo: [
+          {label:'创建人',value:this.mainData.createby},
+          {label:'创建时间',value:this.mainData.createdate},
+          {label:'提交人',value:this.mainData.submitby},
+          {label:'提交时间',value:this.mainData.submitdate},
+          {label:'审核人',value:this.mainData.checkby},
+          {label:'审核时间',value:this.mainData.checkdate},
+          {label:'复核人',value:this.mainData.recheckby},
+          {label:'复核时间',value:this.mainData.recheckdate},
+        ]
+      }
+    },
+    // 监听切换数据,上一页,下一页
+    pageChange (id,rowindex,tabIndex) {
+      this.flag = false
+      tabIndex = this.$route.query.tabIndex
+      this.$router.replace({path:'/aftersalesBillDetail',query:{id:id,rowindex:rowindex,tabIndex:tabIndex}})
+      this.queryMainData(id)
+    },
+    onSuccess(){
+      this.visible = false
+      this.queryMainData(this.$route.query.id)
+      this.$emit('onSuccess')
+    }
+  },
+  mounted () {
+    this.queryMainData(this.$route.query.id)
+  },
+  created() {
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 158 - 0
src/HDrpManagement/aftersalesBill/modules/productDetail/add.vue

@@ -0,0 +1,158 @@
+<template>
+  <div>
+    <el-button size="mini" type="primary" :disabled="!isEdit()" @click="addBtn">添 加</el-button>
+    <el-drawer append-to-body :visible.sync="dialogFormVisible" size="70%">
+      <div slot="title" style="font-size: 15px">
+        添加商品
+      </div>
+      <div class="drawer__panel">
+        <el-input style="width:250px;margin-bottom:10px" size="small" placeholder="请输入搜索内容" clearable @clear="getOrderList(params.content.pageNumber=1)" v-model="params.content.where.condition" @keyup.enter.native="getOrderList(params.content.pageNumber=1)"></el-input>
+        <selectTable @selectChange="selectChange" v-if="dialogFormVisible" idName="sa_orderitemsid" ref="table" v-model="result" :layout="tablecols" :data="orderList" :custom="true" height="500px"  @upDateData="upDateData">
+           <template v-slot:customcol="scope">
+              <div>{{scope.column.data[scope.column.columnname]}}</div>
+            </template>
+        </selectTable>
+        <div class="container normal-panel" style="text-align:right">
+          <el-pagination
+              style="text-align:right"
+              background
+              small
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+              :current-page="params.content.pageNumber"
+              :page-size="params.content.pageSize"
+              layout="total, prev, pager, next, jumper"
+              :total="total">
+          </el-pagination>
+        </div>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="dialogFormVisible = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" :disabled="isLength" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import selectTable from '@/components/selectTable/index'
+import { log } from '@antv/g2plot/lib/utils'
+export default {
+  name: "add",
+  props:['data','disabled'],
+  inject:['isEdit'],
+  components:{selectTable},
+  data(){
+    return {
+      result:[],
+      selectArr:[],
+      isLength:true,
+      dialogFormVisible:false,
+      orderList:[],
+      tablecols:[],
+      total:0,
+      params: {
+        "id": 20230105110903,
+        "content": {
+          "pageNumber": 1,
+          "pageSize": 20,
+          "sa_orderid":'',
+          "sa_aftersalesmagid":'',
+          "where": {
+              "condition": ""
+          }
+        }
+      }
+    }
+  },
+  computed: {
+    isEdit () {
+      return function (data) {
+        console.log(this.selectArr.some(item => item == data));
+        let is = this.selectArr.some(item => item == data)
+        return is
+      }
+    }
+  },
+  created () {
+    this.getOrderList()
+    this.tablecols = this.tool.tabelCol(this.$route.name).addPorductDetailTable.tablecols
+  },
+  watch: {
+    dialogFormVisible (val) {
+      if(!val) {
+        this.$refs.table.allArr = []
+      }
+    }
+  },
+  methods:{
+    addBtn () {
+      this.dialogFormVisible = true
+      this.getOrderList()
+    },
+    async onSubmit(){
+      let data = this.$refs.table.allArr.map(item => {
+        return {
+          "sa_aftersalesmag_itemsid":0,
+          "sa_orderitemsid":item.sa_orderitemsid,
+          "itemid": item.itemid,
+          "reason":"",
+          "qty":item.qty ,
+          "price":item.price
+        }
+      })
+      let res = await this.$api.requested({
+        "id": "20230105111003",
+        "content": {
+            "sa_aftersalesmagid": this.$route.query.id,
+            "iteminfos": data
+        }
+      })
+      this.tool.showMessage(res,()=>{
+        this.$emit('onSuccess')
+        this.dialogFormVisible = false
+      })
+    },
+    async getOrderList () {
+      this.params.content.sa_orderid = this.data.sa_orderid
+      this.params.content.sa_aftersalesmagid = this.data.sa_aftersalesmagid
+      let res = await this.$api.requested(this.params)
+      console.log(res.data);
+      
+      this.orderList = res.data
+      this.total = res.total
+      console.log(res);
+      
+    },
+    selectChange (data) {
+      console.log(data);
+      
+      this.selectArr = data
+      this.isLength = data.length < 1
+    },
+    upDateData (data) {
+      this.selectArr = data
+      this.isLength = data.length < 1
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.params.content.pageSize = val
+      this.getOrderList()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.params.content.pageNumber = val
+      this.getOrderList()
+    },
+  }
+}
+</script>
+
+<style scoped>
+.dialog-footer {
+  margin-top: 0;
+}
+.el-select {
+  width: 100%;
+}
+</style>

+ 146 - 0
src/HDrpManagement/aftersalesBill/modules/productDetail/index.vue

@@ -0,0 +1,146 @@
+
+<template>
+  <div>
+    <div style="display:flex;align-items:center">
+      <el-input
+          placeholder="请输入搜索内容"
+          suffix-icon="el-icon-search"
+          v-model="params.content.where.condition"
+          style="width:200px"
+          size="mini"
+          class="input-with-select inline-16"
+          @keyup.native.enter="listData(params.content.pageNumber=1)"
+          @clear="clearData"
+          clearable>
+      </el-input>
+      <slot name="addProduct"></slot>
+    </div>
+    <div style="margin-top: 15px">
+      <tableLayout :layout="tablecols" :data="list" :opwidth="200"  :custom="true" :width="false"  :height="tableHieght" fixedName="operation">
+        <template v-slot:customcol="scope">
+          <div v-if="scope.column.columnname == 'price'">
+            <el-input size="small" v-if="currentProduct.sa_aftersalesmag_itemsid == scope.column.data.sa_aftersalesmag_itemsid" v-model="scope.column.data.price"></el-input>
+            <span v-else>{{scope.column.data.price}}</span>
+          </div>
+          <div v-else-if="scope.column.columnname == 'qty'">
+            <el-input size="small" v-if="currentProduct.sa_aftersalesmag_itemsid == scope.column.data.sa_aftersalesmag_itemsid" v-model="scope.column.data.qty"></el-input>
+            <span v-else>{{scope.column.data.qty}}</span>
+          </div>
+          <div v-else-if="scope.column.columnname == 'reason'">
+            <div v-if="currentProduct.sa_aftersalesmag_itemsid == scope.column.data.sa_aftersalesmag_itemsid">
+              <el-input type="textarea" size="mini" v-model="scope.column.data.reason"></el-input>
+            </div>
+            <div v-else>{{scope.column.data.reason ? scope.column.data.reason : '--'}}</div>
+          </div>
+          <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
+          <p v-if="!scope.column.data[scope.column.columnname] && scope.column.data[scope.column.columnname] !== 0 && scope.column.columnname != 'operation'&& scope.column.columnname != 'reason'">--</p>
+        </template>
+        <template v-slot:opreation="scope">
+          <el-button class="inline-16" type="text" size="mini" @click="save(scope.data)" v-if="currentProduct.sa_aftersalesmag_itemsid == scope.data.sa_aftersalesmag_itemsid">保 存</el-button>
+          <slot v-else name="editProduct" :data="scope.data"></slot>
+          <slot name="delProduct" :data="scope.data"></slot>
+        </template>
+      </tableLayout>
+    </div>
+    <div style="margin-top:16px;text-align:right">
+      <el-pagination
+          background
+          small
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page="params.content.pageNumber"
+          :page-size="params.content.pageSize"
+          layout="total, prev, pager, next, jumper"
+          :total="total">
+      </el-pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props:["data"],
+  data () {
+    return {
+      tableHieght:"calc(100vh - 380px)",
+      tablecols:[],
+      list:[],
+      total:0,
+      params:{
+        "id": 20230105111103,
+        "version":1,
+        "content": {
+            "sa_aftersalesmagid":'',
+            "pageNumber":1,
+            "pageSize":20,
+            "where":{
+              "condition":''
+            }
+        }
+      },
+      options:[
+      ],
+      productList:'',
+      currentProduct:{}
+    }
+  },
+  methods:{
+    async save (data) {
+      let res = await this.$api.requested({
+        "id": "20230105111003",
+        "version":1,
+        "content": {
+            "sa_aftersalesmagid":this.$route.query.id,
+            "iteminfos":[
+                {
+                    "sa_aftersalesmag_itemsid":data.sa_aftersalesmag_itemsid,
+                    "sa_orderitemsid":data.sa_orderitemsid,
+                    "itemid": data.itemid,
+                    "reason":data.reason,
+                    "qty":data.qty,
+                    "price":data.price
+                }
+            ]
+
+        }
+      })
+      this.tool.showMessage(res,() => {
+        this.$emit('onSuccess')
+        this.listData()
+        this.currentProduct = ''
+      })
+    },
+    async listData(){
+      this.params.content.sa_aftersalesmagid = this.$route.query.id
+      const res = await this.$api.requested(this.params)
+      this.list = res.data
+      this.total = res.total
+      console.log(this.list)
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.params.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.params.content.pageNumber = val
+      this.listData()
+    },
+    clearData(){
+      this.listData()
+    },
+    queryClick(){
+      this.listData()
+    }
+  },
+  created() {
+    this.listData()
+    this.tablecols = this.tool.tabelCol(this.$route.name).ProductDetailTable.tablecols
+  }
+}
+
+</script>
+<style scoped>
+
+</style>

+ 90 - 0
src/HDrpManagement/bankStatement/components/add.vue

@@ -0,0 +1,90 @@
+<template>
+  <div>
+    <el-button size="mini" type="primary" @click="dialogFormVisible = true">新 建</el-button>
+    <el-dialog title="新 建" append-to-body :visible.sync="dialogFormVisible" width="500px">
+      <div slot="title" style="font-size: 15px">
+        新增账户类型
+      </div>
+      <el-row :gutter="20">
+        <el-form :model="form" :rules="rules" ref="form" label-width="90px" label-position="right" size="mini">
+          <el-col :span="20">
+            <el-form-item label="账户编号" prop="accountno">
+              <el-input v-model="form.accountno" placeholder="账户编号"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="20">
+            <el-form-item label="账户名称" prop="accountname">
+              <el-input v-model="form.accountname" placeholder="账户名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item  >
+              <el-checkbox :true-label="1" :false-label="0" v-model="form.isorder" checked="checked">允许订货</el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item  >
+              <el-checkbox :true-label="1" :false-label="0" v-model="form.isused" checked="checked">是否启用</el-checkbox>
+            </el-form-item>
+          </el-col>
+        </el-form>
+      </el-row>
+      <div class="dialog-footer">
+        <el-button size="small" @click="dialogFormVisible = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="warning" @click="onSubmit" class="normal-btn-width btn-warning">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "add",
+  data(){
+    return {
+      dialogFormVisible:false,
+      isordercheck:true,
+      isusedcheck:false,
+      form:{
+        sa_accountclassid:0,
+        accountno:'',
+        accountname:'',
+        isorder:'',
+        isused:0
+      },
+      rules:{
+        accountno:[
+          { required: true, message: '输入账户编号', trigger: 'blur'},
+        ],
+        accountname:[
+          { required: true, message: '输入账户名称', trigger: 'blur'}
+        ]
+      }
+    }
+  },
+  methods:{
+    onSubmit(){
+      console.log(this.form)
+      this.$refs['form'].validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": "20221008134703",
+          "version":1,
+          "content": this.form
+        })
+        this.tool.showMessage(res,()=>{
+          this.$emit('onSuccess')
+          this.$refs['form'].resetFields();
+          this.dialogFormVisible = false
+        })
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.dialog-footer {
+  margin-top: 0;
+}
+</style>

+ 164 - 0
src/HDrpManagement/bankStatement/components/confirm.vue

@@ -0,0 +1,164 @@
+<template>
+  <div>
+    <el-dropdown size="small" :hide-on-click="false" @command="addBtn">
+      <span class="el-dropdown-link">
+        <el-button class="inline-16" ref="btn" size="mini" type="primary">确 认</el-button>
+      </span>
+      <el-dropdown-menu slot="dropdown">
+        <el-dropdown-item command="人工">人工</el-dropdown-item>
+        <el-dropdown-item command="非贷款">非贷款</el-dropdown-item>
+      </el-dropdown-menu>
+    </el-dropdown>
+
+    <el-dialog :visible.sync="drawer" width="60%" append-to-body>
+      <el-table
+        ref="multipleTable"
+        :data="tableData"
+        style="width: 100%"
+        size="mini"
+        border>
+        <el-table-column
+          prop="enterprisename"
+          label="经销商名称"
+          width="180">
+        </el-table-column>
+        <el-table-column
+          prop="agentnum"
+          label="经销商编号"
+          width="180">
+        </el-table-column>
+         <el-table-column
+          prop="contact"
+          label="联系人"
+          width="90">
+        </el-table-column>
+        <el-table-column
+          label="地址"
+          width="180">
+          <template slot-scope="scope">
+            {{scope.row.province}}{{scope.row.city}}{{scope.row.county}}{{scope.row.address}}
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="操作"
+          width="90">
+          <template slot-scope="scope">
+            <el-button type="text" size="small" @click="selectRow(scope.row)">选 择</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div style="margin-top:16px;text-align:right">
+        <el-pagination
+          background
+          small
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page="param.content.pageNumber"
+          :page-size="param.content.pageSize"
+          layout="total, prev, pager, next, jumper"
+          :total="total">
+        </el-pagination>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  name: '',
+  components:{},
+  data() {
+    return {
+      drawer:false,
+      visibleAgent:false,
+      tableData:[],
+      total:0,
+      param:{
+        "classname": "webmanage.sale.agents.agents",
+        "method": "query_agentList",
+        "content": {
+            "pageNumber": 1,
+            "pageSize": 20,
+            "where": {
+                "condition": ""
+            }
+        }
+      },
+    };
+  },
+  computed:{
+  },
+  watch:{
+  },
+  created () {
+    this.listData()
+  },
+  methods: {
+    async addBtn (type) {
+      if (type == '人工') {
+        this.drawer = true
+      } else {
+        this.$confirm('确定该数据变更为非贷款吗?','提示',{
+          confirmButtonText:'确定',
+          cancelButtonText:'取消',
+          type:'warning'
+        }).then( async () => {
+          let res = await this.$api.requested({
+            "id": 20230106154204,
+            "content": {
+                "sa_bankstatementid": this.$route.query.id,
+                "status":"已确认(非货款)", //已确认(人工),已确认(非货款)
+                "sys_enterpriseid":''//状态为已确认(非货款)时不传
+            }
+          })
+          console.log(res);
+          this.tool.showMessage(res,() => {
+            this.$emit('onSuccess')
+          })
+        })
+      }
+    },
+    async listData () {
+      const res = await this.$api.requested(this.param)
+      this.tableData = res.data
+      this.total = res.total
+      console.log(this.tableData);
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData()
+    },
+    selectRow (row) {
+      this.$confirm('确定该经销商为这条数据的变更人吗?','提示',{
+          confirmButtonText:'确定',
+          cancelButtonText:'取消',
+          type:'warning'
+        }).then( async () => {
+          let res = await this.$api.requested({
+            "id": 20230106154204,
+            "content": {
+                "sa_bankstatementid": this.$route.query.id,
+                "status":"已确认(人工)", //已确认(人工),已确认(非货款)
+                "sys_enterpriseid":row.sys_enterpriseid//状态为已确认(非货款)时不传
+            }
+          })
+          console.log(res);
+          this.tool.showMessage(res,() => {
+            this.$emit('onSuccess')
+            this.drawer = false
+          })
+        })
+    }
+  },
+};
+</script>
+
+<style scoped>
+
+</style>

+ 93 - 0
src/HDrpManagement/bankStatement/components/edit.vue

@@ -0,0 +1,93 @@
+<template>
+  <div>
+    <el-button  size="mini" :type="btnType?btnType:'text'" @click="onShow">编 辑</el-button>
+    <el-dialog title="编 辑" :visible.sync="dialogFormVisible" width="500px" append-to-body>
+      <div slot="title" style="font-size: 15px">
+        修改账户类型
+      </div>
+      <el-row :gutter="20">
+        <el-form :model="form" :rules="rules" ref="form" label-width="90px" label-position="right" size="mini">
+          <el-col :span="20">
+            <el-form-item label="账户编号" prop="accountno">
+              <el-input v-show="form.isused !== 1" v-model="form.accountno" placeholder="账户编号"></el-input>
+              <span v-show="form.isused === 1">{{form.accountno}}</span>
+            </el-form-item>
+          </el-col>
+          <el-col :span="20">
+            <el-form-item label="账户名称" prop="accountname">
+              <el-input v-show="form.isused !== 1" v-model="form.accountname" placeholder="账户名称"></el-input>
+              <span v-show="form.isused === 1">{{form.accountname}}</span>
+            </el-form-item>
+          </el-col>
+          <el-col :span="10">
+            <el-form-item  >
+              <el-checkbox :true-label="1" :false-label="0" v-model="form.isorder" >允许订货</el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="10">
+            <el-form-item  >
+              <el-checkbox :true-label="1" :false-label="0" v-model="form.isused" >是否启用</el-checkbox>
+            </el-form-item>
+          </el-col>
+        </el-form>
+      </el-row>
+      <div class="dialog-footer">
+        <el-button size="small" @click="dialogFormVisible = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="warning" @click="onSubmit" class="normal-btn-width btn-warning">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "edit",
+  props:['data','btnType'],
+  data(){
+    return {
+      dialogFormVisible:false,
+      form:{
+        "sa_accountclassid":'',
+        "accountno":"",
+        "accountname":"",
+        "isorder":'',
+        "isused":''
+      },
+      rules:{
+        accountno:[
+          { required: true, message: '输入账户编号', trigger: 'blur'},
+        ],
+        accountname:[
+          { required: true, message: '输入账户名称', trigger: 'blur'}
+        ]
+      }
+    }
+  },
+  methods:{
+    onShow(){
+      this.dialogFormVisible = true
+      this.form = Object.assign({},this.form,this.data)
+      console.log(this.form)
+    },
+    onSubmit(){
+      console.log(this.form)
+      this.$refs['form'].validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": "20221008134703",
+          "version":1,
+          "content": this.form
+        })
+        this.tool.showMessage(res,()=>{
+          this.$emit('onSuccess')
+          this.dialogFormVisible = false
+        })
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 58 - 0
src/HDrpManagement/bankStatement/index.vue

@@ -0,0 +1,58 @@
+
+<template>
+  <div>
+    <basicLayout 
+      ref="list" 
+      formPath="promotion"
+      tableName="bankStatementTable" 
+      idName="sa_bankstatementid" 
+      :apiId="{query:20230106154004,del:''}"
+      :options="options"
+      :detailPath="{
+        path:'/bankStatementDetail'
+      }">
+      <div slot="custom">
+        <div class="label_center">
+          <p class="search__label">状态:</p>
+          <el-select @clear="$refs.list.param.content.pageNumber = 1 ;$refs.list.param.content.where.status = '';$refs.list.listData()" v-model="status" clearable style="margin-right:10px" size="small" placeholder="请选择状态" @change="$refs.list.param.content.pageNumber = 1 ;$refs.list.param.content.where.status = status;$refs.list.listData()">
+            <el-option label="已入账(人工)" value="已入账(人工)" />
+            <el-option label="已入账(系统)" value="已入账(系统)" />
+            <el-option label="已确认(非贷货)" value="已确认(非贷货)" />
+            <el-option label="未入账" value="未入账" />
+          </el-select>
+        </div>
+      </div>
+      <template v-slot:tbList="scope">
+        <div v-if="scope.data.column.data[[scope.data.column.columnname]]">
+          <span v-if="scope.data.column.columnname == 'status'">
+            <span style="color:#333333" v-if="scope.data.column.data[[scope.data.column.columnname]] == '未入账'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
+            <span style="color:#52C41A" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '已入账(人工)' || scope.data.column.data[[scope.data.column.columnname]] == '已确认(非货款)'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
+          </span>
+          <span v-else>
+            {{scope.data.column.data[[scope.data.column.columnname]]}}
+          </span>
+        </div>
+        <div v-if="scope.data.column.columnname != 'operation' && !scope.data.column.data[[scope.data.column.columnname]] && scope.data.column.data[[scope.data.column.columnname]] !== 0">--</div>
+      </template>
+      <template v-slot:tbOpreation="scope">
+      </template>
+    </basicLayout>
+  </div>
+</template>
+
+<script>
+export default {
+  data () {
+    return {
+      options:[],
+      status:''
+      
+    }
+  },
+  methods:{
+  }
+}
+
+</script>
+<style>
+</style>

+ 160 - 0
src/HDrpManagement/bankStatement/modules/detail.vue

@@ -0,0 +1,160 @@
+<template>
+<!-- :tabs="['详细信息']" -->
+  <div>
+    <basicDetails
+        ref="details"
+        :titleText="mainData.accname"
+        :editData="mainData"
+        :mainAreaData="mainAreaData"
+        turnPageId="20230106154004"
+        idname="sa_bankstatementid"
+        ownertable="sa_bankstatement"
+        tags=""
+        @pageChange="pageChange"
+        @onEditSuccess="queryMainData($route.query.id)">
+      <div slot="tags">
+      </div>
+      <div slot="customOperation" >
+        <Confirm v-if="tool.checkAuth($route.name,'confirm') && mainData.status == '未入账'" @onSuccess="queryMainData()"></Confirm>
+      </div>
+      <div slot="slot0" >
+        <!-- <base-info v-if="detailInfo" :detailInfo="detailInfo"></base-info> -->
+      </div>
+      <div slot="slot1" >
+      </div>
+    </basicDetails>
+  </div>
+</template>
+
+<script>
+import BaseInfo from '@/HDrpManagement/projectChange/modules/modules/baseInfo/baseInfo'
+import Confirm from '../components/confirm'
+export default {
+  name: "detail",
+  data() {
+    return {
+      mainData:{},
+      mainAreaData:{},
+      detailInfo:'',
+
+    }
+  },
+  components:{
+    BaseInfo,
+    Confirm
+  },
+  methods:{
+    async queryMainData(id) {
+      const res = await this.$api.requested({
+        "id": "20230106154104",
+        "content": {
+          "sa_bankstatementid": this.$route.query.id
+        }
+      })
+      this.mainData = res.data
+      console.log(this.mainData);
+      this.changeDataStructure()
+      
+    },
+    changeDataStructure() {
+      this.mainAreaData = [
+        {
+          label:'状态',
+          value:this.mainData.status
+        },
+        {
+          label:'经销商编号',
+          value:this.mainData.agentnum
+        },
+        {
+          label:'经销商名称',
+          value:this.mainData.enterprisename
+        },
+        {
+          label:'付款账号',
+          value:this.mainData.oppaccno
+        },
+        {
+          label:'付款人开户行',
+          value:this.mainData.oppbkname
+        },
+        {
+          label:'付款人',
+          value:this.mainData.oppname
+        },
+        {
+          label:'交易金额',
+          value:this.mainData.amount
+        },
+        {
+          label:'交易时间',
+          value:this.mainData.trantime
+        },
+        {
+          label:'收入凭证号',
+          value:this.mainData.sa_cashbillid
+        }
+      ]
+      this.detailInfo = [
+        {
+          label:'状态',
+          value:this.mainData.status
+        },
+        {
+          label:'经销商编号',
+          value:this.mainData.agentnum
+        },
+        {
+          label:'经销商名称',
+          value:this.mainData.enterprisename
+        },
+        {
+          label:'付款账号',
+          value:this.mainData.oppaccno
+        },
+        {
+          label:'付款人开户行',
+          value:this.mainData.oppbkname
+        },
+        {
+          label:'付款人',
+          value:this.mainData.oppname
+        },
+        {
+          label:'交易金额',
+          value:this.mainData.amount
+        },
+        {
+          label:'交易时间',
+          value:this.mainData.trantime
+        },
+        {
+          label:'收入凭证号',
+          value:this.mainData.sa_cashbillid
+        }
+      ]
+    },
+    // 监听切换数据,上一页,下一页
+    pageChange (id,rowindex,tabIndex) {
+      this.flag = false
+      tabIndex = this.$route.query.tabIndex
+      this.$router.replace({path:'/bankStatementDetail',query:{id:id,rowindex:rowindex,tabIndex:tabIndex}})
+      this.queryMainData(id)
+    },
+    onSuccess(){
+      this.visible = false
+      this.queryMainData(this.$route.query.id)
+      this.$emit('onSuccess')
+    }
+  },
+  mounted () {
+    this.queryMainData(this.$route.query.id)
+  },
+  created() {
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 0 - 1
src/HDrpManagement/projectChange/modules/detail.vue

@@ -361,7 +361,6 @@ export default {
           {label:'最近编辑人',value:this.mainData.changeby ? this.mainData.changeby : '--'},
           {label:'最近编辑时间',value:this.mainData.changedate ? this.mainData.changedate : '--'},
           {label:'转手次数',value:this.mainData.changecount !== '' ? this.mainData.changecount : '--'},
-
         ]
       }
       this.mainAreaData = [

+ 13 - 2
src/HDrpManagement/promotion/index.vue

@@ -11,7 +11,17 @@
       :detailPath="{
         path:'/promotionDetail'
       }">
-      <div slot="custom"></div>
+      <div slot="custom">
+        <div class="label_center">
+          <p class="search__label">状态:</p>
+          <el-select @clear="$refs.list.param.content.pageNumber = 1 ;$refs.list.param.content.where.status = '';$refs.list.listData()" v-model="status" clearable style="margin-right:10px" size="small" placeholder="请选择状态" @change="$refs.list.param.content.pageNumber = 1 ;$refs.list.param.content.where.status = status;$refs.list.listData()">
+            <el-option label="新建" value="新建" />
+            <el-option label="审核" value="审核" />
+            <el-option label="发布" value="发布" />
+            <el-option label="关闭" value="关闭" />
+          </el-select>
+        </div>
+      </div>
       <template v-slot:tbList="scope">
         <div v-if="scope.data.column.data[[scope.data.column.columnname]]">
           <span v-if="scope.data.column.columnname == 'status'">
@@ -35,7 +45,8 @@
 export default {
   data () {
     return {
-      options:[]
+      options:[],
+      status:''
       
     }
   },

+ 2 - 2
src/HDrpManagement/promotion/modules/detail.vue

@@ -26,7 +26,7 @@
         <Close :data="mainData" class="inline-16" @onSuccess="queryMainData"/>
       </div>
       <div slot="slot0" >
-        <promotionModel ref="model">
+        <promotionModel v-if="mainData" :data="mainData" ref="model">
           <addModel v-if="tool.checkAuth($route.name,'promotionModel')" class="inline-16" @onSuccess="$refs.model.listData()" slot="addModel"/>
           <calc-price v-if="tool.checkAuth($route.name,'promotionModel')" slot="calcPrice" @onSuccess="$refs.model.listData()"></calc-price>
           <template v-slot:editModel="scope">
@@ -109,7 +109,7 @@ export default {
   components:{Edit,BaseInfo,Check,Send,Close,promotionModel,addModel,productDetail,promotionPrice,calcPrice,addProduct,prowerArea,addProwerArea},
   data(){
     return {
-      mainData:{},
+      mainData:'',
       mainAreaData:[],
       detailInfo:'',
       isEdit:false

+ 1 - 1
src/HDrpManagement/promotion/modules/productModel/index.vue

@@ -113,7 +113,7 @@ export default {
       })
     },
     async listData(){
-      this.params.content.sa_promotionid = this.$route.query.id
+      this.params.content.sa_promotionid = this.data.sa_promotionid
       const res = await this.$api.requested(this.params)
       this.list = res.data
       this.total = res.total

+ 182 - 0
src/HDrpManagement/salerPromotion/components/productDetail.vue

@@ -0,0 +1,182 @@
+<template>
+  <div class="inline-16">
+    <el-button type="text" size="mini" @click="productBtn">商 品</el-button>
+    <el-drawer
+        title="促销模块商品明细"
+        :visible.sync="drawer"
+        size="80%"
+        direction="rtl"
+        append-to-body
+        @close="drawer = false"
+        :show-close="false">
+      <div class="drawer__panel">
+        <div style="display:flex;align-items:center">
+          <el-input
+              placeholder="请输入搜索内容"
+              suffix-icon="el-icon-search"
+              v-model="params.content.where.condition"
+              style="width:200px"
+              size="mini"
+              class="input-with-select inline-16"
+              @keyup.native.enter="listData(params.content.pageNumber=1)"
+              @clear="listData(params.content.where.condition='')"
+              clearable>
+          </el-input>
+          <slot name="addProduct" :data="data"></slot>
+        </div>
+        <div style="margin-top: 15px">
+          <tableLayout :layout="tablecols" :data="list1" :opwidth="200"  :custom="true" :width="false"  :height="tableHieght" fixedName="operation">
+            <template v-slot:customcol="scope">
+              <!-- <div v-if="scope.column.columnname == 'amount'">
+                <el-input size="small" v-if="currentItem.sa_paybilldetailid == scope.column.data.sa_paybilldetailid" v-model="scope.column.data.amount"></el-input>
+                <span v-else>{{scope.column.data.amount}}</span>
+              </div> -->
+              <div v-if="scope.column.columnname == 'spec'">
+                {{scope.column.data.model}}/{{scope.column.data.spec}}
+              </div>
+              <div v-else-if="scope.column.columnname == 'groupqty'">
+                <el-input size="small" v-if="currentProduct.sa_promotion_itemsid == scope.column.data.sa_promotion_itemsid" v-model="scope.column.data.groupqty"></el-input>
+                <span v-else>{{scope.column.data.groupqty}}</span>
+              </div>
+              <div v-else-if="scope.column.columnname == 'orderaddqty'">
+                <el-input size="small" v-if="currentProduct.sa_promotion_itemsid == scope.column.data.sa_promotion_itemsid" v-model="scope.column.data.orderaddqty"></el-input>
+                <span v-else>{{scope.column.data.orderaddqty}}</span>
+              </div>
+              <div v-else-if="scope.column.columnname == 'orderminqty'">
+                <el-input size="small" v-if="currentProduct.sa_promotion_itemsid == scope.column.data.sa_promotion_itemsid" v-model="scope.column.data.orderminqty"></el-input>
+                <span v-else>{{scope.column.data.orderminqty}}</span>
+              </div>
+              <div v-else-if="scope.column.columnname == 'groupqty'">
+                <el-input size="small" v-if="currentProduct.sa_promotion_itemsid == scope.column.data.sa_promotion_itemsid" v-model="scope.column.data.groupqty"></el-input>
+                <span v-else>{{scope.column.data.groupqty}}</span>
+              </div>
+              <div v-else-if="scope.column.columnname == 'islimit'">
+                <div v-if="currentProduct.sa_promotion_itemsid == scope.column.data.sa_promotion_itemsid">
+                  <el-checkbox v-model="scope.column.data.islimit" :true-label="1" :false-label="0"></el-checkbox>
+                </div>
+                <span v-else>
+                  <span v-if="scope.column.data.islimit">是</span>
+                  <span v-else>否</span>
+                </span>
+              </div>
+              <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
+              <p v-if="!scope.column.data[scope.column.columnname] && scope.column.data[scope.column.columnname] !== 0 && scope.column.columnname != 'operation'">--</p>
+            </template>
+            <template v-slot:opreation="scope">
+              <el-button class="inline-16" type="text" size="mini" @click="save(scope.data)" v-if="currentProduct.sa_promotion_itemsid == scope.data.sa_promotion_itemsid">保 存</el-button>
+              <slot name="promotionPrice" :data="scope.data"></slot>
+            </template>
+          </tableLayout>
+        </div>
+        <div style="margin-top:16px;text-align:right">
+          <el-pagination
+              background
+              small
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+              :current-page="params.content.pageNumber"
+              :page-size="params.content.pageSize"
+              layout="total, prev, pager, next, jumper"
+              :total="total">
+          </el-pagination>
+        </div>
+        <div class="fixed__btn__panel">
+          <el-button size="small" @click="drawer = false" class="normal-btn-width">取 消</el-button>
+          <el-button size="small" type="primary" class="normal-btn-width">确 定</el-button>
+        </div>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+export default {
+  name: '',
+  props:['data'],
+  data() {
+    return {
+      drawer:false,
+      tableHieght:"calc(100vh - 380px)",
+      tablecols:[],
+      list1:[],
+      total:0,
+      currentProduct:{},
+      params:{
+        "id": 20230102142503,
+        "version":1,
+        "content": {
+          "nocache":true,
+          "sa_promotionid":'',
+          "sa_promotion_itemgroupid":'',
+          "pageNumber":1,
+          "pageSize":20,
+          "where":{
+              "condition":""
+          }
+        }
+      },
+    };
+  },
+  computed:{
+  },
+  watch:{
+  },
+  methods: {
+    async listData(id){
+      this.params.content.sa_promotionid = this.data.sa_promotionid
+      this.params.content.sa_promotion_itemgroupid = id ? id : this.data.sa_promotion_itemgroupid
+      const res = await this.$api.requested(this.params)
+      this.list1 = res.data
+      this.total = res.total
+      console.log(this.list1,this.total)
+    },
+    async save (data) {
+      let res = await this.$api.requested({
+        "id": 20230102142403,
+        "version":1,
+        "content": {
+          "sa_promotionid":this.$route.query.id,
+          "sa_promotion_itemgroupid":this.data.sa_promotion_itemgroupid,
+          "iteminfos":[
+            {
+              "sa_promotion_itemsid":data.sa_promotion_itemsid,
+              "itemid":data.itemid,
+              "islimit":data.islimit,
+              "groupqty":data.groupqty,
+              "orderaddqty":data.orderaddqty,
+              "orderminqty":data.orderminqty
+            },
+          ]
+        }
+      })
+      this.tool.showMessage(res,() => {
+        this.$emit('onSuccess')
+        this.listData()
+        this.currentProduct = {}
+      })
+    },
+    productBtn () {
+      this.drawer = true
+      this.listData()
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.params.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.params.content.pageNumber = val
+      this.listData()
+    },
+  },
+  created () {
+    this.tablecols = this.tool.tabelCol(this.$route.name).modelProductTable.tablecols
+    this.tablecols.shift()
+  }
+};
+</script>
+
+<style scoped>
+
+</style>

+ 148 - 0
src/HDrpManagement/salerPromotion/components/productModel.vue

@@ -0,0 +1,148 @@
+
+<template>
+  <div>
+    <div style="display:flex;align-items:center">
+      <el-input
+          placeholder="请输入搜索内容"
+          suffix-icon="el-icon-search"
+          v-model="params.content.where.condition"
+          style="width:200px"
+          size="mini"
+          class="input-with-select inline-16"
+          @keyup.native.enter="listData(params.content.pageNumber=1)"
+          @clear="clearData"
+          clearable>
+      </el-input>
+      <slot name="addModel"></slot>
+      <slot name="calcPrice"></slot>
+    </div>
+    <div style="margin-top: 15px">
+      <tableLayout :layout="tablecols" :data="list" :opwidth="200"  :custom="true" :width="false"  :height="tableHieght" fixedName="operation writeoffamount unwriteoffamount">
+        <template v-slot:customcol="scope">
+          <div v-if="scope.column.columnname == 'groupname'">
+            <el-input size="small" v-if="currentModel.sa_promotion_itemgroupid == scope.column.data.sa_promotion_itemgroupid" v-model="scope.column.data.groupname"></el-input>
+            <span v-else>{{scope.column.data.groupname}}</span>
+          </div>
+          <div v-else-if="scope.column.columnname == 'groupqty'">
+            <el-input size="small" v-if="currentModel.sa_promotion_itemgroupid == scope.column.data.sa_promotion_itemgroupid" v-model="scope.column.data.groupqty"></el-input>
+            <span v-else>{{scope.column.data.groupqty}}</span>
+          </div>
+          <div v-else-if="scope.column.columnname == 'requard'">
+            <div v-if="currentModel.sa_promotion_itemgroupid == scope.column.data.sa_promotion_itemgroupid">
+              <el-checkbox v-model="scope.column.data.requard" :true-label="1" :false-label="0"></el-checkbox>
+            </div>
+            <span v-else>
+              <span v-if="scope.column.data.requard">是</span>
+              <span v-else>否</span>
+            </span>
+          </div>
+          <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
+          <p v-if="!scope.column.data[scope.column.columnname] && scope.column.data[scope.column.columnname] !== 0 && scope.column.columnname != 'operation'">--</p>
+        </template>
+        <template v-slot:opreation="scope">
+          <el-button class="inline-16" type="text" size="mini" @click="save(scope.data)" v-if="currentModel.sa_promotion_itemgroupid == scope.data.sa_promotion_itemgroupid">保 存</el-button>
+          <slot v-else name="editModel" :data="scope.data"></slot>
+          <slot name="product" :data="scope.data"></slot>
+          <slot name="delModel" :data="scope.data"></slot>
+        </template>
+      </tableLayout>
+    </div>
+    <div style="margin-top:16px;text-align:right">
+      <el-pagination
+          background
+          small
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page="params.content.pageNumber"
+          :page-size="params.content.pageSize"
+          layout="total, prev, pager, next, jumper"
+          :total="total">
+      </el-pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props:["data"],
+  data () {
+    return {
+      tableHieght:"calc(100vh - 380px)",
+      tablecols:[],
+      list:[],
+      total:0,
+      params:{
+        "id": 20230102112303,
+        "version":1,
+        "content": {
+            "sa_promotionid":'',
+            "pageNumber":1,
+            "pageSize":20,
+            "where":{
+              "condition":''
+            }
+        }
+      },
+      options:[
+      ],
+      productList:'',
+      currentModel:{}
+    }
+  },
+  provide () {
+    return {
+    }
+  },
+  methods:{
+    async save (data) {
+      let res = await this.$api.requested({
+        "id": 20230102112203,
+        "version":1,
+        "content": {
+            "sa_promotion_itemgroupid":data.sa_promotion_itemgroupid,     //sat_notice_classid<=0时 为新增
+            "sa_promotionid": data.sa_promotionid,
+            "requard":data.requard,
+            "groupname": data.groupname,
+            "groupqty": data.groupqty
+        }
+      })
+      this.tool.showMessage(res,() => {
+        this.$emit('onSuccess')
+        this.listData()
+        this.currentModel = ''
+      })
+    },
+    async listData(){
+      this.params.content.sa_promotionid = this.data.sa_promotionid
+      const res = await this.$api.requested(this.params)
+      this.list = res.data
+      this.total = res.total
+      console.log(this.list)
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.params.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.params.content.pageNumber = val
+      this.listData()
+    },
+    clearData(){
+      this.listData()
+    },
+    queryClick(){
+      this.listData()
+    }
+  },
+  created() {
+    this.listData()
+    this.tablecols = this.tool.tabelCol(this.$route.name).promotionModelTable.tablecols
+  }
+}
+
+</script>
+<style scoped>
+
+</style>

+ 146 - 0
src/HDrpManagement/salerPromotion/components/promotionPrice.vue

@@ -0,0 +1,146 @@
+<template>
+  <div class="inline-16">
+    <el-button type="text" size="mini" @click="productBtn">促 销 价 格</el-button>
+    <el-drawer
+        title="促销价格明细"
+        :visible.sync="drawer"
+        size="70%"
+        direction="rtl"
+        append-to-body
+        @close="drawer = false"
+        :show-close="false">
+      <div class="drawer__panel">
+        <div style="display:flex;align-items:center">
+          <el-input
+              placeholder="请输入搜索内容"
+              suffix-icon="el-icon-search"
+              v-model="params.content.where.condition"
+              style="width:200px"
+              size="mini"
+              class="input-with-select inline-16"
+              @keyup.native.enter="listData(params.content.pageNumber=1)"
+              @clear="listData(params.content.where.condition='')"
+              clearable>
+          </el-input>
+          <slot name="addProduct"></slot>
+        </div>
+        <div style="margin-top: 15px">
+          <tableLayout :layout="tablecols" :data="list" :opwidth="200"  :custom="true" :width="false"  :height="tableHieght" fixedName="operation">
+            <template v-slot:customcol="scope">
+              <div v-if="scope.column.columnname == 'price'">
+                <el-input size="small" v-if="currentProduct.sa_promotion_itempriceid == scope.column.data.sa_promotion_itempriceid" v-model="scope.column.data.price"></el-input>
+                <span v-else>{{scope.column.data.price}}</span>
+              </div>
+              <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
+              <p v-if="!scope.column.data[scope.column.columnname] && scope.column.data[scope.column.columnname] !== 0 && scope.column.columnname != 'operation'">--</p>
+            </template>
+            <template v-slot:opreation="scope">
+            </template>
+          </tableLayout>
+        </div>
+        <div style="margin-top:16px;text-align:right">
+          <el-pagination
+              background
+              small
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+              :current-page="params.content.pageNumber"
+              :page-size="params.content.pageSize"
+              layout="total, prev, pager, next, jumper"
+              :total="total">
+          </el-pagination>
+        </div>
+        <div class="fixed__btn__panel">
+          <el-button size="small" @click="drawer = false" class="normal-btn-width">取 消</el-button>
+          <el-button size="small" type="primary" @click="submit" class="normal-btn-width">确 定</el-button>
+        </div>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+export default {
+  name: '',
+  props:['data'],
+  data() {
+    return {
+      aaa:1,
+      currentProduct:{},
+      drawer:false,
+      tableHieght:"calc(100vh - 380px)",
+      tablecols:[],
+      list:[],
+      total:0,
+      params:{
+        "id": 20230102163103,
+        "version":1,
+        "content": {
+          "sa_promotionid":'',
+          "sa_promotion_itemsid":'',
+          "pageNumber":1,
+          "pageSize":20,
+          "where":{
+              "condition":""
+          }
+        }
+      },
+    };
+  },
+  computed:{
+  },
+  methods: {
+    edit (data) {
+      this.currentProduct = data
+      console.log(this.currentProduct);
+    },
+    async save (data) {
+      let res = await this.$api.requested({
+        "id": 20230102163003,
+        "content": {
+            "sa_promotion_itempriceid":data.sa_promotion_itempriceid,     //sat_notice_classid<=0时 为新增
+            "sa_promotionid": data.sa_promotionid,
+            "price":data.price
+        }
+      })
+      this.tool.showMessage(res,() => {
+        this.$emit('onSuccess')
+        this.listData()
+        this.currentProduct = {}
+      })
+    },
+    async listData(){
+      this.params.content.sa_promotionid = this.data.sa_promotionid
+      this.params.content.sa_promotion_itemsid = this.data.sa_promotion_itemsid
+      const res = await this.$api.requested(this.params)
+      this.list = res.data
+      this.total = res.total
+      console.log(this.list)
+    },
+    submit () {
+      
+    },
+    productBtn () {
+      this.drawer = true
+      this.listData()
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.params.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.params.content.pageNumber = val
+      this.listData()
+    },
+  },
+  created () {
+    this.tablecols = this.tool.tabelCol(this.$route.name).promotionPriceTable.tablecols
+  }
+};
+</script>
+
+<style scoped>
+
+</style>

+ 14 - 24
src/HDrpManagement/salerPromotion/index.vue

@@ -25,22 +25,8 @@
           <pagination :total="total" :pageSize="params.content.pageSize" :currentPage="params.content.pageNumber"
             @pageChange="pageChange">
           </pagination>
-          <!-- <detail ref="detail" v-if="currentFile && tool.checkAuth($route.name, 'read')" :currentSelectFile="currentFile">
-          </detail> -->
         </div>
-        <!--抽屉面板-->
-        <el-drawer
-          title="我是标题"
-          :visible.sync="drawer"
-          :with-header="false"
-          direction="rtl"
-          size="90%"
-          append-to-body
-          @close="closeDrawer">
-          <div class="detail__panel">
-            <router-view/>
-          </div>
-        </el-drawer>
+        <Detail v-if="currentData" :data="currentData" ref="detail"></Detail>
       </div>
     </normalLayout>
   </div>
@@ -52,15 +38,19 @@ import Pagination from '@/components/pagination/Pagination'
 
 import matchingFileType from '@/utils/matchingFeilType'
 
+import Detail from './modules/detail'
+
 import {mapGetters} from 'vuex'
 export default {
   name: 'index',
   components: {
     Pagination,
     list,
+    Detail
   },
   data() {
     return {
+      currentData:'',
       drawer:false,
       params: {
         "id": 20220103140003,
@@ -135,18 +125,18 @@ export default {
     },
     //列表单击事件
     async listItemClick(data) {
-      let param = {
-        "classname": "saletool.sharematerial.sharematerial",
-        "method": "selectDetail",
+      let res = await this.$api.requested({
+        "id": 20221230144703,
+        "version":1,
         "content": {
-          "sat_sharematerialid": data.sat_sharematerialid
+            "sa_promotionid":data.sa_promotionid
         }
-      }
-      let res = await this.$api.requested(param)
-      res.data.attinfos = this.fileType.fileList(res.data.attinfos)
-      this.currentFile = res.data
+      })
+      this.currentData = res.data
+      console.log(this.currentData);
+      
       this.$nextTick(() => {
-        this.$refs.detail.isFileInfoPanlShow = true
+        this.$refs.detail.drawer = true
       })
     },
     itemEdit(data) {

+ 59 - 0
src/HDrpManagement/salerPromotion/modules/detail.vue

@@ -0,0 +1,59 @@
+<template>
+  <div>
+    <el-drawer :visible.sync="drawer" append-to-body size="60%" :show-close="false" title="促销方案详情">
+      <div class="drawer__panel" style="margin-bottom:0;padding:0">
+        <el-descriptions :title="data.promname" :column="2" style="padding:20px">
+            <el-descriptions-item label="活动开始时间">{{data.begdate}}</el-descriptions-item>
+            <el-descriptions-item label="活动结束时间">{{data.enddate}}</el-descriptions-item>
+            <!-- <el-descriptions-item label="起订数量">{{data.orderminqty}}</el-descriptions-item>
+            <el-descriptions-item label="起订金额">{{data.orderminamount}}</el-descriptions-item>
+            <el-descriptions-item label="订单增量">{{data.orderaddqty}}</el-descriptions-item> -->
+        </el-descriptions>
+        <div class="table">
+          <promotionModel v-if="drawer" :data="data" ref="model">
+            <template v-slot:product="scope">
+                  <productDetail :data="scope.data" ref="productDetail">
+                    <template v-slot:promotionPrice="scope">
+                        <promotion-price :data="scope.data" ref="promotionPrice">
+                          <!-- <template v-slot:editPrice="scope2">
+                              <el-button type="text" size="mini" @click="$refs.promotionPrice.currentProduct = scope2.data">编 辑</el-button>
+                          </template> -->
+                        </promotion-price>
+                    </template>
+                  </productDetail>
+            </template>
+          </promotionModel>
+        </div>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import promotionModel from '../components/productModel'
+import productDetail from '../components/productDetail'
+import promotionPrice from '../components/promotionPrice'
+
+export default {
+  components:{promotionModel,productDetail,promotionPrice},
+  props:['data'],
+  name: '',
+  data() {
+    return {
+      drawer:false
+    };
+  },
+  computed:{
+  },
+  watch:{
+  },
+  methods: {},
+};
+</script>
+
+<style scoped>
+  .table {
+    border-top: 10px solid #FAFAFA;
+    padding:20px;
+  }
+</style>

+ 60 - 0
src/components/customBtn/index.vue

@@ -0,0 +1,60 @@
+<template>
+  <div>
+    <el-button :disabled="disabled ? disabled : false" type="primary" size="mini" @click="submit">{{ btnName }}</el-button>
+  </div>
+</template>
+
+<script>
+export default {
+  name: '',
+  props:['btnName','message','idName','keyName','id','disabled','paramData'],
+  props:{
+    btnName: String,
+    message: String,
+    idName: String,
+    keyName: String,
+    id: String,
+    disabled: Boolean,
+    paramData: {
+      type: Array,
+      default () {
+        return []
+      }
+    }
+  },
+  data() {
+    return {
+    };
+  },
+  computed:{
+  },
+  watch:{
+  },
+  methods: {
+    submit () {
+      this.$confirm(this.message,'提示',{
+        confirmButtonText:'确定',
+        cancelButtonText:'取消',
+        type:'warning'
+      }).then(async () => {
+        let param = {
+          content:{}
+        }
+        param.id = this.idName
+        param.content[this.keyName] = this.id
+        this.paramData.forEach(item => {
+          param.content[item.key] = item.value
+        })
+        let res = await this.$api.requested(param)
+        this.tool.showMessage(res,() => {
+          this.$emit('onSuccess')
+        })
+      })
+    }
+  },
+};
+</script>
+
+<style scoped>
+
+</style>

+ 2 - 0
src/main.js

@@ -21,6 +21,7 @@ import basicLayout from './components/normal-basic-layout'
 import normalLayout from './components/normal-basic-layout/normal.vue'
 import basicDetails from './components/normal-basic-layout/details'
 import deleteBtn from './components/delete_btn/index'
+import customBtn from './components/customBtn/index'
 import tagPanl from '@/components/tagPanl/tagPanl'
 
 
@@ -53,6 +54,7 @@ Vue.component('basicLayout', basicLayout)
 Vue.component('basicDetails', basicDetails)
 Vue.component('normalLayout', normalLayout)
 Vue.component('deleteBtn',deleteBtn)
+Vue.component('customBtn',customBtn)
 
 Vue.component('sort', sort)
 /* 标签组件 */

+ 63 - 0
src/router/HDrpManagement.js

@@ -585,6 +585,69 @@ const HDrpManagement = [
     //     components: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/promotion/modules/detail')
     //   },
     // ]
+  },{
+    path: '/bankStatement',
+    name:'bankStatement',
+    meta: {
+      title: '银企直连',
+      ast_nav: true,
+      keeproute: true,
+    },
+    component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/bankStatement/index'),
+    children: [
+      {
+        path: '/bankStatementDetail',
+        name:'bankStatement',
+        meta: {
+          title: '银企直连详情',
+          ast_nav: true,
+          keeproute: true,
+        },
+        component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/bankStatement/modules/detail')
+      },
+    ]
+  },{
+    path: '/aftersalesmag',
+    name:'aftersalesmag',
+    meta: {
+      title: '返退单管理',
+      ast_nav: true,
+      keeproute: true,
+    },
+    component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/afterSalesmag/index'),
+    children: [
+      {
+        path: '/afterSalesmagDetail',
+        name:'aftersalesmag',
+        meta: {
+          title: '返退单详情',
+          ast_nav: true,
+          keeproute: true,
+        },
+        component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/afterSalesmag/modules/detail')
+      },
+    ]
+  },{
+    path: '/salerafterbill',
+    name:'salerafterbill',
+    meta: {
+      title: '返退申请单',
+      ast_nav: true,
+      keeproute: true,
+    },
+    component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/aftersalesBill/index'),
+    children: [
+      {
+        path: '/aftersalesBillDetail',
+        name:'salerafterbill',
+        meta: {
+          title: '返退申请单详情',
+          ast_nav: true,
+          keeproute: true,
+        },
+        component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/aftersalesBill/modules/detail')
+      },
+    ]
   },
   
   

+ 113 - 0
src/template/selectAgent/index.vue

@@ -0,0 +1,113 @@
+<template>
+  <div> 
+    <el-dialog :visible.sync="visible" append-to-body width="50%">
+      <div class="flex-align-center flex-between mt-10">
+        <el-input style="width:200px" size="small"  suffix-icon="el-icon-search" v-model="param.content.where.condition" placeholder="搜索" @keyup.enter.native="listData(param.content.pageNumber = 1)" @clear="listData(param.content.pageNumber = 1)" clearable></el-input>
+      </div>
+      <div>
+        <el-table
+          ref="multipleTable"
+          :data="tableData"
+          style="width: 100%"
+          size="mini"
+          border>
+          <el-table-column
+            prop="enterprisename"
+            label="经销商名称"
+            width="180">
+          </el-table-column>
+          <el-table-column
+            prop="agentnum"
+            label="经销商编号"
+            width="180">
+          </el-table-column>
+          <el-table-column
+            prop="contact"
+            label="联系人"
+            width="90">
+          </el-table-column>
+          <el-table-column
+            label="地址"
+            width="180">
+            <template slot-scope="scope">
+              {{scope.row.province}}{{scope.row.city}}{{scope.row.county}}{{scope.row.address}}
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="操作"
+            width="90">
+            <template slot-scope="scope">
+              <el-button type="text" size="small" @click="selectRow(scope.row)">选 择</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+        <div style="margin-top:16px;text-align:right">
+          <el-pagination
+            background
+            small
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="currentPage"
+            :page-size="param.content.pageSize"
+            layout="total, prev, pager, next, jumper"
+            :total="total">
+          </el-pagination>
+        </div>
+      </div>
+    </el-dialog>
+    <slot name="input"></slot>
+  </div>
+</template>
+
+<script>
+export default {
+  data () {
+    return {
+      visible:false,
+      param:{
+        "classname": "webmanage.sale.agents.agents",
+        "method": "query_agentList",
+        "content": {
+            "pageNumber": 1,
+            "pageSize": 20,
+            "where": {
+                "condition": ""
+            }
+        }
+      },
+      tableData: [],
+      total:0,
+      currentPage:0
+    }
+  },
+  methods:{
+    async listData () {
+      const res = await this.$api.requested(this.param)
+      this.tableData = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+      console.log(this.tableData);
+      
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData()
+    },
+    selectRow (row) {
+      this.$emit('selectRow',row)
+    }
+  },
+  created () {
+    this.listData()
+  },
+}
+
+</script>
+<style>
+</style>