资产表格调整

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

Loading…
Cancel
Save