Sfoglia il codice sorgente

Merge branch 'develop' of ssh://gogs.zfire.top:2222/zfire-front/zfire-newmall-admin

# Conflicts:
#	package.json
#	src/views/workOrder/workOrderPool/detailModule/Payment/index.vue
linwenxin 1 anno fa
parent
commit
297a808bb2

+ 109 - 0
package.json

@@ -0,0 +1,109 @@
+{
+  "name": "vue-admin-template",
+  "version": "4.4.0",
+  "description": "A vue admin template with Element UI & axios & iconfont & permission control & lint",
+  "author": "Pan <panfree23@gmail.com>",
+  "scripts": {
+    "dev": "vue-cli-service serve ",
+    "build:prod": "vue-cli-service build",
+    "build:stage": "vue-cli-service build --mode staging",
+    "prettier": "npx prettier --write .",
+    "preview": "node build/index.js --preview",
+    "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml",
+    "lint": "eslint --ext .js,.vue src",
+    "test:unit": "jest --clearCache && vue-cli-service test:unit",
+    "test:ci": "npm run lint && npm run test:unit"
+  },
+  "dependencies": {
+    "@turf/turf": "^6.5.0",
+    "@vue-office/excel": "^1.3.0",
+    "@vue/composition-api": "^1.7.1",
+    "@zjlib/element-plugins": "^2.13.9",
+    "@zjlib/element-ui2": "^1.0.3",
+    "axios": "0.18.1",
+    "chatgpt": "^4.1.2",
+    "clipboard": "^2.0.8",
+    "concurrent-tasks": "^1.0.7",
+    "core-js": "^3.6.5",
+    "echarts": "^5.1.1",
+    "file-saver": "^2.0.5",
+    "html2canvas": "^1.4.1",
+    "js-cookie": "2.2.0",
+    "js-perform-lock": "^1.0.5",
+    "jspdf": "^2.5.1",
+    "keydown-even": "^1.2.0",
+    "md5": "^2.3.0",
+    "normalize.css": "7.0.0",
+    "nprogress": "0.2.0",
+    "nrm": "^1.2.5",
+    "openai": "^3.1.0",
+    "path-to-regexp": "2.4.0",
+    "pl-table": "^2.7.5",
+    "qrcodejs2": "0.0.2",
+    "screenfull": "^4.2.0",
+    "socket.io-client": "^4.6.0",
+    "uuid": "^9.0.0",
+    "v-low-code": "^1.0.1",
+    "v-remote-component": "^1.0.9",
+    "v-scale": "^1.0.1",
+    "v-scroll-view": "^1.0.2",
+    "v-socket-io-plugins": "^1.0.8",
+    "vue": "2.6.10",
+    "vue-demi": "^0.14.5",
+    "vue-ls": "^4.0.0",
+    "vue-plugin-hiprint": "0.0.56",
+    "vue-quill-editor": "^3.0.6",
+    "vue-router": "3.0.6",
+    "vuex": "3.1.0",
+    "webpack": "^4.46.0",
+    "yarn": "^1.22.18"
+  },
+  "devDependencies": {
+    "@vue/babel-plugin-jsx": "^1.1.1",
+    "@vue/cli-plugin-babel": "4.4.4",
+    "@vue/cli-plugin-eslint": "4.4.4",
+    "@vue/cli-plugin-unit-jest": "4.4.4",
+    "@vue/cli-service": "4.4.4",
+    "@vue/test-utils": "1.0.0-beta.29",
+    "autoprefixer": "9.5.1",
+    "babel-eslint": "10.1.0",
+    "babel-jest": "23.6.0",
+    "babel-plugin-dynamic-import-node": "2.3.3",
+    "chalk": "2.4.2",
+    "compression-webpack-plugin": "4.0",
+    "connect": "3.6.6",
+    "eslint": "^6.7.2",
+    "eslint-plugin-vue": "6.2.2",
+    "html-webpack-plugin": "3.2.0",
+    "less-loader": "^6.1.1",
+    "mockjs": "1.0.1-beta3",
+    "runjs": "4.3.2",
+    "sass": "1.26.8",
+    "sass-loader": "8.0.2",
+    "script-ext-html-webpack-plugin": "2.1.3",
+    "serve-static": "1.13.2",
+    "svg-sprite-loader": "4.1.3",
+    "svgo": "1.2.2",
+    "uglifyjs-webpack-plugin": "^2.2.0",
+    "vue-template-compiler": "2.6.10",
+    "webpack-cli": "^4.9.1"
+  },
+  "browserslist": [
+    "> 1%",
+    "last 2 versions"
+  ],
+  "engines": {
+    "node": ">=8.9",
+    "npm": ">= 3.0.0"
+  },
+  "license": "MIT",
+  "main": "babel.config.js",
+  "directories": {
+    "test": "tests"
+  },
+  "repository": {
+    "type": "git",
+    "url": "ssh://git@gogs.zfire.top:2222/gj-train/gj-manager-front.git"
+  },
+  "keywords": []
+}

