Pārlūkot izejas kodu

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

linwenxin 1 gadu atpakaļ
vecāks
revīzija
9eea7977db

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

@@ -0,0 +1,55 @@
+import request, { postBlob, getBlob, handleImport } from '@/utils/request'
+
+// 获取列表
+export function listPageV2(data) {
+  return request({
+    url: `/websit/goods/p/list?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+//导出
+export function pageExport(data, name) {
+  return postBlob({
+    url: '/websit/goods/p/list/export',
+    data,
+    name
+  })
+}
+
+// 新增
+export function add(data) {
+  return request({
+    url: `/websit/goods/add`,
+    method: 'post',
+    data
+  })
+}
+
+// 编辑
+export function edit(data) {
+  return request({
+    url: `/websit/goods/edit`,
+    method: 'post',
+    data
+  })
+}
+
+// 详情
+export function getDetail(data) {
+  return request({
+    url: `/websit/goods/detail`,
+    method: 'post',
+    data
+  })
+}
+
+// 上下架
+export function updateStatus(data) {
+  return request({
+    url: `/websit/goods/batch/update/status`,
+    method: 'post',
+    data
+  })
+}

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

@@ -0,0 +1,55 @@
+import request, { postBlob, getBlob, handleImport } from '@/utils/request'
+
+// 获取列表
+export function listPageV2(data) {
+  return request({
+    url: `/websit/sales/list?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+//导出
+export function pageExport(data, name) {
+  return postBlob({
+    url: '/websit/sales/list/export',
+    data,
+    name
+  })
+}
+
+// 新增
+export function add(data) {
+  return request({
+    url: `/websit/sales/add`,
+    method: 'post',
+    data
+  })
+}
+
+// 编辑
+export function edit(data) {
+  return request({
+    url: `/websit/sales/edit`,
+    method: 'post',
+    data
+  })
+}
+
+// 详情
+export function getDetail(data) {
+  return request({
+    url: `/websit/sales/detail`,
+    method: 'post',
+    data
+  })
+}
+
+// 上下架
+export function submit(data) {
+  return request({
+    url: `/websit/sales/submit`,
+    method: 'post',
+    data
+  })
+}

+ 49 - 1
src/api/dataDictionary.js

@@ -2,7 +2,15 @@ import request, { postBlob, getBlob, handleImport } from '@/utils/request'
 
 export function getDataDictionary(data) {
   return request({
-    url: `/dict/page?moduleId=${data.moduleId}`,
+    url: `/dictCompany/page?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+export function getType(data) {
+  return request({
+    url: `/dictCompany/type/list`,
     method: 'post',
     data
   })
@@ -63,3 +71,43 @@ export function dictTypeList(data) {
     data
   })
 }
+
+export function add(data) {
+  return request({
+    url: `/dictCompany/add`,
+    method: 'post',
+    data
+  })
+}
+
+export function edit(data) {
+  return request({
+    url: `/dictCompany/update`,
+    method: 'post',
+    data
+  })
+}
+
+export function del(params) {
+  return request({
+    url: `/dictCompany/del`,
+    method: 'post',
+    params
+  })
+}
+
+export function getDetail(data) {
+  return request({
+    url: `/dictCompany/detail`,
+    method: 'post',
+    data
+  })
+}
+
+export function listImport(data) {
+  return request({
+    url: `/dictCompany/importExcel`,
+    method: 'post',
+    data
+  })
+}

+ 267 - 144
src/views/auxiliaryFittings/attachmentProfile/index.vue

@@ -1,27 +1,17 @@
 <template>
-	<template-page ref="pageRef" :get-list="getList" :table-attributes="tableAttributes" :table-events="tableEvents" :operationColumnWidth="200"
+	<template-page ref="pageRef" :get-list="getList" :table-attributes="tableAttributes" :table-events="tableEvents" :operationColumnWidth="50"
 	  :options-evens-group="optionsEvensGroup" :moreParameters="moreParameters" :column-parsing="columnParsing"
 	  :operation="operation" :exportList="exportList">
-	  <div slot="moreSearch">
-	    <el-radio-group v-model="examineStatus" size="mini" @change="changeType">
-	    	<el-radio-button label="">全部</el-radio-button>
-	    	<el-radio-button label="WAIT">待审核</el-radio-button>
-	    	<el-radio-button label="OK">审核通过</el-radio-button>
-	    	<el-radio-button label="FAIL">驳回</el-radio-button>
-	    </el-radio-group>
-	    <br><br>
-	  </div>
-	  <el-dialog title="" width="800px" custom-class="diy-dialog" append-to-body :modal="true" :visible.sync="formDialog"
+	  <el-dialog title="" width="1200px" 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">
+	      <zj-form-module :title="formDialogTitles[formDialogType]" label-width="170px" :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 v-if="formData.examineStatus == 'WAIT'" size="mini" type="primary" @click="audit('OK')">审核通过</el-button>
-			<el-button v-if="formData.examineStatus == 'WAIT'" size="mini" type="danger" @click="audit('FAIL')">审核驳回</el-button>
 			<el-button size="mini" @click="formCancel">取 消</el-button>
+			<el-button size="mini" type="primary" @click="formConfirm()">确定</el-button>
 	    </div>
 	  </el-dialog>
 	</template-page>
@@ -30,19 +20,65 @@
 <script>
 import TemplatePage from '@/components/template/template-page-1.vue'
 import import_mixin from '@/components/template/import_mixin.js'
-import { required, mobileRequired, mobile } from '@/components/template/rules_verify.js'
-import { listPageV2,pageExport, getDetail, add, edit } from "@/api/auxiliaryFittings/supplier";
+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, add, edit, updateStatus, listImport } from "@/api/auxiliaryFittings/attachmentProfile";
 export default {
-  components: { TemplatePage },
+  components: { TemplatePage, ImageUpload },
   mixins: [import_mixin],
   data() {
     return {
       // 事件组合
-      optionsEvensGroup: [],
+      optionsEvensGroup: [
+	  	[
+	  		[
+	  			{
+	  				name: '新建',
+	  				click: this.addData
+	  			}
+	  		]
+	  	],
+		[
+			[
+				{
+					name: '批量上架',
+					click: ()=>{
+						this.updateStatus('ON')
+					}
+				}
+			]
+		],
+		[
+			[
+				{
+					name: '批量下架',
+					click: ()=>{
+						this.updateStatus('OFF')
+					}
+				}
+			]
+		],[
+          [
+            {
+              name: '下载导入模板',
+              click: this.handleDownload
+            }
+          ],
+          [
+            {
+              name: '导入模板',
+              render: () => {
+                return this.importButton(listImport, '导入模板')
+              }
+            }
+          ],
+        ],
+	  ],
       // 表格属性
       tableAttributes: {
         // 启用勾选列
-        selectColumn: false
+        selectColumn: true
       },
       // 表格事件
       tableEvents: {
@@ -52,13 +88,14 @@ export default {
       recordSelected: [],
       /** 表单变量 */
       formDialogType: 0,
-      formDialogTitles: ["审核", "详情"],
+      formDialogTitles: ["新增","编辑", "详情"],
       formDialog: false,
       formData: {
-		type: '工程师',
-		examineRemark: ''
-      },
-	  examineStatus: ''
+		companyName: JSON.parse(localStorage.getItem('greemall_user')).companyName,
+		brandList: [],
+		categoryList: [],
+		partsUnitName: ''
+      }
     }
   },
   computed: {
@@ -70,108 +107,226 @@ export default {
       return [{
         md: 12,
         isShow: true,
-        name: 'el-select',
-				options: [{label: '待审核', value: 'WAIT'},{label: '驳回', value: 'FAIL'},{label: '通过', value: 'OK'}],
+        name: 'el-input',
         attributes: { placeholder: '请输入', disabled: true },
         formItemAttributes: {
-          label: '审核状态',
-          prop: 'examineStatus',
-          rules: []
+          label: '所属商户',
+          prop: 'companyName',
+          rules: [...required]
         },
       }, {
         md: 12,
         isShow: true,
+        name: 'slot-component',
+        attributes: { },
+        formItemAttributes: {
+          label: '状态',
+          prop: 'stateEnum',
+          rules: [...required]
+        },
+		render: (h, { props, onInput }) => {
+			var { value } = props
+			return (
+				<el-radio-group v-model={this.formData.stateEnum}>
+				    <el-radio disabled={this.formDialogType==2} label="ON">上架</el-radio>
+				    <el-radio disabled={this.formDialogType==2} label="OFF">下架</el-radio>
+				</el-radio-group>
+			)
+		}
+      }, {
+        md: 12,
+        isShow: true,
         name: 'el-input',
-        attributes: { disabled: true },
+        attributes: { placeholder: '请输入配件名称', },
         formItemAttributes: {
-          label: '用户类型',
-          prop: 'type',
-          rules: []
+          label: '配件名称',
+          prop: 'goodsName',
+          rules: [...required]
         }
       }, {
         md: 12,
         isShow: true,
+        name: 'el-select-add',
+		options: [{
+			label: `通用`,
+			value: "通用"
+		},
+		{
+			label: `格力`,
+			value: "格力"
+		},{
+			label: `美的`,
+			value: "美的"
+		},
+		{
+			label: `海尔`,
+			value: "海尔"
+		},
+		{
+			label: `华凌`,
+			value: "华凌"
+		}],
+        attributes: { placeholder: '请选择单位',filterable: true },
+        formItemAttributes: {
+          label: '单位',
+          prop: 'partsUnitName',
+          rules: [...required]
+        },
+		events: {
+			change(e){
+				console.log(e)
+			}
+		}
+      }, {
+        md: 12,
+        isShow: true,
         name: 'el-input',
-        attributes: { placeholder: '请输入', disabled: true },
+        attributes: { placeholder: '请输入配件代码' },
         formItemAttributes: {
-          label: '用户名称',
-          prop: 'nickName',
-          rules: []
+          label: '配件代码',
+          prop: 'goodsCode',
+          rules: [...required]
+        }
+      }, {
+        md: 12,
+        isShow: true,
+        name: 'slot-component',
+        attributes: {},
+        formItemAttributes: {
+          label: '收费类型',
+          prop: 'venderType',
+          rules: [...required]
+        },
+		render: (h, { props, onInput }) => {
+			var { value } = props
+			return (
+				<el-radio-group v-model={this.formData.venderType}>
+				    <el-radio disabled={this.formDialogType==2} label="P">配件物料</el-radio>
+					<el-radio disabled={this.formDialogType==2} label="A">服务收费</el-radio>
+				</el-radio-group>
+			)
+		}
+      }, {
+        md: 24,
+        isShow: true,
+        name: 'el-checkbox-add',
+        attributes: {},
+		options: [{
+			label: `通用`,
+			value: "通用"
+		},
+		{
+			label: `格力`,
+			value: "格力"
+		},{
+			label: `美的`,
+			value: "美的"
+		},
+		{
+			label: `海尔`,
+			value: "海尔"
+		},
+		{
+			label: `华凌`,
+			value: "华凌"
+		}],
+        formItemAttributes: {
+          label: '适用品牌',
+          prop: 'brandList',
+          rules: [...required]
+        }
+      }, {
+        md: 24,
+        isShow: true,
+        name: 'el-checkbox-add',
+        attributes: {},
+		options: [{
+			label: `通用`,
+			value: "通用"
+		},
+		{
+			label: `家用空调`,
+			value: "家用空调"
+		}],
+        formItemAttributes: {
+          label: '适用产品大类',
+          prop: 'categoryList',
+          rules: [...required]
         }
       }, {
         md: 12,
         isShow: true,
         name: 'el-input',
-        attributes: { placeholder: '请输入', disabled: true },
+        attributes: { placeholder: '请输入', type: 'number' },
         formItemAttributes: {
-          label: '联系电话',
-          prop: 'mobile',
-          rules: []
+          label: '销售价格',
+          prop: 'www',
+          rules: [...required]
         }
       }, {
         md: 12,
         isShow: true,
         name: 'el-input',
-        attributes: { placeholder: '请输入', disabled: true },
+        attributes: { placeholder: '请输入', type: 'number' },
         formItemAttributes: {
-          label: '身份证号码',
-          prop: 'idCard',
-          rules: []
+          label: '收费标准',
+          prop: 'email',
+          rules: [...email]
         }
       }, {
         md: 12,
         isShow: true,
-        name: 'slot-component',
-        attributes: { },
+        name: 'el-input',
+        attributes: { placeholder: '请输入', type: 'number' },
         formItemAttributes: {
-          label: '身份证',
-          prop: 'idCardImg',
-          rules: []
-        },
-				render: (h, { props, onInput }) => {
-					var { value } = props
-					return (
-						<el-image src={this.formData.idCardImg} style='width: 120px;height:120px' preview-src-list={[this.formData.idCardImg]} fit="fit"></el-image>
-					)
-				}
+          label: '自有库存师傅分账金额',
+          prop: 'telNo',
+          rules: [...required]
+        }
       }, {
         md: 12,
         isShow: true,
         name: 'el-input',
-        attributes: { placeholder: '请输入', disabled: true },
+        attributes: { placeholder: '请输入', type: 'number' },
         formItemAttributes: {
-          label: '所属商户',
-          prop: 'companyName',
-          rules: []
+          label: '外购辅材师傅分账金额',
+          prop: 'faxNo',
+          rules: [...required]
         }
       }, {
         md: 12,
         isShow: true,
         name: 'el-input',
-        attributes: { placeholder: '请输入', disabled: true },
+        attributes: { placeholder: '请输入', type: 'number' },
         formItemAttributes: {
-          label: '入驻网点',
-          prop: 'websitName',
-          rules: []
+          label: '自有库存网点分账金额',
+          prop: 'telNo',
+          rules: [...required]
+        }
+      }, {
+        md: 12,
+        isShow: true,
+        name: 'el-input',
+        attributes: { placeholder: '请输入', type: 'number' },
+        formItemAttributes: {
+          label: '外购辅材网点分账金额',
+          prop: 'faxNo',
+          rules: [...required]
         }
       }, {
         md: 24,
         isShow: true,
         name: 'el-input',
-        attributes: { placeholder: '请输入',type: "textarea", disabled: this.formData.examineStatus == 'WAIT' ? false:true },
+        attributes: { placeholder: '请输入备注内容',type: "textarea", rows: 5 },
         formItemAttributes: {
           label: '备注',
-          prop: 'examineRemark',
+          prop: 'remark',
           rules: []
         }
       }]
     }
   },
   methods: {
-	// 切换状态
-	changeType(val) {
-	  this.$refs.pageRef.refreshList()
-	},
     // 列表请求函数
 	getList(p) {
 	  try {
@@ -207,58 +362,16 @@ export default {
     operation(h, { row, index, column }) {
       return (
         <div class='operation-btns'>
-          {row.examineStatus == 'WAIT' ? <el-button type="text" onClick={() => {
-            getMemberDetail({ id: row.id }).then(res => {
-              Object.assign(this.formData, res.data)
-              this.formDialogType = 0
-              this.openForm()
-            })
-          }}>审核</el-button> : null}
-          <el-button type="text" onClick={() => {
-            getMemberDetail({ id: row.id }).then(res => {
-              Object.assign(this.formData, res.data)
-              this.formDialogType = 1
-              this.openForm()
-            })
-          }}>详情</el-button>
-		  <el-button type="text" onClick={() => {
-			this.$confirm('请确认是否设为分销员, 是否继续?', '提示', {
-				confirmButtonText: '确定',
-				cancelButtonText: '取消',
-				type: 'warning'
-			}).then(() => {
-				memberInner({
-					type: 'SERVICE',
-					userIds: row.userId
-				}).then(res => {
-					if (res.code == 200) {
-						this.$message({ type: 'success', message: '设为分销员成功!' })
-						this.$refs.pageRef.refreshList()
-					} else {
-						this.$message.error(res.msg);
-					}
-				})
-			});
-		  }}>设为分销员</el-button>
 		  <el-button type="text" onClick={() => {
-			this.$confirm('请确认是否设为客户, 是否继续?', '提示', {
-				confirmButtonText: '确定',
-				cancelButtonText: '取消',
-				type: 'warning'
-			}).then(() => {
-				memberInner({
-					type: 'GENERAL',
-					userIds: row.userId
-				}).then(res => {
-					if (res.code == 200) {
-						this.$message({ type: 'success', message: '设为客户成功!' })
-						this.$refs.pageRef.refreshList()
-					} else {
-						this.$message.error(res.msg);
-					}
-				})
-			});
-		  }}>设为客户</el-button>
+		    getDetail({ id: row.venderId }).then(res => {
+		      Object.assign(this.formData, res.data,{
+				  imageUrl:res.data?.imageUrl?  res.data?.imageUrl?.split(",").map(item=>({url:item})) : []
+			  })
+			   console.log(this.formData)
+		      this.formDialogType = 1
+		      this.openForm()
+		    })
+		  }}>编辑</el-button>
         </div>
       )
     },
@@ -274,37 +387,47 @@ export default {
       this.$data.formData = this.$options.data().formData
       this.formDialog = false
     },
-	audit(examineStatusEnum){
-		memberAudit({ 
-			examineStatusEnum,
-			examineRemark: this.formData.examineRemark,
-			id: this.formData.id
-		}).then(res => {
-			this.$message({ type: 'success', message: '审核成功!' })
-			this.formCancel()
-			this.$refs.pageRef.refreshList()
-		})
-	},
-	memberInner(type){
-		memberInner({
-			type,
-			userIds: this.formData.userId
-		}).then(res => {
-			this.$message({ type: 'success', message: '设置成功!' })
-			this.$refs.pageRef.refreshList()
-		})
+	updateStatus(stateEnum){
+		if(this.recordSelected.length == 0){
+			return this.$message.warning('请至少勾选一条数据!');
+		}
+		console.log(this.recordSelected)
+		this.$confirm(`请确认是否${stateEnum=='OFF'?'下架':'上架'}该配件, 是否继续?`, '提示', {
+			confirmButtonText: '确定',
+			cancelButtonText: '取消',
+			type: 'warning'
+		}).then(() => {
+			memberInner({
+				stateEnum,
+				ids: this.recordSelected.map(item=>{return item.goodsId}).join(',')
+			}).then(res => {
+				if (res.code == 200) {
+					this.$message({ type: 'success', message: `${stateEnum=='ON'?'下架':'上架'}成功!` })
+					this.$refs.pageRef.refreshList()
+				} else {
+					this.$message.error(res.msg);
+				}
+			})
+		});
 	},
     formConfirm() {
       this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
         if (valid) {
-          ([memberAudit][this.formDialogType])(this.formData).then(res => {
+          ([add, edit][this.formDialogType])({
+			  ...this.formData,
+			  imageUrl:this.formData.imageUrl.map(item=>item.url).join(",")
+		  }).then(res => {
             this.$message({ type: 'success', message: `${this.formDialogTitles[this.formDialogType]}成功!` })
             this.formCancel()
             this.$refs.pageRef.refreshList()
           })
         }
       })
-    }
+    },
+	// 下载导入模版
+	handleDownload() {
+	  // downloadFiles('charging/standard/download');
+	},
   }
 }
 </script>

+ 8 - 0
src/views/auxiliaryFittings/salesManagement/attachmentNewReturn/index.vue

@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

+ 8 - 0
src/views/auxiliaryFittings/salesManagement/attachmentSalesOrder/index.vue

@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

+ 412 - 0
src/views/auxiliaryFittings/salesManagement/auxiliarySalesOrder/index.vue

@@ -0,0 +1,412 @@
+<template>
+	<template-page ref="pageRef" :get-list="getList" :table-attributes="tableAttributes" :table-events="tableEvents" :operationColumnWidth="50"
+	  :options-evens-group="optionsEvensGroup" :moreParameters="moreParameters" :column-parsing="columnParsing"
+	  :operation="operation" :exportList="exportList">
+	  
+	  <div slot="moreSearch">
+	    <el-radio-group v-model="goodsType" size="mini" @change="changeType">
+	    	<el-radio-button label="">全部</el-radio-button>
+	    	<el-radio-button label="PAY_NOT_TAKE">已支付</el-radio-button>
+	    	<el-radio-button label="SUBMIT">未支付</el-radio-button>
+	    	<el-radio-button label="PAY_TAKE">已提货</el-radio-button>
+	    </el-radio-group>
+	    <br><br>
+	  </div>
+	  
+	  <el-dialog title="" width="1200px" 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="160px" :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" 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 { downloadFiles } from '@/utils/util'
+import { required, mobileRequired, mobile, httpUrl, email } from '@/components/template/rules_verify.js'
+import { listPageV2,pageExport, getDetail, add, edit, submit } from "@/api/auxiliaryFittings/auxiliarySalesOrder";
+export default {
+  components: { TemplatePage, ImageUpload },
+  mixins: [import_mixin],
+  data() {
+    return {
+      // 事件组合
+      optionsEvensGroup: [
+	  	[
+	  		[
+	  			{
+	  				name: '新建',
+	  				click: this.addData
+	  			}
+	  		]
+	  	]
+	  ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      // 勾选选中行
+      recordSelected: [],
+      /** 表单变量 */
+      formDialogType: 0,
+      formDialogTitles: ["新增","编辑", "详情"],
+      formDialog: false,
+      formData: {
+		companyName: JSON.parse(localStorage.getItem('greemall_user')).companyName,
+		venderName: '',
+		linkName: '',
+		linkTel: '',
+		address: '',
+		zipNo: '',
+		email: '',
+		www: '',
+		telNO: '',
+		corporation: '',
+		faxNo: '',
+		licenseId: '',
+		khBank: '',
+		bankRow: '',
+		accNo: '',
+		remark: '',
+		stateEnum: 'ON',
+		venderType: 'M',
+		imageUrl: []
+      },
+	  goodsType: ''
+    }
+  },
+  computed: {
+    // 更多参数
+    moreParameters() {
+      return []
+    },
+    formItems() {
+      return [{
+        md: 12,
+        isShow: true,
+        name: 'el-input',
+        attributes: { placeholder: '请输入', disabled: true },
+        formItemAttributes: {
+          label: '所属商户',
+          prop: 'companyName',
+          rules: [...required]
+        },
+      }, {
+        md: 12,
+        isShow: true,
+        name: 'slot-component',
+        attributes: { },
+        formItemAttributes: {
+          label: '状态',
+          prop: 'stateEnum',
+          rules: [...required]
+        },
+		render: (h, { props, onInput }) => {
+			var { value } = props
+			return (
+				<el-radio-group v-model={this.formData.stateEnum}>
+				    <el-radio disabled={this.formDialogType==2} label="ON">上架</el-radio>
+				    <el-radio disabled={this.formDialogType==2} label="OFF">下架</el-radio>
+				</el-radio-group>
+			)
+		}
+      }, {
+        md: 12,
+        isShow: true,
+        name: 'el-input',
+        attributes: { placeholder: '请输入配件名称', },
+        formItemAttributes: {
+          label: '配件名称',
+          prop: 'goodsName',
+          rules: [...required]
+        }
+      }, {
+        md: 12,
+        isShow: true,
+        name: 'el-select',
+		options: [],
+        attributes: { placeholder: '请选择单位' },
+        formItemAttributes: {
+          label: '单位',
+          prop: 'partsUnitName',
+          rules: [...required]
+        }
+      }, {
+        md: 12,
+        isShow: true,
+        name: 'el-input',
+        attributes: { placeholder: '请输入配件代码' },
+        formItemAttributes: {
+          label: '配件代码',
+          prop: 'goodsCode',
+          rules: [...required]
+        }
+      }, {
+        md: 12,
+        isShow: true,
+        name: 'slot-component',
+        attributes: {},
+        formItemAttributes: {
+          label: '收费类型',
+          prop: 'venderType',
+          rules: [...required]
+        },
+		render: (h, { props, onInput }) => {
+			var { value } = props
+			return (
+				<el-radio-group v-model={this.formData.venderType}>
+				    <el-radio disabled={this.formDialogType==2} label="P">配件物料</el-radio>
+					<el-radio disabled={this.formDialogType==2} label="A">服务收费</el-radio>
+				</el-radio-group>
+			)
+		}
+      }, {
+        md: 24,
+        isShow: true,
+        name: 'el-radio',
+        attributes: {},
+		options: [{
+			label: `通用`,
+			value: "通用"
+		},
+		{
+			label: `格力`,
+			value: "格力"
+		},{
+			label: `美的`,
+			value: "美的"
+		},
+		{
+			label: `海尔`,
+			value: "海尔"
+		},
+		{
+			label: `华凌`,
+			value: "华凌"
+		}],
+        formItemAttributes: {
+          label: '适用品牌',
+          prop: 'address',
+          rules: [...required]
+        }
+      }, {
+        md: 24,
+        isShow: true,
+        name: 'el-radio',
+        attributes: {},
+		options: [{
+			label: `通用`,
+			value: "通用"
+		},
+		{
+			label: `家用空调`,
+			value: "家用空调"
+		}],
+        formItemAttributes: {
+          label: '适用产品大类',
+          prop: 'zipNo',
+          rules: [...required]
+        }
+      }, {
+        md: 12,
+        isShow: true,
+        name: 'el-input',
+        attributes: { placeholder: '请输入', type: 'number' },
+        formItemAttributes: {
+          label: '销售价格',
+          prop: 'www',
+          rules: [...required]
+        }
+      }, {
+        md: 12,
+        isShow: true,
+        name: 'el-input',
+        attributes: { placeholder: '请输入', type: 'number' },
+        formItemAttributes: {
+          label: '收费标准',
+          prop: 'email',
+          rules: [...email]
+        }
+      }, {
+        md: 12,
+        isShow: true,
+        name: 'el-input',
+        attributes: { placeholder: '请输入', type: 'number' },
+        formItemAttributes: {
+          label: '自有库存师傅分账金额',
+          prop: 'telNo',
+          rules: [...required]
+        }
+      }, {
+        md: 12,
+        isShow: true,
+        name: 'el-input',
+        attributes: { placeholder: '请输入', type: 'number' },
+        formItemAttributes: {
+          label: '外购辅材师傅分账金额',
+          prop: 'faxNo',
+          rules: [...required]
+        }
+      }, {
+        md: 12,
+        isShow: true,
+        name: 'el-input',
+        attributes: { placeholder: '请输入', type: 'number' },
+        formItemAttributes: {
+          label: '自有库存网点分账金额',
+          prop: 'telNo',
+          rules: [...required]
+        }
+      }, {
+        md: 12,
+        isShow: true,
+        name: 'el-input',
+        attributes: { placeholder: '请输入', type: 'number' },
+        formItemAttributes: {
+          label: '外购辅材网点分账金额',
+          prop: 'faxNo',
+          rules: [...required]
+        }
+      }, {
+        md: 24,
+        isShow: true,
+        name: 'el-input',
+        attributes: { placeholder: '请输入备注内容',type: "textarea", rows: 5 },
+        formItemAttributes: {
+          label: '备注',
+          prop: 'remark',
+          rules: []
+        }
+      }]
+    }
+  },
+  methods: {
+	// 切换状态
+	changeType(val) {
+	  this.$refs.pageRef.refreshList()
+	},
+    // 列表请求函数
+	getList(p) {
+	  try {
+	    var pam = JSON.parse(JSON.stringify(p))
+	    if (this.examineStatus) {
+	      pam.params.push({ "param": "b.examine_status", "compare": "=", "value": this.examineStatus })
+	    }
+	    return listPageV2(pam)
+	  } catch (error) {
+	    console.log(error)
+	  }
+	},
+    // 列表导出函数
+    exportList: pageExport,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+		if (item.jname === 'idCardImg') {
+		        defaultData.render = (h, { row, index, column }) => {
+		          return (
+		            <div style="padding:0 6px;cursor: pointer;">
+		              {row.idCardImg ? row.idCardImg.split(",").map(url => <el-image src={url} preview-src-list={[url]} fit="fit" style="width:80px;height:80px;" />) : null}
+		            </div>
+		          )
+		        }
+		      }
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    // 表格操作列
+    operation(h, { row, index, column }) {
+      return (
+        <div class='operation-btns'>
+		  <el-button type="text" onClick={() => {
+		    getDetail({ id: row.venderId }).then(res => {
+		      Object.assign(this.formData, res.data,{
+				  imageUrl:res.data?.imageUrl?  res.data?.imageUrl?.split(",").map(item=>({url:item})) : []
+			  })
+			   console.log(this.formData)
+		      this.formDialogType = 1
+		      this.openForm()
+		    })
+		  }}>编辑</el-button>
+        </div>
+      )
+    },
+    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
+    },
+	updateStatus(stateEnum){
+		if(this.recordSelected.length == 0){
+			return this.$message.warning('请至少勾选一条数据!');
+		}
+		console.log(this.recordSelected)
+		this.$confirm(`请确认是否${stateEnum=='OFF'?'下架':'上架'}该配件, 是否继续?`, '提示', {
+			confirmButtonText: '确定',
+			cancelButtonText: '取消',
+			type: 'warning'
+		}).then(() => {
+			memberInner({
+				stateEnum,
+				ids: this.recordSelected.map(item=>{return item.goodsId}).join(',')
+			}).then(res => {
+				if (res.code == 200) {
+					this.$message({ type: 'success', message: `${stateEnum=='ON'?'下架':'上架'}成功!` })
+					this.$refs.pageRef.refreshList()
+				} else {
+					this.$message.error(res.msg);
+				}
+			})
+		});
+	},
+    formConfirm() {
+      this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
+        if (valid) {
+          ([add, edit][this.formDialogType])({
+			  ...this.formData,
+			  imageUrl:this.formData.imageUrl.map(item=>item.url).join(",")
+		  }).then(res => {
+            this.$message({ type: 'success', message: `${this.formDialogTitles[this.formDialogType]}成功!` })
+            this.formCancel()
+            this.$refs.pageRef.refreshList()
+          })
+        }
+      })
+    },
+	// 下载导入模版
+	handleDownload() {
+	  // downloadFiles('charging/standard/download');
+	},
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+	.tab{
+		padding: 20px 20px 0 20px;
+	}
+</style>

+ 8 - 0
src/views/auxiliaryFittings/salesManagement/auxiliarySalesReturnOrder/index.vue

@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

+ 8 - 0
src/views/auxiliaryFittings/salesManagement/transaction/index.vue

@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

+ 7 - 7
src/views/auxiliaryFittings/supplier/index.vue

@@ -1,12 +1,12 @@
 <template>
-	<template-page ref="pageRef" :get-list="getList" :table-attributes="tableAttributes" :table-events="tableEvents"
+	<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" :exportList="exportList">
 	  <el-dialog title="" width="1200px" 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">
+	        :form-data="formData" :form-items="formItems" :disabled="formDialogType==2">
 	      </zj-form-module>
 	    </zj-form-container>
 	    <div slot="footer" class="dialog-footer">
@@ -107,8 +107,8 @@ export default {
 			var { value } = props
 			return (
 				<el-radio-group v-model={this.formData.status}>
-				    <el-radio label="ON">启用</el-radio>
-				    <el-radio label="OFF">禁用</el-radio>
+				    <el-radio disabled={this.formDialogType==2} label="ON">启用</el-radio>
+				    <el-radio disabled={this.formDialogType==2} label="OFF">禁用</el-radio>
 				</el-radio-group>
 			)
 		}
@@ -156,9 +156,9 @@ export default {
 			var { value } = props
 			return (
 				<el-radio-group v-model={this.formData.venderType}>
-				    <el-radio label="M">辅材</el-radio>
-				    <el-radio label="P">配件</el-radio>
-					<el-radio label="A">辅材和配件</el-radio>
+				    <el-radio disabled={this.formDialogType==2} label="M">辅材</el-radio>
+				    <el-radio disabled={this.formDialogType==2} label="P">配件</el-radio>
+					<el-radio disabled={this.formDialogType==2} label="A">辅材和配件</el-radio>
 				</el-radio-group>
 			)
 		}

+ 232 - 24
src/views/setting/dataDictionary/index.vue

@@ -1,29 +1,58 @@
 <template>
   <!-- :exportList="exportList" -->
-  <template-page ref="pageRef" :getList="getList" :columnParsing="columnParsing" :optionsEvensGroup="optionsEvensGroup"
-    :tableAttributes="tableAttributes" :tableEvents="tableEvents" :operationColumnWidth="200" :operation="operation()">
-    <AddDataDictionary :visible="visible" :item="item" @setVisible="bool => {
-      visible = bool
-      if (!bool && item) {
-        item = null
-      }
-    }
-      " @success="() => {
-    $refs.pageRef.refreshList()
-  }
-    " />
-  </template-page>
+	<zj-page-container direction="row">
+		 <div class="catalogue">
+			 <div class="title">类型名称</div>
+		     <zj-page-container>
+		         <zj-page-fill>
+		             <el-tree :data="typeList" :props="defaultProps" default-expand-all :highlight-current="true"
+		                 :expand-on-click-node="false" @node-click="handleNodeClick" current-node-key="ASSIST_UNIT"
+		                 node-key="dictType" ref="listTree"> 
+		             </el-tree>
+		         </zj-page-fill>
+		     </zj-page-container>
+		 </div>
+		 <template-page ref="pageRef" :getList="getList" :columnParsing="columnParsing" :optionsEvensGroup="optionsEvensGroup"
+		   :tableAttributes="tableAttributes" :tableEvents="tableEvents" :operationColumnWidth="160" :operation="operation()">
+		   <!-- <AddDataDictionary :visible="visible" :item="item" @setVisible="bool => {
+		     visible = bool
+		     if (!bool && item) {
+		       item = null
+		     }
+		   }
+		     " @success="() => {
+		   $refs.pageRef.refreshList()
+		 }
+		   " /> -->
+		   <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" type="primary" @click="formConfirm()">确定</el-button>
+		     </div>
+		   </el-dialog>
+		 </template-page>
+	</zj-page-container>
 </template>
 
 <script>
 import TemplatePage from '@/components/template/template-page-1.vue'
 import AddDataDictionary from './addDataDictionary.vue'
-import { getDataDictionaryExport, getDataDictionary, delDataDictionary } from '@/api/dataDictionary.js'
+import import_mixin from '@/components/template/import_mixin.js'
+import { required } from '@/components/template/rules_verify.js'
+import { commonTemplateDownload } from '@/api/common.js'
+import { getType, getDataDictionaryExport, getDataDictionary, add, edit, del, getDetail, listImport } from '@/api/dataDictionary.js'
 export default {
   components: {
     TemplatePage,
     AddDataDictionary
   },
+  mixins: [import_mixin],
   data() {
     return {
       // 事件组合
@@ -32,11 +61,25 @@ export default {
           [
             {
               name: '新增',
-              click: () => {
-                this.visible = true
-              }
+              click: this.addData
             }
           ]
+        ],
+		[
+          [
+            {
+              name: '下载导入模板',
+              click: this.handleDownload
+            }
+          ],
+          [
+            {
+              name: '导入模板',
+              render: () => {
+                return this.importButton(listImport, '导入模板')
+              }
+            }
+          ],
         ]
       ],
       // 表格属性
@@ -44,14 +87,134 @@ export default {
       // 表格事件
       tableEvents: {},
       visible: false,
-      item: null
+      item: null,
+	  dictType: 'ASSIST_UNIT',
+	  dictTypeName: '辅材单位',
+	  typeList: [],
+	  defaultProps: {
+	    children: '',
+	    label: 'remark'
+	  },
+	  /** 表单变量 */
+	  formDialogType: 0,
+	  formDialogTitles: ["新增","编辑", "详情"],
+	  formDialog: false,
+	  formData: {
+	  	companyName: JSON.parse(localStorage.getItem('greemall_user')).companyName,
+		dictType: 'ASSIST_UNIT',
+		dictTypeName: '辅材单位',
+		dictValue: '',
+		status: 'ON',
+		sortNum: '',
+		remark: ''
+	  }
     }
   },
+  created() {
+  	this.getType()
+  },
+  computed: {
+	  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-input',
+	        attributes: { placeholder: '请输入', disabled: true },
+	        formItemAttributes: {
+	          label: '类型名称',
+	          prop: 'dictTypeName',
+	          rules: [...required]
+	        },
+	      }, {
+	        md: 24,
+	        isShow: true,
+	        name: 'el-input',
+	        attributes: { placeholder: '请输入' },
+	        formItemAttributes: {
+	          label: '字典值',
+	          prop: 'dictValue',
+	          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="ON">启用</el-radio>
+	    			    <el-radio disabled={this.formDialogType==2} label="OFF">禁用</el-radio>
+	    			</el-radio-group>
+	    		)
+	    	}
+		},{
+	        md: 24,
+	        isShow: true,
+	        name: 'el-input',
+	        attributes: { placeholder: '请输入' },
+	        formItemAttributes: {
+	          label: '排序',
+	          prop: 'sortNum',
+	          rules: []
+	        },
+		}, {
+        md: 24,
+        isShow: true,
+        name: 'el-input',
+        attributes: { placeholder: '请输入备注内容',type: "textarea", rows: 3 },
+        formItemAttributes: {
+          label: '备注',
+          prop: 'remark',
+          rules: []
+        }
+      }]
+	  }
+  },
   methods: {
     // 列表请求函数
-    getList: getDataDictionary,
+	getList(p) {
+	  try {
+	    var pam = JSON.parse(JSON.stringify(p))
+	    if (this.dictType) {
+	      pam.params.push({ "param": "a.dict_type", "compare": "=", "value": this.dictType })
+	    }
+	    return getDataDictionary(pam)
+	  } catch (error) {
+	    console.log(error)
+	  }
+	},
     // 列表导出函数
     exportList: getDataDictionaryExport,
+	getType(){
+		getType().then(res => {
+			this.typeList = res.data
+		    this.$refs.pageRef.refreshList()
+		})
+	},
+	handleNodeClick(e){
+		this.dictType = e.dictType
+		this.formData.dictType = e.dictType
+		this.formData.dictTypeName = e.remark
+		this.dictTypeName = e.remark
+		this.$refs.pageRef.refreshList()
+	},
     // 表格列解析渲染数据更改
     columnParsing(item, defaultData) {
       return defaultData
@@ -72,8 +235,9 @@ export default {
                   buttonEvents={{
                     click: (...p) => {
                       var [row] = p
-                      this.item = row
-                      this.visible = true
+                      this.formData = row
+                      this.formDialogType = 1
+                      this.openForm()
                     }
                   }}
                 >
@@ -86,7 +250,7 @@ export default {
                   icon-color="red"
                   title="这是一段内容确定删除吗?"
                   onConfirm={() => {
-                    delDataDictionary({ id: row.sysDictId })
+                    del({ id: row.sysDictId })
                       .then(res => {
                         this.$refs.pageRef.refreshList()
                         this.$message({
@@ -115,9 +279,53 @@ export default {
         }
       }
       return undefined
-    }
+    },
+	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.formData.dictType = this.dictType
+	  this.formData.dictTypeName = this.dictTypeName
+	  this.formDialog = false
+	},
+	formConfirm() {
+	  this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
+	    if (valid) {
+	      ([add, edit][this.formDialogType])(this.formData).then(res => {
+	        this.$message({ type: 'success', message: `${this.formDialogTitles[this.formDialogType]}成功!` })
+	        this.formCancel()
+	        this.$refs.pageRef.refreshList()
+	      })
+	    }
+	  })
+	},
+	// 下载导入模版
+	handleDownload() {
+		commonTemplateDownload({ name: '数据字典导入.xlsx' }, `${this.$route.meta.title}`).then(res => {
+		    this.$message({
+		        message: '下载成功',
+		        type: 'success'
+		    })
+		}).catch(err => {
+		    this.$message.error('下载失败')
+		})
+	},
   }
 }
 </script>
 
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+	.title{
+		width: 120px;
+		margin: 24px 0 20px 20px;
+		padding-bottom: 10px;
+		border-bottom: 1px solid #cccccc;
+		font-weight: bold;
+	}
+</style>