Эх сурвалжийг харах

Merge branch 'release' into dev

zhangchong 3 сар өмнө
parent
commit
307e7f6e08

+ 38 - 0
src/api/snapshot/inviteCode.ts

@@ -0,0 +1,38 @@
+/*
+ * @Author: zc
+ * @description 随手拍-邀请码管理
+ */
+import request from '@/utils/request';
+/**
+ * @description 获取邀请码基础数据
+ * @param {object} params
+ */
+export const getInviteCodeBaseData = (params?: object) =>{
+	return request({
+		url: `/api/v1/InviteCode/basedata`,
+		method: 'get',
+		params
+	});
+}
+/**
+ * @description 获取邀请码列表
+ * @param {object} params
+ */
+export const getInviteCodeList = (params?: object) =>{
+	return request({
+		url: `/api/v1/InviteCode`,
+		method: 'get',
+		params
+	});
+}
+/**
+ * @description 添加部门邀请码
+ * @param {object} data
+ */
+export const addInviteCode = (data: object) =>{
+	return request({
+		url: `/api/v1/InviteCode`,
+		method: 'post',
+		data
+	});
+}

+ 17 - 0
src/api/statistics/department.ts

@@ -54,6 +54,23 @@ export const departmentDelayDetailList = (params: object) => {
 		params,
 	});
 };