+ 0 - 55
src/api/auxiliaryFittings/settleAccount.js

@@ -1,55 +0,0 @@
-import request, { postBlob, getBlob, handleImport } from '@/utils/request'
-
-// 获取列表
-export function listPageV2(data) {
-  return request({
-    url: `/settlementOrder/list/pageV2?moduleId=${data.moduleId}`,
-    method: 'post',
-    data
-  })
-}
-
-//导出
-export function pageExport(data, name) {
-  return postBlob({
-    url: '/settlementOrder/pageExport',
-    data,
-    name
-  })
-}
-
-// 详情
-export function getDetail(params) {
-  return request({
-    url: `/settlementOrder/detail`,
-    method: 'post',
-    params
-  })
-}
-
-// 退款
-export function refund(params) {
-  return request({
-    url: `/settlementOrder/refund`,
-    method: 'post',
-    params
-  })
-}
-
-// 提现
-export function withdraw(params) {
-  return request({
-    url: `/settlementOrder/over`,
-    method: 'post',
-    params
-  })
-}
-
-// 结算
-export function settleAccounts(params) {
-  return request({
-    url: `/settlementOrder/settlement`,
-    method: 'post',
-    params
-  })
-}

+ 0 - 37
src/api/workOrder/basicData.js

@@ -1,37 +0,0 @@
-import request, { postBlob, getBlob, handleImport } from '@/utils/request'
-
-// 获取列表
-export function listPageV2(data) {
-  return request({
-    url: `/engin/project/repair/list?moduleId=${data.moduleId}`,
-    method: 'post',
-    data
-  })
-}
-
-//导出
-export function pageExport(data, name) {
-  return postBlob({
-    url: '/engin/project/repair/list/export',
-    data,
-    name
-  })
-}
-
-// 保存
-export function save(data) {
-  return request({
-    url: `/engin/project/repair/save`,
-    method: 'post',
-    data
-  })
-}
-
-// 详情
-export function getDetail(params) {
-  return request({
-    url: `/engin/project/repair/detail`,
-    method: 'post',
-    params
-  })
-}

+ 0 - 355
src/views/auxiliaryFittings/settleAccountManagement/settleAccount/index.vue

