linwenxin 1 год назад
Родитель
Сommit
c9c9326cc2

+ 46 - 1
src/api/orderSettleManag.js

@@ -1,7 +1,53 @@
 import request, { postBlob, getBlob, handleImport } from '@/utils/request'
 
+export function increOrderSettleGetBrand(params) {
+  return request({
+    url: '/incre/order/settle/getBrand',
+    method: 'post',
+    params
+  })
+}
+
+export function increOrderSettleGetCategoryList(params) {
+  return request({
+    url: '/incre/order/settle/getCategoryList',
+    method: 'post',
+    params
+  })
+}
+
+export function increOrderSettleGetIncreItem(params) {
+  return request({
+    url: '/incre/order/settle/getIncreItem',
+    method: 'post',
+    params
+  })
+}
+
+export function increOrderSettleGetWebsit(params) {
+  return request({
+    url: '/incre/order/settle/getWebsit',
+    method: 'post',
+    params
+  })
+}
 
+// ----------------
 
+export function increOrderSettleExamine(data) {
+  return request({
+    url: `/incre/order/settle/examine`,
+    method: 'post',
+    data
+  })
+}
+export function increOrderSettleAdd(data) {
+  return request({
+    url: `/incre/order/settle/add`,
+    method: 'post',
+    data
+  })
+}
 export function increOrderSettleList2(data) {
   return request({
     url: `/incre/order/settle/list2?moduleId=${data.moduleId}`,
@@ -26,7 +72,6 @@ export function increOrderSettleCountWorkerListExport(data, name) {
   })
 }
 
-
 export function increOrderSettleList(data) {
   return request({
     url: `/incre/order/settle/list?moduleId=${data.moduleId}`,

+ 25 - 456
src/views/valueAddedService/orderSettleManag/index.vue

@@ -1,473 +1,42 @@
 <template>
-  <template-page ref="pageRef" :get-list="getList" :exportList="exportList" :table-attributes="tableAttributes"
-    :table-events="tableEvents" :moreParameters="moreParameters" :column-parsing="columnParsing" :operation="operation()"
-    :operationColumnWidth="200" :optionsEvensGroup="optionsEvensGroup">
-    <div class="cartographer">
-      <el-dialog :title="formTypeName[formType]" width="100%" :modal="false" :visible.sync="formDialog"
-        :before-close="formCancel">
-        <zj-form-container v-if="formDialog" ref="formRef" :form-data="formData" :styleSwitch="false">
-          <zj-form-module title="基础信息" label-width="120px" :showPackUp="false" :form-data="formData"
-            :form-items="formItems">
-          </zj-form-module>
-          <zj-form-module title="订单信息" label-width="120px" :showPackUp="false" :form-data="formData"
-            :form-items="formItemsList">
-          </zj-form-module>
-          <zj-form-module title="附件图片" label-width="120px" :showPackUp="false" :form-data="formData"
-            :form-items="formItemsImgs">
-          </zj-form-module>
-        </zj-form-container>
-        <div slot="footer" v-if="formType" class="dialog-footer">
-          <el-button size="mini" @click="formCancel">取 消</el-button>
-          <el-button size="mini" @click="formConfirm" type="primary">确定</el-button>
-        </div>
-      </el-dialog>
+  <zj-page-container>
+    <div class="tab">
+      <el-radio-group v-model="tabType" size="small" @change="tabTypeChange">
+        <el-radio-button label="collect">线上订单</el-radio-button>
+        <el-radio-button label="offline">线下订单</el-radio-button>
+      </el-radio-group>
     </div>
-  </template-page>
+    <zj-page-fill>
+      <collect v-if="tabTypeCk == 'collect'" key="collect" />
+      <offline v-if="tabTypeCk == 'offline'" key="offline" />
+    </zj-page-fill>
+  </zj-page-container>
 </template>
 
 <script>
-import TemplatePage from '@/components/template/template-page-1.vue'
-import import_mixin from '@/components/template/import_mixin.js'
-import { increOrderSettleList, increOrderSettleListExport, increOrderSettleDetail, increOrderSettleConfirm, increOrderSettleRefund } from "@/api/orderSettleManag.js"
-import ImageUpload from '@/components/file-upload'
-import operation_mixin from '@/components/template/operation_mixin.js'
+import { EventBus } from '@/utils/eventBus'
+import collect from './pages/collect.vue'
+import offline from './pages/offline.vue'
 export default {
-  props: {
-    storageType: {
-      type: String,
-      default: ""
-    }
-  },
-  components: { TemplatePage, ImageUpload },
-  mixins: [import_mixin, operation_mixin],
+  components: { collect, offline },
   data() {
     return {
-      // 表格属性
-      tableAttributes: {
-        // 启用勾选列
-        selectColumn: true,
-        selectable: this.selectable
-      },
-      // 表格事件
-      tableEvents: {
-        'selection-change': this.selectionChange
-      },
-      // 勾选选中数据
-      recordSelected: [],
-      formTypeName: ["查看", "结算"],
-      formType: -1,
-      formData: {
-        pgIncreItems: []
-      },
-      formDialog: false,
+      tabType: 'collect',
+      tabTypeCk: 'collect',
     }
   },
-  computed: {
-    // 事件组合
-    optionsEvensGroup() {
-      return [
-        [
-          [
-            this.optionsEvensAuth("bulkSettlemen", {
-              click: () => {
-                if (this.recordSelected.length === 0) {
-                  this.$message.warning('请勾选订单')
-                  return
-                }
-                increOrderSettleConfirm(this.recordSelected.map(item => item.id)).then(res => {
-                  this.$message({ type: 'success', message: `成功!` })
-                  this.$refs.pageRef.refreshList()
-                })
-              }
-            })
-          ],
-        ]
-      ]
-    },
-    // 更多参数
-    moreParameters() {
-      return [
-        {
-          name: '支付状态',
-          key: 'payStatus',
-          value: '',
-          conditions: [
-            {
-              label: "全部",
-              value: ""
-            }, {
-              label: "已支付",
-              value: "PAID"
-            }, {
-              label: "待支付",
-              value: "WAIT"
-            }, {
-              label: "已退款",
-              value: "REFUND"
-            }, {
-              label: "过期",
-              value: "EXPIRE"
-            }, {
-              label: "取消",
-              value: "CANCEL"
-            }]
-        },
-      ]
-    },
-    formItems() {
-      return [{
-        md: 24,
-        isShow: true,
-        name: 'slot-component',
-        formItemAttributes: {
-          label: '',
-          prop: '',
-          'label-width': '0px'
-        },
-        render: (h, { props, onInput }) => {
-          var { value } = props
-          return (
-            <div>
-              <el-descriptions border title="" column={2} colon={false} labelStyle={{ width: '10%' }} contentStyle={{ width: '40%' }}>
-                <el-descriptions-item label="所属商户">
-                  {this.formData.companyWechatName}
-                </el-descriptions-item>
-                <el-descriptions-item label="销售网点">
-                  {this.formData.websitName}
-                </el-descriptions-item>
-                <el-descriptions-item label="订单单号" >
-                  {this.formData.id}
-                </el-descriptions-item>
-                <el-descriptions-item label="师傅姓名" >
-                  {this.formData.workerName}
-                </el-descriptions-item>
-                <el-descriptions-item label="师傅联系电话">
-                  {this.formData.workerMobile}
-                </el-descriptions-item>
-                <el-descriptions-item label="师傅身份证号">
-                  {this.formData.workerIdcard}
-                </el-descriptions-item>
-                <el-descriptions-item label="客户姓名" >
-                  {this.formData.userName}
-                </el-descriptions-item>
-                <el-descriptions-item label="客户电话" >
-                  {this.formData.userMobile}
-                </el-descriptions-item>
-                <el-descriptions-item label="详细地址">
-                  {this.formData.userAddress}
-                </el-descriptions-item>
-                <el-descriptions-item label="内机条码">
-                  {this.formData.insideCode}
-                </el-descriptions-item>
-                <el-descriptions-item label="服务单号" >
-                  {this.formData.serviceNo}
-                </el-descriptions-item>
-                <el-descriptions-item label="发票价格" >
-                  {this.formData.invoiceAmount}
-                </el-descriptions-item>
-                <el-descriptions-item label="发票时间">
-                  {this.formData.invoiceTime}
-                </el-descriptions-item>
-                <el-descriptions-item label="服务截止时间">
-                  {this.formData.serviceEndTime}
-                </el-descriptions-item>
-                <el-descriptions-item label="创建人" >
-                  {this.formData.createBy}
-                </el-descriptions-item>
-                <el-descriptions-item label="创建时间" >
-                  {this.formData.createTime}
-                </el-descriptions-item>
-                <el-descriptions-item label="支付状态">
-                  {({ "EXPIRE": "过期", "CANCEL": "取消", "PAID": "已支付", "WAIT": "待支付", "REFUND": "已退款" })[this.formData.payStatus] || ""}
-                </el-descriptions-item>
-                <el-descriptions-item label="支付方式">
-                  {({ 1: "扫码支付", 2: "代客支付" })[this.formData.payType] || ""}
-                </el-descriptions-item>
-                <el-descriptions-item label="支付订单号" >
-                  {this.formData.payNo}
-                </el-descriptions-item>
-                <el-descriptions-item label="支付时间" >
-                  {this.formData.payTime}
-                </el-descriptions-item>
-                <el-descriptions-item label="微信流水号">
-                  {this.formData.transcationId}
-                </el-descriptions-item>
-                <el-descriptions-item label="师傅销售佣金">
-                  {this.formData.workerAmount}
-                </el-descriptions-item>
-                <el-descriptions-item label="结算人员" >
-                  {this.formData.updateBy}
-                </el-descriptions-item>
-                <el-descriptions-item label="操作时间" >
-                  {this.formData.updateTime}
-                </el-descriptions-item>
-              </el-descriptions>
-            </div>
-          )
-        }
-      }]
-    },
-    formItemsList() {
-      return [{
-        md: 24,
-        isShow: true,
-        name: 'slot-component',
-        formItemAttributes: {
-          label: '',
-          prop: '',
-          'label-width': '0px'
-        },
-        render: (h, { props, onInput }) => {
-          var { value } = props
-          return (
-            <zj-table
-              columns={[{
-                columnAttributes: {
-                  label: '服务类型',
-                  prop: 'type'
-                },
-                render: (h, { row, column, index }) => {
-                  return <div style="padding: 0 10px">
-                    {({ 1: "延保", 2: "清洗" })[row.type] || ""}
-                  </div>
-                }
-              },
-              {
-                columnAttributes: {
-                  label: '使用类型',
-                  prop: 'usedType'
-                },
-                render: (h, { row, column, index }) => {
-                  return <div style="padding: 0 10px">
-                    {({ COUNT: "使用次数", YEAR: "使用年限" })[row.usedType] || ""}
-                  </div>
-                }
-              }, {
-                columnAttributes: {
-                  label: '品牌',
-                  prop: 'brandName'
-                }
-              },
-              {
-                columnAttributes: {
-                  label: '产品大类',
-                  prop: 'mainName'
-                }
-              },
-              {
-                columnAttributes: {
-                  label: '服务内容',
-                  prop: 'content'
-                }
-              },
-              {
-                columnAttributes: {
-                  label: '服务金额(元)',
-                  prop: 'amount'
-                }
-              },
-              {
-                columnAttributes: {
-                  label: '使用限值',
-                  prop: 'limitNum'
-                }
-              },
-              {
-                columnAttributes: {
-                  label: '总手续费',
-                  prop: 'commissionAmount'
-                }
-              },
-              {
-                columnAttributes: {
-                  label: '师傅分成金额',
-                  prop: 'workerAmount'
-                }
-              },
-              {
-                columnAttributes: {
-                  label: '网点分成金额',
-                  prop: 'websitAmount'
-                }
-              }]}
-              tableData={[{
-                ...(this.formData.increItem || {}),
-                ...(this.formData.incre || {}),
-                workerAmount: this.formData.workerAmount,
-                websitAmount: this.formData.websitAmount,
-                commissionAmount: this.formData.commissionAmount
-              }]}
-              tableAttributes={{
-                size: 'mini',
-                border: true,
-              }} />
-          )
-        }
-      }]
-    },
-    formItemsImgs() {
-      return [{
-        md: 24,
-        name: 'slot-component',
-        formItemAttributes: {
-          label: '',
-          prop: '',
-          'label-width': '0px'
-        },
-        render: (h, { props, onInput }) => {
-          return (
-            <ImageUpload
-              fileList={
-                [{ key: "insideCodeImg", name: "内机条码" }, { key: "machineImg", name: "机器铭牌图片" }, { key: "buyCertImg", name: "购机凭证图片" }].map((item) => ({ url: this.formData[item.key], name: item.name }))
-              }
-              limit={1000}
-              isEdit={false}
-              viewOnline={false}
-              download={false}
-              showName={true}
-            />
-          )
-        }
-      }]
-    },
-  },
   methods: {
-    selectable(row, index) {
-      return ["PAID"].includes(Object.entries(row.selectMapData.payStatus).find(([key, val]) => val == row.payStatus)?.[0]) &&
-        ["ING"].includes(Object.entries(row.selectMapData.settleStatus).find(([key, val]) => val == row.settleStatus)?.[0])
-    },
-    // 列表请求函数
-    getList(p, cb) {
-      var pam = JSON.parse(JSON.stringify(p))
-      try {
-        if (pam.payStatus) {
-          pam.params.push({ "param": "a.pay_status", "compare": "=", "value": pam.payStatus })
-        }
-        cb && cb(pam)
-        return increOrderSettleList(pam)
-      } catch (err) {
-      }
-    },
-    // 列表导出函数
-    exportList: increOrderSettleListExport,
-    // 表格列解析渲染数据更改
-    columnParsing(item, defaultData) {
-      if (item.jname === 'residuNum') {
-        defaultData.render = (h, { row, index, column }) => {
-          return (
-            <div style="padding:0 6px;cursor: pointer;">
-              {row["increType"] != 1 ? row["residuNum"] : ""}
-            </div>
-          )
-        }
-      }
-      if (item.jname === 'serviceEndTime') {
-        defaultData.render = (h, { row, index, column }) => {
-          return (
-            <div style="padding:0 6px;cursor: pointer;">
-              {row[column.columnAttributes.prop] ? row[column.columnAttributes.prop].split(" ")[0] : ""}
-            </div>
-          )
-        }
-      }
-      return defaultData
-    },
-    // 监听勾选变化
-    selectionChange(data) {
-      this.recordSelected = data
-    },
-    // 表格操作列
-    operation() {
-      return this.operationBtn({
-        detail: {
-          btnType: 'text',
-          click: ({ row, index, column }) => {
-            this.formType = 0
-            this.getDetail(row.id)
-          }
-        },
-        orderDetail: {
-          btnType: 'text',
-          conditions: ({ row, index, column }) => {
-            return ["PAID", "REFUND"].includes(row.payStatus)
-          },
-          click: ({ row, index, column }) => {
-            this.$router.push({
-              name: "workOrderPool",
-              query: {
-                pgIncreItemId: row.id,
-              }
-            })
-          }
-        },
-        refund: {
-          btnType: 'text',
-          prompt: '是否确定退款?',
-          conditions: ({ row, index, column }) => {
-            return ["PAID"].includes(row.payStatus) && ["ING"].includes(row.settleStatus) && (() => {
-              var currentDate = new Date(row.payTime);
-              currentDate.setDate(currentDate.getDate() + 7);
-              currentDate.setHours(23);
-              currentDate.setMinutes(59);
-              currentDate.setSeconds(59);
-              return currentDate > new Date()
-            })()
-          },
-          click: ({ row, index, column }) => {
-            increOrderSettleRefund({ id: row.id }).then(res => {
-              this.$message({ type: 'success', message: `退款成功!` })
-              this.$refs.pageRef.refreshList()
-            })
-          }
-        },
-        settlement: {
-          btnType: 'text',
-          prompt: '是否确定结算?',
-          conditions: ({ row, index, column }) => {
-            return ["PAID"].includes(row.payStatus) && ["ING"].includes(row.settleStatus)
-          },
-          click: ({ row, index, column }) => {
-            this.formType = 1
-            this.getDetail(row.id)
-          }
-        },
-      })
-    },
-    getDetail(id) {
-      increOrderSettleDetail({ id }).then(res => {
-        Object.assign(this.formData, res.data)
-        this.openForm()
+    tabTypeChange() {
+      this.$nextTick(() => {
+        this.tabTypeCk = this.tabType
       })
-    },
-    openForm() {
-      this.formDialog = true
-    },
-    // 关闭弹窗
-    formCancel() {
-      this.$refs.formRef.$refs.inlineForm.clearValidate()
-      this.$data.formData = this.$options.data().formData
-      this.formDialog = false
-    },
-    formConfirm() {
-      this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
-        if (valid) {
-          increOrderSettleConfirm([this.formData.id]).then(res => {
-            this.$message({ type: 'success', message: `操作成功!` })
-            this.formCancel()
-            this.$refs.pageRef.refreshList()
-          })
-        }
-      })
-    },
-  }
+    }
+  },
 }
 </script>
 
-<style lang="scss">
-.redbordererr {
-  .el-form-item {
-    margin: 0 !important;
-    overflow: hidden;
-  }
+<style lang="scss" scoped>
+.tab {
+  padding: 20px 20px 0 20px;
 }
 </style>

+ 292 - 0
src/views/valueAddedService/orderSettleManag/mixins/basicInfo.js

@@ -0,0 +1,292 @@
+import { lbsAmapRegion } from '@/api/common.js'
+import { listPageV2, getDetail } from "@/api/engineeringMaintenance/basicData";
+import geographicalPosi from '@/components/geographicalPosi/index.vue'
+import { required, mobileRequired, mobile, httpUrl, email } from '@/components/template/rules_verify.js'
+export default {
+  data() {
+    return {
+      provinceList: [],
+      cityList: [],
+      areaList: [],
+      streetList: [],
+    }
+  },
+  computed: {
+    // 基本信息数据模型
+    basicInfo() {
+      return [
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: { disabled: false, placeholder: '请输入' },
+          formItemAttributes: {
+            label: '客户名称',
+            prop: 'userName',
+            rules: [...required]
+          },
+          events: {
+            input: (v) => {
+              this.addFormData.linkName = v
+            }
+          }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: { disabled: false, placeholder: '请输入', maxlength: 11 },
+          formItemAttributes: {
+            label: '客户电话',
+            prop: 'userMobile',
+            rules: [...mobileRequired]
+          }
+        },
+        {
+          name: 'slot-component',
+          md: 12,
+          formItemAttributes: {
+            'label-width': '0px',
+            prop: '',
+          },
+          render: (h, { props }) => {
+            return null
+          }
+        },
+        // {
+        //   name: 'el-select',
+        //   md: 6,
+        //   formItemAttributes: {
+        //     label: '客户地址', //省
+        //     prop: 'provinceId',
+        //     rules: [required],
+        //     errLabel: '省'
+        //   },
+        //   options: this.provinceList.map((v, i) => ({ value: v.id, label: v.name })),
+        //   attributes: { disabled: true, clearable: true, filterable: true, placeholder: '请选择' },
+        //   events: {
+        //     change: () => {
+        //       // 获取省名称
+        //       this.addFormData.province = this.provinceList.find(item => item.id === val)?.name || ''
+        //       // 清除市区街道以及详细地址数据
+        //       this.delDataK(1)
+        //       lbsAmapRegion({ pid: val }).then(res => {
+        //         this.cityList = res.data
+        //       })
+        //     }
+        //   }
+        // },
+        // {
+        //   name: 'el-select',
+        //   md: 5,
+        //   formItemAttributes: {
+        //     'label-width': '0px',
+        //     label: '', //市
+        //     prop: 'cityId',
+        //     rules: [required],
+        //     errLabel: '市'
+        //   },
+        //   options: this.cityList.map((v, i) => ({ value: v.id, label: v.name })),
+        //   attributes: { disabled: true, clearable: true, filterable: true, placeholder: '请选择' },
+        //   events: {
+        //     change: () => {
+        //       // 获取市名称
+        //       this.addFormData.city = this.cityList.find(item => item.id === val).name
+        //       // 清除区街道以及详细地址数据
+        //       this.delDataK(2)
+        //       lbsAmapRegion({ pid: val }).then(res => {
+        //         this.areaList = res.data
+        //       })
+        //     }
+        //   }
+        // },
+        // {
+        //   name: 'el-select',
+        //   md: 5,
+        //   formItemAttributes: {
+        //     'label-width': '0px',
+        //     label: '', //区
+        //     prop: 'areaId',
+        //     rules: [required],
+        //     errLabel: '区'
+        //   },
+        //   options: this.areaList.map((v, i) => ({ value: v.id, label: v.name })),
+        //   attributes: { disabled: true, clearable: true, filterable: true, placeholder: '请选择' },
+        //   events: {
+        //     change: () => {
+        //       // 获取区名称
+        //       this.addFormData.area = this.areaList.find(item => item.id === val).name
+        //       // 清除街道以及详细地址数据
+        //       this.delDataK(3)
+        //       lbsAmapRegion({ pid: val }).then(res => {
+        //         this.streetList = res.data
+        //       })
+        //     }
+        //   }
+        // },
+        // {
+        //   name: 'el-select',
+        //   md: 5,
+        //   formItemAttributes: {
+        //     'label-width': '0px',
+        //     label: '', //街道
+        //     prop: 'streetId',
+        //     rules: [required],
+        //     errLabel: '街道'
+        //   },
+        //   options: this.streetList.map((v, i) => ({ value: v.id, label: v.name })),
+        //   attributes: { disabled: true, clearable: true, filterable: true, placeholder: '请选择' },
+        //   events: {
+        //     change: () => {
+        //       // 获取街道名称
+        //       this.addFormData.street = this.streetList.find(item => item.id === val).name
+        //       // 清除详细地址数据
+        //       this.delDataK(4)
+        //     }
+        //   }
+        // },
+        {
+          name: 'el-input',
+          md: 21,
+          formItemAttributes: { label: '客户地址', prop: 'userAddress', rules: [...required] },
+          attributes: { disabled: false, placeholder: '详细地址' }
+        },
+        {
+          name: 'slot-component',
+          md: 3,
+          formItemAttributes: {
+            'label-width': '0px',
+            prop: '',
+          },
+          render: (h, { props }) => {
+            return (
+              <geographicalPosi
+                disabled={false}
+                formData={this.addFormData}
+                onSelectPosi={data => {
+                  // 赋值GPS详细地址
+                  this.addFormData.userAddress = data.name
+                  // // 获取经纬度
+                  // this.addFormData.lng = data.center[0]
+                  // this.addFormData.lat = data.center[1]
+                  // // 获取定位的省市区街道
+                  // var { province, city, district, township } = data.data.addressComponent
+                  // // 获取选中省名称id
+                  // var { id, name } = this.provinceList.find(item => item.name === province)
+                  // this.addFormData.provinceId = id
+                  // this.addFormData.province = name
+                  // // 请求市选项
+                  // lbsAmapRegion({ pid: this.addFormData.provinceId }).then(res => {
+                  //   // 赋值市选项
+                  //   this.cityList = res.data
+                  //   // 获取选中市名称id
+                  //   var { id, name } = res.data.find(item => item.name === city)
+                  //   this.addFormData.cityId = id
+                  //   this.addFormData.city = name
+                  //   // 请求区选项
+                  //   lbsAmapRegion({ pid: this.addFormData.cityId }).then(res => {
+                  //     // 赋值区选项
+                  //     this.areaList = res.data
+                  //     // 获取选中区名称id
+                  //     var { id, name } = res.data.find(item => item.name === district)
+                  //     this.addFormData.areaId = id
+                  //     this.addFormData.area = name
+                  //     // 请求街道选项
+                  //     lbsAmapRegion({ pid: this.addFormData.areaId }).then(res => {
+                  //       // 赋值街道选项
+                  //       this.streetList = res.data
+                  //       // 获取选中街道名称id
+                  //       var { id, name } = res.data.find(item => item.name === township)
+                  //       this.addFormData.streetId = id
+                  //       this.addFormData.street = name
+                  //       // 赋值GPS详细地址
+                  //       this.addFormData.userAddress = data.name
+                  //     })
+                  //   })
+                  // })
+                }}
+              />
+            )
+          }
+        },
+        {
+          name: 'el-input',
+          md: 24,
+          attributes: {
+            disabled: false,
+            type: 'textarea',
+            rows: 3,
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '备注',
+            prop: 'remark',
+            rules: []
+          }
+        }
+      ]
+    }
+  },
+  methods: {
+    getinitlbslist() {
+      // 初始化请求省市区街道下拉选项数据
+      lbsAmapRegion({ pid: 0 }).then(res => {
+        this.provinceList = res.data
+        // 创建工单时获取ip地址定位赋值
+        if (!this.addFormData.id && this.$IpAdd.province) {
+          var item = this.provinceList.find(item => item.name === this.$IpAdd.province)
+          if (item) {
+            this.addFormData.provinceId = item.id
+            this.addFormData.province = item.name
+          }
+        }
+        if (this.addFormData.provinceId) {
+          lbsAmapRegion({ pid: this.addFormData.provinceId }).then(res => {
+            this.cityList = res.data
+            // 创建工单时获取ip地址定位赋值
+            if (!this.id && this.$IpAdd.city) {
+              var item2 = this.cityList.find(item => item.name === this.$IpAdd.city)
+              if (item2) {
+                this.addFormData.cityId = item2.id
+                this.addFormData.city = item2.name
+              }
+            }
+            if (this.addFormData.cityId) {
+              lbsAmapRegion({ pid: this.addFormData.cityId }).then(res => {
+                this.areaList = res.data
+              })
+            }
+            if (this.addFormData.areaId) {
+              lbsAmapRegion({ pid: this.addFormData.areaId }).then(res => {
+                this.streetList = res.data
+              })
+            }
+          })
+        }
+      })
+    },
+    delDataK(num) {
+      if (num <= 1) {
+        // 删除市
+        this.addFormData.cityId = ''
+        this.addFormData.city = ''
+        // 删除市选项
+        this.cityList = []
+      }
+      if (num <= 2) {
+        // 删除区
+        this.addFormData.areaId = ''
+        this.addFormData.area = ''
+        // 删除区选项
+        this.areaList = []
+      }
+      if (num <= 3) {
+        // 删除街道
+        this.addFormData.streetId = ''
+        this.addFormData.street = ''
+        // 删除街道选项
+        this.streetList = []
+      }
+      // 删除gps地址
+      this.addFormData.userAddress = ''
+    }
+  }
+}

+ 44 - 0
src/views/valueAddedService/orderSettleManag/mixins/examineInfo.js

@@ -0,0 +1,44 @@
+
+import { required, mobileRequired, mobile, httpUrl, email } from '@/components/template/rules_verify.js'
+export default {
+  data() {
+    return {
+
+    }
+  },
+  computed: {
+    examineInfo() {
+      return [
+        {
+          name: 'el-radio',
+          md: 24,
+          formItemAttributes: {
+            label: '审批结果',
+            prop: 'flag',
+            rules: [...required],
+          },
+          options: [{ label: "通过", value: "OK" }, { label: "失败", value: "FAIL" }],
+          attributes: { disabled: false, placeholder: '请选择' },
+        },
+        {
+          name: 'el-input',
+          md: 24,
+          attributes: {
+            disabled: false,
+            type: 'textarea',
+            rows: 3,
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '审批备注',
+            prop: 'examineRemark',
+            rules: []
+          }
+        }
+      ]
+    }
+  },
+  methods: {
+
+  }
+}

+ 223 - 0
src/views/valueAddedService/orderSettleManag/mixins/formItems.js

@@ -0,0 +1,223 @@
+import ImageUpload from '@/components/file-upload'
+export default {
+  components: { ImageUpload },
+  computed: {
+    formItems() {
+      return [{
+        md: 24,
+        isShow: true,
+        name: 'slot-component',
+        formItemAttributes: {
+          label: '',
+          prop: '',
+          'label-width': '0px'
+        },
+        render: (h, { props, onInput }) => {
+          var { formData } = props
+          return (
+            <div>
+              <el-descriptions border title="" column={4} colon={false} labelStyle={{ width: '8%' }} contentStyle={{ width: '17%' }}>
+                <el-descriptions-item label="所属商户">
+                  {formData.companyWechatName}
+                </el-descriptions-item>
+                <el-descriptions-item label="销售网点">
+                  {formData.websitName}
+                </el-descriptions-item>
+                <el-descriptions-item label="订单单号" >
+                  {formData.id}
+                </el-descriptions-item>
+                <el-descriptions-item label="师傅姓名" >
+                  {formData.workerName}
+                </el-descriptions-item>
+                <el-descriptions-item label="师傅联系电话">
+                  {formData.workerMobile}
+                </el-descriptions-item>
+                <el-descriptions-item label="师傅身份证号">
+                  {formData.workerIdcard}
+                </el-descriptions-item>
+                <el-descriptions-item label="客户姓名" >
+                  {formData.userName}
+                </el-descriptions-item>
+                <el-descriptions-item label="客户电话" >
+                  {formData.userMobile}
+                </el-descriptions-item>
+                <el-descriptions-item label="详细地址">
+                  {formData.userAddress}
+                </el-descriptions-item>
+                <el-descriptions-item label="内机条码">
+                  {formData.insideCode}
+                </el-descriptions-item>
+                <el-descriptions-item label="服务单号" >
+                  {formData.serviceNo}
+                </el-descriptions-item>
+                <el-descriptions-item label="发票价格" >
+                  {formData.invoiceAmount}
+                </el-descriptions-item>
+                <el-descriptions-item label="发票时间">
+                  {formData.invoiceTime}
+                </el-descriptions-item>
+                <el-descriptions-item label="服务截止时间">
+                  {formData.serviceEndTime}
+                </el-descriptions-item>
+                <el-descriptions-item label="创建人" >
+                  {formData.createBy}
+                </el-descriptions-item>
+                <el-descriptions-item label="创建时间" >
+                  {formData.createTime}
+                </el-descriptions-item>
+                <el-descriptions-item label="支付状态">
+                  {({ "EXPIRE": "过期", "CANCEL": "取消", "PAID": "已支付", "WAIT": "待支付", "REFUND": "已退款" })[formData.payStatus] || ""}
+                </el-descriptions-item>
+                <el-descriptions-item label="支付方式">
+                  {({ 1: "扫码支付", 2: "代客支付" })[formData.payType] || ""}
+                </el-descriptions-item>
+                <el-descriptions-item label="支付订单号" >
+                  {formData.payNo}
+                </el-descriptions-item>
+                <el-descriptions-item label="支付时间" >
+                  {formData.payTime}
+                </el-descriptions-item>
+                <el-descriptions-item label="微信流水号">
+                  {formData.transcationId}
+                </el-descriptions-item>
+                <el-descriptions-item label="师傅销售佣金">
+                  {formData.workerAmount}
+                </el-descriptions-item>
+                <el-descriptions-item label="结算人员" >
+                  {formData.updateBy}
+                </el-descriptions-item>
+                <el-descriptions-item label="操作时间" >
+                  {formData.updateTime}
+                </el-descriptions-item>
+              </el-descriptions>
+            </div>
+          )
+        }
+      }]
+    },
+    formItemsList() {
+      return [{
+        md: 24,
+        isShow: true,
+        name: 'slot-component',
+        formItemAttributes: {
+          label: '',
+          prop: '',
+          'label-width': '0px'
+        },
+        render: (h, { props, onInput }) => {
+          var { formData } = props
+          return (
+            <zj-table
+              columns={[{
+                columnAttributes: {
+                  label: '服务类型',
+                  prop: 'type'
+                },
+                render: (h, { row, column, index }) => {
+                  return <div style="padding: 0 10px">
+                    {({ 1: "延保", 2: "清洗" })[row.type] || ""}
+                  </div>
+                }
+              },
+              {
+                columnAttributes: {
+                  label: '使用类型',
+                  prop: 'usedType'
+                },
+                render: (h, { row, column, index }) => {
+                  return <div style="padding: 0 10px">
+                    {({ COUNT: "使用次数", YEAR: "使用年限" })[row.usedType] || ""}
+                  </div>
+                }
+              }, {
+                columnAttributes: {
+                  label: '品牌',
+                  prop: 'brandName'
+                }
+              },
+              {
+                columnAttributes: {
+                  label: '产品大类',
+                  prop: 'mainName'
+                }
+              },
+              {
+                columnAttributes: {
+                  label: '服务内容',
+                  prop: 'content'
+                }
+              },
+              {
+                columnAttributes: {
+                  label: '服务金额(元)',
+                  prop: 'amount'
+                }
+              },
+              {
+                columnAttributes: {
+                  label: '使用限值',
+                  prop: 'limitNum'
+                }
+              },
+              {
+                columnAttributes: {
+                  label: '总手续费',
+                  prop: 'commissionAmount'
+                }
+              },
+              {
+                columnAttributes: {
+                  label: '师傅分成金额',
+                  prop: 'workerAmount'
+                }
+              },
+              {
+                columnAttributes: {
+                  label: '网点分成金额',
+                  prop: 'websitAmount'
+                }
+              }]}
+              tableData={[{
+                ...(formData.increItem || {}),
+                ...(formData.incre || {}),
+                workerAmount: formData.workerAmount,
+                websitAmount: formData.websitAmount,
+                commissionAmount: formData.commissionAmount
+              }]}
+              tableAttributes={{
+                size: 'mini',
+                border: true,
+              }} />
+          )
+        }
+      }]
+    },
+    formItemsImgs() {
+      return [{
+        md: 24,
+        name: 'slot-component',
+        formItemAttributes: {
+          label: '',
+          prop: '',
+          'label-width': '0px'
+        },
+        render: (h, { props, onInput }) => {
+          var { formData } = props
+          return (
+            <ImageUpload
+              fileList={
+                [{ key: "insideCodeImg", name: "内机条码" }, { key: "machineImg", name: "机器铭牌图片" }, { key: "buyCertImg", name: "购机凭证图片" }].map((item) => ({ url: formData[item.key], name: item.name }))
+              }
+              limit={1000}
+              isEdit={false}
+              viewOnline={false}
+              download={false}
+              showName={true}
+            />
+          )
+        }
+      }]
+    },
+  },
+}

+ 151 - 0
src/views/valueAddedService/orderSettleManag/mixins/productInfo.js

@@ -0,0 +1,151 @@
+import { required, mobileRequired, mobile, httpUrl, email } from '@/components/template/rules_verify.js'
+import ImageUpload from '@/components/file-upload'
+export default {
+  data() {
+    return {
+
+    }
+  },
+  computed: {
+    productInfo() {
+      return [
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: { disabled: false, placeholder: '请输入' },
+          formItemAttributes: {
+            label: '内积条码',
+            prop: 'insideCode',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: { disabled: false, placeholder: '请输入' },
+          formItemAttributes: {
+            label: '发片价格',
+            prop: 'invoiceAmount',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-date-picker',
+          md: 6,
+          attributes: {
+            disabled: false,
+            style: { width: '100%' },
+            placeholder: '请选择',
+            type: 'date',
+            'value-format': 'yyyy-MM-dd HH:mm:ss',
+            // 'picker-options': {
+            //   disabledDate: time => {
+            //     return time.getTime() < (Date.now() - 86400000)
+            //   }
+            // }
+          },
+          formItemAttributes: {
+            label: '原保到期',
+            prop: 'insureTime',
+            rules: [...required]
+          },
+          events: {
+            change: (val) => {
+              if (val && this.addFormData.limitNum) {
+                // 初始日期
+                const initialDate = new Date(val);
+                // 加上三年
+                initialDate.setFullYear(initialDate.getFullYear() + (this.addFormData.limitNum || 0));
+                // 获取新的日期
+                this.addFormData.serviceEndTime = initialDate.toISOString().split('T')[0];
+              } else {
+                this.addFormData.serviceEndTime = ""
+              }
+            }
+          }
+        },
+        {
+          name: 'el-date-picker',
+          md: 6,
+          attributes: {
+            disabled: true,
+            style: { width: '100%' },
+            placeholder: '请选择',
+            type: 'date',
+            'value-format': 'yyyy-MM-dd HH:mm:ss',
+            // 'picker-options': {
+            //   disabledDate: time => {
+            //     return time.getTime() < (Date.now() - 86400000)
+            //   }
+            // }
+          },
+          formItemAttributes: {
+            label: '服务期限',
+            prop: 'serviceEndTime',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'slot-component',
+          md: 3,
+          formItemAttributes: {
+            label: '',
+            'label-width': '0px',
+            prop: 'insideCodeImg',
+            rules: [...required],
+            errLabel: '内机条码'
+          },
+          render: (h, { props }) => {
+            return (
+              <div style="padding: 0 10px">
+                <ImageUpload fileList={this.addFormData.insideCodeImg} limit={1} isEdit={true} />
+                <div style="padding-left:20px">*内机条码</div>
+              </div>
+            )
+          }
+        },
+        {
+          name: 'slot-component',
+          md: 3,
+          formItemAttributes: {
+            label: '',
+            'label-width': '0px',
+            prop: 'machineImg',
+            rules: [...required],
+            errLabel: '机器铭牌'
+          },
+          render: (h, { props }) => {
+            return (
+              <div style="padding: 0 10px">
+                <ImageUpload fileList={this.addFormData.machineImg} limit={1} isEdit={true} />
+                <div style="padding-left:20px">*机器铭牌</div>
+              </div>
+            )
+          }
+        },
+        {
+          name: 'slot-component',
+          md: 3,
+          formItemAttributes: {
+            label: '',
+            'label-width': '0px',
+            prop: 'buyCertImg',
+            rules: [...required],
+            errLabel: '购机凭证'
+          },
+          render: (h, { props }) => {
+            return (
+              <div style="padding: 0 10px">
+                <ImageUpload fileList={this.addFormData.buyCertImg} limit={1} isEdit={true} />
+                <div style="padding-left:20px">*购机凭证</div>
+              </div>
+            )
+          }
+        },
+      ]
+    }
+  },
+  methods: {
+
+  }
+}

+ 223 - 0
src/views/valueAddedService/orderSettleManag/mixins/serviceInfo.js

@@ -0,0 +1,223 @@
+import { required, mobileRequired, mobile, httpUrl, email } from '@/components/template/rules_verify.js'
+import { increOrderSettleGetBrand, increOrderSettleGetCategoryList, increOrderSettleGetIncreItem, increOrderSettleGetWebsit } from "@/api/orderSettleManag.js"
+export default {
+  data() {
+    return {
+      brandList: [],
+      mainList: [],
+      increContentList: [],
+      websitList: []
+    }
+  },
+  computed: {
+    serviceInfo() {
+      return [
+        {
+          name: 'el-select',
+          md: 6,
+          attributes: { disabled: false, placeholder: '请输入' },
+          formItemAttributes: {
+            label: '服务类型',
+            prop: 'increType',
+            rules: [...required]
+          },
+          options: [{ label: "延保", value: 1 }],
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: { disabled: true, placeholder: '请输入' },
+          formItemAttributes: {
+            label: '使用类型',
+            prop: 'shiyongleixing',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-select',
+          md: 6,
+          options: this.brandList,
+          formItemAttributes: {
+            label: '产品品牌',
+            prop: 'brandId',
+            rules: [...required]
+          },
+          attributes: { disabled: false, clearable: true, filterable: true, placeholder: '请选择' },
+          events: {
+            change: (val) => {
+              this.mainList = []
+              this.increContentList = []
+              this.websitList = []
+              this.addFormData.brandName = ""
+              this.addFormData.mainId = ""
+              this.addFormData.mainName = ""
+              this.addFormData.mainImg = ""
+              this.addFormData.increContent = ""
+              this.addFormData.pgIncreId = ""
+              this.addFormData.limitNum = ""
+              this.addFormData.amount = ""
+              this.addFormData.websitId = ""
+              if (val) {
+                this.addFormData.brandName = this.brandList.find(item => item.value === val)?.label
+                increOrderSettleGetCategoryList({ brand: this.addFormData.brandName }).then(res => {
+                  this.mainList = res.data.map(item => ({
+                    label: item.name,
+                    value: item.categoryId,
+                    data: item
+                  }))
+                })
+              }
+            }
+          }
+        },
+        {
+          name: 'el-select',
+          md: 6,
+          options: this.mainList,
+          formItemAttributes: {
+            label: '产品大类',
+            prop: 'mainId',
+            rules: [...required]
+          },
+          attributes: { disabled: false, clearable: true, filterable: true, placeholder: '请选择' },
+          events: {
+            change: (val) => {
+              this.increContentList = []
+              this.websitList = []
+              this.addFormData.mainName = ""
+              this.addFormData.mainImg = ""
+              this.addFormData.increContent = ""
+              this.addFormData.pgIncreId = ""
+              this.addFormData.limitNum = ""
+              this.addFormData.amount = ""
+              this.addFormData.websitId = ""
+              if (val) {
+                this.addFormData.mainName = this.mainList.find(item => item.value === val)?.label
+                this.addFormData.mainImg = this.mainList.find(item => item.value === val)?.data?.imgUrl
+                increOrderSettleGetIncreItem({
+                  brand: this.addFormData.brandName,
+                  mainName: this.addFormData.mainName
+                }).then(res => {
+                  this.increContentList = res.data.map(item => ({
+                    label: item.content,
+                    value: item.increId,
+                    data: item
+                  }))
+                })
+              }
+            }
+          }
+        },
+        {
+          name: 'el-select',
+          md: 12,
+          formItemAttributes: {
+            label: '服务内容',
+            prop: 'pgIncreId',
+            rules: [...required],
+          },
+          options: this.increContentList,
+          attributes: { disabled: false, clearable: true, filterable: true, placeholder: '请选择' },
+          events: {
+            change: (val) => {
+              this.websitList = []
+              this.addFormData.limitNum = ""
+              this.addFormData.amount = ""
+              this.addFormData.websitId = ""
+              this.addFormData.serviceEndTime = ""
+              this.addFormData.increContent = ""
+              if (val) {
+                var data = this.increContentList.find(item => item.value === val)
+                this.addFormData.increContent = data.data.content;
+                this.addFormData.limitNum = data.data.limitNum;
+                this.addFormData.amount = data.data.amount;
+                if (this.addFormData.insureTime && this.addFormData.limitNum) {
+                  // 初始日期
+                  const initialDate = new Date(this.addFormData.insureTime);
+                  // 加上三年
+                  initialDate.setFullYear(initialDate.getFullYear() + (this.addFormData.limitNum || 0));
+                  // 获取新的日期
+                  this.addFormData.serviceEndTime = initialDate.toISOString().split('T')[0];
+                }
+                increOrderSettleGetWebsit({
+                  increId: val
+                }).then(res => {
+                  this.websitList = res.data.map(item => ({
+                    value: item.websitId,
+                    label: item.websitName,
+                  }))
+                })
+              }
+            }
+          }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: { disabled: true, placeholder: '请输入' },
+          formItemAttributes: {
+            label: '使用限值',
+            prop: 'limitNum',
+            rules: [...required]
+          },
+          events: {
+            change: (val) => {
+              if (this.addFormData.insureTime && val) {
+                // 初始日期
+                const initialDate = new Date(this.addFormData.insureTime);
+                // 加上三年
+                initialDate.setFullYear(initialDate.getFullYear() + (val || 0));
+                // 获取新的日期
+                this.addFormData.serviceEndTime = initialDate.toISOString().split('T')[0];
+              } else {
+                this.addFormData.serviceEndTime = ""
+              }
+            }
+          }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: { disabled: false, placeholder: '请输入', type: 'number' },
+          formItemAttributes: {
+            label: '服务金额',
+            prop: 'amount',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-select',
+          md: 12,
+          formItemAttributes: {
+            label: '销售网点',
+            prop: 'websitId',
+            rules: [...required],
+          },
+          options: this.websitList,
+          attributes: { disabled: false, clearable: true, filterable: true, placeholder: '请选择' },
+        },
+        {
+          name: 'el-radio',
+          md: 12,
+          formItemAttributes: {
+            label: '支付方式',
+            prop: 'payType',
+            rules: [...required],
+          },
+          options: [{ label: "扫码支付", value: 1 }, { label: "现金支付", value: 3 }],
+          attributes: { disabled: false, placeholder: '请选择' },
+        },
+      ]
+    }
+  },
+  methods: {
+    getincreOrderSettleGetBrand() {
+      increOrderSettleGetBrand().then(res => {
+        this.brandList = res.data.map(item => ({
+          label: item.brandName,
+          value: item.id
+        }))
+      })
+    }
+  }
+}

+ 264 - 0
src/views/valueAddedService/orderSettleManag/pages/collect.vue

@@ -0,0 +1,264 @@
+<template>
+  <template-page ref="pageRef" :get-list="getList" :exportList="exportList" :table-attributes="tableAttributes"
+    :table-events="tableEvents" :moreParameters="moreParameters" :column-parsing="columnParsing" :operation="operation()"
+    :operationColumnWidth="200" :optionsEvensGroup="optionsEvensGroup">
+    <div class="cartographer">
+      <el-dialog :title="formTypeName[formType]" width="100%" :modal="false" :visible.sync="formDialog"
+        :before-close="formCancel">
+        <zj-form-container v-if="formDialog" ref="formRef" :form-data="formData" :styleSwitch="false">
+          <zj-form-module title="基础信息" label-width="120px" :showPackUp="false" :form-data="formData"
+            :form-items="formItems">
+          </zj-form-module>
+          <zj-form-module title="订单信息" label-width="120px" :showPackUp="false" :form-data="formData"
+            :form-items="formItemsList">
+          </zj-form-module>
+          <zj-form-module title="附件图片" label-width="120px" :showPackUp="false" :form-data="formData"
+            :form-items="formItemsImgs">
+          </zj-form-module>
+        </zj-form-container>
+        <div slot="footer" v-if="formType" class="dialog-footer">
+          <el-button size="mini" @click="formCancel">取 消</el-button>
+          <el-button size="mini" @click="formConfirm" type="primary">确定</el-button>
+        </div>
+      </el-dialog>
+    </div>
+  </template-page>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import { increOrderSettleList, increOrderSettleListExport, increOrderSettleDetail, increOrderSettleConfirm, increOrderSettleRefund } from "@/api/orderSettleManag.js"
+import operation_mixin from '@/components/template/operation_mixin.js'
+import formItems from "../mixins/formItems.js"
+export default {
+  props: {
+    storageType: {
+      type: String,
+      default: ""
+    }
+  },
+  components: { TemplatePage },
+  mixins: [import_mixin, operation_mixin, formItems],
+  data() {
+    return {
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true,
+        selectable: this.selectable
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      // 勾选选中数据
+      recordSelected: [],
+      formTypeName: ["查看", "结算"],
+      formType: -1,
+      formData: {
+        pgIncreItems: []
+      },
+      formDialog: false,
+    }
+  },
+  computed: {
+    // 事件组合
+    optionsEvensGroup() {
+      return [
+        [
+          [
+            this.optionsEvensAuth("bulkSettlemen", {
+              click: () => {
+                if (this.recordSelected.length === 0) {
+                  this.$message.warning('请勾选订单')
+                  return
+                }
+                increOrderSettleConfirm(this.recordSelected.map(item => item.id)).then(res => {
+                  this.$message({ type: 'success', message: `成功!` })
+                  this.$refs.pageRef.refreshList()
+                })
+              }
+            })
+          ],
+        ]
+      ]
+    },
+    // 更多参数
+    moreParameters() {
+      return [
+        {
+          name: '支付状态',
+          key: 'payStatus',
+          value: '',
+          conditions: [
+            {
+              label: "全部",
+              value: ""
+            }, {
+              label: "已支付",
+              value: "PAID"
+            }, {
+              label: "待支付",
+              value: "WAIT"
+            }, {
+              label: "已退款",
+              value: "REFUND"
+            }, {
+              label: "过期",
+              value: "EXPIRE"
+            }, {
+              label: "取消",
+              value: "CANCEL"
+            }]
+        },
+      ]
+    }
+  },
+  methods: {
+    selectable(row, index) {
+      return ["PAID"].includes(Object.entries(row.selectMapData.payStatus).find(([key, val]) => val == row.payStatus)?.[0]) &&
+        ["ING"].includes(Object.entries(row.selectMapData.settleStatus).find(([key, val]) => val == row.settleStatus)?.[0])
+    },
+    // 列表请求函数
+    getList(p, cb) {
+      var pam = JSON.parse(JSON.stringify(p))
+      try {
+        if (pam.payStatus) {
+          pam.params.push({ "param": "a.pay_status", "compare": "=", "value": pam.payStatus })
+        }
+        pam.params.push({ "param": "a.order_channel", "compare": "=", "value": "ONLINE" })
+        cb && cb(pam)
+        return increOrderSettleList(pam)
+      } catch (err) {
+      }
+    },
+    // 列表导出函数
+    exportList: increOrderSettleListExport,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      if (item.jname === 'residuNum') {
+        defaultData.render = (h, { row, index, column }) => {
+          return (
+            <div style="padding:0 6px;cursor: pointer;">
+              {row["increType"] != 1 ? row["residuNum"] : ""}
+            </div>
+          )
+        }
+      }
+      if (item.jname === 'serviceEndTime') {
+        defaultData.render = (h, { row, index, column }) => {
+          return (
+            <div style="padding:0 6px;cursor: pointer;">
+              {row[column.columnAttributes.prop] ? row[column.columnAttributes.prop].split(" ")[0] : ""}
+            </div>
+          )
+        }
+      }
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    // 表格操作列
+    operation() {
+      return this.operationBtn({
+        detail: {
+          btnType: 'text',
+          click: ({ row, index, column }) => {
+            this.formType = 0
+            this.getDetail(row.id)
+          }
+        },
+        orderDetail: {
+          btnType: 'text',
+          conditions: ({ row, index, column }) => {
+            return ["PAID", "REFUND"].includes(row.payStatus)
+          },
+          click: ({ row, index, column }) => {
+            this.$router.push({
+              name: "workOrderPool",
+              query: {
+                pgIncreItemId: row.id,
+              }
+            })
+          }
+        },
+        refund: {
+          btnType: 'text',
+          prompt: '是否确定退款?',
+          conditions: ({ row, index, column }) => {
+            return ["PAID"].includes(row.payStatus) && ["ING"].includes(row.settleStatus) && (() => {
+              var currentDate = new Date(row.payTime);
+              currentDate.setDate(currentDate.getDate() + 7);
+              currentDate.setHours(23);
+              currentDate.setMinutes(59);
+              currentDate.setSeconds(59);
+              return currentDate > new Date()
+            })()
+          },
+          click: ({ row, index, column }) => {
+            increOrderSettleRefund({ id: row.id }).then(res => {
+              this.$message({ type: 'success', message: `退款成功!` })
+              this.$refs.pageRef.refreshList()
+            })
+          }
+        },
+        settlement: {
+          btnType: 'text',
+          prompt: '是否确定结算?',
+          conditions: ({ row, index, column }) => {
+            return ["PAID"].includes(row.payStatus) && ["ING"].includes(row.settleStatus)
+          },
+          click: ({ row, index, column }) => {
+            this.formType = 1
+            this.getDetail(row.id)
+          }
+        },
+      })
+    },
+    getDetail(id) {
+      increOrderSettleDetail({ id }).then(res => {
+        Object.assign(this.formData, res.data)
+        this.openForm()
+      })
+    },
+    openForm() {
+      this.formDialog = true
+    },
+    // 关闭弹窗
+    formCancel() {
+      this.$refs.formRef.$refs.inlineForm.clearValidate()
+      this.$data.formData = this.$options.data().formData
+      this.formDialog = false
+    },
+    formConfirm() {
+      this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
+        if (valid) {
+          increOrderSettleConfirm([this.formData.id]).then(res => {
+            this.$message({ type: 'success', message: `操作成功!` })
+            this.formCancel()
+            this.$refs.pageRef.refreshList()
+          })
+        }
+      })
+    },
+  }
+}
+
+
+
+
+
+</script>
+
+<style lang="scss">
+.redbordererr {
+  .el-form-item {
+    margin: 0 !important;
+    overflow: hidden;
+  }
+}
+</style>
+

+ 325 - 0
src/views/valueAddedService/orderSettleManag/pages/offline.vue

@@ -0,0 +1,325 @@
+<template>
+  <template-page ref="pageRef" :get-list="getList" :exportList="exportList" :table-attributes="tableAttributes"
+    :table-events="tableEvents" :moreParameters="moreParameters" :column-parsing="columnParsing" :operation="operation()"
+    :operationColumnWidth="200" :optionsEvensGroup="optionsEvensGroup">
+    <div class="cartographer">
+      <el-dialog :title="formTypeName[formType]" width="100%" :modal="false" :visible.sync="formDialog"
+        :before-close="formCancel">
+        <zj-form-container v-if="formDialog" ref="formRef" :form-data="formData" :styleSwitch="false">
+          <zj-form-module title="基础信息" label-width="120px" :showPackUp="false" :form-data="formData"
+            :form-items="formItems">
+          </zj-form-module>
+          <zj-form-module title="订单信息" label-width="120px" :showPackUp="false" :form-data="formData"
+            :form-items="formItemsList">
+          </zj-form-module>
+          <zj-form-module title="附件图片" label-width="120px" :showPackUp="false" :form-data="formData"
+            :form-items="formItemsImgs">
+          </zj-form-module>
+          <zj-form-module v-if="formType == 1" title="审核信息" label-width="120px" :showPackUp="false" :form-data="formData"
+            :form-items="examineInfo">
+          </zj-form-module>
+        </zj-form-container>
+        <div slot="footer" class="dialog-footer">
+          <el-button size="mini" type="primary" @click="shenhexinxi">审核</el-button>
+        </div>
+      </el-dialog>
+    </div>
+    <div class="cartographer">
+      <el-dialog title="新增" width="100%" :modal="false" :visible.sync="addFormDialog" :before-close="addFormCancel">
+        <zj-form-container v-if="addFormDialog" ref="addFormRef" :form-data="addFormData">
+          <zj-form-module title="客户信息" label-width="80px" :form-data="addFormData" :form-items="basicInfo">
+          </zj-form-module>
+          <zj-form-module title="服务信息" label-width="80px" :form-data="addFormData" :form-items="serviceInfo">
+          </zj-form-module>
+          <zj-form-module title="产品信息" label-width="80px" :form-data="addFormData" :form-items="productInfo">
+          </zj-form-module>
+        </zj-form-container>
+        <div slot="footer" class="dialog-footer">
+          <el-button size="mini" type="primary" @click="formConfirm">提交</el-button>
+        </div>
+      </el-dialog>
+    </div>
+  </template-page>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import { increOrderSettleExamine, increOrderSettleGetBrand, increOrderSettleList, increOrderSettleListExport, increOrderSettleAdd, increOrderSettleDetail, increOrderSettleConfirm, increOrderSettleRefund } from "@/api/orderSettleManag.js"
+import operation_mixin from '@/components/template/operation_mixin.js'
+import formItems from "../mixins/formItems.js"
+import basicInfo from "../mixins/basicInfo.js"
+import serviceInfo from "../mixins/serviceInfo.js"
+import productInfo from "../mixins/productInfo.js"
+import examineInfo from "../mixins/examineInfo.js"
+export default {
+  props: {
+    storageType: {
+      type: String,
+      default: ""
+    }
+  },
+  components: { TemplatePage },
+  mixins: [import_mixin, operation_mixin, formItems, basicInfo, serviceInfo, productInfo, examineInfo],
+  data() {
+    return {
+      // 表格属性
+      tableAttributes: {
+      },
+      // 表格事件
+      tableEvents: {
+      },
+      // 勾选选中数据
+      recordSelected: [],
+      formTypeName: ["查看", "审批"],
+      formType: -1,
+      formData: {
+        flag:"",
+        examineRemark:"",
+        pgIncreItems: []
+      },
+      formDialog: false,
+      addFormDialog: false,
+      addFormData: {
+        shiyongleixing: "按使用年限",
+        "amount": "",
+        "brandId": "",
+        "brandName": "",
+        "buyCertImg": [],
+        "commissionAmount": "",
+        "companyWechatId": "",
+        "companyWechatName": "",
+        "createBy": "",
+        "createTime": "",
+        "examineBy": "",
+        "examineRemark": "",
+        "examineTime": "",
+        "flag": "",
+        "id": "",
+        "increContent": "",
+        "increType": "",
+        "insideCode": "",
+        "insideCodeImg": [],
+        "insureTime": "",
+        "invoiceAmount": "",
+        "invoiceTime": "",
+        "limitNum": "",
+        "machineImg": [],
+        "mainId": "",
+        "mainImg": "",
+        "mainName": "",
+        "orderChannel": "",
+        "payNo": "",
+        "payStatus": "",
+        "payTime": "",
+        "payType": "",
+        "pgIncreId": "",
+        "pgIncreItemId": "",
+        "refundNo": "",
+        "refundTime": "",
+        "remark": "",
+        "residuNum": "",
+        "serviceEndTime": "",
+        "serviceNo": "",
+        "settleRemark": "",
+        "settleStatus": "",
+        "transcationId": "",
+        "updateBy": "",
+        "updateTime": "",
+        "userAddress": "",
+        "userAddressId": "",
+        "userMobile": "",
+        "userName": "",
+        "websitAmount": "",
+        "websitId": "",
+        "websitName": "",
+        "workerAmount": "",
+        "workerId": "",
+        "workerIdcard": "",
+        "workerMobile": "",
+        "workerName": "",
+        "workerOpenId": ""
+      },
+    }
+  },
+  computed: {
+    // 事件组合
+    optionsEvensGroup() {
+      return [
+        [
+          [
+            this.optionsEvensAuth("add", {
+              click: () => {
+                this.addFormOpen()
+              }
+            })
+          ],
+        ]
+      ]
+    },
+    // 更多参数
+    moreParameters() {
+      return [
+        {
+          name: '审批状态',
+          key: 'flag',
+          value: '',
+          conditions: [
+            {
+              label: "全部",
+              value: ""
+            }, {
+              label: "待审核",
+              value: "WAIT"
+            }, {
+              label: "通过",
+              value: "OK"
+            }, {
+              label: "失败",
+              value: "FAIL"
+            }]
+        },
+      ]
+    },
+  },
+  methods: {
+    // 列表请求函数
+    getList(p, cb) {
+      var pam = JSON.parse(JSON.stringify(p))
+      try {
+        if (pam.flag) {
+          pam.params.push({ "param": "a.flag", "compare": "=", "value": pam.flag })
+        }
+        pam.params.push({ "param": "a.order_channel", "compare": "=", "value": "SELF" })
+        cb && cb(pam)
+        return increOrderSettleList(pam)
+      } catch (err) {
+      }
+    },
+    // 列表导出函数
+    exportList: increOrderSettleListExport,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      if (item.jname === 'residuNum') {
+        defaultData.render = (h, { row, index, column }) => {
+          return (
+            <div style="padding:0 6px;cursor: pointer;">
+              {row["increType"] != 1 ? row["residuNum"] : ""}
+            </div>
+          )
+        }
+      }
+      if (item.jname === 'serviceEndTime') {
+        defaultData.render = (h, { row, index, column }) => {
+          return (
+            <div style="padding:0 6px;cursor: pointer;">
+              {row[column.columnAttributes.prop] ? row[column.columnAttributes.prop].split(" ")[0] : ""}
+            </div>
+          )
+        }
+      }
+      return defaultData
+    },
+    // 表格操作列
+    operation() {
+      return this.operationBtn({
+        detail: {
+          btnType: 'text',
+          click: ({ row, index, column }) => {
+            this.formType = 0
+            this.getDetail(row.id)
+          }
+        },
+        orderDetail: {
+          btnType: 'text',
+          conditions: ({ row, index, column }) => {
+            return ["PAID", "REFUND"].includes(row.payStatus)
+          },
+          click: ({ row, index, column }) => {
+            this.$router.push({
+              name: "workOrderPool",
+              query: {
+                pgIncreItemId: row.id,
+              }
+            })
+          }
+        },
+        examine: {
+          btnType: 'text',
+          conditions: ({ row, index, column }) => {
+            return row.flag == "WAIT"
+          },
+          click: ({ row, index, column }) => {
+            this.formType = 1
+            this.getDetail(row.id)
+          }
+        },
+      })
+    },
+    getDetail(id) {
+      increOrderSettleDetail({ id }).then(res => {
+        Object.assign(this.formData, res.data)
+        this.openForm()
+      })
+    },
+    openForm() {
+      this.formDialog = true
+    },
+    // 关闭弹窗
+    formCancel() {
+      this.$refs.formRef.$refs.inlineForm.clearValidate()
+      this.$data.formData = this.$options.data().formData
+      this.formDialog = false
+    },
+    openAddForm() {
+      this.formDialog = true
+    },
+    shenhexinxi() {
+      this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
+        if (valid) {
+          increOrderSettleExamine(this.formData).then(res => {
+            this.$message({ type: 'success', message: `审核完成!` })
+            this.formCancel()
+            this.$refs.pageRef.refreshList()
+          })
+        }
+      })
+    },
+    addFormCancel() {
+      this.$refs.addFormRef.$refs.inlineForm.clearValidate()
+      this.$data.addFormData = this.$options.data().addFormData
+      this.addFormDialog = false
+    },
+    addFormOpen() {
+      this.getincreOrderSettleGetBrand()
+      this.addFormDialog = true
+    },
+    formConfirm() {
+      this.$refs.addFormRef.validate((valid, invalidFields, errLabels) => {
+        if (valid) {
+          increOrderSettleAdd({
+            ...this.addFormData,
+            "serviceEndTime": this.addFormData.serviceEndTime + " 23:59:59",
+            "buyCertImg": this.addFormData.buyCertImg.map(item => item.url).join(","),
+            "insideCodeImg": this.addFormData.insideCodeImg.map(item => item.url).join(","),
+            "machineImg": this.addFormData.machineImg.map(item => item.url).join(","),
+          }).then(res => {
+            this.$message({ type: 'success', message: `新增成功!` })
+            this.addFormCancel()
+            this.$refs.pageRef.refreshList()
+          })
+        }
+      })
+    },
+  }
+}
+</script>
+
+<style lang="scss">
+.redbordererr {
+  .el-form-item {
+    margin: 0 !important;
+    overflow: hidden;
+  }
+}
+</style>