+/**
+ * @description 部门延期统计明细导出  单独(列表)
+ * @param {object} params
+ */
+export const departmentDelayDetailExportSingle = (params: object) => {
+	return request(
+		{
+			url: `/api/v1/BiOrder/order-delay-detail/exprot`,
+			method: 'post',
+			params,
+			responseType: 'blob',
+		},
+		{
+			reduce_data_format: false,
+		}
+	);
+};
 /**
  * @description 部门延期统计明细导出
  * @param {object} data

+ 23 - 19
src/views/snapshot/inviteCode/list/components/Code-add.vue

@@ -3,32 +3,32 @@
 		<el-form :model="state.ruleForm" label-width="100px" ref="ruleFormRef">
 			<el-row :gutter="10">
 				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
-					<el-form-item label="上级名称" prop="industryId" :rules="[{ required: false, message: '请选择上级名称', trigger: 'change' }]">
-						<el-select v-model="state.ruleForm.industryId" placeholder="请选择审批部门" class="w100" clearable filterable>
-							<el-option v-for="item in state.department" :key="item.dicDataValue" :label="item.dicDataName" :value="item.dicDataValue" />
+					<el-form-item label="上级名称" prop="parentOrgId" :rules="[{ required: false, message: '请选择上级名称', trigger: 'change' }]">
+						<el-select v-model="state.ruleForm.parentOrgId" placeholder="请选择上级名称" class="w100" clearable filterable>
+							<el-option v-for="item in orgNameOptions" :key="item.key" :label="item.value" :value="item.key" />
 						</el-select>
 					</el-form-item>
 				</el-col>
 				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
-					<el-form-item label="部门名称" prop="name" :rules="[{ required: true, message: '请填写部门名称', trigger: 'blur' }]">
-						<el-input v-model="state.ruleForm.name" placeholder="请填写部门名称" clearable></el-input>
+					<el-form-item label="部门名称" prop="orgName" :rules="[{ required: true, message: '请填写部门名称', trigger: 'blur' }]">
+						<el-input v-model="state.ruleForm.orgName" placeholder="请填写部门名称" clearable></el-input>
 					</el-form-item>
 				</el-col>
 				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
-					<el-form-item label="邀请码" prop="name" :rules="[{ required: true, message: '请填写邀请码', trigger: 'blur' }]">
+					<el-form-item label="邀请码" prop="beginCode" :rules="[{ required: true, message: '请填写邀请码', trigger: 'blur' }]">
 						<el-input
 							type="number"
-							v-model.number="state.ruleForm.name"
+							v-model.number="state.ruleForm.beginCode"
 							placeholder="请填写邀请码"
 							oninput="if(value.length > 5) value = value.slice(0, 5)"
 						></el-input>
 					</el-form-item>
 				</el-col>
 				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
-					<el-form-item label="邀请码2" prop="guiderReadPackAmount" :rules="[{ required: true, message: '请填写邀请码2', trigger: 'blur' }]">
+					<el-form-item label="邀请码2" prop="endCode" :rules="[{ required: true, message: '请填写邀请码2', trigger: 'blur' }]">
 						<el-input
 							type="number"
-							v-model.number="state.ruleForm.guiderReadPackAmount"
+							v-model.number="state.ruleForm.endCode"
 							placeholder="请填写邀请码2"
 							oninput="if(value.length > 5) value = value.slice(0, 5)"
 						></el-input>
@@ -40,6 +40,7 @@
 			<span class="dialog-footer">
 				<el-button @click="closeDialog" class="default-button">取 消</el-button>
 				<el-button type="primary" @click="onSubmit(ruleFormRef)" :loading="loading">确 定</el-button>
+				<el-button type="primary" @click="onQrcode" :loading="loading">生成二维码</el-button>
 			</span>
 		</template>
 	</el-dialog>
@@ -51,6 +52,7 @@ import { ElMessage, FormInstance } from 'element-plus';
 import { throttle } from '@/utils/tools';
 import { SetingsAdd } from '@/api/system/parameter';
 import { addClue, baseClue, baseIndustry } from '@/api/snapshot/config';
+import { addInviteCode, getInviteCodeBaseData } from '@/api/snapshot/inviteCode';
 // 定义子组件向父组件传值/事件
 const emit = defineEmits(['updateList']);
 
@@ -58,12 +60,10 @@ const emit = defineEmits(['updateList']);
 const state = reactive<any>({
 	dialogVisible: false,
 	ruleForm: {
-		name: null, // 线索名称
-		citizenReadPackAmount: null, // 市民红包
-		guiderReadPackAmount: null, // 网格员红包
-		industryId: null, // 行业类型
-		isEnable: true, // 是否启用
-		displayOrder: 1, // 排序
+		beginCode:0, // 邀请码
+		endCode:0, // 邀请码2
+		parentOrgId:null, // 上级名称
+		orgName:null, // 部门名称
 	},
 });
 let loading = ref<boolean>(false); // 加载状态
@@ -91,7 +91,7 @@ const onSubmit = throttle(async (formEl: FormInstance | undefined) => {
 	await formEl.validate((valid: boolean) => {
 		if (!valid) return;
 		loading.value = true;
-		addClue(state.ruleForm)
+		addInviteCode(state.ruleForm)
 			.then(() => {
 				ElMessage({
 					message: '操作成功',
@@ -106,15 +106,19 @@ const onSubmit = throttle(async (formEl: FormInstance | undefined) => {
 			});
 	});
 }, 300);
-const industry = ref<EmptyArrayType>([]);
+const orgNameOptions = ref<EmptyArrayType>([]);
 const getBaseData = async () => {
 	try {
-		const { result } = await baseClue();
-		industry.value = result.industry;
+		const { result } = await getInviteCodeBaseData();
+		orgNameOptions.value = result.OrgName ?? [];
 	} catch (e) {
 		console.log(e);
 	}
 };
+// 生成二维码
+const onQrcode =()=>{
+
+}
 // 暴露变量
 defineExpose({
 	openDialog,

+ 45 - 41
src/views/snapshot/inviteCode/list/components/Code-edit.vue

@@ -2,44 +2,45 @@
 	<el-dialog v-model="state.dialogVisible" width="50%" draggable title="编辑人员" destroy-on-close append-to-body @close="close">
 		<el-form :model="state.ruleForm" label-width="100px" ref="ruleFormRef" :disabled="loading">
 			<el-row :gutter="10">
-				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
-					<el-form-item label="上级名称" prop="industryId" :rules="[{ required: false, message: '请选择上级名称', trigger: 'change' }]">
-						<el-select v-model="state.ruleForm.industryId" placeholder="请选择审批部门" class="w100" clearable filterable>
-							<el-option v-for="item in state.department" :key="item.dicDataValue" :label="item.dicDataName" :value="item.dicDataValue" />
-						</el-select>
-					</el-form-item>
-				</el-col>
-				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
-					<el-form-item label="部门名称" prop="name" :rules="[{ required: true, message: '请填写部门名称', trigger: 'blur' }]">
-						<el-input v-model="state.ruleForm.name" placeholder="请填写部门名称" clearable></el-input>
-					</el-form-item>
-				</el-col>
-				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
-					<el-form-item label="邀请码" prop="name" :rules="[{ required: true, message: '请填写邀请码', trigger: 'blur' }]">
-						<el-input
-							type="number"
-							v-model.number="state.ruleForm.name"
-							placeholder="请填写邀请码"
-							oninput="if(value.length > 5) value = value.slice(0, 5)"
-						></el-input>
-					</el-form-item>
-				</el-col>
-				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
-					<el-form-item label="邀请码2" prop="name" :rules="[{ required: true, message: '请填写邀请码2', trigger: 'blur' }]">
-						<el-input
-							type="number"
-							v-model.number="state.ruleForm.name"
-							placeholder="请填写邀请码2"
-							oninput="if(value.length > 5) value = value.slice(0, 5)"
-						></el-input>
-					</el-form-item>
-				</el-col>
+			<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+				<el-form-item label="上级名称" prop="parentOrgId" :rules="[{ required: false, message: '请选择上级名称', trigger: 'change' }]">
+					<el-select v-model="state.ruleForm.parentOrgId" placeholder="请选择上级名称" class="w100" clearable filterable>
+						<el-option v-for="item in orgNameOptions" :key="item.key" :label="item.value" :value="item.key" />
+					</el-select>
+				</el-form-item>
+			</el-col>
+			<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+				<el-form-item label="部门名称" prop="orgName" :rules="[{ required: true, message: '请填写部门名称', trigger: 'blur' }]">
+					<el-input v-model="state.ruleForm.orgName" placeholder="请填写部门名称" clearable></el-input>
+				</el-form-item>
+			</el-col>
+			<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+				<el-form-item label="邀请码" prop="beginCode" :rules="[{ required: true, message: '请填写邀请码', trigger: 'blur' }]">
+					<el-input
+						type="number"
+						v-model.number="state.ruleForm.beginCode"
+						placeholder="请填写邀请码"
+						oninput="if(value.length > 5) value = value.slice(0, 5)"
+					></el-input>
+				</el-form-item>
+			</el-col>
+			<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+				<el-form-item label="邀请码2" prop="endCode" :rules="[{ required: true, message: '请填写邀请码2', trigger: 'blur' }]">
+					<el-input
+						type="number"
+						v-model.number="state.ruleForm.endCode"
+						placeholder="请填写邀请码2"
+						oninput="if(value.length > 5) value = value.slice(0, 5)"
+					></el-input>
+				</el-form-item>
+			</el-col>
 			</el-row>
 		</el-form>
 		<template #footer>
 			<span class="dialog-footer">
 				<el-button @click="closeDialog" class="default-button">取 消</el-button>
 				<el-button type="primary" @click="onSubmit(ruleFormRef)" :loading="loading">确 定</el-button>
+				<el-button type="primary" @click="onQrcode" :loading="loading">生成二维码</el-button>
 			</span>
 		</template>
 	</el-dialog>
@@ -51,6 +52,7 @@ import { ElMessage, FormInstance } from 'element-plus';
 import { throttle } from '@/utils/tools';
 import { modifySettings, setitngsDetail } from '@/api/system/parameter';
 import { baseClue, editClue, getClueDetail } from '@/api/snapshot/config';
+import { getInviteCodeBaseData } from '@/api/snapshot/inviteCode';
 // 定义子组件向父组件传值/事件
 const emit = defineEmits(['updateList']);
 
@@ -58,12 +60,10 @@ const emit = defineEmits(['updateList']);
 const state = reactive<any>({
 	dialogVisible: false,
 	ruleForm: {
-		name: null, // 线索名称
-		citizenReadPackAmount: null, // 市民红包
-		guiderReadPackAmount: null, // 网格员红包
-		industryId: null, // 行业类型
-		isEnable: true, // 是否启用
-		displayOrder: 1, // 排序
+		beginCode:0, // 邀请码
+		endCode:0, // 邀请码2
+		parentOrgId:null, // 上级名称
+		orgName:null, // 部门名称
 	},
 });
 let loading = ref<boolean>(false); // 加载状态
@@ -110,15 +110,19 @@ const onSubmit = throttle(async (formEl: FormInstance | undefined) => {
 			});
 	});
 }, 300);
-const industry = ref<EmptyArrayType>([]);
+const orgNameOptions = ref<EmptyArrayType>([]);
 const getBaseData = async () => {
 	try {
-		const { result } = await baseClue();
-		industry.value = result.industry;
+		const { result } = await getInviteCodeBaseData();
+		orgNameOptions.value = result.OrgName ?? [];
 	} catch (e) {
 		console.log(e);
 	}
 };
+// 生成二维码
+const onQrcode =()=>{
+
+}
 // 暴露变量
 defineExpose({
 	openDialog,

+ 6 - 5
src/views/snapshot/inviteCode/list/index.vue

@@ -44,6 +44,7 @@
 import { computed, defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import { getClueList } from '@/api/snapshot/config';
 import { ElMessage, ElMessageBox } from 'element-plus';
+import { getInviteCodeList } from '@/api/snapshot/inviteCode';
 
 // 引入组件
 const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
@@ -96,20 +97,20 @@ const gridOptions = reactive<any>({
 	columns: [
 		{ type: 'checkbox', width: 50, align: 'center' },
 		{
-			field: 'name',
+			field: 'orgName',
 			title: '部门名称',
 			minWidth: 200
 		},
 		{
-			field: 'industryName',
+			field: 'beginCode',
 			title: '邀请码',
 		},
 		{
-			field: 'citizenReadPackAmountTxt',
+			field: 'endCode',
 			title: '邀请码2',
 		},
 		{
-			field: 'guiderReadPackAmountTxt',
+			field: 'qrCodeUrl',
 			title: '邀请码地址',
 		},
 		{ title: '操作', width: 120, fixed: 'right', align: 'center', slots: { default: 'action' } },
@@ -125,7 +126,7 @@ const handleQuery = () => {
 const queryList = () => {
 	state.loading = true;
 	gridOptions.loading = true;
-	getClueList(state.queryParams)
+	getInviteCodeList(state.queryParams)
 		.then((res) => {
 			state.loading = false;
 			gridOptions.data = res.result.items ?? [];

+ 4 - 5
src/views/statistics/department/listDelay.vue

@@ -3,7 +3,7 @@
 		<div class="layout-padding-auto layout-padding-view pd20">
 			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline>
 				<el-form-item prop="crTime">
-					<statistical-time v-model="state.queryParams.crTime" @change="handleQuery" ref="statisticalTimeRef" :disabled="state.loading"/>
+					<statistical-time v-model="state.queryParams.crTime" @change="handleQuery" ref="statisticalTimeRef" :disabled="state.loading" />
 				</el-form-item>
 				<el-form-item label="来电主体" prop="TypeId">
 					<el-select v-model="state.queryParams.TypeId" placeholder="请选择来电主体" @change="handleQuery">
@@ -46,7 +46,7 @@
 						storage: true,
 					}"
 					showHeaderOverflow
-					:params="{ exportMethod: departmentDelayDetailExport, exportParams: requestParams }"
+					:params="{ exportMethod: departmentDelayDetailExportSingle, exportParams: requestParams }"
 				>
 					<vxe-column field="order.expiredStatusText" title="超期状态" width="90" align="center">
 						<template #default="{ row }">
@@ -121,7 +121,7 @@
 import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import { FormInstance } from 'element-plus';
 import { formatDate } from '@/utils/formatTime';
-import { departmentDelayDetailExport, departmentDelayDetailList } from '@/api/statistics/department';
+import { departmentDelayDetailExportSingle, departmentDelayDetailList } from '@/api/statistics/department';
 import Other from '@/utils/other';
 import { defaultDate } from '@/utils/constants';
 
@@ -131,7 +131,6 @@ const DelayDetailCom = defineAsyncComponent(() => import('@/views/business/delay
 const StatisticalTime = defineAsyncComponent(() => import('@/components/StatisticalTime/index.vue')); // 日期类型选择组件
 const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
 
-
 // 定义变量内容
 const ruleFormRef = ref<RefType>(); // 表单ref
 const state = reactive<any>({
@@ -140,7 +139,7 @@ const state = reactive<any>({
 		PageIndex: 1,
 		PageSize: 20,
 		TypeId: 0,
-		crTime:defaultDate,
+		crTime: defaultDate,
 	},
 	tableData: [{}], //表单
 	loading: false, // 加载