Compare commits
15 Commits
acc041e1be
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
66411b4d6a | ||
|
|
c649d32668 | ||
|
|
c4fb63f03f | ||
| 3b93161902 | |||
|
|
728d31d10f | ||
| d2509783a0 | |||
| 26c6328512 | |||
| 25b7dded91 | |||
| 588836efd0 | |||
| 5255ae5d97 | |||
| f61688ef8e | |||
| 90b06fb4cd | |||
| 39a40d26e9 | |||
| d6def166a7 | |||
| b727b76645 |
@@ -11,7 +11,6 @@ module.exports = {
|
|||||||
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
|
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
|
||||||
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
|
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
|
||||||
"no-unused-vars": "warn",
|
"no-unused-vars": "warn",
|
||||||
"vue/no-parsing-error": [2, { "x-invalid-end-tag": false }],
|
"vue/no-parsing-error": [2, { "x-invalid-end-tag": false }]
|
||||||
"vue/script-setup-uses-vars": 1
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
30
README.md
30
README.md
@@ -1,24 +1,32 @@
|
|||||||
# sgt_ca_app
|
# 施工图单页应用前端代码
|
||||||
|
- 基于vue3 vue-router antdv
|
||||||
|
- 约定式路由:
|
||||||
|
|
||||||
|
`views/xxx.vue`文件对应路由`/xxx/`
|
||||||
|
|
||||||
|
`views/xxx/index.vue`对应子路由`/xxx/`默认状态
|
||||||
|
|
||||||
|
`views/xxx/yyy.vue`对应子路由`/xxx/yyy`
|
||||||
|
- 路由采用client history模式
|
||||||
|
|
||||||
## Project setup
|
- 主要界面功能
|
||||||
|
|
||||||
|
个人和企业数字证书申领,电子印章申领,数字证书审核,审图人员申请临时短信锁,数字证书数量证明上传。
|
||||||
|
临时人员添加,
|
||||||
|
|
||||||
|
## 项目初始化
|
||||||
```
|
```
|
||||||
npm install
|
npm install
|
||||||
```
|
```
|
||||||
|
|
||||||
### Compiles and hot-reloads for development
|
### 开发项目
|
||||||
```
|
```
|
||||||
npm run serve
|
npm run serve
|
||||||
```
|
```
|
||||||
|
|
||||||
### Compiles and minifies for production
|
### 发布打包项目
|
||||||
```
|
```
|
||||||
npm run build
|
npm run build
|
||||||
```
|
```
|
||||||
|
将项目文件放置到施工图项目/spa目录下
|
||||||
|
|
||||||
### Lints and fixes files
|
|
||||||
```
|
|
||||||
npm run lint
|
|
||||||
```
|
|
||||||
|
|
||||||
### Customize configuration
|
|
||||||
See [Configuration Reference](https://cli.vuejs.org/config/).
|
|
||||||
|
|||||||
19130
package-lock.json
generated
19130
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -11,6 +11,7 @@
|
|||||||
"@ant-design-vue/use": "*",
|
"@ant-design-vue/use": "*",
|
||||||
"ant-design-vue": "^2.1.2",
|
"ant-design-vue": "^2.1.2",
|
||||||
"axios": "^0.21.1",
|
"axios": "^0.21.1",
|
||||||
|
"chokidar": "^3.5.2",
|
||||||
"core-js": "^3.6.5",
|
"core-js": "^3.6.5",
|
||||||
"vue": "^3.0.11",
|
"vue": "^3.0.11",
|
||||||
"vue-router": "^4.0.6"
|
"vue-router": "^4.0.6"
|
||||||
|
|||||||
112
src/components/UnitApply/config.js
Normal file
112
src/components/UnitApply/config.js
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
import regex from "@/services/regex";
|
||||||
|
|
||||||
|
const checkSealList = async (rule, sealList) => {
|
||||||
|
if (!sealList || sealList.length == 0) {
|
||||||
|
return Promise.reject("必须上传法人电子印章申请表");
|
||||||
|
}
|
||||||
|
if (sealList.some(s => !s.sealName || !s.sealApplyFileId)) {
|
||||||
|
return Promise.reject("必须填写法人电子印章名称,并上传对应申请表");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const rules = {
|
||||||
|
operatorId: [
|
||||||
|
{ required: true, message: "请输入18位身份证号码", trigger: "blur" },
|
||||||
|
{
|
||||||
|
pattern: regex.IdCardNo,
|
||||||
|
message: "输入正确的18位身份证号码",
|
||||||
|
trigger: "blur"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
operatorName: [
|
||||||
|
{ required: true, message: "请输入经办人姓名", trigger: "blur" }
|
||||||
|
],
|
||||||
|
unitName: [{ required: true, message: "请选择企业名称", trigger: "change" }],
|
||||||
|
unitType: [{ required: true, message: "请选择企业类型", trigger: "change" }],
|
||||||
|
operatorPhone: [
|
||||||
|
{ required: true, message: "请输入你的手机号码", trigger: "blur" },
|
||||||
|
{
|
||||||
|
pattern: regex.Phone,
|
||||||
|
message: "请输入正确的11位手机号码",
|
||||||
|
trigger: "blur"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
tydm: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入企业统一社会信用代码",
|
||||||
|
trigger: "blur"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pattern: regex.Tydm,
|
||||||
|
message: "请输入正确的18位统一社会信用代码",
|
||||||
|
trigger: "blur"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
address: [{ required: true, message: "请输入邮寄信息", trigger: "blur" }],
|
||||||
|
code: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请选择省市区信息",
|
||||||
|
type: "string",
|
||||||
|
trigger: "blur",
|
||||||
|
transform: v => v && v.join("-")
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pattern: /\d+-\d+-\d+/,
|
||||||
|
message: "信息不完整",
|
||||||
|
trigger: "blur",
|
||||||
|
transform: v => v && v.join("-")
|
||||||
|
}
|
||||||
|
],
|
||||||
|
loaPicId: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请上传授权承诺书照片",
|
||||||
|
trigger: "change",
|
||||||
|
type: "number"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
idCardFrontPicId: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请上传身份证正面照片",
|
||||||
|
trigger: "change",
|
||||||
|
type: "number"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
idCardBackPicId: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请上传身份证背面照片",
|
||||||
|
trigger: "change",
|
||||||
|
type: "number"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
businessLicensePicId: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请上营业执照照片",
|
||||||
|
trigger: "change",
|
||||||
|
type: "number"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
sealApplyPicId: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请上电子印章申请表",
|
||||||
|
trigger: "change",
|
||||||
|
type: "number"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
phoneCode: [
|
||||||
|
{ required: true, message: "请输入短信验证码", trigger: "change" }
|
||||||
|
],
|
||||||
|
sealApplyList: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
trigger: "change",
|
||||||
|
validator: checkSealList
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { createRouter, createWebHashHistory } from "vue-router";
|
import { createRouter, createWebHistory } from "vue-router";
|
||||||
const files = require.context("@/views", true, /\.vue$/);
|
const files = require.context("@/views", true, /\.vue$/);
|
||||||
let pages = [];
|
let pages = [];
|
||||||
const genRoutes = [];
|
const genRoutes = [];
|
||||||
@@ -54,8 +54,7 @@ pages
|
|||||||
|
|
||||||
const routes = [...genRoutes];
|
const routes = [...genRoutes];
|
||||||
const router = createRouter({
|
const router = createRouter({
|
||||||
history: createWebHashHistory(),
|
history: createWebHistory("/spa"),
|
||||||
routes
|
routes
|
||||||
});
|
});
|
||||||
|
|
||||||
export default router;
|
export default router;
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<a-date-picker
|
<a-date-picker
|
||||||
v-model:value="formModel.expireTime"
|
v-model:value="formModel.expireTime"
|
||||||
placeholder="请选择过期时间"
|
placeholder="请选择过期时间"
|
||||||
valueFormat="YYYY-MM-DD HH:mm:ss"
|
valueFormat="YYYY-MM-DD"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="证明文件" name="fileId" v-bind="validateInfos.fileId">
|
<a-form-item label="证明文件" name="fileId" v-bind="validateInfos.fileId">
|
||||||
@@ -29,73 +29,88 @@
|
|||||||
</a-form>
|
</a-form>
|
||||||
</template>
|
</template>
|
||||||
<style></style>
|
<style></style>
|
||||||
<script setup>
|
<script>
|
||||||
import Upload from "@/components/Upload";
|
import Upload from "@/components/Upload";
|
||||||
import regex from "@/services/regex";
|
import regex from "@/services/regex";
|
||||||
import { post } from "@/services/http";
|
import { post } from "@/services/http";
|
||||||
import { ref, toRaw } from "@vue/reactivity";
|
import { reactive, ref, toRaw } from "@vue/reactivity";
|
||||||
import { message, Form } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
const useForm = Form.useForm;
|
import { useForm } from "@ant-design-vue/use";
|
||||||
|
export default {
|
||||||
let formModel = ref({
|
components: {
|
||||||
name: "",
|
Upload
|
||||||
idCard: "",
|
},
|
||||||
phone: "",
|
setup() {
|
||||||
expireTime: "",
|
let formModel = reactive({
|
||||||
fileId: 0
|
name: "",
|
||||||
});
|
idCard: "",
|
||||||
let rules = ref({
|
phone: "",
|
||||||
name: [
|
expireTime: "",
|
||||||
{
|
fileId: 0
|
||||||
required: true,
|
});
|
||||||
message: "输入申请人姓名",
|
let rules = reactive({
|
||||||
trigger: "blur"
|
name: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "输入申请人姓名",
|
||||||
|
trigger: "blur"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
idCard: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "输入申请人身份证号码",
|
||||||
|
trigger: "blur"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pattern: regex.IdCardNo,
|
||||||
|
message: "输入正确的18位身份证号码",
|
||||||
|
trigger: "blur"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
phone: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "输入申请人手机号码",
|
||||||
|
trigger: "blur"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
expireTime: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "输入过期时间",
|
||||||
|
trigger: "blur"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
fileId: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
type: "number",
|
||||||
|
message: "上传申请文件",
|
||||||
|
trigger: "blur"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
const { resetFields, validate, validateInfos } = useForm(formModel, rules);
|
||||||
|
async function onSubmit() {
|
||||||
|
await validate();
|
||||||
|
console.log(toRaw(formModel));
|
||||||
|
var res = await post("/api2/ca/CensorSmsCodeApplyUpload", {
|
||||||
|
...formModel
|
||||||
|
});
|
||||||
|
if (res.errorCode != 0) {
|
||||||
|
message.error(res.errorMsg);
|
||||||
|
} else {
|
||||||
|
message.success("操作成功");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
return {
|
||||||
idCard: [
|
onSubmit,
|
||||||
{
|
validate,
|
||||||
required: true,
|
validateInfos,
|
||||||
message: "输入申请人身份证号码",
|
rules,
|
||||||
trigger: "blur"
|
formModel
|
||||||
},
|
};
|
||||||
{
|
|
||||||
pattern: regex.IdCardNo,
|
|
||||||
message: "输入正确的18位身份证号码",
|
|
||||||
trigger: "blur"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
phone: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: "输入申请人手机号码",
|
|
||||||
trigger: "blur"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
expireTime: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: "输入过期时间",
|
|
||||||
trigger: "blur"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
fileId: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
type: "number",
|
|
||||||
message: "上传申请文件",
|
|
||||||
trigger: "blur"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
});
|
|
||||||
const { resetFields, validate, validateInfos } = useForm(formModel, rules);
|
|
||||||
async function onSubmit() {
|
|
||||||
await validate();
|
|
||||||
console.log(toRaw(formModel));
|
|
||||||
var res = await post("/api2/ca/CensorSmsCodeApplyUpload", formModel.value);
|
|
||||||
if (res.errorCode != 0) {
|
|
||||||
message.error(res.errorMsg);
|
|
||||||
} else {
|
|
||||||
message.success("操作成功");
|
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -14,6 +14,18 @@
|
|||||||
<a-button type="primary">
|
<a-button type="primary">
|
||||||
<router-link to="/ca/sealapply"> 电子印章申请入口 </router-link>
|
<router-link to="/ca/sealapply"> 电子印章申请入口 </router-link>
|
||||||
</a-button>
|
</a-button>
|
||||||
|
<div>
|
||||||
|
<a-space :size="size">
|
||||||
|
<a-button>
|
||||||
|
<a
|
||||||
|
class="linka"
|
||||||
|
target="_blank"
|
||||||
|
href="https://zsfwpt.icinfo.cn/index"
|
||||||
|
>企业数字证书延期入口</a
|
||||||
|
>
|
||||||
|
</a-button>
|
||||||
|
</a-space>
|
||||||
|
</div>
|
||||||
</a-space>
|
</a-space>
|
||||||
</div>
|
</div>
|
||||||
<router-view></router-view>
|
<router-view></router-view>
|
||||||
|
|||||||
@@ -145,11 +145,15 @@ import Upload from "@/components/Upload";
|
|||||||
import { onMounted, reactive, ref, inject } from "vue";
|
import { onMounted, reactive, ref, inject } from "vue";
|
||||||
import { get, post } from "@/services/http";
|
import { get, post } from "@/services/http";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
import { QuestionCircleOutlined } from "@ant-design/icons-vue";
|
import {
|
||||||
|
QuestionCircleOutlined,
|
||||||
|
DownloadOutlined
|
||||||
|
} from "@ant-design/icons-vue";
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
Upload,
|
Upload,
|
||||||
QuestionCircleOutlined
|
QuestionCircleOutlined,
|
||||||
|
DownloadOutlined
|
||||||
},
|
},
|
||||||
setup() {
|
setup() {
|
||||||
const useReload = inject("reload");
|
const useReload = inject("reload");
|
||||||
|
|||||||
@@ -18,18 +18,14 @@
|
|||||||
</a-result>
|
</a-result>
|
||||||
<a-spin v-else :spinning="spining">
|
<a-spin v-else :spinning="spining">
|
||||||
<div v-if="false" class="mail-tip">
|
<div v-if="false" class="mail-tip">
|
||||||
<p>
|
<p>请将书面申请材料不包括电子印章申请表邮寄至</p>
|
||||||
请将书面申请材料不包括电子印章申请表邮寄至
|
|
||||||
</p>
|
|
||||||
<p>浙江省 杭州市 西湖区 莫干山路18号 蓝天商务中心 9楼</p>
|
<p>浙江省 杭州市 西湖区 莫干山路18号 蓝天商务中心 9楼</p>
|
||||||
<p>
|
<p>收件人:渠道部 联系电话:400-888-4636</p>
|
||||||
收件人:渠道部 联系电话:400-888-4636
|
|
||||||
</p>
|
|
||||||
<p>快递费用由申请单位自理</p>
|
<p>快递费用由申请单位自理</p>
|
||||||
</div>
|
</div>
|
||||||
<a-form :label-col="{ span: 9 }" :wrapper-col="{ span: 15 }">
|
<a-form :label-col="{ span: 9 }" :wrapper-col="{ span: 15 }">
|
||||||
<a-row>
|
<a-row>
|
||||||
<a-col :span="11">
|
<a-col :span="12">
|
||||||
<a-form-item label="企业名称" v-bind="validateInfos.unitName">
|
<a-form-item label="企业名称" v-bind="validateInfos.unitName">
|
||||||
<a-select
|
<a-select
|
||||||
v-model:value="modelRef.unitName"
|
v-model:value="modelRef.unitName"
|
||||||
@@ -48,15 +44,17 @@
|
|||||||
<a-form-item label="统一社会信用代码" v-bind="validateInfos.tydm">
|
<a-form-item label="统一社会信用代码" v-bind="validateInfos.tydm">
|
||||||
<a-input
|
<a-input
|
||||||
v-model:value="modelRef.tydm"
|
v-model:value="modelRef.tydm"
|
||||||
readonly
|
:readonly="readonly"
|
||||||
:disabled="disabledFeild"
|
:disabled="disabledFeild"
|
||||||
placeholder="根据企业名称自动获取"
|
placeholder="根据企业名称自动获取"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="申请单位类型" v-bind="validateInfos.unitType">
|
<a-form-item label="申请单位类型" v-bind="validateInfos.unitType">
|
||||||
<a-radio-group v-model:value="modelRef.unitType">
|
<a-radio-group v-model:value="modelRef.unitType">
|
||||||
<a-radio value="2">勘察</a-radio>
|
|
||||||
<a-radio value="1">设计</a-radio>
|
<a-radio value="1">设计</a-radio>
|
||||||
|
<a-radio value="2">勘察</a-radio>
|
||||||
|
<a-radio value="3">混凝土</a-radio>
|
||||||
|
<a-radio value="4">其他</a-radio>
|
||||||
</a-radio-group>
|
</a-radio-group>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="经办人姓名" v-bind="validateInfos.operatorName">
|
<a-form-item label="经办人姓名" v-bind="validateInfos.operatorName">
|
||||||
@@ -107,24 +105,42 @@
|
|||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="11">
|
<a-col :span="12">
|
||||||
<a-form-item label="授权委托书" v-bind="validateInfos.loaPicId">
|
<div class="relative">
|
||||||
<input v-model="modelRef.loaPicId" hidden />
|
<a-form-item label="授权委托书" v-bind="validateInfos.loaPicId">
|
||||||
<a-upload
|
<input v-model="modelRef.loaPicId" hidden />
|
||||||
accept="application/pdf"
|
<a-upload
|
||||||
action="/api2/upload/uploadfile"
|
accept="application/pdf"
|
||||||
v-model:fileList="loaPicFileList"
|
action="/api2/upload/uploadfile"
|
||||||
:beforeUpload="
|
v-model:fileList="loaPicFileList"
|
||||||
(file, fileList) => beforeUpload(file, fileList, true)
|
:beforeUpload="
|
||||||
"
|
(file, fileList) => beforeUpload(file, fileList, true)
|
||||||
@change="info => handleChange(info, 'loaPicId')"
|
"
|
||||||
>
|
@change="info => handleChange(info, 'loaPicId')"
|
||||||
<a-button block :disabled="disabledUpload">
|
>
|
||||||
<UploadOutlined />
|
<a-button block :disabled="disabledUpload">
|
||||||
点击{{ modelRef.loaPicId ? "替换" : "上传" }}
|
<UploadOutlined />
|
||||||
</a-button>
|
点击{{ modelRef.loaPicId ? "替换" : "上传" }}
|
||||||
</a-upload>
|
</a-button>
|
||||||
</a-form-item>
|
</a-upload>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item class="tip">
|
||||||
|
<a-popover title="说明">
|
||||||
|
<template #content>
|
||||||
|
<p>上传的文件pdf大小不得超过2Mb</p>
|
||||||
|
</template>
|
||||||
|
<a-button type="link"
|
||||||
|
><a
|
||||||
|
href="http://183.136.157.18:7308/stgl/sources/202102/授权书模板.doc"
|
||||||
|
download="授权书模板.doc"
|
||||||
|
target="_blank"
|
||||||
|
><DownloadOutlined />模板</a
|
||||||
|
></a-button
|
||||||
|
>
|
||||||
|
</a-popover>
|
||||||
|
</a-form-item>
|
||||||
|
</div>
|
||||||
|
|
||||||
<a-form-item
|
<a-form-item
|
||||||
label="身份证正面照"
|
label="身份证正面照"
|
||||||
v-bind="validateInfos.idCardFrontPicId"
|
v-bind="validateInfos.idCardFrontPicId"
|
||||||
@@ -182,22 +198,51 @@
|
|||||||
</a-button>
|
</a-button>
|
||||||
</a-upload>
|
</a-upload>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="电子印章申请">
|
<div class="relative">
|
||||||
<a-button type="dashed" style="width: 100%" @click="addSealApply">
|
<a-form-item
|
||||||
<PlusOutlined />
|
label="电子印章申请"
|
||||||
添加电子印章
|
v-bind="validateInfos.sealApplyList"
|
||||||
</a-button>
|
>
|
||||||
</a-form-item>
|
<a-button
|
||||||
|
type="dashed"
|
||||||
|
style="width: 100%"
|
||||||
|
@click="addSealApply"
|
||||||
|
>
|
||||||
|
<PlusOutlined />
|
||||||
|
添加电子印章
|
||||||
|
</a-button>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item class="tip">
|
||||||
|
<a-button type="link"
|
||||||
|
><a
|
||||||
|
href="http://183.136.157.18:7308/stgl/sources/202102/附件1:法人电子印章启用申请表.docx"
|
||||||
|
download="法人电子印章启用申请表.docx"
|
||||||
|
target="_blank"
|
||||||
|
><DownloadOutlined />模板</a
|
||||||
|
></a-button
|
||||||
|
>
|
||||||
|
</a-form-item>
|
||||||
|
</div>
|
||||||
|
|
||||||
<template
|
<template
|
||||||
v-for="(sealApply, index) in modelRef.sealApplyList"
|
v-for="(sealApply, index) in modelRef.sealApplyList"
|
||||||
:key="index"
|
:key="index"
|
||||||
>
|
>
|
||||||
<a-form-item :wrapper-col="{ span: 15, offset: 9 }">
|
<a-form-item
|
||||||
|
:wrapper-col="{ span: 15, offset: 9 }"
|
||||||
|
class="relative"
|
||||||
|
>
|
||||||
<a-input
|
<a-input
|
||||||
v-model:value="modelRef.sealApplyList[index].sealName"
|
v-model:value="modelRef.sealApplyList[index].sealName"
|
||||||
:disabled="disabledFeild"
|
:disabled="disabledFeild"
|
||||||
placeholder="印章名称"
|
placeholder="印章名称"
|
||||||
/>
|
/>
|
||||||
|
<MinusCircleOutlined
|
||||||
|
v-if="modelRef.sealApplyList.length > 1"
|
||||||
|
class="dynamic-delete-button"
|
||||||
|
:disabled="modelRef.sealApplyList.length === 1"
|
||||||
|
@click="removeApply(sealApply)"
|
||||||
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item :wrapper-col="{ span: 15, offset: 9 }">
|
<a-form-item :wrapper-col="{ span: 15, offset: 9 }">
|
||||||
<input
|
<input
|
||||||
@@ -225,35 +270,28 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
</template>
|
</template>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="2">
|
|
||||||
<a-form-item>
|
|
||||||
<a-popover title="说明">
|
|
||||||
<template #content>
|
|
||||||
<p>上传的文件pdf大小不得超过2Mb</p>
|
|
||||||
</template>
|
|
||||||
<a-button type="link"
|
|
||||||
><a
|
|
||||||
href="http://183.136.157.18:7308/stgl/sources/202102/授权书模板.doc"
|
|
||||||
download="授权书模板.doc"
|
|
||||||
target="_blank"
|
|
||||||
><DownloadOutlined />模板</a
|
|
||||||
></a-button
|
|
||||||
>
|
|
||||||
</a-popover>
|
|
||||||
</a-form-item>
|
|
||||||
</a-col>
|
|
||||||
</a-row>
|
</a-row>
|
||||||
<a-form-item :wrapper-col="{ span: 12, offset: 10 }">
|
<a-form-item :wrapper-col="{ span: 12, offset: 10 }">
|
||||||
<a-button
|
<a-popconfirm
|
||||||
v-if="progressingId"
|
title="请确认统一信用代码是否正确"
|
||||||
type="primary"
|
ok-text="已确认"
|
||||||
@click="onSubmit"
|
cancel-text="取消"
|
||||||
:loading="loading"
|
:visible="popvisible"
|
||||||
>查询</a-button
|
@visibleChange="handleVisibleChange"
|
||||||
>
|
@confrim="onSubmit"
|
||||||
<a-button v-else type="primary" @click="onSubmit" :loading="loading"
|
@cancel="cancel"
|
||||||
>提交</a-button
|
|
||||||
>
|
>
|
||||||
|
<a-button
|
||||||
|
v-if="progressingId"
|
||||||
|
type="primary"
|
||||||
|
@click="onSubmit"
|
||||||
|
:loading="loading"
|
||||||
|
>查询</a-button
|
||||||
|
>
|
||||||
|
<a-button v-else type="primary" @click="onSubmit" :loading="loading"
|
||||||
|
>提交</a-button
|
||||||
|
>
|
||||||
|
</a-popconfirm>
|
||||||
<a-button style="margin-left: 10px" @click="toggleDrawer"
|
<a-button style="margin-left: 10px" @click="toggleDrawer"
|
||||||
>历史提交记录</a-button
|
>历史提交记录</a-button
|
||||||
>
|
>
|
||||||
@@ -278,7 +316,7 @@
|
|||||||
<template #title>
|
<template #title>
|
||||||
{{ unitApply.unitName
|
{{ unitApply.unitName
|
||||||
}}<a-tag
|
}}<a-tag
|
||||||
style="margin-left:4px;"
|
style="margin-left: 4px"
|
||||||
:color="status[unitApply.status].color"
|
:color="status[unitApply.status].color"
|
||||||
>{{ status[unitApply.status].text }}</a-tag
|
>{{ status[unitApply.status].text }}</a-tag
|
||||||
>
|
>
|
||||||
@@ -322,6 +360,23 @@
|
|||||||
font-size: 32px;
|
font-size: 32px;
|
||||||
background-color: rgba(255, 255, 255, 0.7);
|
background-color: rgba(255, 255, 255, 0.7);
|
||||||
}
|
}
|
||||||
|
.relative {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.tip {
|
||||||
|
position: absolute;
|
||||||
|
right: -5em;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.dynamic-delete-button {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 24px;
|
||||||
|
color: #999;
|
||||||
|
transition: all 0.3s;
|
||||||
|
right: -75px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<script>
|
<script>
|
||||||
@@ -329,14 +384,15 @@ import { message, Modal } from "ant-design-vue";
|
|||||||
import {
|
import {
|
||||||
UploadOutlined,
|
UploadOutlined,
|
||||||
DownloadOutlined,
|
DownloadOutlined,
|
||||||
PlusOutlined
|
PlusOutlined,
|
||||||
|
MinusCircleOutlined
|
||||||
} from "@ant-design/icons-vue";
|
} from "@ant-design/icons-vue";
|
||||||
import { useForm } from "@ant-design-vue/use";
|
import { useForm } from "@ant-design-vue/use";
|
||||||
import { computed, onMounted, reactive, ref, toRaw, inject } from "vue";
|
import { computed, onMounted, reactive, ref, toRaw, inject } from "vue";
|
||||||
import { get, post } from "@/services/http";
|
import { get, post } from "@/services/http";
|
||||||
import regex from "@/services/regex";
|
|
||||||
import { toBit } from "@/services/util";
|
import { toBit } from "@/services/util";
|
||||||
import { useRouter } from "vue-router";
|
import { useRouter } from "vue-router";
|
||||||
|
import { rules } from "@/components/UnitApply/config";
|
||||||
async function getAreaOptions(code) {
|
async function getAreaOptions(code) {
|
||||||
const res = await get("/api2/CA/AreaOptions", { code });
|
const res = await get("/api2/CA/AreaOptions", { code });
|
||||||
if (res.errorCode == 0) {
|
if (res.errorCode == 0) {
|
||||||
@@ -354,7 +410,8 @@ export default {
|
|||||||
components: {
|
components: {
|
||||||
UploadOutlined,
|
UploadOutlined,
|
||||||
DownloadOutlined,
|
DownloadOutlined,
|
||||||
PlusOutlined
|
PlusOutlined,
|
||||||
|
MinusCircleOutlined
|
||||||
},
|
},
|
||||||
setup() {
|
setup() {
|
||||||
const modelRef = reactive({
|
const modelRef = reactive({
|
||||||
@@ -375,108 +432,14 @@ export default {
|
|||||||
businessLicensePicId: null,
|
businessLicensePicId: null,
|
||||||
sealApplyList: []
|
sealApplyList: []
|
||||||
});
|
});
|
||||||
|
const readonly = ref(true);
|
||||||
|
const popvisible = ref(false);
|
||||||
const loaPicFileList = ref([]);
|
const loaPicFileList = ref([]);
|
||||||
const idCardFrontPicFileList = ref([]);
|
const idCardFrontPicFileList = ref([]);
|
||||||
const idCardBackPicFileList = ref([]);
|
const idCardBackPicFileList = ref([]);
|
||||||
const businessLicenseFileList = ref([]);
|
const businessLicenseFileList = ref([]);
|
||||||
const sealApplyFileList = ref([]);
|
const sealApplyFileList = ref([]);
|
||||||
const rulesRef = reactive({
|
const rulesRef = reactive(rules);
|
||||||
operatorId: [
|
|
||||||
{ required: true, message: "请输入18位身份证号码", trigger: "blur" },
|
|
||||||
{
|
|
||||||
pattern: regex.IdCardNo,
|
|
||||||
message: "输入正确的18位身份证号码",
|
|
||||||
trigger: "blur"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
operatorName: [
|
|
||||||
{ required: true, message: "请输入经办人姓名", trigger: "blur" }
|
|
||||||
],
|
|
||||||
unitName: [
|
|
||||||
{ required: true, message: "请选择企业名称", trigger: "change" }
|
|
||||||
],
|
|
||||||
unitType: [
|
|
||||||
{ required: true, message: "请选择企业类型", trigger: "change" }
|
|
||||||
],
|
|
||||||
operatorPhone: [
|
|
||||||
{ required: true, message: "请输入你的手机号码", trigger: "blur" },
|
|
||||||
{
|
|
||||||
pattern: regex.Phone,
|
|
||||||
message: "请输入正确的11位手机号码",
|
|
||||||
trigger: "blur"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
tydm: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: "请输入企业统一社会信用代码",
|
|
||||||
trigger: "blur"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
pattern: regex.Tydm,
|
|
||||||
message: "请输入正确的18位统一社会信用代码",
|
|
||||||
trigger: "blur"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
address: [{ required: true, message: "请输入邮寄信息", trigger: "blur" }],
|
|
||||||
code: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: "请选择省市区信息",
|
|
||||||
trigger: "blur",
|
|
||||||
transform: v => v && v.join("-")
|
|
||||||
},
|
|
||||||
{
|
|
||||||
pattern: /\d+-\d+-\d+/,
|
|
||||||
message: "信息不完整",
|
|
||||||
trigger: "blur",
|
|
||||||
transform: v => v && v.join("-")
|
|
||||||
}
|
|
||||||
],
|
|
||||||
loaPicId: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: "请上传授权承诺书照片",
|
|
||||||
trigger: "change",
|
|
||||||
type: "number"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
idCardFrontPicId: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: "请上传身份证正面照片",
|
|
||||||
trigger: "change",
|
|
||||||
type: "number"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
idCardBackPicId: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: "请上传身份证背面照片",
|
|
||||||
trigger: "change",
|
|
||||||
type: "number"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
businessLicensePicId: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: "请上营业执照照片",
|
|
||||||
trigger: "change",
|
|
||||||
type: "number"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
sealApplyPicId: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: "请上电子印章申请表",
|
|
||||||
trigger: "change",
|
|
||||||
type: "number"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
phoneCode: [
|
|
||||||
{ required: true, message: "请输入短信验证码", trigger: "change" }
|
|
||||||
]
|
|
||||||
});
|
|
||||||
const { resetFields, validate, validateInfos } = useForm(
|
const { resetFields, validate, validateInfos } = useForm(
|
||||||
modelRef,
|
modelRef,
|
||||||
rulesRef
|
rulesRef
|
||||||
@@ -506,6 +469,17 @@ export default {
|
|||||||
message.success("发起申请成功", 2, useReload);
|
message.success("发起申请成功", 2, useReload);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
const handleVisibleChange = bool => {
|
||||||
|
if (!bool) {
|
||||||
|
popvisible.value = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (readonly.value) {
|
||||||
|
onSubmit();
|
||||||
|
} else {
|
||||||
|
popvisible.value = true;
|
||||||
|
}
|
||||||
|
};
|
||||||
const createUnitApply = async () => {
|
const createUnitApply = async () => {
|
||||||
try {
|
try {
|
||||||
await validate();
|
await validate();
|
||||||
@@ -626,6 +600,7 @@ export default {
|
|||||||
const res = await get("/api2/CA/GetTydm", { unitName });
|
const res = await get("/api2/CA/GetTydm", { unitName });
|
||||||
if (res.errorCode !== 0) {
|
if (res.errorCode !== 0) {
|
||||||
message.error(res.errorMsg);
|
message.error(res.errorMsg);
|
||||||
|
readonly.value = false;
|
||||||
} else {
|
} else {
|
||||||
modelRef.tydm = res.data;
|
modelRef.tydm = res.data;
|
||||||
}
|
}
|
||||||
@@ -661,6 +636,9 @@ export default {
|
|||||||
const disabledModify = computed(
|
const disabledModify = computed(
|
||||||
() => (editStatus.value & editModifyFlag) == 0
|
() => (editStatus.value & editModifyFlag) == 0
|
||||||
);
|
);
|
||||||
|
const cancel = () => {
|
||||||
|
popvisible.value = false;
|
||||||
|
};
|
||||||
const initPage = unitApply => {
|
const initPage = unitApply => {
|
||||||
for (const key in toRaw(modelRef)) {
|
for (const key in toRaw(modelRef)) {
|
||||||
if (Object.hasOwnProperty.call(unitApply, key)) {
|
if (Object.hasOwnProperty.call(unitApply, key)) {
|
||||||
@@ -759,6 +737,12 @@ export default {
|
|||||||
sealApplyFileId: 0
|
sealApplyFileId: 0
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
const removeApply = sealApply => {
|
||||||
|
let index = modelRef.sealApplyList.indexOf(sealApply);
|
||||||
|
if (index !== -1) {
|
||||||
|
modelRef.sealApplyList.splice(index, 1);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
modelRef,
|
modelRef,
|
||||||
@@ -825,7 +809,12 @@ export default {
|
|||||||
color: "red",
|
color: "red",
|
||||||
text: "已失效"
|
text: "已失效"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
readonly,
|
||||||
|
popvisible,
|
||||||
|
cancel,
|
||||||
|
handleVisibleChange,
|
||||||
|
removeApply
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -65,13 +65,19 @@
|
|||||||
<a-form-item label="收件地址" name="receiverAddress">
|
<a-form-item label="收件地址" name="receiverAddress">
|
||||||
<a-input v-model:value="form.receiverAddress" :disabled="disableEdit" />
|
<a-input v-model:value="form.receiverAddress" :disabled="disableEdit" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item>
|
<a-form-item name="idCardPicId">
|
||||||
<template #label>
|
|
||||||
<span :style="{ whiteSpace: 'normal' }"
|
|
||||||
>注册师身份证正反面,并加盖公章以及注册师章</span
|
|
||||||
>
|
|
||||||
</template>
|
|
||||||
<input v-model="form.idCardPicId" hidden />
|
<input v-model="form.idCardPicId" hidden />
|
||||||
|
<template #label>
|
||||||
|
<a-tooltip>
|
||||||
|
<template #title
|
||||||
|
>身份证正反面并加盖公司公章,勘察设计类单位还需加盖注册师章</template
|
||||||
|
>
|
||||||
|
<span :style="{ whiteSpace: 'normal' }">
|
||||||
|
身份证正反面
|
||||||
|
<QuestionCircleOutlined />
|
||||||
|
</span>
|
||||||
|
</a-tooltip>
|
||||||
|
</template>
|
||||||
<a-upload
|
<a-upload
|
||||||
accept="image/*"
|
accept="image/*"
|
||||||
action="/api2/upload/uploadfile"
|
action="/api2/upload/uploadfile"
|
||||||
@@ -123,6 +129,11 @@
|
|||||||
<p>身份证号:{{ userApply.idCardNo }}</p>
|
<p>身份证号:{{ userApply.idCardNo }}</p>
|
||||||
<p>手机号码:{{ userApply.phone }}</p>
|
<p>手机号码:{{ userApply.phone }}</p>
|
||||||
<p v-if="userApply.dealReason">拒绝理由:{{ userApply.dealReason }}</p>
|
<p v-if="userApply.dealReason">拒绝理由:{{ userApply.dealReason }}</p>
|
||||||
|
<a-button
|
||||||
|
v-if="userApply.status == 0"
|
||||||
|
@click="sendUserApply(userApply.id)"
|
||||||
|
>申领证书</a-button
|
||||||
|
>
|
||||||
</a-card>
|
</a-card>
|
||||||
</a-drawer>
|
</a-drawer>
|
||||||
</template>
|
</template>
|
||||||
@@ -133,7 +144,7 @@
|
|||||||
</style>
|
</style>
|
||||||
<script>
|
<script>
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
import { UploadOutlined } from "@ant-design/icons-vue";
|
import { UploadOutlined, QuestionCircleOutlined } from "@ant-design/icons-vue";
|
||||||
import { get, post } from "@/services/http";
|
import { get, post } from "@/services/http";
|
||||||
import regex from "@/services/regex";
|
import regex from "@/services/regex";
|
||||||
export default {
|
export default {
|
||||||
@@ -190,6 +201,14 @@ export default {
|
|||||||
],
|
],
|
||||||
receiverAddress: [
|
receiverAddress: [
|
||||||
{ required: true, message: "请输入收件地址", trigger: "blur" }
|
{ required: true, message: "请输入收件地址", trigger: "blur" }
|
||||||
|
],
|
||||||
|
idCardPicId: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "上传身份证正反面照片",
|
||||||
|
type: "number",
|
||||||
|
trigger: "blur"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
userApplyList: [],
|
userApplyList: [],
|
||||||
@@ -337,7 +356,8 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
UploadOutlined
|
UploadOutlined,
|
||||||
|
QuestionCircleOutlined
|
||||||
},
|
},
|
||||||
created: async function() {
|
created: async function() {
|
||||||
//获取所在组织信息和个人数字认证信息
|
//获取所在组织信息和个人数字认证信息
|
||||||
|
|||||||
4
src/views/ningboDp.vue
Normal file
4
src/views/ningboDp.vue
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<template>
|
||||||
|
<router-view></router-view>
|
||||||
|
</template>
|
||||||
|
<script setup></script>
|
||||||
204
src/views/ningboDp/Index.vue
Normal file
204
src/views/ningboDp/Index.vue
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
<template>
|
||||||
|
<div class="box">
|
||||||
|
<div class="heard">{{ title }}</div>
|
||||||
|
<div class="body">
|
||||||
|
<div class="left">
|
||||||
|
<a-input-search
|
||||||
|
v-model:value="input"
|
||||||
|
placeholder="请输入查询内容"
|
||||||
|
enter-button
|
||||||
|
@search="onSearch"
|
||||||
|
/>
|
||||||
|
<div class="projectList">
|
||||||
|
<div
|
||||||
|
class="projectListItem"
|
||||||
|
v-for="item in listdata"
|
||||||
|
:key="item.reCensorID"
|
||||||
|
@click="onClick(item.id)"
|
||||||
|
>
|
||||||
|
<div>{{ item.reCensorID }}</div>
|
||||||
|
<div :title="item.proHalfNM" class="text-container">
|
||||||
|
{{ item.proHalfNM }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="right">
|
||||||
|
<a-directory-tree
|
||||||
|
class="tree"
|
||||||
|
multiple
|
||||||
|
:tree-data="data"
|
||||||
|
:replace-fields="replaceFields"
|
||||||
|
@select="onSelect"
|
||||||
|
v-model:expandedKeys="expandedKeys"
|
||||||
|
v-model:selectedKeys="selectedKeys"
|
||||||
|
>
|
||||||
|
</a-directory-tree>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { ref } from "@vue/reactivity";
|
||||||
|
import { onMounted } from "@vue/runtime-core";
|
||||||
|
import { get, post } from "@/services/http";
|
||||||
|
import { message, layout, Input, Tree } from "ant-design-vue";
|
||||||
|
import axios from "axios"; // 引入 axios
|
||||||
|
export default {
|
||||||
|
setup() {
|
||||||
|
const appKey = ref("");
|
||||||
|
const sign = ref("");
|
||||||
|
const time = ref("");
|
||||||
|
const prjCode = ref("");
|
||||||
|
const token = ref("");
|
||||||
|
const replaceFields = {
|
||||||
|
children: "Children",
|
||||||
|
title: "Name",
|
||||||
|
isLeaf: "isLeaf"
|
||||||
|
};
|
||||||
|
const title = ref("");
|
||||||
|
const expandedKeys = ref([]);
|
||||||
|
const selectedKeys = ref([]);
|
||||||
|
const data = ref([]);
|
||||||
|
const listdata = ref([]);
|
||||||
|
const input = ref("");
|
||||||
|
const setLeaf = nodes => {
|
||||||
|
nodes.forEach(node => {
|
||||||
|
if (node.Children && node.Children.length > 0) {
|
||||||
|
node.isLeaf = false;
|
||||||
|
setLeaf(node.Children);
|
||||||
|
} else {
|
||||||
|
node.isLeaf = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const onSelect = (selected, selectedNodes, node, event) => {
|
||||||
|
console.log("selected", selectedNodes.node.dataRef);
|
||||||
|
};
|
||||||
|
const getlistdata = async () => {
|
||||||
|
try {
|
||||||
|
const response = await axios.post(
|
||||||
|
"/api2/projectinfo/GetProjectByFgCode",
|
||||||
|
{ projectcode: prjCode.value, searchkey: input.value }
|
||||||
|
);
|
||||||
|
console.log(response.data); // 处理返回的数据
|
||||||
|
listdata.value = response.data.data;
|
||||||
|
console.log("listdata.value", listdata.value);
|
||||||
|
// 如果需要更新组件中的数据,可以在这里进行操作
|
||||||
|
} catch (error) {
|
||||||
|
console.error("请求失败:", error);
|
||||||
|
message.error("数据获取失败,请稍后再试");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const gettoken = async () => {
|
||||||
|
const response = await axios.post("/api2/JianShu/login", {
|
||||||
|
appKey: appKey.value,
|
||||||
|
time: time.value,
|
||||||
|
sign: sign.value
|
||||||
|
});
|
||||||
|
console.log(response.data);
|
||||||
|
token.value = response.data.data;
|
||||||
|
console.log("token.value", token.value);
|
||||||
|
};
|
||||||
|
const onSearch = () => {
|
||||||
|
getlistdata();
|
||||||
|
};
|
||||||
|
const onClick = async id => {
|
||||||
|
const response = await axios.get(
|
||||||
|
"http://10.19.94.51:11684/Platform/COC/Seal.aspx?action=getdata&acceptid=" +
|
||||||
|
id +
|
||||||
|
"&Authorization=Brerar%20" +
|
||||||
|
token.value
|
||||||
|
);
|
||||||
|
console.log("response", response.data.tree);
|
||||||
|
setLeaf(response.data.tree);
|
||||||
|
data.value = response.data.tree;
|
||||||
|
selectedKeys.value = [];
|
||||||
|
expandedKeys.value = [];
|
||||||
|
};
|
||||||
|
onMounted(async () => {
|
||||||
|
const urlParams = new URLSearchParams(window.location.search);
|
||||||
|
appKey.value = urlParams.get("appKey");
|
||||||
|
sign.value = urlParams.get("sign");
|
||||||
|
time.value = urlParams.get("time");
|
||||||
|
prjCode.value = urlParams.get("prjCode");
|
||||||
|
|
||||||
|
console.log(appKey.value, sign.value, time.value, prjCode.value);
|
||||||
|
await gettoken();
|
||||||
|
await getlistdata();
|
||||||
|
title.value = listdata.value[0].proFullNM
|
||||||
|
? listdata.value[0].proFullNM
|
||||||
|
: "";
|
||||||
|
});
|
||||||
|
return {
|
||||||
|
input,
|
||||||
|
listdata,
|
||||||
|
data,
|
||||||
|
replaceFields,
|
||||||
|
appKey,
|
||||||
|
sign,
|
||||||
|
time,
|
||||||
|
prjCode,
|
||||||
|
title,
|
||||||
|
getlistdata,
|
||||||
|
gettoken,
|
||||||
|
onSearch,
|
||||||
|
setLeaf,
|
||||||
|
onSelect,
|
||||||
|
onClick,
|
||||||
|
expandedKeys,
|
||||||
|
selectedKeys
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.box {
|
||||||
|
height: 100vh;
|
||||||
|
background-color: aquamarine;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
.heard {
|
||||||
|
height: 60px;
|
||||||
|
background-color: #00a5e4;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 30px;
|
||||||
|
}
|
||||||
|
.body {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
background-color: #a3a3a3;
|
||||||
|
.left {
|
||||||
|
width: 300px;
|
||||||
|
background-color: rgb(255, 255, 255);
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
.right {
|
||||||
|
padding: 20px;
|
||||||
|
flex: 1;
|
||||||
|
background-color: rgb(241, 241, 241);
|
||||||
|
overflow: hidden;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.tree {
|
||||||
|
background-color: #fff;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.projectList {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
.projectListItem {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
border-bottom: #a3a3a3 1px solid;
|
||||||
|
/* margin-bottom: 10px; */
|
||||||
|
color: #606266;
|
||||||
|
padding: 3px 10px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -9,8 +9,17 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
// devServer: {
|
||||||
|
// proxy: "http://localhost:42127"
|
||||||
|
// },
|
||||||
devServer: {
|
devServer: {
|
||||||
proxy: "http://localhost:42127"
|
proxy: {
|
||||||
|
'/api2': {
|
||||||
|
target: 'http://10.19.94.51:11684',
|
||||||
|
changeOrigin: true,
|
||||||
|
pathRewrite: { '^/api2': '' }
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
chainWebpack: config => {
|
chainWebpack: config => {
|
||||||
config.module
|
config.module
|
||||||
|
|||||||
Reference in New Issue
Block a user