@@ -1,355 +0,0 @@
-<template>
-	<template-page ref="pageRef" :get-list="getList" :table-attributes="tableAttributes" :table-events="tableEvents" :operationColumnWidth="120"
-	  :options-evens-group="optionsEvensGroup" :moreParameters="moreParameters" :column-parsing="columnParsing"
-	  :operation="operation" :exportList="exportList">
-	  
-	  <div slot="moreSearch">
-	    <el-radio-group v-model="status" size="mini" @change="changeType">
-	    	<el-radio-button label="">全部</el-radio-button>
-	    	<el-radio-button label="WAIT">待结算</el-radio-button>
-	    	<el-radio-button label="WAIT_ING">可提现</el-radio-button>
-			<el-radio-button label="ING">提现中</el-radio-button>
-			<el-radio-button label="OVER">已提现</el-radio-button>
-	    </el-radio-group>
-	    <br><br>
-	  </div>
-		<el-dialog title="详情" width="80%" :modal="true" :visible.sync="formDialog" :show-close="true" :close-on-click-modal="false" :modal-append-to-body="false" @close="formDialog = false;formData = {}">
-			<el-card class="box-card">
-				<div slot="header" class="clearfix">
-					<span>基础信息</span>
-				</div>
-				<table border="1" style="border-color: #fff;" width="100%" align="center" cellspacing="0" cellpadding="10">
-					<tr>
-						<td class="bold" align="center">所属商户</td>
-						<td>{{formData.companyWechatName}}</td>
-						<td class="bold" align="center">关联工单号</td>
-						<td>{{formData.workerOrderId}}</td>
-					</tr>
-					<tr>
-						<td class="bold" align="center">结算单号</td>
-						<td>{{formData.settlementOrderId}}</td>
-						<td class="bold" align="center">工单品牌</td>
-						<td>{{formData.brand}}</td>
-					</tr>
-					<tr>
-						<td class="bold" align="center">客户姓名</td>
-						<td>{{formData.userName}}</td>
-						<td class="bold" align="center">客户电话</td>
-						<td>{{formData.userMobile}}</td>
-					</tr>
-					<tr>
-						<td class="bold" align="center">师傅姓名</td>
-						<td>{{formData.workerName}}</td>
-						<td class="bold" align="center">师傅身份证号</td>
-						<td>{{formData.identity}}</td>
-					</tr>
-					<tr>
-						<td class="bold" align="center">师傅联系电话</td>
-						<td>{{formData.workerMobile}}</td>
-						<td class="bold" align="center">订单金额</td>
-						<td>{{formData.totalAmount}}</td>
-					</tr>
-					<tr>
-						<td class="bold" align="center">销售类型</td>
-						<td>{{formData.settlementType == 'OWN'?'自由':formData.settlementType == 'OUT'?'外购':''}}</td>
-						<td class="bold" align="center">创建人</td>
-						<td>{{formData.createBy}}</td>
-					</tr>
-					<tr>
-						<td class="bold" align="center">创建时间</td>
-						<td>{{formData.createTime}}</td>
-						<td class="bold" align="center">支付状态</td>
-						<td>{{formData.payStatus == 'CANCEL'?'取消':formData.payStatus == 'PAID'?'已支付':formData.payStatus == 'WAIT'?'待支付':''}}</td>
-					</tr>
-					<tr>
-						<td class="bold" align="center">支付订单号</td>
-						<td>{{formData.orderId}}</td>
-						<td class="bold" align="center">支付时间</td>
-						<td>{{formData.payTime}}</td>
-					</tr>
-					<tr>
-						<td class="bold" align="center">分账单号</td>
-						<td>{{formData.settlementOrderId}}</td>
-						<td class="bold" align="center">分账状态</td>
-						<td>{{formData.status == 'WAIT'?'待结算':formData.status == 'WAIT_ING'?'可提现':formData.status == 'ING'?'提现中':formData.status == 'OVER'?'已提现':''}}</td>
-					</tr>
-					<tr>
-						<td class="bold" align="center">分账金额</td>
-						<td>{{formData.amount}}</td>
-						<td class="bold" align="center">分账时间</td>
-						<td>{{formData.settlementTime}}</td>
-					</tr>
-					<tr>
-						<td class="bold" align="center">师傅分账金额</td>
-						<td>{{formData.workerAmount}}</td>
-						<td class="bold" align="center">师傅分账金额手续费</td>
-						<td>{{formData.workerProceAmount}}</td>
-					</tr>
-					<tr>
-						<td class="bold" align="center">商户分账金额</td>
-						<td>{{formData.websitAmount}}</td>
-						<td class="bold" align="center">商户分账金额手续费</td>
-						<td>{{formData.websitProceAmount}}</td>
-					</tr>
-					<tr>
-						<td class="bold" align="center">操作人</td>
-						<td>{{formData.updateBy}}</td>
-						<td class="bold" align="center">操作时间</td>
-						<td>{{formData.updateTime}}</td>
-					</tr>
-				</table>
-			</el-card>
-			<el-card class="box-card">
-				<div slot="header" class="clearfix">
-					<span>订单信息</span>
-				</div>
-				<table border="1" style="border-color: #fff;" width="100%" align="center" cellspacing="0" cellpadding="10">
-					<thead>
-						<tr>
-							<th class="bold" align="center">名称</th>
-							<th class="bold" align="center">收费类型</th>
-							<th class="bold" align="center">数量</th>
-							<th class="bold" align="center">单价</th>
-							<th class="bold" align="center">订单金额</th>
-							<th class="bold" align="center">销售类型</th>
-							<th class="bold" align="center">师傅分账金额</th>
-							<th class="bold" align="center">商户分账金额</th>
-						</tr>
-					</thead>
-					<tbody>
-						<tr v-for="(item,index) in formData.settlementOrderItemList" :key="index">
-							<td align="center">{{item.goodsName}}</td>
-							<td align="center">{{item.chargeType=='ACC'?(item.goodsType == 'M'?'辅材':'配件')+'物料':item.chargeType=='SERV'?'服务收费':''}}</td>
-							<td align="center">{{item.num}}</td>
-							<td align="center">{{item.goodsAmount}}</td>
-							<td align="center">{{item.totalAmount}}</td>
-							<td align="center">{{item.settlementType == 'OWN'?'自有':item.settlementType == 'OUT'?'外购':''}}</td>
-							<td align="center">{{item.workerAmount}}</td>
-							<td align="center">{{item.websitAmount}}</td>
-						</tr>
-						<!-- <tr>
-							<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
-						</tr> -->
-						<tr>
-							<td align="center">总计</td><td></td><td></td><td></td>
-							<td align="center">{{totalAmount}}</td><td></td>
-							<td align="center">{{workerAmount}}</td>
-							<td align="center">{{websitAmount}}</td>
-						</tr>
-					</tbody>
-				</table>
-			</el-card>
-		  <div slot="footer" class="dialog-footer">
-			<el-button size="mini" @click="formDialog = false;formData = {}">取 消</el-button>
-			<el-button size="mini" v-if="formData.status == 'WAIT'" type="primary" @click="settleAccounts(formData.settlementOrderId)">确认结算</el-button>
-			<el-button size="mini" v-if="formData.status == 'WAIT_ING'" type="primary" @click="withdraw(formData.settlementOrderId)">确认提现</el-button>
-		  </div>
-		</el-dialog>
-	</template-page>
-</template>
-
-<script>
-import TemplatePage from '@/components/template/template-page-1.vue'
-import import_mixin from '@/components/template/import_mixin.js'
-import ImageUpload from '@/components/file-upload'
-import { downloadFiles } from '@/utils/util'
-import { required, mobileRequired, mobile, httpUrl, email } from '@/components/template/rules_verify.js'
-import { listPageV2,pageExport, getDetail, refund, settleAccounts, withdraw } from "@/api/auxiliaryFittings/settleAccount";
-export default {
-  components: { TemplatePage, ImageUpload },
-  mixins: [import_mixin],
-  data() {
-    return {
-		// 事件组合
-		optionsEvensGroup: [
-			[
-				[
-					{
-						name: '批量结算',
-						click: ()=>{
-							this.batchSettleAccounts()
-						}
-					}
-				]
-			],
-			[
-				[
-					{
-						name: '批量提现',
-						click: ()=>{
-							this.batchWithdraw()
-						}
-					}
-				]
-			],
-		],
-		// 表格属性
-		tableAttributes: {
-			// 启用勾选列
-			selectColumn: true
-		},
-		// 表格事件
-		tableEvents: {
-			'selection-change': this.selectionChange
-		},
-		// 勾选选中行
-		recordSelected: [],
-		formDialogType: 0,
-		formDialogTitles: ["新增","编辑", "详情"],
-		formDialog: false,
-		formData: {},
-		status: '',
-		totalAmount: 0,
-		workerAmount: 0,
-		websitAmount: 0,
-    }
-  },
-  computed: {
-    // 更多参数
-    moreParameters() {
-      return []
-    }
-  },
-  methods: {
-	// 切换状态
-	changeType(val) {
-	  this.$refs.pageRef.refreshList()
-	},
-    // 列表请求函数
-	getList(p) {
-	  try {
-	    var pam = JSON.parse(JSON.stringify(p))
-	    if (this.status) {
-	      pam.params.push({ "param": "a.status", "compare": "=", "value": this.status })
-	    }
-	    return listPageV2(pam)
-	  } catch (error) {
-	    console.log(error)
-	  }
-	},
-    // 列表导出函数
-    exportList: pageExport,
-    // 表格列解析渲染数据更改
-    columnParsing(item, defaultData) {
-		return defaultData
-    },
-    // 监听勾选变化
-    selectionChange(data) {
-      this.recordSelected = data
-    },
-		openForm() {
-		  this.formDialog = true;
-		},
-		formCancel() {
-		  this.$refs.formRef.$refs.inlineForm.clearValidate()
-		  this.$data.formData = this.$options.data().formData
-		  this.formDialog = false
-		},
-    // 表格操作列
-    operation(h, { row, index, column }) {
-      return (
-        <div class='operation-btns'>
-		  <el-button type="text" onClick={() => {
-			this.totalAmount = 0
-			this.workerAmount = 0
-			this.websitAmount = 0
-		    getDetail({ id: row.settlementOrderId }).then(res => {
-		      Object.assign(this.formData, res.data)
-			  res.data.settlementOrderItemList.forEach(item=>{
-				  this.totalAmount += (item.totalAmount*100 +  this.totalAmount*100)/100
-				  this.workerAmount = (item.workerAmount*100 +  this.workerAmount*100)/100
-				  this.websitAmount += (item.websitAmount*100 +  this.websitAmount*100)/100
-			  })
-		      this.formDialogType = 1
-		      this.openForm()
-		    })
-		  }}>查看</el-button>
-		  {row.totalAmount > 0? <el-button type="text" onClick={() => {
-		  	this.$confirm('请确认是否退款, 是否继续?', '提示', {
-		  		confirmButtonText: '确定',
-		  		cancelButtonText: '取消',
-		  		type: 'warning'
-		  	}).then(() => {
-		  		refund({ id: row.settlementOrderId }).then(res => {
-		  		  if (res.code == 200) {
-		  		  	this.$message({ type: 'success', message: '退款成功!' })
-		  		  	this.$refs.pageRef.refreshList()
-		  		  } else {
-		  		  	this.$message.error(res.msg);
-		  		  }
-		  		})
-		  	});
-		  }}>退款</el-button>:null}
-		  {row.status == 'WAIT'? <el-button type="text" onClick={() => {
-		  	this.settleAccounts(row.settlementOrderId)
-		  }}>结算</el-button>:null}
-		  {row.status == 'WAIT_ING'? <el-button type="text" onClick={() => {
-		  	this.withdraw(row.settlementOrderId)
-		  }}>提现</el-button>:null}
-        </div>
-      )
-    },
-	batchSettleAccounts(){
-		if(this.recordSelected.length == 0){
-			return this.$message.warning('请至少勾选一条数据!');
-		}
-		this.settleAccounts(this.recordSelected.map(item=>{return item.settlementOrderId}).join(','))
-	},
-	settleAccounts(id){
-		this.$confirm(`请确认是否结算选中数据, 是否继续?`, '提示', {
-			confirmButtonText: '确定',
-			cancelButtonText: '取消',
-			type: 'warning'
-		}).then(() => {
-			settleAccounts({
-				id
-			}).then(res => {
-				if (res.code == 200) {
-					this.$message({ type: 'success', message: `结算成功!` })
-					this.$refs.pageRef.refreshList()
-					this.formDialog = false
-				} else {
-					this.$message.error(res.msg);
-				}
-			})
-		});
-	},
-	batchWithdraw(){
-		if(this.recordSelected.length == 0){
-			return this.$message.warning('请至少勾选一条数据!');
-		}
-		this.withdraw(this.recordSelected.map(item=>{return item.settlementOrderId}).join(','))
-	},
-	withdraw(id){
-		this.$confirm(`请确认是否提现选中数据, 是否继续?`, '提示', {
-			confirmButtonText: '确定',
-			cancelButtonText: '取消',
-			type: 'warning'
-		}).then(() => {
-			withdraw({
-				id
-			}).then(res => {
-				if (res.code == 200) {
-					this.$message({ type: 'success', message: `提现成功!` })
-					this.$refs.pageRef.refreshList()
-					this.formDialog = false
-				} else {
-					this.$message.error(res.msg);
-				}
-			})
-		});
-	},
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-	.tab{
-		padding: 20px 20px 0 20px;
-	}
-	.bold{
-		width: 160px;
-		font-weight: bold;
-		background-color: #f0f0f0;
-	}
-</style>

+ 0 - 2
src/views/mallManagement/configCenter/mallConfig/index.vue

@@ -378,9 +378,7 @@
 import { getToken, getUserid } from '@/utils/auth';
 import { getTemplate, editAccount, editTemplate, getDetail } from "@/api/merchant";
 import { getInfo } from '@/api/user'
-import operation_mixin from '@/components/template/operation_mixin.js'
 export default {
-	mixins: [operation_mixin],
   data() {
     return {
       isAdmin: JSON.parse(localStorage.getItem("greemall_user")).type === 2,

+ 0 - 253
src/views/workOrder/projectMaintenance/basicData/index.vue

@@ -1,253 +0,0 @@
-<template>
-	<template-page ref="pageRef" :get-list="getList" :table-attributes="tableAttributes" :table-events="tableEvents" :operationColumnWidth="80"
-	  :options-evens-group="optionsEvensGroup" :moreParameters="moreParameters" :column-parsing="columnParsing"
-	  :operation="operation()">
-	  <el-dialog title="" width="500px" custom-class="diy-dialog" append-to-body :modal="true" :visible.sync="formDialog"
-	    :show-close="true" :close-on-click-modal="false" :modal-append-to-body="false" :before-close="formCancel">
-	    <zj-form-container ref="formRef" :form-data="formData" :styleSwitch="false">
-	      <zj-form-module :title="formDialogTitles[formDialogType]" label-width="100px" :showPackUp="false"
-	        :form-data="formData" :form-items="formItems" :disabled="formDialogType==2">
-	      </zj-form-module>
-	    </zj-form-container>
-	    <div slot="footer" class="dialog-footer">
-			<el-button size="mini" @click="formCancel">取 消</el-button>
-			<el-button size="mini" v-if="formDialogType !== 2" type="primary" @click="formConfirm()">确定</el-button>
-	    </div>
-	  </el-dialog>
-	</template-page>
-</template>
-
-<script>
-import TemplatePage from '@/components/template/template-page-1.vue'
-import import_mixin from '@/components/template/import_mixin.js'
-import ImageUpload from '@/components/file-upload'
-import operation_mixin from '@/components/template/operation_mixin.js'
-import { required, mobileRequired, mobile, httpUrl, email } from '@/components/template/rules_verify.js'
-import { listPageV2,pageExport, getDetail, save } from "@/api/workOrder/basicData";
-export default {
-  components: { TemplatePage, ImageUpload },
-  mixins: [import_mixin, operation_mixin],
-  data() {
-    return {
-      // 表格属性
-      tableAttributes: {
-        // 启用勾选列
-        selectColumn: false
-      },
-      // 表格事件
-      tableEvents: {
-        'selection-change': this.selectionChange
-      },
-      // 勾选选中行
-      recordSelected: [],
-      /** 表单变量 */
-      formDialogType: 0,
-      formDialogTitles: ["新增","编辑", "详情"],
-      formDialog: false,
-      formData: {
-		companyName: JSON.parse(localStorage.getItem('greemall_user')).companyName,
-		orderSmallTypeText: '',
-		orderType: '',
-		status: true,
-		sortNum: '',
-		imgUrl: []
-      }
-    }
-  },
-  computed: {
-    // 更多参数
-    moreParameters() {
-      return []
-    },
-	// 事件组合
-	optionsEvensGroup() {
-		return [
-			[
-				[
-					this.optionsEvensAuth("add", {
-						click: () => {
-							this.addData
-						}
-					})
-				],
-			]
-		]
-	},
-    formItems() {
-      return [{
-        md: 24,
-        isShow: true,
-        name: 'el-input',
-        attributes: { placeholder: '请输入', disabled: true },
-        formItemAttributes: {
-          label: '所属商户',
-          prop: 'companyName',
-          rules: [...required]
-        },
-      }, {
-        md: 24,
-        isShow: true,
-        name: 'el-select',
-		options: [{label: '安装',value: 'INSTALL'},{label: '维修',value: 'REPAIR'}],
-        attributes: { placeholder: '请选择' },
-        formItemAttributes: {
-          label: '所属业务线',
-          prop: 'orderType',
-          rules: [...required]
-        },
-      }, {
-        md: 24,
-        isShow: true,
-        name: 'el-input',
-        attributes: { placeholder: '请输入工单类型', },
-        formItemAttributes: {
-          label: '工单类型',
-          prop: 'orderSmallTypeText',
-          rules: [...required]
-        }
-      },{
-        md: 24,
-        isShow: true,
-        name: 'slot-component',
-        attributes: { },
-        formItemAttributes: {
-          label: '状态',
-          prop: 'status',
-          rules: [...required]
-        },
-		render: (h, { props, onInput }) => {
-			var { value } = props
-			return (
-				<el-radio-group v-model={this.formData.status}>
-				    <el-radio disabled={this.formDialogType==2} label={true}>启用</el-radio>
-				    <el-radio disabled={this.formDialogType==2} label={false}>禁用</el-radio>
-				</el-radio-group>
-			)
-		}
-      }, {
-        md: 24,
-        isShow: true,
-        name: 'el-input',
-        attributes: { placeholder: '排序数字越小越靠前', type: 'number' },
-        formItemAttributes: {
-          label: '排序',
-          prop: 'sortNum',
-          rules: []
-        }
-      }, {
-		md: 24,
-		isShow: true,
-		name: 'slot-component',
-		formItemAttributes: {
-			label: '上传图片',
-			prop: 'imgUrl',
-			rules: [...required]
-		},
-		render: (h, { props, onInput }) => {
-			var { value } = props
-			return (
-				<div>
-					<ImageUpload fileList={this.formData.imgUrl} fileType={['image']} limit={1} isEdit={this.formDialogType !== 2} />
-					<div style="color: #EA8000">上传后在小程序首页自助服务展示</div>
-				</div>
-			)
-		}
-	}]
-    }
-  },
-  methods: {
-    // 列表请求函数
-	getList: listPageV2,
-    // 列表导出函数
-    exportList: pageExport,
-    // 表格列解析渲染数据更改
-    columnParsing(item, defaultData) {
-		if (item.jname === 'imgUrl') {
-		        defaultData.render = (h, { row, index, column }) => {
-		          return (
-		            <div style="padding:0 6px;cursor: pointer;">
-		              {row.imgUrl ? row.imgUrl.split(",").map(url => <el-image src={url} preview-src-list={[url]} fit="cover" style="width:80px;height:80px;" />) : null}
-		            </div>
-		          )
-		        }
-		      }
-      return defaultData
-    },
-    // 监听勾选变化
-    selectionChange(data) {
-      this.recordSelected = data
-    },
-    // 表格操作列
-    operation() {
-		return this.operationBtn({
-			edit: {
-				click: ({ row, index, column }) => {
-					getDetail({ id: row.id }).then(res => {
-						Object.assign(this.formData, res.data,{
-							imgUrl:res.data?.imgUrl?  res.data?.imgUrl?.split(",").map(item=>({url:item})) : []
-						})
-						console.log(this.formData)
-						this.formDialogType = 1
-						this.openForm()
-					})
-				}
-			},
-			detail: {
-				click: ({ row, index, column }) => {
-					getDetail({ id: row.id }).then(res => {
-						Object.assign(this.formData, res.data,{
-							imgUrl:res.data?.imgUrl?  res.data?.imgUrl?.split(",").map(item=>({url:item})) : []
-						})
-						console.log(this.formData)
-						this.formDialogType = 2
-						this.openForm()
-					})
-				}
-			},
-			expenseApply: {
-				click: ({ row, index, column }) => {
-					
-				}
-			},
-			serviceOrderDetail: {
-				click: ({ row, index, column }) => {
-					
-				}
-			}
-		})
-    },
-    addData() {
-      this.formDialogType = 0
-      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) {
-          (save)({
-			  ...this.formData,
-			  imgUrl:this.formData.imgUrl.map(item=>item.url).join(",")
-		  }).then(res => {
-            this.$message({ type: 'success', message: `${this.formDialogTitles[this.formDialogType]}成功!` })
-            this.formCancel()
-            this.$refs.pageRef.refreshList()
-          })
-        }
-      })
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-	.tab{
-		padding: 20px 20px 0 20px;
-	}
-</style>

+ 264 - 3
src/views/workOrder/workOrderPool/detailModule/Payment/index.vue

@@ -4,7 +4,8 @@
       <template v-if="payData.length">
         <zj-form-container :formAttributes="{ 'label-position': 'top' }">
           <template v-for="(item, index) in payData">
-            <zj-form-module :title="'支付费用' + (index + 1)" :form-data="payData[index]" :form-items="formItems">
+            <zj-form-module :title="'支付费用' + (index + 1)" :form-data="payData[index]"
+              :form-items="[formItemsL1, formItems][workOrderType]">
               <div v-if="item.examineStatus === 'FAIL'" style="text-align:right">
                 <el-button size="mini" type="danger" plain @click="enginMaterialCancelFun(item)">取消申请</el-button>
               </div>
@@ -21,7 +22,6 @@
 import { listPageV2 } from "@/api/workOrder/appraise";
 import { tableDataParsing } from "@/utils/common.js"
 import { changeOrderGetOrderList, enginMaterialDetailWorker, enginMaterialCancel } from "@/api/workOrderPool.js";
-
 export default {
   props: {
     id: {
@@ -48,7 +48,7 @@ export default {
     },
   },
   computed: {
-    formItems() {
+    formItemsL1() {
       return [{
         md: 24,
         name: 'slot-component',
@@ -234,6 +234,267 @@ export default {
           )
         }
       }]
+    },
+    formItems() {
+      return [{
+        md: 24,
+        name: 'slot-component',
+        formItemAttributes: {
+          label: '基本信息',
+        },
+        render: (h, { props, onInput }) => {
+          var { formData } = props
+          return (
+            <el-descriptions border title="" column={2} colon={false} labelStyle={{ width: '13%' }} contentStyle={{ width: '37%' }}>
+              <el-descriptions-item label="所属商户">
+                {formData.companyWechatName}
+              </el-descriptions-item>
+              <el-descriptions-item label="申请单号">
+                {formData.orderId}
+              </el-descriptions-item>
+              <el-descriptions-item label="项目名称">
+                {formData.rpProjectRepairName}
+              </el-descriptions-item>
+              <el-descriptions-item label="工单单号">
+                {formData.workerOrderId}
+              </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.pgOrderBase.address}
+              </el-descriptions-item>
+              <el-descriptions-item label="创单人">
+                {formData.pgOrderBase.createBy}
+              </el-descriptions-item>
+              <el-descriptions-item label="创单人电话">
+                {formData.pgOrderBase.createMobile}
+              </el-descriptions-item>
+              <el-descriptions-item label="创单时间">
+                {formData.pgOrderBase.createTime}
+              </el-descriptions-item>
+              <el-descriptions-item label="工单类型">
+                {formData.orderSmallTypeText}
+              </el-descriptions-item>
+              <el-descriptions-item label="网点名称">
+                {formData.websitName}
+              </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.createTime}
+              </el-descriptions-item>
+              <el-descriptions-item label="包含全部费用">
+                {({ YES: "是", NO: "否" })[formData.isAllFee]}
+              </el-descriptions-item>
+
+              {formData.isAllFee == "NO" || formData.payType == "WECHAT" || formData.payType == "LINE" ? <el-descriptions-item label="费用支付方式">
+                {({ EXAMINE: "审批后结算", SITE: "现场支付" })[formData.feePayMethod]}
+              </el-descriptions-item> : null}
+
+              {(formData.isAllFee == "NO" || formData.payType == "WECHAT") && formData.feePayMethod == "EXAMINE" ? [
+                <el-descriptions-item label="费用单状态">
+                  {({ WAIT: "待审", OK: "通过", FAIL: "驳回", PAID: "现场支付", NO: "取消", NO_PAID: "未支付" })[formData.examineStatus]}
+                </el-descriptions-item>,
+                <el-descriptions-item label="审批人">
+                  {formData.examineName}
+                </el-descriptions-item>,
+                <el-descriptions-item label="审批时间">
+                  {formData.examineTime}
+                </el-descriptions-item>,
+                <el-descriptions-item label="取消人">
+                  {formData.cancelName}
+                </el-descriptions-item>,
+                <el-descriptions-item label="取消时间">
+                  {formData.cancelTime}
+                </el-descriptions-item>
+              ] : null}
+
+              {formData.payType == "LINE" && formData.feePayMethod == "EXAMINE" ? [
+                <el-descriptions-item label="结算状态">
+                  {({ WAIT: "待结算", OVER: "已结算" })[formData.status]}
+                </el-descriptions-item>,
+                <el-descriptions-item label="结算人">
+                  {formData.settleName}
+                </el-descriptions-item>,
+                <el-descriptions-item label="结算时间">
+                  {formData.settleTime}
+                </el-descriptions-item>
+              ] : null}
+            </el-descriptions>
+          )
+        }
+      }, {
+        md: 24,
+        name: 'slot-component',
+        formItemAttributes: {
+          label: '费用明细',
+        },
+        render: (h, { props, onInput }) => {
+          var { formData } = props
+          return (
+            <zj-table
+              columns={[{
+                columnAttributes: {
+                  label: '费用名称',
+                  prop: 'goodsName',
+                }
+              }, {
+                columnAttributes: {
+                  label: '费用类型',
+                  prop: 'chargeType',
+                },
+                render: (h, { row, column, index }) => {
+                  return (
+                    <div style="padding-left:10px">
+                      {({ MCC: "辅材物料", ACC: "配件物料", SERV: "服务收费" })[row.chargeType]}
+                    </div>
+                  )
+                }
+              }, {
+                columnAttributes: {
+                  label: '单价',
+                  prop: 'goodsAmount',
+                }
+              }, {
+                columnAttributes: {
+                  label: '数量',
+                  prop: 'num',
+                }
+              }, {
+                columnAttributes: {
+                  label: '费用金额',
+                  prop: 'totalAmount',
+                }
+              },
+              ]}
+              table-data={formData.rpMaterialOrderItems}
+            />
+          )
+        }
+      },
+      {
+        md: 8,
+        isShow: this?.payData?.length && this?.payData[0]?.goodsType == "M",
+        name: 'slot-component',
+        formItemAttributes: {
+          label: '辅材费用合计',
+        },
+        render: (h, { props, onInput }) => {
+          var { formData } = props
+          return <span>{[0, 0, 0, ...formData.rpMaterialOrderItems.filter(item => item.chargeType == "MCC").map(item => item.totalAmount)].reduce(function (prev, curr, idx, arr) {
+            return prev + curr;
+          }).toFixed(2)}</span>
+        }
+      },
+      {
+        md: 8,
+        isShow: this?.payData?.length && this?.payData[0]?.goodsType == "P",
+        name: 'slot-component',
+        formItemAttributes: {
+          label: '配件费用合计',
+        },
+        render: (h, { props, onInput }) => {
+          var { formData } = props
+          return <span>{[0, 0, 0, ...formData.rpMaterialOrderItems.filter(item => item.chargeType == "ACC").map(item => item.totalAmount)].reduce(function (prev, curr, idx, arr) {
+            return prev + curr;
+          }).toFixed(2)}</span>
+        }
+      },
+      {
+        md: 8,
+        name: 'slot-component',
+        formItemAttributes: {
+          label: '服务收费费用合计',
+        },
+        render: (h, { props, onInput }) => {
+          var { formData } = props
+          return <span>{[0, 0, 0, ...formData.rpMaterialOrderItems.filter(item => item.chargeType == "SERV").map(item => item.totalAmount)].reduce(function (prev, curr, idx, arr) {
+            return prev + curr;
+          }).toFixed(2)}</span>
+        }
+      },
+      {
+        md: 8,
+        name: 'slot-component',
+        formItemAttributes: {
+          label: '总金额',
+        },
+        render: (h, { props, onInput }) => {
+          var { formData } = props
+          return <span>{[0, 0, 0, ...formData.rpMaterialOrderItems.map(item => item.totalAmount)].reduce(function (prev, curr, idx, arr) {
+            return prev + curr;
+          }).toFixed(2)}</span>
+        }
+      }, {
+        name: 'el-input',
+        md: 24,
+        attributes: { disabled: true, type: "textarea", placeholder: '' },
+        formItemAttributes: { label: '申请备注', prop: 'remark' },
+      },
+      {
+        md: 24,
+        name: 'slot-component',
+        formItemAttributes: {
+          label: '交易记录',
+        },
+        render: (h, { props, onInput }) => {
+          var { formData } = props
+          return (
+            <zj-table
+              columns={[{
+                columnAttributes: {
+                  label: 'id',
+                  prop: 'orderId',
+                }
+              }, {
+                columnAttributes: {
+                  label: '交易类型',
+                  prop: 'goodsType',
+                },
+                render: (h, { row }) => {
+                  return <div>
+                    {({ M: "辅材", P: "配件" })[row.goodsType]}
+                  </div>
+                }
+              }, {
+                columnAttributes: {
+                  label: '交易金额',
+                  prop: 'totalAmount',
+                }
+              }, {
+                columnAttributes: {
+                  label: '交易状态',
+                  prop: 'payStatus',
+                },
+                render: (h, { row }) => {
+                  return <div>
+                    {({ CANCEL: "取消", WAIT: "待支付", PAID: "已支付" })[row.payStatus]}
+                  </div>
+                }
+              }, {
+                columnAttributes: {
+                  label: '交易时间',
+                  prop: 'payTime',
+                }
+              }, {
+                columnAttributes: {
+                  label: '创建时间',
+                  prop: 'createTime',
+                }
+              }]}
+              table-data={[formData]}
+            />
+          )
+        }
+      }]
     }
   },
   methods: {