资产表格调整

main
项洋 2 weeks ago
parent b7bd2a7d4e
commit f47e65627d

File diff suppressed because it is too large Load Diff

@ -0,0 +1,30 @@
// 验证函数
export const validateName = (rule, value, callback) => {
if (!value) {
callback(new Error('请输入'))
} else {
callback()
}
}
export const validatePhone = (rule, value, callback) => {
const reg = /^1[3-9]\d{9}$|^0\d{2,3}-\d{7,8}$/
if (!value) {
callback(new Error('请输入联系方式'))
} else if (!reg.test(value)) {
callback(new Error('请输入正确的手机号码'))
} else {
callback()
}
}
export const validateEmail = (rule, value, callback) => {
const reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/
if (!value) {
callback()
} else if (!reg.test(value)) {
callback(new Error('请输入正确的邮箱地址'))
} else {
callback()
}
}

@ -19,10 +19,9 @@
<el-col :span="12">
<el-form-item label="所属单位" prop="ssdw">
<!-- <el-input v-model="ruleForm.ssdw" placeholder="请输入所属单位"></el-input> -->
<!-- @select="handleSelect" -->
<!-- :disabled="disabledTwo" -->
<el-autocomplete
v-model="ruleForm.ssdw"
disabled
:fetch-suggestions="querySearchAsync"
placeholder="请输入所属单位"
></el-autocomplete>
@ -33,13 +32,14 @@
<el-input
v-model="ruleForm.xcxmc"
placeholder="请输入小程序名称"
:disabled="pageType == 'change'"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="APPID" required>
<el-form-item label="APPID" prop="appId">
<el-input
v-model="ruleForm.appId"
style="width: 100%"
@ -48,7 +48,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="认证主体" required>
<el-form-item label="认证主体" prop="rzzt">
<el-input
v-model="ruleForm.rzzt"
style="width: 100%"
@ -61,28 +61,26 @@
<el-col :span="12">
<el-form-item
class="daoqitixingren"
prop="tyshxydm"
:rules="[
{
required: true,
pattern: /^[a-zA-Z0-9]{18}$/,
message: '请输入正确格式的18位统一社会信用代码',
trigger: 'change',
},
]"
label="统一社会信用代码"
required
>
<el-form-item
prop="tyshxydm"
:rules="[
{
pattern: /^[a-zA-Z0-9]{18}$/,
message: '请输入正确格式的18位统一社会信用代码',
trigger: 'blur',
},
]"
>
<el-input
v-model="ruleForm.tyshxydm"
placeholder="请输入统一信用代码"
></el-input>
</el-form-item>
<el-input
v-model="ruleForm.tyshxydm"
placeholder="请输入统一信用代码"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="小程序状态" required>
<el-form-item label="小程序状态" prop="state">
<el-select
v-model="ruleForm.state"
placeholder="请选择小程序状态"
@ -100,7 +98,7 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="账号原始ID" required>
<el-form-item label="账号原始ID" prop="ysId">
<el-input
v-model="ruleForm.ysId"
style="width: 100%"
@ -109,7 +107,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="小程序包状态" required>
<el-form-item label="小程序包状态" prop="packState">
<el-select
v-model="ruleForm.packState"
placeholder="请选择小程序包状态"
@ -126,7 +124,7 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="认证状态" required>
<el-form-item label="认证状态" prop="rzState">
<el-select
v-model="ruleForm.rzState"
placeholder="请选择认证状态"
@ -141,7 +139,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="认证时间" required>
<el-form-item label="认证时间" prop="rzsj">
<el-date-picker
v-model="ruleForm.rzsj"
type="date"
@ -155,7 +153,7 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="认证类型" required>
<el-form-item label="认证类型" prop="rzlx">
<el-select v-model="ruleForm.rzlx" placeholder="请选择认证类型">
<el-option
v-for="dict in gzh_rzlx"
@ -167,7 +165,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="icp备案状态" required>
<el-form-item label="icp备案状态" prop="icpState">
<el-input
v-model="ruleForm.icpState"
style="width: 100%"
@ -178,7 +176,7 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="域名白名单" required>
<el-form-item label="域名白名单" prop="ymbmd">
<el-input
v-model="ruleForm.ymbmd"
style="width: 100%"
@ -187,7 +185,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="服务类目" required>
<el-form-item label="服务类目" prop="fwlm">
<el-input
v-model="ruleForm.fwlm"
style="width: 100%"
@ -198,27 +196,28 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="行业电子邮箱" required>
<el-form-item
prop="hydzyx"
:rules="[
{
type: 'email',
message: '请输入正确的邮箱地址',
trigger: ['blur', 'change'],
},
]"
>
<el-input
v-model="ruleForm.hydzyx"
style="width: 100%"
placeholder="请输入行业电子邮箱"
></el-input>
</el-form-item>
<el-form-item
prop="hydzyx"
label="行业电子邮箱"
required
:rules="[
{
type: 'email',
required: true,
message: '请输入正确的邮箱地址',
trigger: ['change', 'change'],
},
]"
>
<el-input
v-model="ruleForm.hydzyx"
style="width: 100%"
placeholder="请输入行业电子邮箱"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属行业" required>
<el-form-item label="所属行业" prop="sshy">
<el-select v-model="ruleForm.sshy" placeholder="请选择所属行业">
<el-option
v-for="dict in app_sshy"
@ -232,7 +231,7 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="重点行业" required>
<el-form-item label="重点行业" prop="zdhy">
<el-select v-model="ruleForm.zdhy" placeholder="请选择重点行业">
<el-option
v-for="dict in app_zdhy"
@ -244,7 +243,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="行政区划" required>
<el-form-item label="行政区划" prop="xzqh">
<el-select v-model="ruleForm.xzqh" placeholder="请选择行政区划">
<el-option
v-for="dict in app_xzqh"
@ -258,7 +257,7 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="系统责任人" required>
<el-form-item label="系统责任人" prop="xtzrr">
<el-input
v-model="ruleForm.xtzrr"
style="width: 100%"
@ -267,49 +266,51 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="系统责任人电话" required>
<el-form-item
prop="xtzrrdh"
:rules="[
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: '请输入正确的手机号码',
trigger: 'blur',
},
]"
>
<el-input
v-model="ruleForm.xtzrrdh"
style="width: 100%"
placeholder="请输入系统责任人电话"
></el-input>
</el-form-item>
<el-form-item
prop="xtzrrdh"
label="系统责任人电话"
required
:rules="[
{
required: true,
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: '请输入正确的手机号码',
trigger: 'change',
},
]"
>
<el-input
v-model="ruleForm.xtzrrdh"
style="width: 100%"
placeholder="请输入系统责任人电话"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="系统责任人邮箱" required>
<el-form-item
prop="xtzrryx"
:rules="[
{
type: 'email',
message: '请输入正确的邮箱地址',
trigger: ['blur', 'change'],
},
]"
>
<el-input
v-model="ruleForm.xtzrryx"
style="width: 100%"
placeholder="请输入系统责任人邮箱"
></el-input>
</el-form-item>
<el-form-item
prop="xtzrryx"
label="系统责任人邮箱"
required
:rules="[
{
required: true,
type: 'email',
message: '请输入正确的邮箱地址',
trigger: ['change', 'blur'],
},
]"
>
<el-input
v-model="ruleForm.xtzrryx"
style="width: 100%"
placeholder="请输入系统责任人邮箱"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="系统责任人地址" required>
<el-form-item label="系统责任人地址" prop="xtzrrdz">
<el-input
v-model="ruleForm.xtzrrdz"
style="width: 100%"
@ -320,7 +321,7 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="引入插件APPID" required>
<el-form-item label="引入插件APPID" prop="yycjAppid">
<el-input
v-model="ruleForm.yycjAppid"
style="width: 100%"
@ -329,7 +330,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="引用插件(开发者)" required>
<el-form-item label="引用插件(开发者)" prop="yycjKfz">
<el-input
v-model="ruleForm.yycjKfz"
style="width: 100%"
@ -357,7 +358,7 @@
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="系统简介" required>
<el-form-item label="系统简介" prop="xtjj">
<el-input
type="textarea"
resize="none"
@ -368,38 +369,84 @@
</el-form-item>
</el-col>
</el-row>
<el-row
style="display: flex; justify-content: center"
v-if="(pageType == 'change' || pageType == 'add') && !audit"
>
<el-button type="danger" @click="sendBack"></el-button>
<el-button type="primary" @click="newAssets" :loading="loading"
>提交</el-button
>
</el-row>
</el-form>
<el-row
style="display: flex; justify-content: center;"
v-if="pageType !== 'look'"
>
<el-button type="danger" @click="sendBack"></el-button>
<el-button type="primary" @click="newAssets" :loading="loading"
>保存</el-button
<el-row style="display: flex; justify-content: center" v-if="audit">
<el-button type="danger" :disabled="false" @click="btnReject"
>不通过</el-button
>
<el-button
type="primary"
:disabled="false"
@click="btnPass"
:loading="loading"
>通过</el-button
>
</el-row>
<el-row
style="display: flex; justify-content: center;"
v-if="pageType === 'look'"
style="display: flex; justify-content: center"
v-if="pageType === 'look' && !audit"
>
<el-button type="primary" @click="sendBack"></el-button>
</el-row>
</div>
</div>
<my-dialog
title="提示"
ref="liebiaoDialogRef"
class="taskDialogBox"
width="40%"
>
<el-row style="display: flex; justify-content: center">
<el-col :span="21">
<el-form
:model="dialogruleForm"
:rules="dialogruleFormrules"
ref="dialogruleFormRef"
label-width="100px"
>
<el-form-item label="不通过原因:" prop="auditYy">
<el-input
v-model="dialogruleForm.auditYy"
placeholder="请输入不通过原因"
></el-input>
</el-form-item>
<el-form-item class="newTask-form-item">
<el-button @click="resetForm"></el-button>
<el-button type="primary" @click="submitForm"></el-button>
</el-form-item>
</el-form>
</el-col>
<el-col :span="6"></el-col>
</el-row>
</my-dialog>
</div>
</template>
<script setup>
import { ref, reactive, onMounted, nextTick } from "vue";
import { ref, reactive, onMounted, nextTick, computed } from "vue";
import { useRoute, useRouter } from "vue-router";
import useUserStore from "@/store/modules/user";
import { ElMessage } from "element-plus";
import {
assetMiniPrograms,
miniProgramsInfo,
unitAllList,
miniProgramsLookInfo,
miniProgramsUnitEdit,
miniProgramsAudit,
} from "@/api/auditPagesApi/index";
import equalToPassword from "@/views/components/assetsType/mainx.js";
import myDialog from "@/views/components/myDialog/index.vue";
import { useDict } from "@/utils/dict";
const {
app_xzqh,
app_sshy,
@ -417,54 +464,85 @@ const {
"gzh_rzlx",
"email_state"
);
const route = useRoute();
const router = useRouter();
const ruleFormRef = ref(null);
const userStore = useUserStore();
// Data
const ruleForm = reactive({});
//
const pageType = computed(() => route.query.pageType || "");
const id = computed(() => route.params.id || route.query.id);
const audit = computed(() => route.query.audit === "true");
const isModdle = computed(() => route.query.isModdle === "true");
const name = computed(() => route.query.name || "");
const queryData = computed(() => {
try {
return JSON.parse(route.query.queryData || "{}");
} catch {
return {};
}
});
const ruleFormRef = ref(null);
const dialogruleFormRef = ref(null);
const liebiaoDialogRef = ref(null);
const loading = ref(false);
const disabled = ref(false);
const pageType = ref(route.query.pageType || "");
const id = ref(route.query.id || "");
const routeName = route.query.name;
const queryData = ref(route.query.queryData || {});
// Rules
const changeSateTetx = (rule, value, callback) => {
if (ruleForm.state === 7 && !value) {
callback(new Error("请填写"));
} else {
callback();
}
};
const ruleForm = reactive({});
const dialogruleForm = reactive({
auditYy: "",
});
const rules = reactive({
bfyy: [{ validator: changeSateTetx, trigger: "blur" }],
ssdw: [
{ required: true, message: "所属单位不能为空", trigger: "blur" },
{ required: true, validator: equalToPassword, trigger: "change" },
],
ssdw: [{ required: true, message: "所属单位不能为空", trigger: "blur" }],
xcxmc: [{ required: true, message: "小程序名称不能为空", trigger: "blur" }],
// ... rest of your rules
});
const dialogruleFormrules = reactive({
auditYy: [{ required: true, message: "请输入", trigger: "blur" }],
});
// Methods
const changeState = (e) => {
if (e !== 7) {
function changeSateTetx(rule, value, callback) {
if (ruleForm.state == 7 && !value) {
callback(new Error("请填写"));
} else {
callback();
}
}
function changeState(e) {
if (e != 7) {
ruleForm.bfyy = "";
}
};
}
const getInfo = async (id) => {
async function getInfo(id) {
try {
const res = await miniProgramsInfo(id);
Object.assign(ruleForm, res.data);
await nextTick();
ruleFormRef.value?.clearValidate();
} catch (error) {
console.error("获取信息失败:", error);
console.error(error);
}
};
}
const querySearchAsync = async (queryString, cb) => {
async function getInfoTwo(id) {
try {
const res = await miniProgramsLookInfo(id);
Object.assign(ruleForm, res.data);
await nextTick();
ruleFormRef.value?.clearValidate();
} catch (error) {
console.error(error);
}
}
async function querySearchAsync(queryString, cb) {
try {
const res = await unitAllList({ nickName: queryString });
const results = res.data.map((item) => ({
@ -474,19 +552,16 @@ const querySearchAsync = async (queryString, cb) => {
}));
cb(results);
} catch (error) {
console.error(error);
cb([]);
}
};
}
const handleSelect = (item) => {
function handleSelect(item) {
ruleForm.tyshxydm = item.tyshxydm;
};
const sendBack = () => {
router.push({ name: routeName, params: queryData });
};
}
const newAssets = async () => {
async function newAssets() {
if (!ruleFormRef.value) return;
try {
@ -494,49 +569,137 @@ const newAssets = async () => {
loading.value = true;
if (pageType.value === "change") {
await assetMiniPrograms("put", ruleForm);
ElMessage.success("修改成功");
router.push({
name: "Program",
params: queryData.value,
});
await miniProgramsUnitEdit(ruleForm);
ElMessage.success("提交成功,待管理员审核通过后完成修改");
} else {
ruleForm.xzType = 1;
await assetMiniPrograms("post", ruleForm);
ElMessage.success("添加成功");
ElMessage.success("提交成功,待管理员审核通过后完成新增");
}
router.push({
name: name.value,
query: queryData.value,
});
} catch (error) {
console.error(error);
} finally {
loading.value = false;
}
}
function sendBack() {
router.push({
name: name.value,
query: queryData.value,
});
}
function btnReject() {
liebiaoDialogRef.value?.open();
}
function resetForm() {
dialogruleForm.auditYy = "";
liebiaoDialogRef.value?.close();
}
async function submitForm() {
if (!dialogruleFormRef.value) return;
try {
await dialogruleFormRef.value.validate();
const tijioaobj = {
auditState: "3",
auditYy: dialogruleForm.auditYy,
currentId: Number(id.value),
xzType: 1,
};
const res = await miniProgramsAudit(tijioaobj);
if (res.code === 200) {
ElMessage.success("审核驳回");
router.push({
name: "Program",
params: queryData.value,
name: name.value,
query: queryData.value,
});
}
} catch (error) {
console.error("操作失败:", error);
console.error(error);
}
}
async function btnPass() {
try {
loading.value = true;
await miniProgramsAudit({
currentId: Number(id.value),
auditState: "2",
xzType: 1,
});
ElMessage.success("审核通过");
router.push({
name: name.value,
query: queryData.value,
});
} catch (error) {
console.error(error);
} finally {
loading.value = false;
}
};
}
// Lifecycle hooks
onMounted(async () => {
if (pageType.value === "look") {
await getInfo(id.value);
disabled.value = true;
nextTick(() => {
const inputElements = document.querySelectorAll(".el-input__inner");
const textareaInputElements = document.querySelectorAll(
".el-textarea__inner"
);
inputElements.forEach((input) => {
input.placeholder = "";
// Lifecycle
onMounted(() => {
if (isModdle.value) {
if (pageType.value === "look") {
getInfoTwo(id.value);
disabled.value = true;
nextTick(() => {
const inputElements = document.querySelectorAll(".el-input__inner");
const textareaInputElements = document.querySelectorAll(
".el-textarea__inner"
);
inputElements.forEach((input) => {
input.placeholder = "";
});
textareaInputElements.forEach((input) => {
input.placeholder = "";
});
});
textareaInputElements.forEach((input) => {
input.placeholder = "";
} else if (pageType.value === "change") {
getInfoTwo(id.value);
disabled.value = false;
}
if (audit.value) {
disabled.value = true;
}
} else {
if (pageType.value === "look") {
getInfo(id.value);
disabled.value = true;
nextTick(() => {
const inputElements = document.querySelectorAll(".el-input__inner");
const textareaInputElements = document.querySelectorAll(
".el-textarea__inner"
);
inputElements.forEach((input) => {
input.placeholder = "";
});
textareaInputElements.forEach((input) => {
input.placeholder = "";
});
});
});
} else if (pageType.value === "change") {
await getInfo(id.value);
disabled.value = false;
} else if (pageType.value === "change") {
getInfo(id.value);
disabled.value = false;
}
if (audit.value) {
disabled.value = true;
}
}
if (pageType.value === "add") {
ruleForm.ssdw = userStore.nickName;
}
loading.value = false;
});
</script>

Loading…
Cancel
Save