master
yujialong 4 years ago
commit 1c3fafebaf
  1. 21
      .gitignore
  2. 30
      README.md
  3. 5
      babel.config.js
  4. 12399
      package-lock.json
  5. 37
      package.json
  6. BIN
      public/favicon.ico
  7. 17
      public/index.html
  8. 38
      src/App.vue
  9. 8
      src/assets/element-variables.scss
  10. BIN
      src/assets/logo.png
  11. 803
      src/components/Process.vue
  12. 797
      src/components/Set.vue
  13. 201
      src/components/quill/index.vue
  14. 15
      src/components/quill/options.js
  15. 191
      src/components/quill1/index.vue
  16. 15
      src/components/quill1/options.js
  17. 40
      src/main.js
  18. 93
      src/router/index.js
  19. 3
      src/store/State.js
  20. 22
      src/store/actions.js
  21. 5
      src/store/getters.js
  22. 25
      src/store/index.js
  23. 8
      src/store/mutations.js
  24. 16
      src/util/rem.js
  25. 47
      src/utils/api.js
  26. 56
      src/utils/core.js
  27. 340
      src/utils/http.js
  28. 254
      src/views/Catalog.vue
  29. 199
      src/views/Flow.vue
  30. 403
      src/views/Home.vue
  31. 383
      src/views/List.vue
  32. 639
      src/views/Loan.vue
  33. 667
      src/views/Program.vue
  34. 1000
      src/views/ProgramOption.vue
  35. 1025
      src/views/ProgramOptions.vue
  36. 459
      src/views/Tool.vue
  37. 521
      src/views/Transaction.vue
  38. 26
      vue.config.js

21
.gitignore vendored

@ -0,0 +1,21 @@
.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

@ -0,0 +1,30 @@
# python_admin
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
- Home:判分点列表
- Main:判分点设置
+ Program:编程类
+ Transaction:交易类
+ Tool:工具类
+ Flow:流程类
- Catalog:目录树
+ Loan:贷款申请表
+ Process:业务编写页面
+ Set:业务已设置

@ -0,0 +1,5 @@
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
]
}

12399
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -0,0 +1,37 @@
{
"name": "python_admin",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "npm run serve",
"serve": "vue-cli-service serve",
"build": "vue-cli-service build"
},
"dependencies": {
"axios": "^0.19.2",
"core-js": "^3.6.5",
"element-ui": "^2.14.0",
"lib-flexible": "^0.3.2",
"postcss-px2rem": "^0.3.0",
"postcss-pxtorem": "^5.1.1",
"px2rem-loader": "^0.1.9",
"quill": "^1.3.7",
"vue": "^2.6.12",
"vue-router": "^3.4.8"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^4.5.8",
"@vue/cli-plugin-router": "^4.5.8",
"@vue/cli-plugin-vuex": "^4.5.8",
"@vue/cli-service": "^4.5.8",
"element-theme-chalk": "^2.14.0",
"node-sass": "^4.14.1",
"sass-loader": "^8.0.2",
"vue-template-compiler": "^2.6.12",
"vuex": "^3.5.1"
},
"browserslist": [
"> 1%",
"last 2 versions"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

@ -0,0 +1,38 @@
<template>
<div id="app">
<!-- <div id="nav">
<router-link to="/">Home</router-link> |
<router-link to="/about">About</router-link>
</div> -->
<router-view />
</div>
</template>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
/* text-align: center; */
color: #2c3e50;
/* background-color: #f8f7f7; */
height: 100%;
}
body {
margin: 0;
background-color: #f8f7f7;
}
#nav {
padding: 30px;
}
#nav a {
font-weight: bold;
color: #2c3e50;
}
#nav a.router-link-exact-active {
color: #42b983;
}
</style>

@ -0,0 +1,8 @@
/* 改变主题色变量 */
$--color-primary: #9278ff;
/* 改变 icon 字体路径变量,必需 */
$--font-path: '~element-ui/lib/theme-chalk/fonts';
@import "~element-ui/packages/theme-chalk/src/index";

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

@ -0,0 +1,803 @@
<template>
<div class="content">
<div class="header flex">
<i class="el-icon-arrow-left" @click="Back()" style="cursor:pointer">
<span>Back</span>
</i>
<p>判分点设置</p>
<button class="button" @click="Savejump()">保存</button>
</div>
<div class="footer">
<div>
<div class="flex footer_h">
<div class="black"></div>
<p>基本信息</p>
</div>
<div class="flex footer_input">
<p>判分点名称</p>
<el-input placeholder="请输入内容" v-model="input" clearable></el-input>
</div>
<div class="flex footer_inputs">
<p>实验要求</p>
<textarea id="memo" style="outline:none;"></textarea>
</div>
</div>
</div>
<div>
<div class="flex footer_t">
<div class="black"></div>
<p>判分规则</p>
<button class="button" style="width: 120px;" @click="dialogFormVisible = true">导入判分规则</button>
<el-dialog :visible.sync="dialogFormVisible" center>
<div class="flex">
<i class="el-icon-collection-tag"></i>
<p style="padding-right:0">批量导入</p>
</div>
<el-form class="flex file">
<el-form-item label="上传文件" :label-width="formLabelWidth">
<el-input v-model="name"></el-input>
</el-form-item>
<el-link type="primary" :underline="false" class="file_button">模板下载</el-link>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="fileList"
>
<el-link type="primary" :underline="false" class="file_button">上传</el-link>
</el-upload>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false"> </el-button>
<el-button type="primary" @click="setJump()"> </el-button>
</div>
</el-dialog>
</div>
<div class="form">
<p>业务页面</p>
</div>
<div class="details">
<!-- 申请人基本信息 -->
<div>
<div class="flex footer_one">
<div class="black"></div>
<p>申请人基本信息</p>
</div>
<div class="flex input">
<div class="flex">
<p>借款人姓名</p>
<el-input placeholder="请输入内容" v-model="input0"></el-input>
</div>
<div class="flex">
<p>性别</p>
<el-select v-model="value" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>身份证号</p>
<el-input placeholder="请输入内容" v-model="input1"></el-input>
</div>
<div class="flex date">
<p>出生年月</p>
<el-date-picker v-model="value1" type="date" placeholder="选择日期"></el-date-picker>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>婚姻状况</p>
<el-select v-model="value2" placeholder="请选择">
<el-option
v-for="item in options1"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="flex">
<p>教育程度</p>
<el-select v-model="value3" placeholder="请选择">
<el-option
v-for="item in options2"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>户籍所在地</p>
<el-input placeholder="请输入内容" v-model="input2"></el-input>
</div>
<div class="flex">
<p>现住地址</p>
<el-input placeholder="请输入内容" v-model="input3"></el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>住宅电话</p>
<el-input placeholder="请输入内容" v-model="input4"></el-input>
</div>
<div class="flex">
<p>手机号码</p>
<el-input placeholder="请输入内容" v-model="input5"></el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>生产经营类型</p>
<el-input placeholder="请输入内容" v-model="input6"></el-input>
</div>
<div class="flex">
<p>家庭劳动力数量</p>
<el-input placeholder="请输入内容" v-model="input7"></el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>配偶姓名</p>
<el-input placeholder="请输入内容" v-model="input8"></el-input>
</div>
<div class="flex">
<p>配偶身份证号</p>
<el-input placeholder="请输入内容" v-model="input9"></el-input>
</div>
</div>
</div>
<!-- 贷款申请信息 -->
<div>
<div class="flex footer_one">
<div class="black"></div>
<p>贷款申请信息</p>
</div>
<div class="flex input">
<div class="flex">
<p>申请金额</p>
<span class="left">大写</span>
<el-input placeholder="请输入内容" style="width:220px;" v-model="data"></el-input>
</div>
<div class="flex">
<p>申请金额</p>
<span class="left">小写</span>
<el-input placeholder="请输入内容" style="width:220px;" v-model="data1"></el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>贷款期限</p>
<el-input placeholder="请输入内容" style="width:220px;" v-model="data2"></el-input>
<span class="right_p20"></span>
</div>
<div class="flex date">
<p>借款用途</p>
<el-input placeholder="请输入内容" v-model="data3"></el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>还款方式</p>
<el-select v-model="value4" placeholder="请选择">
<el-option
v-for="item in options3"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="flex">
<p>首次还本月</p>
<span class="left"></span>
<el-input placeholder="请输入内容" style="width:210px;" v-model="data4"></el-input>
<span class="right"></span>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>()款账户户名</p>
<el-input placeholder="请输入内容" v-model="data5"></el-input>
</div>
<div class="flex">
<p>账号</p>
<el-input placeholder="请输入内容" v-model="data6"></el-input>
</div>
</div>
</div>
<!-- 保证人基本信息 -->
<div>
<div class="flex footer_one">
<div class="black"></div>
<p>保证人基本信息</p>
</div>
<div class="flex input">
<div class="flex">
<p>保证人姓名</p>
<el-input placeholder="请输入内容" v-model="bail"></el-input>
</div>
<div class="flex">
<p>性别</p>
<el-select v-model="value5" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>身份证号</p>
<el-input placeholder="请输入内容" v-model="bail1"></el-input>
</div>
<div class="flex date">
<p>出生年月</p>
<el-date-picker v-model="value6" type="date" placeholder="选择日期"></el-date-picker>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>婚姻状况</p>
<el-select v-model="value7" placeholder="请选择">
<el-option
v-for="item in options1"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="flex">
<p>教育程度</p>
<el-select v-model="value8" placeholder="请选择">
<el-option
v-for="item in options2"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>户籍所在地</p>
<el-input placeholder="请输入内容" v-model="bail3"></el-input>
</div>
<div class="flex">
<p>现住地址</p>
<el-input placeholder="请输入内容" v-model="bail4"></el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>联系电话</p>
<el-input placeholder="请输入内容" v-model="bail5"></el-input>
</div>
<div class="flex">
<p>工作单位</p>
<el-input placeholder="请输入内容" v-model="bail6"></el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>月收入</p>
<el-input placeholder="请输入内容" style="width:220px;" v-model="bail7"></el-input>
<span class="right_p20"></span>
</div>
<div class="flex">
<p>与申请人关系</p>
<el-input placeholder="请输入内容" v-model="bail8"></el-input>
</div>
</div>
</div>
<!-- 借款人与保证人声明及承诺 -->
<div>
<div class="flex footer_one">
<div class="black"></div>
<p>借款人与保证人声明及承诺</p>
</div>
<div class="box">
<p>1.我承诺以上所填信息完全属实若由xx银行工作人员或其他人员代为填写是经我授权并认可的且按规定报送责行留存的资料复印件属实;</p>
<p>2.我承认本申请表作为向责行申请贷款的依据无论银行是否贷款银行均有权保留此申请书及相关资料;</p>
<p>3.经贵行审查本申请不符合规定的条件而未予通过时我没有异议;</p>
<p>4.本人授权x x银行在本次业务过程中(从业务申请至业务终止)向中国人民银行个人信用信息基础数据库及信贷征信主管部门批准建立的其他个人信用数据库或有关单位部门及个人查询并留存本人的信用信息并将本人信用信息提供给上述个人信用数据库查询获得的信用报告限用于中国人民银行颁布的个人信用信息基础数据库管理暂行办法规定用途范围内;</p>
<p>5.保证人已明确知道如果借款人不能及时偿还全部贷款本息时保证人应当替其偿还;</p>
<p>6.我们承诺借款人与保证人家庭之间的经济相互独立且无其他债权债务关系贷款由借款人用于申请时指定的用途不由保证人使用</p>
<div class="flex small_box" style="margin-top: 20px;">
<p>申请人签字</p>
<el-input placeholder="请输入内容" v-model="sign"></el-input>
</div>
<div class="flex small_box">
<p>申请人配偶(主要财产共有人)签字</p>
<el-input placeholder="请输入内容" v-model="sign1"></el-input>
</div>
<div class="flex small_box">
<p>保证人签字</p>
<el-input placeholder="请输入内容" v-model="sign2"></el-input>
</div>
<div class="flex date small_box" style="justify-content:flex-end;">
<p>日期</p>
<el-date-picker v-model="value9" type="date" placeholder="选择日期"></el-date-picker>
</div>
</div>
</div>
<!-- 业务审批 -->
<div>
<div class="flex footer_one">
<div class="black"></div>
<p>业务审批</p>
</div>
<div class="box" style="height: 200px;">
<div class="flex small_box" style="margin-top: 50px;">
<p>申请人签字</p>
<el-select v-model="sign3" placeholder="请选择">
<el-option
v-for="item in options4"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</div>
</div>
</div>
<div style="height:40px"></div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
input: "",
textarea: "",
input0: "",
input1: "",
input2: "",
input3: "",
input4: "",
input5: "",
input6: "",
input7: "",
input8: "",
input9: "",
value: "",
value1: "",
value2: "",
value3: "",
value4: "",
value5: "",
value6: "",
value7: "",
value8: "",
value9: "",
data: "",
data1: "",
data2: "",
data3: "",
data4: "",
data5: "",
data6: "",
bail: "",
bail1: "",
bail2: "",
bail3: "",
bail4: "",
bail5: "",
bail6: "",
bail7: "",
bail8: "",
sign: "",
sign1: "",
sign2: "",
sign3: "",
name: "",
options: [
{
value: "选项1",
label: "男"
},
{
value: "选项2",
label: "女"
}
],
options1: [
{
value: "选项1",
label: "未婚"
},
{
value: "选项2",
label: "已婚"
},
{
value: "选项3",
label: "离婚"
}
],
options2: [
{
value: "选项1",
label: "研究生及以上"
},
{
value: "选项2",
label: "大学本科"
},
{
value: "选项3",
label: "大专/高职"
},
{
value: "选项4",
label: "初中及以下"
}
],
options3: [
{
value: "选项1",
label: "一次性还本利息"
},
{
value: "选项2",
label: "等额本息还款"
},
{
value: "选项3",
label: "阶段性等额本息还款"
}
],
options4: [
{
value: "选项1",
label: "同意"
},
{
value: "选项2",
label: "不同意"
}
],
dialogFormVisible: false,
formLabelWidth: "120px"
};
},
methods: {
//
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePreview(file) {
console.log(file);
},
handleExceed(files, fileList) {
this.$message.warning(
`当前限制选择 3 个文件,本次选择了 ${
files.length
} 个文件共选择了 ${files.length + fileList.length} 个文件`
);
},
setJump() {
this.$router.push({ path: "/set" });
},
Savejump() {
this.$router.push({ path: "/" });
},
Back() {
this.$router.push({ path: "/" });
}
}
};
</script>
<style lang="scss" scoped>
//
.file {
padding: 30px;
}
/deep/ .el-dialog--center {
width: 600px;
}
/deep/ .el-dialog__headerbtn .el-icon-close:before {
padding: 3px;
background-color: #9278ff;
border-radius: 50%;
color: #ffffff;
}
/deep/ .el-dialog__header {
padding: 0;
}
/deep/ .el-button {
width: 130px;
margin: 0 30px;
}
.file /deep/ .el-input {
width: 200px;
}
.file /deep/ .el-input__inner {
border: 1px solid #9278ff;
}
.file /deep/ .el-input__inner:hover {
border: 1px solid #9278ff;
}
/deep/ .el-dialog--center .el-dialog__body {
padding-bottom: 0;
}
.file_button {
height: 35px;
line-height: 1;
width: 90px;
margin-top: 3px;
border: none;
color: #9278ff;
text-align: center;
border-radius: 5px;
margin-left: 30px;
}
//
.box {
width: 800px;
border: 1px solid #9278ff;
padding: 20px;
margin: 0 auto;
}
.box p {
font-size: 14px;
margin: 0;
padding: 2px 0;
}
.small_box {
margin-bottom: 15px;
}
.small_box p {
width: 220px;
padding-right: 20px;
font-size: 14px;
margin: 0;
text-align: right;
}
//
.left {
padding-right: 10px;
font-size: 14px;
}
.right {
padding-left: 10px;
font-size: 14px;
}
.right_p20 {
padding-left: 20px;
font-size: 14px;
}
//
.date /deep/ .el-input__icon {
line-height: 2;
padding-left: 0;
}
/deep/ .el-date-editor.el-input,
.el-date-editor.el-input__inner {
width: 190px;
}
//
/deep/ .el-select .el-input .el-select__caret {
line-height: 2;
}
/deep/ .el-select__caret:before {
content: "\e78f";
font-size: 8px;
padding: 1px;
background-color: #9278ff;
border-radius: 50%;
color: #ffffff;
}
.details /deep/ .el-input--suffix .el-input__inner {
border: 1px solid #9278ff;
}
.details /deep/ .el-input--suffix .el-input__inner:focus,
.el-input--suffix .el-input__inner:hover {
border: 1px solid #9278ff;
}
//
.details /deep/ .el-input {
width: 190px;
text-align: right;
}
.details /deep/ .el-input__inner {
height: 30px;
padding-right: 0;
}
.details /deep/ .el-input__inner {
border: 1px solid #9278ff;
}
.details /deep/ .el-input__inner:hover {
border: 1px solid #9278ff;
}
.details /deep/ .el-table .cell {
line-height: 1;
}
.input p {
width: 120px;
padding-right: 20px;
padding-top: 3px;
font-size: 14px;
margin: 0;
text-align: right;
}
.input {
justify-content: space-around;
margin-bottom: 15px;
}
.footer_one p {
padding-left: 10px;
font-size: 12px;
font-weight: 600;
}
.footer_one {
height: 40px;
justify-content: flex-start;
margin: 50px 0 10px 300px;
}
.footer_one /deep/ [class*="el-icon-"],
[class^="el-icon-"] {
line-height: 3.5;
// color: #9278ff;
}
.flex {
display: flex;
}
//
.form {
margin: 0 15px;
}
.form p {
height: 30px;
background-color: #9278ff;
text-align: center;
margin: 0;
line-height: 30px;
}
//
#memo {
margin-left: 10px;
height: 200px;
width: 800px;
resize: none;
border: 1px solid #9278ff;
font-size: 12px;
border-radius: 5px;
}
/deep/ .el-input--suffix .el-input__inner {
border: 1px solid #9278ff;
}
.footer_input p {
font-size: 12px;
padding-right: 20px;
}
.footer_input {
padding: 30px 0 20px 80px;
}
.footer_inputs {
padding: 30px 0 20px 80px;
}
.footer_inputs p {
font-size: 12px;
padding-right: 20px;
}
/deep/ .el-input {
width: 30%;
}
.header {
background-color: #ffffff;
height: 45px;
line-height: 45px;
font-size: 14px;
font-weight: 600;
position: relative;
}
.header span  {
font-size: 16px;
font-weight: 600;
padding-left: 5px;
}
.header p {
padding-left: 20px;
margin: 0;
}
.footer_h {
// padding: 10px 0;
border-top: 1px dashed #cccccc;
border-bottom: 1px dashed #cccccc;
margin: 0 15px;
height: 45px;
line-height: 45px;
}
.footer_t p {
// padding-right: 800px;
margin: 0;
padding-left: 10px;
font-size: 12px;
}
.footer_t {
padding: 10px 0;
border-top: 1px dashed #cccccc;
margin: 0 15px;
height: 45px;
line-height: 45px;
}
.footer {
background-color: #ffffff;
}
.footer_h p {
padding-left: 10px;
font-size: 12px;
margin: 0;
}
.footer_t /deep/ [class*=" el-icon-"],
[class^="el-icon-"] {
line-height: 3;
padding-left: 10px;
// color: #9278ff;
}
.button {
height: 30px;
width: 80px;
margin-top: 7px;
border: none;
background-color: #9278ff;
color: #ffffff;
border-radius: 20px;
position: absolute;
right: 30px;
}
.button:focus {
outline: 0;
}
/deep/ .el-button--text {
color: #9278ff;
}
/deep/ .el-button--text:focus,
.el-button--text:hover {
color: #9278ff;
}
.black {
width: 8px;
height: 18px;
background-color: #333;
margin-top: 10px;
}
.content {
background-color: #fff;
position: relative;
top: 10px;
}
</style>

@ -0,0 +1,797 @@
<template>
<div class="content">
<div class="header flex">
<i class="el-icon-arrow-left" @click="Back()" style="cursor:pointer">
<span>Back</span>
</i>
<p>判分点设置</p>
<button class="button" @click="Savejump()">保存</button>
</div>
<div class="footer">
<div>
<div class="flex footer_h">
<div class="black"></div>
<p>基本信息</p>
</div>
<div class="flex footer_input">
<p>判分点名称</p>
<el-input placeholder="请输入内容" v-model="input" clearable></el-input>
</div>
<div class="flex footer_inputs">
<p>实验要求</p>
<textarea id="memo" style="outline:none;"></textarea>
</div>
</div>
</div>
<div>
<div class="flex footer_t">
<div class="black"></div>
<p>判分规则</p>
<button class="button" style="width: 120px;" @click="dialogFormVisible = true">导入判分规则</button>
<el-dialog :visible.sync="dialogFormVisible" center>
<div class="flex">
<i class="el-icon-collection-tag"></i>
<p style="padding-right:0">批量导入</p>
</div>
<el-form class="flex file">
<el-form-item label="上传文件" :label-width="formLabelWidth">
<el-input v-model="name"></el-input>
</el-form-item>
<el-link type="primary" :underline="false" class="file_button">模板下载</el-link>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="fileList"
>
<el-link type="primary" :underline="false" class="file_button">上传</el-link>
</el-upload>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false"> </el-button>
<el-button type="primary" @click="setJump()"> </el-button>
</div>
</el-dialog>
</div>
<div class="form">
<p>业务页面</p>
</div>
<div class="details">
<!-- 申请人基本信息 -->
<div>
<div class="flex footer_one">
<div class="black"></div>
<p>申请人基本信息</p>
</div>
<div class="flex input">
<div class="flex">
<p>借款人姓名</p>
<el-input placeholder="已设置" :disabled="true" v-model="input0"></el-input>
</div>
<div class="flex">
<p>性别</p>
<el-select v-model="value" disabled placeholder="已设置">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>身份证号</p>
<el-input placeholder="已设置" :disabled="true" v-model="input1"></el-input>
</div>
<div class="flex date">
<p>出生年月</p>
<el-date-picker v-model="value1" :disabled="true" type="date" placeholder="已设置"></el-date-picker>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>婚姻状况</p>
<el-select v-model="value2" disabled placeholder="已设置">
<el-option
v-for="item in options1"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="flex">
<p>教育程度</p>
<el-select v-model="value3" disabled placeholder="已设置">
<el-option
v-for="item in options2"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>户籍所在地</p>
<el-input placeholder="已设置" :disabled="true" v-model="input2"></el-input>
</div>
<div class="flex">
<p>现住地址</p>
<el-input placeholder="已设置" :disabled="true" v-model="input3"></el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>住宅电话</p>
<el-input placeholder="已设置" :disabled="true" v-model="input4"></el-input>
</div>
<div class="flex">
<p>手机号码</p>
<el-input placeholder="已设置" :disabled="true" v-model="input5"></el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>生产经营类型</p>
<el-input placeholder="已设置" :disabled="true" v-model="input6"></el-input>
</div>
<div class="flex">
<p>家庭劳动力数量</p>
<el-input placeholder="已设置" :disabled="true" v-model="input7"></el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>配偶姓名</p>
<el-input placeholder="已设置" :disabled="true" v-model="input8"></el-input>
</div>
<div class="flex">
<p>配偶身份证号</p>
<el-input placeholder="已设置" :disabled="true" v-model="input9"></el-input>
</div>
</div>
</div>
<!-- 贷款申请信息 -->
<div>
<div class="flex footer_one">
<div class="black"></div>
<p>贷款申请信息</p>
</div>
<div class="flex input">
<div class="flex">
<p>申请金额</p>
<span class="left">大写</span>
<el-input placeholder="已设置" :disabled="true" style="width:220px;" v-model="data"></el-input>
</div>
<div class="flex">
<p>申请金额</p>
<span class="left">小写</span>
<el-input placeholder="已设置" :disabled="true" style="width:220px;" v-model="data1"></el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>贷款期限</p>
<el-input placeholder="已设置" :disabled="true" style="width:220px;" v-model="data2"></el-input>
<span class="right_p20"></span>
</div>
<div class="flex date">
<p>借款用途</p>
<el-input placeholder="已设置" :disabled="true" v-model="data3"></el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>还款方式</p>
<el-select v-model="value4" disabled placeholder="已设置">
<el-option
v-for="item in options3"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="flex">
<p>首次还本月</p>
<span class="left"></span>
<el-input placeholder="已设置" :disabled="true" style="width:210px;" v-model="data4"></el-input>
<span class="right"></span>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>()款账户户名</p>
<el-input placeholder="已设置" :disabled="true" v-model="data5"></el-input>
</div>
<div class="flex">
<p>账号</p>
<el-input placeholder="已设置" :disabled="true" v-model="data6"></el-input>
</div>
</div>
</div>
<!-- 保证人基本信息 -->
<div>
<div class="flex footer_one">
<div class="black"></div>
<p>保证人基本信息</p>
</div>
<div class="flex input">
<div class="flex">
<p>保证人姓名</p>
<el-input placeholder="已设置" :disabled="true" v-model="bail"></el-input>
</div>
<div class="flex">
<p>性别</p>
<el-select v-model="value5" disabled placeholder="已设置">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>身份证号</p>
<el-input placeholder="已设置" :disabled="true" v-model="bail1"></el-input>
</div>
<div class="flex date">
<p>出生年月</p>
<el-date-picker v-model="value6" :disabled="true" type="date" placeholder="已设置"></el-date-picker>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>婚姻状况</p>
<el-select v-model="value7" disabled placeholder="已设置">
<el-option
v-for="item in options1"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="flex">
<p>教育程度</p>
<el-select v-model="value8" disabled placeholder="已设置">
<el-option
v-for="item in options2"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>户籍所在地</p>
<el-input placeholder="已设置" :disabled="true" v-model="bail3"></el-input>
</div>
<div class="flex">
<p>现住地址</p>
<el-input placeholder="已设置" :disabled="true" v-model="bail4"></el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>联系电话</p>
<el-input placeholder="已设置" :disabled="true" v-model="bail5"></el-input>
</div>
<div class="flex">
<p>工作单位</p>
<el-input placeholder="已设置" :disabled="true" v-model="bail6"></el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>月收入</p>
<el-input placeholder="已设置" :disabled="true" style="width:220px;" v-model="bail7"></el-input>
<span class="right_p20"></span>
</div>
<div class="flex">
<p>与申请人关系</p>
<el-input placeholder="已设置" :disabled="true" v-model="bail8"></el-input>
</div>
</div>
</div>
<!-- 借款人与保证人声明及承诺 -->
<div>
<div class="flex footer_one">
<div class="black"></div>
<p>借款人与保证人声明及承诺</p>
</div>
<div class="box">
<p>1.我承诺以上所填信息完全属实若由xx银行工作人员或其他人员代为填写是经我授权并认可的且按规定报送责行留存的资料复印件属实;</p>
<p>2.我承认本申请表作为向责行申请贷款的依据无论银行是否贷款银行均有权保留此申请书及相关资料;</p>
<p>3.经贵行审查本申请不符合规定的条件而未予通过时我没有异议;</p>
<p>4.本人授权x x银行在本次业务过程中(从业务申请至业务终止)向中国人民银行个人信用信息基础数据库及信贷征信主管部门批准建立的其他个人信用数据库或有关单位部门及个人查询并留存本人的信用信息并将本人信用信息提供给上述个人信用数据库查询获得的信用报告限用于中国人民银行颁布的个人信用信息基础数据库管理暂行办法规定用途范围内;</p>
<p>5.保证人已明确知道如果借款人不能及时偿还全部贷款本息时保证人应当替其偿还;</p>
<p>6.我们承诺借款人与保证人家庭之间的经济相互独立且无其他债权债务关系贷款由借款人用于申请时指定的用途不由保证人使用</p>
<div class="flex small_box" style="margin-top: 20px;">
<p>申请人签字</p>
<el-input placeholder="已设置" :disabled="true" v-model="sign"></el-input>
</div>
<div class="flex small_box">
<p>申请人配偶(主要财产共有人)签字</p>
<el-input placeholder="已设置" :disabled="true" v-model="sign1"></el-input>
</div>
<div class="flex small_box">
<p>保证人签字</p>
<el-input placeholder="已设置" :disabled="true" v-model="sign2"></el-input>
</div>
<div class="flex date small_box" style="justify-content:flex-end;">
<p>日期</p>
<el-date-picker v-model="value9" :disabled="true" type="date" placeholder="已设置"></el-date-picker>
</div>
</div>
</div>
<!-- 业务审批 -->
<div>
<div class="flex footer_one">
<div class="black"></div>
<p>业务审批</p>
</div>
<div class="box" style="height: 200px;">
<div class="flex small_box" style="margin-top: 50px;">
<p>申请人签字</p>
<el-select v-model="sign3" disabled placeholder="已设置">
<el-option
v-for="item in options4"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</div>
</div>
</div>
<div style="height:40px"></div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
input: "",
textarea: "",
input0: "",
input1: "",
input2: "",
input3: "",
input4: "",
input5: "",
input6: "",
input7: "",
input8: "",
input9: "",
value: "",
value1: "",
value2: "",
value3: "",
value4: "",
value5: "",
value6: "",
value7: "",
value8: "",
value9: "",
data: "",
data1: "",
data2: "",
data3: "",
data4: "",
data5: "",
data6: "",
bail: "",
bail1: "",
bail2: "",
bail3: "",
bail4: "",
bail5: "",
bail6: "",
bail7: "",
bail8: "",
sign: "",
sign1: "",
sign2: "",
sign3: "",
name: "",
options: [
{
value: "选项1",
label: "男"
},
{
value: "选项2",
label: "女"
}
],
options1: [
{
value: "选项1",
label: "未婚"
},
{
value: "选项2",
label: "已婚"
},
{
value: "选项3",
label: "离婚"
}
],
options2: [
{
value: "选项1",
label: "研究生及以上"
},
{
value: "选项2",
label: "大学本科"
},
{
value: "选项3",
label: "大专/高职"
},
{
value: "选项4",
label: "初中及以下"
}
],
options3: [
{
value: "选项1",
label: "一次性还本利息"
},
{
value: "选项2",
label: "等额本息还款"
},
{
value: "选项3",
label: "阶段性等额本息还款"
}
],
options4: [
{
value: "选项1",
label: "同意"
},
{
value: "选项2",
label: "不同意"
}
],
dialogFormVisible: false,
formLabelWidth: "120px"
};
},
methods: {
//
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePreview(file) {
console.log(file);
},
handleExceed(files, fileList) {
this.$message.warning(
`当前限制选择 3 个文件,本次选择了 ${
files.length
} 个文件共选择了 ${files.length + fileList.length} 个文件`
);
},
setJump() {
this.$router.push({ path: "/set" });
},
Savejump() {
this.$router.push({ path: "/" });
},
Back() {
this.$router.push({ path: "/" });
}
}
};
</script>
<style lang="scss" scoped>
//
.file {
padding: 30px;
}
/deep/ .el-dialog--center {
width: 600px;
}
/deep/ .el-dialog__headerbtn .el-icon-close:before {
padding: 3px;
background-color: #9278ff;
border-radius: 50%;
color: #ffffff;
}
/deep/ .el-dialog__header {
padding: 0;
}
/deep/ .el-button {
width: 130px;
margin: 0 30px;
}
.file /deep/ .el-input {
width: 200px;
}
.file /deep/ .el-input__inner {
border: 1px solid #9278ff;
}
.file /deep/ .el-input__inner:hover {
border: 1px solid #9278ff;
}
/deep/ .el-dialog--center .el-dialog__body {
padding-bottom: 0;
}
.file_button {
height: 35px;
line-height: 1;
width: 90px;
margin-top: 3px;
border: none;
color: #9278ff;
text-align: center;
border-radius: 5px;
margin-left: 30px;
}
//
.box {
width: 800px;
border: 1px solid #9278ff;
padding: 20px;
margin: 0 auto;
}
.box p {
font-size: 14px;
margin: 0;
padding: 2px 0;
}
.small_box {
margin-bottom: 15px;
}
.small_box p {
width: 220px;
padding-right: 20px;
font-size: 14px;
margin: 0;
text-align: right;
}
//
.left {
padding-right: 10px;
font-size: 14px;
}
.right {
padding-left: 10px;
font-size: 14px;
}
.right_p20 {
padding-left: 20px;
font-size: 14px;
}
//
.date /deep/ .el-input__icon {
line-height: 2;
padding-left: 0;
}
/deep/ .el-date-editor.el-input,
.el-date-editor.el-input__inner {
width: 190px;
}
//
/deep/ .el-select .el-input .el-select__caret {
line-height: 2;
}
/deep/ .el-select__caret:before {
content: "\e78f";
font-size: 8px;
padding: 1px;
background-color: #9278ff;
border-radius: 50%;
color: #ffffff;
}
//
.details /deep/ .el-input {
width: 190px;
text-align: right;
}
.details /deep/ .el-input__inner {
height: 30px;
padding-right: 0;
}
.details /deep/ .el-input__inner {
border: 1px solid #9278ff;
}
.details /deep/ .el-input__inner:hover {
border: 1px solid #9278ff;
}
.details /deep/ .el-table .cell {
line-height: 1;
}
.input p {
width: 120px;
padding-right: 20px;
padding-top: 3px;
font-size: 14px;
margin: 0;
text-align: right;
}
.input {
justify-content: space-around;
margin-bottom: 15px;
}
.footer_one p {
padding-left: 10px;
font-size: 12px;
font-weight: 600;
}
.footer_one {
height: 40px;
justify-content: flex-start;
margin: 50px 0 10px 300px;
}
.footer_one /deep/ [class*="el-icon-"],
[class^="el-icon-"] {
line-height: 3.5;
// color: #9278ff;
}
.flex {
display: flex;
}
//
.form {
margin: 0 15px;
}
.form p {
height: 30px;
background-color: #9278ff;
text-align: center;
margin: 0;
line-height: 30px;
}
//
#memo {
margin-left: 10px;
height: 200px;
width: 800px;
resize: none;
border: 1px solid #9278ff;
font-size: 12px;
border-radius: 5px;
}
/deep/ .el-input--suffix .el-input__inner {
border: 1px solid #9278ff;
}
.footer_input p {
font-size: 12px;
padding-right: 20px;
}
.footer_input {
padding: 30px 0 20px 80px;
}
.footer_inputs {
padding: 30px 0 20px 80px;
}
.footer_inputs p {
font-size: 12px;
padding-right: 20px;
}
/deep/ .el-input {
width: 30%;
}
.header {
background-color: #ffffff;
height: 45px;
line-height: 45px;
font-size: 14px;
font-weight: 600;
position: relative;
}
.header span  {
font-size: 16px;
font-weight: 600;
padding-left: 5px;
}
.header p {
padding-left: 20px;
margin: 0;
}
.footer_h {
// padding: 10px 0;
border-top: 1px dashed #cccccc;
border-bottom: 1px dashed #cccccc;
margin: 0 15px;
height: 45px;
line-height: 45px;
}
.footer_t p {
// padding-right: 800px;
margin: 0;
padding-left: 10px;
font-size: 12px;
}
.footer_t {
padding: 10px 0;
border-top: 1px dashed #cccccc;
margin: 0 15px;
height: 45px;
line-height: 45px;
}
.footer {
background-color: #ffffff;
}
.footer_h p {
padding-left: 10px;
font-size: 12px;
margin: 0;
}
.footer_t /deep/ [class*=" el-icon-"],
[class^="el-icon-"] {
line-height: 3;
padding-left: 10px;
// color: #9278ff;
}
.button {
height: 30px;
width: 80px;
margin-top: 7px;
border: none;
background-color: #9278ff;
color: #ffffff;
border-radius: 20px;
position: absolute;
right: 30px;
}
.button:focus {
outline: 0;
}
/deep/ .el-button--text {
color: #9278ff;
}
/deep/ .el-button--text:focus,
.el-button--text:hover {
color: #9278ff;
}
.black {
width: 8px;
height: 18px;
background-color: #333;
margin-top: 10px;
}
.content {
background-color: #fff;
position: relative;
top: 10px;
}
</style>

@ -0,0 +1,201 @@
<template>
<div class="quill" :class="[classes,readonly ? 'readonly' : '']">
<div :ref="toref" :style="styles" v-loading="loading"></div>
<el-upload :action="this.api.fileupload" :before-upload="beforeUpload" :on-success="editorUploadSuccess" style="display: none">
<el-button class="editorUpload" ref="editorUpload" size="small" type="primary">点击上传</el-button>
</el-upload>
</div>
</template>
<script>
import Quill from 'quill';
import 'quill/dist/quill.core.css';
import 'quill/dist/quill.snow.css';
import 'quill/dist/quill.bubble.css';
import toolbarOptions from './options'
export default {
name: 'quill',
props: {
toref: {
type: String,
default: 'editor'
},
value: {
type: String,
default: ''
},
readonly: {
type: Boolean,
default: false
},
toTop: {
type: Boolean,
default: true
},
border: {
type: Boolean,
default: false
},
height: {
type: Number
},
minHeight: {
type: Number
}
},
data () {
let that = this
return {
Quill: null,
currentValue: '',
options: {
theme: 'snow',
bounds: document.body,
debug: 'warn',
modules: {
toolbar: {
container: this.readonly ? [] : toolbarOptions,
// handlers: {
// 'image' (value) {
// console.log(22,value,that.Quill,that.toref,that.$refs)
// if (value) {
// that.qu = that.Quill
// // iview
// document.querySelector('.editorUpload').click()
// } else {
// this.Quill.format('image', false);
// }
// }
// }
}
},
placeholder: '',
readOnly: this.readonly
},
loading: false,
quillArr: [],
qu: null
}
},
computed: {
classes () {
return [
{
'quill-no-border': !this.border
}
];
},
styles () {
let style = {};
if (this.minHeight) {
style.minHeight = `${this.minHeight}px`;
}
if (this.height) {
style.height = `${this.height}px`;
}
return style;
}
},
watch: {
value: {
handler (val) {
if (val !== this.currentValue) {
this.currentValue = val;
if (this.Quill) {
this.Quill.pasteHTML(this.value);
}
}
},
immediate: true
}
},
mounted () {
// console.log(this.$refs.editorUpload.$el)
this.init();
},
beforeDestroy () {
//
this.Quill = null;
},
methods: {
init () {
let toeval = "this.$refs."+this.toref
const editor = eval(toeval)
//
this.Quill = new Quill(editor, this.options);
this.quillArr.push(this.Quill)
console.log(22,this.toref,this.Quill,this.quillArr)
//
this.Quill.pasteHTML(this.currentValue);
if(this.toTop){
this.$nextTick(() => {
window.scrollTo(0,0)
})
}
//
this.Quill.on('text-change', (delta, oldDelta, source) => {
const html = this.$refs[this.toref].children[0].innerHTML;
const text = this.Quill.getText();
const quill = this.Quill;
//
this.currentValue = html;
// v-model
this.$emit('input', html);
//
this.$emit('on-change', { html, text, quill });
});
// quill
this.Quill.on('text-change', (delta, oldDelta, source) => {
console.log(this.Quill)
this.$emit('on-text-change', delta, oldDelta, source);
});
this.Quill.on('selection-change', (range, oldRange, source) => {
this.$emit('on-selection-change', range, oldRange, source);
});
this.Quill.on('editor-change', (eventName, ...args) => {
this.$emit('on-editor-change', eventName, ...args);
});
},
beforeUpload(file){
console.log('上传前:',this.qu,this.toref,this.Quill,this.quillArr)
this.loading = true
},
editorUploadSuccess (res) {
//
// let toeval = "this.$refs."+this.toref+'.quill'
let toeval = 'this.$refs.editor2'
// console.log("toeval",toeval);
let quill = eval(toeval);
// let quill = this.Quill
//
console.log(11,this.$refs)
// if (res.data.filesResult.fileUrl) {
// //
// let length = quill.selection.savedRange.index;
// // res
// quill.insertEmbed(length, 'image', res.data.filesResult.fileUrl)
// //
// quill.setSelection(length + 1)
// } else {
// this.$message.success('')
// }
this.loading = false
},
}
}
</script>
<style lang="scss" scoped>
.quill-no-border{
.ql-toolbar.ql-snow{
border: none;
border-bottom: 1px solid #e8eaec;
}
.ql-container.ql-snow{
border: none;
}
}
</style>

@ -0,0 +1,15 @@
export default [
['bold', 'italic', 'underline', 'strike'],
['blockquote', 'code-block'],
[{ 'header': 1 }, { 'header': 2 }],
[{ 'list': 'ordered' }, { 'list': 'bullet' }],
[{ 'script': 'sub' }, { 'script': 'super' }],
[{ 'indent': '-1' }, { 'indent': '+1' }],
[{ 'direction': 'rtl' }],
[{ 'size': ['small', false, 'large', 'huge'] }],
[{ 'color': [] }, { 'background': [] }],
[{ 'font': [] }],
[{ 'align': [] }],
['clean'],
['link', 'image', 'video']
]

@ -0,0 +1,191 @@
<template>
<div class="quill" :class="[classes,readonly ? 'readonly' : '']">
<div :ref="toref" :style="styles" v-loading="loading"></div>
<el-upload :action="this.api.fileupload" :before-upload="beforeUpload" :on-success="editorUploadSuccess" style="display: none">
<el-button class="editorUpload" size="small" type="primary">点击上传</el-button>
</el-upload>
</div>
</template>
<script>
import Quill from 'quill';
import 'quill/dist/quill.core.css';
import 'quill/dist/quill.snow.css';
import 'quill/dist/quill.bubble.css';
import toolbarOptions from './options'
export default {
name: 'quill',
props: {
toref: {
type: String,
default: 'editor'
},
value: {
type: String,
default: ''
},
readonly: {
type: Boolean,
default: false
},
toTop: {
type: Boolean,
default: true
},
border: {
type: Boolean,
default: false
},
height: {
type: Number
},
minHeight: {
type: Number
}
},
data () {
return {
Quill: null,
currentValue: '',
options: {
theme: 'snow',
bounds: document.body,
debug: 'warn',
modules: {
toolbar: {
container: this.readonly ? [] : toolbarOptions,
handlers: {
'image': function (value) {
if (value) {
// iview
document.querySelector('.editorUpload').click()
} else {
this.Quill.format('image', false);
}
}
}
}
},
placeholder: '',
readOnly: this.readonly
},
loading: false
}
},
computed: {
classes () {
return [
{
'quill-no-border': !this.border
}
];
},
styles () {
let style = {};
if (this.minHeight) {
style.minHeight = `${this.minHeight}px`;
}
if (this.height) {
style.height = `${this.height}px`;
}
return style;
}
},
watch: {
value: {
handler (val) {
if (val !== this.currentValue) {
this.currentValue = val;
if (this.Quill) {
this.Quill.pasteHTML(this.value);
}
}
},
immediate: true
}
},
mounted () {
this.init();
},
beforeDestroy () {
//
this.Quill = null;
},
methods: {
init () {
let toeval = "this.$refs."+this.toref
const editor = eval(toeval)
//
this.Quill = new Quill(editor, this.options);
console.log(33,this.Quill)
//
this.Quill.pasteHTML(this.currentValue);
if(this.toTop){
this.$nextTick(() => {
window.scrollTo(0,0)
})
}
//
this.Quill.on('text-change', (delta, oldDelta, source) => {
const html = this.$refs[this.toref].children[0].innerHTML;
const text = this.Quill.getText();
const quill = this.Quill;
//
this.currentValue = html;
// v-model
this.$emit('input', html);
//
this.$emit('on-change', { html, text, quill });
});
// quill
this.Quill.on('text-change', (delta, oldDelta, source) => {
this.$emit('on-text-change', delta, oldDelta, source);
});
this.Quill.on('selection-change', (range, oldRange, source) => {
this.$emit('on-selection-change', range, oldRange, source);
});
this.Quill.on('editor-change', (eventName, ...args) => {
this.$emit('on-editor-change', eventName, ...args);
});
},
beforeUpload(file){
this.loading = true
},
editorUploadSuccess (res) {
//
let toeval = "this.$refs."+this.toref+'.quill'
// console.log("toeval",toeval);
// let quill = eval(toeval);
let quill = this.Quill
//
console.log(11,toeval,this.toref,this.Quill,quill,quill.selection)
if (res.data.filesResult.fileUrl) {
//
let length = quill.selection.savedRange.index;
// res
quill.insertEmbed(length, 'image', res.data.filesResult.fileUrl)
//
quill.setSelection(length + 1)
} else {
this.$message.success('图片插入失败')
}
this.loading = false
},
}
}
</script>
<style lang="scss" scoped>
.quill-no-border{
.ql-toolbar.ql-snow{
border: none;
border-bottom: 1px solid #e8eaec;
}
.ql-container.ql-snow{
border: none;
}
}
</style>

@ -0,0 +1,15 @@
export default [
['bold', 'italic', 'underline', 'strike'],
['blockquote', 'code-block'],
[{ 'header': 1 }, { 'header': 2 }],
[{ 'list': 'ordered' }, { 'list': 'bullet' }],
[{ 'script': 'sub' }, { 'script': 'super' }],
[{ 'indent': '-1' }, { 'indent': '+1' }],
[{ 'direction': 'rtl' }],
[{ 'size': ['small', false, 'large', 'huge'] }],
[{ 'color': [] }, { 'background': [] }],
[{ 'font': [] }],
[{ 'align': [] }],
['clean'],
['link', 'image', 'video']
]

@ -0,0 +1,40 @@
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import ElementUI from 'element-ui'
import './assets/element-variables.scss'
import core from '../src/utils/core'
import {
post,
get,
del,
put
} from './utils/http';
import api from './utils/api';
import './util/rem'
Vue.use(ElementUI);
Vue.prototype.core=core
Vue.prototype.api = api;
Vue.prototype.$get = get;
Vue.prototype.$post = post;
Vue.prototype.$del = del;
Vue.prototype.$put = put;
Vue.config.productionTip = false
router.beforeEach((to, from, next) => {
if (to.meta.title) {
document.title = to.meta.title
}
next()
})
new Vue({
router,
store,
render: h => h(App)
}).$mount('#app')

@ -0,0 +1,93 @@
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
const routes = [
{
path: '/',
component: resolve => require(['../views/Home.vue'], resolve),
meta: {
title: '首页'
},
}, {
path: '/program',
component: resolve => require(['../views/Program.vue'], resolve),
meta: {
title: '编程类'
},
}, {
path: '/transaction',
component: resolve => require(['../views/Transaction.vue'], resolve),
meta: {
title: '交易类'
},
}, {
path: '/tool',
component: resolve => require(['../views/Tool.vue'], resolve),
meta: {
title: '工具类'
},
}, {
path: '/flow',
component: resolve => require(['../views/Flow.vue'], resolve),
meta: {
title: '流程类'
},
}, {
path: '/catalog',
component: resolve => require(['../views/Catalog.vue'], resolve),
meta: {
title: '目录树'
},
}, {
path: '/loan',
component: resolve => require(['../views/Loan.vue'], resolve),
meta: {
title: '贷款申请表'
},
}, {
path: '/process',
component: resolve => require(['../components/Process.vue'], resolve),
meta: {
title: '业务编写页面'
},
}, {
path: '/set',
component: resolve => require(['../components/Set.vue'], resolve),
meta: {
title: '业务已设置'
},
},
// 科大川大
{
path: '/list',
component: resolve => require(['../views/List.vue'], resolve),
meta: {
title: '编程类'
},
},
{
path: '/programOptions',
component: resolve => require(['../views/ProgramOptions.vue'], resolve),
meta: {
title: '编程类'
},
},
{
path: '/programOption',
component: resolve => require(['../views/ProgramOption.vue'], resolve),
meta: {
title: '编程类'
},
},
]
const router = new VueRouter({
mode: 'hash',
base: process.env.BASE_URL,
routes
})
export default router

@ -0,0 +1,3 @@
export default {
token: ''
}

@ -0,0 +1,22 @@
export default {
sethtnameAsync: (context, payload) => {
console.log('hhh');
setTimeout(() => {
console.log('hahha');
context.commit('sethtname', payload)
}, 3000);
console.log('lululu');
},
daAjax: (context, payload) => {
//vuex是不能被vue实例的
let that = payload.that;
let url = this.axios.urls.SYSTEM_USER_DOLOGIN;
console.log(url);
that.axios.post(url, {}).then((res) => {
console.log('doAjax....');
console.log(res);
}).catch((err) => {
console.log(err);
})
}
}

@ -0,0 +1,5 @@
export default {
gethtname: (state) => {
return state.htname;
}
}

@ -0,0 +1,25 @@
import Vue from 'vue'
import Vuex from 'vuex'
import state from './State'
import mutations from './mutations'
import actions from './actions'
import getters from './getters'
Vue.use(Vuex)
export default new Vuex.Store({
// state: {
// schoolId: ''
// },
// mutations: {
// getData(state, res) {
// state.schoolId = res
// console.log(state.schoolId);
// }
// },
state,
actions,
getters,
mutations,
modules: {}
})

@ -0,0 +1,8 @@
export default {
sethtname(state, payload) {
state.htname = payload.htname;
},
setToken(state, token) {
state.token = token
},
}

@ -0,0 +1,16 @@
// rem等比适配配置文件
// 基准大小
const baseSize = 16
// 设置 rem 函数
function setRem () {
// 当前页面宽度相对于 1920宽的缩放比例,可根据自己需要修改。
const scale = document.documentElement.clientWidth / 1920
// 设置页面根节点字体大小(“Math.min(scale, 2)” 指最高放大比例为2,可根据实际业务需求调整)
document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px'
}
// 初始化
setRem()
// 改变窗口大小时重新设置 rem
window.onresize = function () {
setRem()
}

@ -0,0 +1,47 @@
// let host = 'http://192.168.31.117:8080'
// let host1 = 'http://192.168.31.152:8080'
// let host2 = 'http://192.168.31.152:9000'//榕
let host = ''
if(location.host.includes('liuwanr.cn')){
host = 'http://www.liuwanr.cn'
}else{
host = 'http://www.occupationlab.com'
}
let host2 = 'http://116.63.168.79'
let host1 = 'http://39.108.250.202:8080'
let uploadURL = 'http://8.134.8.197:8001'
export default {
fileupload: `${uploadURL}/oss/manage/fileupload`,
QueryPointOfJudgement: `${host}/judgment/pointOfJudgement/queryPointOfJudgement`, //判分点列表查询
DeletePointOfJudgement: `${host}/judgment/pointOfJudgement/deletePointOfJudgement`, //判分点列表删除
QueryPfdInformation: `${host}/judgment/pointOfJudgement/queryPfdInformation`, //判分点详细信息
UpdatePointOfJudgement: `${host}/judgment/pointOfJudgement/updatePointOfJudgement`, //编辑判分点基本信息
UpdatePointOfJudgementRule: `${host}/judgment/pointOfJudgement/updatePointOfJudgementRule`, //编辑判分点规则
AddPfdgzInformation: `${host}/judgment/pointOfJudgement/addPfdgzInformation`, //新增判分规则
AddPfdInformation: `${host}/judgment/pointOfJudgement/addPfdInformation`, //新增判分点基本信息
QueryPfdgzInformation: `${host}/judgment/pointOfJudgement/queryPfdgzInformation`, //判分点规则信息查询
QueryAddgz: `${host}/judgment/pointOfJudgement/queryAddgz`, //查询新增判分点规则新增的数据
DeletePointOfJudgementRule: `${host}/judgment/pointOfJudgement/deletePointOfJudgementRule`, //删除判分点规则
UpdateIsOpen: `${host}/judgment/pointOfJudgement/updateIsOpen`, //修改判分点状态
JudgmentPointNameRepetition: `${host}/judgment/pointOfJudgement/JudgmentPointNameRepetition`,
// 科大
queryPoint: `${host2}/kdSys/queryPoint`,
querySubject: `${host2}/kdSys/querySubject`,
queryItem: `${host2}/kdSys/queryItem`,
// 川大
firstLevel: `${host1}/sichuan/point/firstLevel`,
secondaryLevel: `${host1}/sichuan/point/secondaryLevel`,
thirdLevel: `${host1}/sichuan/point/thirdLevel`,
queryListTrading: `${host2}/judgment/tradingJudgmentPoints/query`,
deleteTrading: `${host2}/judgment/tradingJudgmentPoints/delete`,
addTrading: `${host2}/judgment/tradingJudgmentPoints/add`,
queryDetailsTrading: `${host2}/judgment/tradingJudgmentPoints/queryDetails`,
updateTrading: `${host2}/judgment/tradingJudgmentPoints/update`,
updateRuleTrading: `${host2}/judgment/tradingJudgmentPoints/updateRule`,
deleteRuleTrading: `${host2}/judgment/tradingJudgmentPoints/deleteRule`,
addRule: `${host2}/judgment/tradingJudgmentPoints/addRule`,
}

@ -0,0 +1,56 @@
function orderRoleType (sts) {
const status = {
0: '借款人',
1: '贷款人',
2: '保荐人',
}
return status[sts] || '未知状态'
}
function orderRoleAttribute (sts) {
const status = {
0: '个人',
1: '公司',
}
return status[sts] || '未知状态'
}
function orderperhaps (sts) {
const status = {
0: '且',
1: '或',
}
return status[sts] || '未知状态'
}
function getCookie(cookie_name) {
//获取cookie中指定key的value
var allcookies = document.cookie; //索引长度,开始索引的位置
var cookie_pos = allcookies.indexOf(cookie_name); // 如果找到了索引,就代表cookie存在,否则不存在
if (cookie_pos != -1) {
// 把cookie_pos放在值的开始,只要给值加1即可
//计算取cookie值得开始索引,加的1为“=”
cookie_pos = cookie_pos + cookie_name.length + 1; //计算取cookie值得结束索引
var cookie_end = allcookies.indexOf(";", cookie_pos);
if (cookie_end == -1) {
cookie_end = allcookies.length;
} //得到想要的cookie的值
var value = unescape(allcookies.substring(cookie_pos, cookie_end));
}
return value;
}
export default{
orderRoleType,
orderRoleAttribute,
orderperhaps,
getCookie
}

@ -0,0 +1,340 @@
import axios from 'axios';
import QS from 'qs';
// import store from '../store/index'
import { Message } from 'element-ui'
import router from '../router/index'
import store from '@/store'
// 环境的切换
// if (process.env.NODE_ENV == 'development') {
// axios.defaults.baseURL = '/api';
// } else if (process.env.NODE_ENV == 'debug') {
// axios.defaults.baseURL = '';
// } else if (process.env.NODE_ENV == 'production') {
// axios.defaults.baseURL = 'http://api.123dailu.com/';
// }
// 请求超时时间
axios.defaults.timeout = 30000;
// post请求头
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';
// 请求拦截器
axios.interceptors.request.use(config => {
// if (sessionStorage.getItem('token')) {
// 存在将token写入 request header
config.headers.token = store.state.token
// }
return config;
}, err => {
Message.error({
message: '退出登陆',
onClose: function () {
router.push({name: 'login'});
}
})
return Promise.reject(err);
})
// 响应拦截器
// axios.interceptors.response.use(
// response => {
// consol.log(response.status)
// if (response.status === 200) {
// return Promise.resolve(response);
// } else {
// return Promise.reject(response);
// }
// },
// // 服务器状态码不是200的情况
// error => {
// if (error.response.status) {
// switch (error.response.status) {
// // 401: 未登录
// // 未登录则跳转登录页面,并携带当前页面的路径
// // 在登录成功后返回当前页面,这一步需要在登录页操作。
// case 500:
// router.replace({
// path: '/login',
// // query: { redirect: router.currentRoute.fullPath }
// });
// break;
// // 403 token过期
// // 登录过期对用户进行提示
// // 清除本地token和清空vuex中token对象
// // 跳转登录页面
// case 403:
// // Toast({
// // message: '登录过期,请重新登录',
// // duration: 1000,
// // forbidClick: true
// // });
// // 清除token
// sessionStorage.removeItem('token');
// store.commit('loginSuccess', null);
// // 跳转登录页面,并将要浏览的页面fullPath传过去,登录成功后跳转需要访问的页面
// setTimeout(() => {
// router.replace({
// path: '/login',
// query: {
// redirect: router.currentRoute.fullPath
// }
// });
// }, 1000);
// break;
// // 404请求不存在
// case 404:
// router.replace({
// path: '/404',
// });
// break;
// // 其他错误,直接抛出错误提示
// default:
// router.replace({
// path: '/500',
// });
// }
// return Promise.reject(error.response);
// }
// }
// );
/**
* get方法对应get请求
*/
export function get(url, params){
return new Promise((resolve, reject) =>{
axios.get(url, {
params: params
})
.then(res => {
if (res.data.status) {
switch (res.data.status) {
case 200:
resolve(res.data);
break;
case 10000:
resolve(res.data);
break;
case 500:
this.$message.error(
res.data.errmessage
);
break;
case 404:
this.$message.error(
res.data.errmessage
);
break;
case 403:
this.$message.error(
res.data.errmessage
);
break;
case 401:
Message.error("token失效,请重新登录");
sessionStorage.removeItem('token');
router.replace('/login')
break;
case 405:
this.$message.error(
res.data.errmessage
);
break;
case 406:
this.$message.error(
res.data.errmessage
);
reject(res.data)
break;
}
}
})
.catch(err => {
reject(err.data)
this.$message({
showClose: true,
message: '请求失败,请刷新页面重新进行请求',
type: 'error'
});
})
});
}
/**
* post方法对应post请求
*/
export function post(url, params) {
return new Promise((resolve, reject) => {
axios.post(url,params)
.then(res => {
if (res.data.status) {
switch (res.data.status) {
case 200:
resolve(res.data);
break;
case 500:
this.$message.error(
res.data.errmessage
);
break;
case 404:
this.$message.error(
res.data.errmessage
);
break;
case 403:
this.$message.error(
res.data.errmessage
);
break;
case 401:
Message.error("token失效,请重新登录");
sessionStorage.removeItem('token');
router.replace('/login')
break;
case 405:
this.$message.error(
res.data.errmessage
);
break;
case 406:
this.$message.error(
res.data.errmessage
);
break;
}
}
})
.catch(err => {
reject(err.data)
this.$message({
showClose: true,
message: '请求失败,请刷新页面重新进行请求',
type: 'error'
});
})
});
}
/**
* delete方法对应delete请求
*/
export function del(url, params){
return new Promise((resolve, reject) =>{
axios.delete(url, {
params: params
})
.then(res => {
if (res.data.status) {
switch (res.data.status) {
case 200:
resolve(res.data);
break;
case 500:
this.$message.error(
res.data.errmessage
);
break;
case 404:
this.$message.error(
res.data.errmessage
);
router.replace({
path: '/404',
});
break;
case 403:
this.$message.error(
res.data.errmessage
);
break;
case 401:
Message.error("token失效,请重新登录");
sessionStorage.removeItem('token');
router.replace('/login')
break;
case 405:
this.$message.error(
res.data.errmessage
);
break;
case 406:
this.$message.error(
res.data.errmessage
);
break;
}
}
})
.catch(err => {
reject(err.data)
this.$message({
showClose: true,
message: '请求失败,请刷新页面重新进行请求',
type: 'error'
});
})
});
}
/**
* put修改
* @param {} url
* @param {*} params
*/
export function put(url, params){
return new Promise((resolve, reject) =>{
axios.put(url, params)
.then(res => {
if (res.data.status) {
switch (res.data.status) {
case 200:
resolve(res.data);
break;
case 500:
this.$message.error(
res.data.errmessage
);
break;
case 404:
this.$message.error(
res.data.errmessage
);
break;
case 403:
this.$message.error(
res.data.errmessage
);
break;
case 401:
Message.error("token失效,请重新登录");
sessionStorage.removeItem('token');
router.replace('/login')
break;
case 405:
this.$message.error(
res.data.errmessage
);
break;
case 406:
this.$message.error(
res.data.errmessage
);
break;
}
}
})
.catch(err => {
reject(err.data)
this.$message({
showClose: true,
message: '请求失败,请刷新页面重新进行请求',
type: 'error'
});
})
});
}

@ -0,0 +1,254 @@
<template>
<div class="content">
<div class="flex">
<div class="left">
<div class="flex footer_h">
<i class="el-icon-collection-tag"></i>
<p>目录树</p>
</div>
<div>
<el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
</div>
</div>
<div class="right">
<div class="flex footer_h">
<i class="el-icon-collection-tag"></i>
<p>授信审批-工单页面</p>
</div>
<div class="table">
<el-row>
<el-col :span="24">
<el-card shadow="hover">
<el-table
:data="tableData"
height="360"
:cell-style="rowClass"
:header-cell-style="headClass"
:stripe="true"
header-align="center"
>
<el-table-column prop="id" type="index" label="序号" width="150" align="center"></el-table-column>
<el-table-column prop="name" label="页面名称" align="center"></el-table-column>
<el-table-column prop="operate" label="操作" width="100" align="center">
<template slot-scope="scope">
<el-radio v-model="scope.radio"></el-radio>
</template>
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</div>
</div>
</div>
<div class="bt">
<el-button type="primary" @click="confirm()">确认</el-button>
<el-button @click="cancel()">取消</el-button>
</div>
</div>
</template>
<script>
export default {
data() {
return {
data: [
{
label: "贷款申请",
children: [
{
label: "二级 1-1",
children: [
{
label: "三级 1-1-1"
}
]
}
]
},
{
label: "贷后管理",
children: [
{
label: "二级 2-1",
children: [
{
label: "三级 2-1-1"
}
]
},
{
label: "二级 2-2",
children: [
{
label: "三级 2-2-1"
}
]
}
]
},
{
label: "贷中管理",
children: [
{
label: "授信审批"
}
]
}
],
defaultProps: {
children: "children",
label: "label"
},
tableData: [
{
name: "贷款申请表"
},
{
name: "授信审批表"
},
{
name: "贷款申请表"
},
{
name: "授信审批表"
}
],
scope: [
{
radio: "1"
},
{
radio: "2"
}
]
};
},
methods: {
handleNodeClick(data) {
console.log(data);
},
cancel() {
this.$router.push({ path: "/flow" });
},
confirm() {
this.$router.push({ path: "/process" });
}
}
};
</script>
<style lang="scss" scoped>
//
.bt {
text-align: center;
}
/deep/ .el-button {
width: 100px;
margin: 0 30px;
}
//
.right {
width: 800px;
height: 500px;
margin: 20px 0;
background-color: #ffffff;
}
.table {
margin: 0 20px;
}
/deep/ .el-table--group::after,
.el-table--border::after,
.el-table::before {
background-color: #ffffff;
}
//
/deep/ ::-webkit-scrollbar {
width: 6px; //
height: 6px; //
}
//
/deep/ ::-webkit-scrollbar-thumb {
background-color: #9278ff;
border-radius: 3px;
-webkit-box-shadow: inset 0 0 5px #dddddd;
}
/deep/ ::-webkit-scrollbar-track {
/*滚动条里面轨道*/
-webkit-box-shadow: inset 0 0 5px #dddddd;
border-radius: 0;
background: #dddddd;
}
/deep/ .el-row {
padding: 0 20px;
}
/deep/ .el-card__body {
padding: 0;
}
/deep/ .el-card {
border: none;
}
/deep/ .el-table th {
font-size: 16px;
font-family: Microsoft YaHei;
color: rgba(255, 255, 255, 1);
background-color: #9278ff;
}
/deep/ .el-table__row {
height: 80px;
}
/deep/ .el-table--striped .el-table__body tr.el-table__row--striped td {
background-color: #f5f2ff;
}
//
.left {
width: 250px;
height: 500px;
margin: 20px 20px;
background-color: #ffffff;
}
/deep/ .el-tree {
width: 150px;
height: 400px;
background-color: #f5f2ff;
margin: 0 50px;
}
/deep/ .el-tree-node:focus > .el-tree-node__content {
background-color: #f5f2ff;
}
/deep/ .el-tree-node__content:hover {
background-color: #f5f2ff;
}
/deep/ .el-tree-node__label:active {
color: #9278ff;
}
//
.footer_h {
padding: 10px 0;
margin: 0 15px;
}
.flex {
display: flex;
justify-content: flex-start;
}
.footer_h p {
padding-left: 10px;
line-height: 15px;
font-weight: 600;
}
/deep/ [class*=" el-icon-"],
[class^="el-icon-"] {
line-height: 3;
padding-left: 10px;
color: #9278ff;
}
.content {
width: 1110px;
height: 650px;
position: relative;
margin: 0 auto;
// display: flex;
background-color: rgb(243, 235, 235);
// background-color: red;
}
</style>

@ -0,0 +1,199 @@
<template>
<!-- 流程类 -->
<div class="content">
<div class="header flex">
<i class="el-icon-arrow-left" @click="Back()" style="cursor:pointer">
<span>Back</span>
</i>
<p>判分点设置</p>
<button class="button" @click="Savejump()">保存</button>
</div>
<div class="footer">
<div>
<div class="flex footer_h">
<div class="black"></div>
<p>基本信息</p>
</div>
<div class="flex footer_input">
<p>判分点名称</p>
<el-input placeholder="请输入内容" v-model="input" clearable></el-input>
</div>
<div class="flex footer_inputs">
<p>实验要求</p>
<textarea id="memo" style="outline:none;"></textarea>
</div>
<div class="flex footer_b">
<div class="black"></div>
<p>判分规则</p>
<button class="button">新增</button>
</div>
</div>
</div>
<div style=" background-color: #ffffff;height:600px">
<div class="form">
<p>业务页面</p>
<div class="form_i" @click="iconJump()">
<i class="el-icon-plus" style="font-size:80px;font-weight:800;color: #cccccc;"></i>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
input: "",
textarea: ""
};
},
methods: {
Savejump() {
this.$router.push({ path: "/" });
},
Back() {
this.$router.push({ path: "/" });
},
iconJump() {
this.$router.push({ path: "/catalog" });
}
}
};
</script>
<style lang="scss" scoped>
//
.form {
margin: 0 15px;
}
.form p {
height: 30px;
background-color: #9278ff;
text-align: center;
margin: 0;
line-height: 30px;
}
.form_i {
height: 300px;
background-color: #f5f2ff;
margin-top: 15px;
text-align: center;
}
.footer_b p {
// padding-right: 800px;
margin: 0;
padding-left: 10px;
font-size: 12px;
}
.footer_b {
padding: 10px 0;
border-top: 1px dashed #cccccc;
margin: 0 15px;
height: 45px;
line-height: 45px;
}
#memo {
margin-left: 10px;
height: 200px;
width: 800px;
resize: none;
border: 1px solid #9278ff;
font-size: 12px;
border-radius: 5px;
}
/deep/ .el-input--suffix .el-input__inner {
border: 1px solid #9278ff;
}
.footer_input p {
font-size: 12px;
padding-right: 20px;
}
.footer_input {
padding: 30px 0 20px 80px;
}
.footer_inputs {
padding: 30px 0 20px 80px;
}
.footer_inputs p {
font-size: 12px;
padding-right: 20px;
}
/deep/ .el-input {
width: 30%;
}
.button {
height: 30px;
width: 80px;
margin-top: 7px;
border: none;
background-color: #9278ff;
color: #ffffff;
border-radius: 20px;
position: absolute;
right: 30px;
}
.button:focus {
outline: 0;
}
/deep/ [class*=" el-icon-"],
[class^="el-icon-"] {
line-height: 3;
padding-left: 10px;
}
// .form /deep/ [class*=" el-icon-"],
// [class^="el-icon-"] {
// line-height: 3;
// padding-left: 10px;
// color: #cccccc;
// }
.header {
background-color: #ffffff;
height: 45px;
line-height: 45px;
font-size: 14px;
font-weight: 600;
position: relative;
}
.header span {
font-size: 14px;
font-weight: 600;
padding-left: 5px;
}
.header p {
padding-left: 20px;
margin: 0;
}
.footer_h {
// padding: 10px 0;
border-top: 1px dashed #cccccc;
border-bottom: 1px dashed #cccccc;
margin: 0 15px;
height: 45px;
line-height: 45px;
}
.flex {
display: flex;
justify-content: flex-start;
}
.footer {
background-color: #ffffff;
}
.footer_h p {
padding-left: 10px;
font-size: 12px;
margin: 0;
}
.black {
width: 8px;
height: 18px;
background-color: #333;
margin-top: 10px;
}
.content {
background-color: #f2f6fc;
position: relative;
top: 10px;
}
</style>

@ -0,0 +1,403 @@
<template>
<div class="content">
<div class="header flex">
<i class="el-icon-arrow-left" @click="BackMain()" style="cursor:pointer">
<span>Back</span>
</i>
<p>{{systemName}} 判分点设置</p>
</div>
<div class="footer">
<div class="flex-end">
<div>
<el-input placeholder="请输入考核名称" prefix-icon="el-icon-search" v-model="keyword" clearable></el-input>
</div>
</div>
<div class="flex footer_h">
<!-- <i class="el-icon-collection-tag"></i> -->
<div class="black"></div>
<p>判分点列表</p>
<el-button class="button" @click="HomepageJump()">新增</el-button>
</div>
<div>
<el-row>
<el-col :span="24">
<el-card shadow="hover">
<el-table
:data="tableData"
:cell-style="rowClass"
:header-cell-style="headClass"
:stripe="true"
header-align="center"
>
<el-table-column type="index" label="序号" align="center">
<template slot-scope="scope">{{scope.$index + (pageNo - 1) * pageSize + 1}}</template>
</el-table-column>
<el-table-column prop="judgmentPointsName" label="判分点名称" align="center"></el-table-column>
<el-table-column label="实验要求" align="center">
<template slot-scope="scope">
<quill :border="true" :readonly="true" v-model="scope.row.experimentalRequirements" :minHeight="150" :height="150" />
</template>
</el-table-column>
<el-table-column prop="operate" label="操作" align="center">
<template slot-scope="scope">
<el-button @click="handleClick(scope.row)" type="text" size="small">编辑</el-button>
<el-button @click="getListDelete(scope.row)" type="text" size="small">删除</el-button>
</template>
</el-table-column>
<el-table-column prop="isopen" label="是否启用" align="center" min-width="20%">
<template slot-scope="scope">
<el-switch
v-model="scope.row.isopen"
:active-value="0"
:inactive-value="1"
@change="changeSwitch($event,scope.row,scope.$index)"
></el-switch>
</template>
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
<!-- 分页 -->
<div class="block">
<el-pagination
background
@current-change="handleCurrentChange"
:current-page="pageNo"
:page-size="10"
layout="total,prev, pager, next, jumper"
:total="dataTotal"
></el-pagination>
</div>
</div>
</div>
</div>
</template>
<script>
import axios from "axios";
import quill from '@/components/quill'
export default {
data() {
return {
keyword: '',
searchTimer: null,
tableData: [],
dataTotal: 0, // ()
pageNo: 1,
pageSize: 10,
currentPage: 1,
systemId: "",
userId: "",
systemName: ""
};
},
components: {quill},
watch: {
keyword: function(val) {
clearTimeout(this.searchTimer)
this.searchTimer = setTimeout(() => {
this.initData()
},500)
},
},
mounted() {
this.handleCurrentChange(this.pageNo);
},
methods: {
changeSwitch(e, row, index) {
let newData = row;
newData.isopen = newData.isopen === 1 ? 1 : 0;
this.tableData[index] = newData;
this.$post(this.api.UpdateIsOpen, {
judgmentPointsId: row.judgmentPointsId,
isopen: newData.isopen
});
},
BackMain() {
// window.location = "http://www.liuwanr.cn:8080/serviceSide/#/configure";
history.back()
},
handleCurrentChange(val) {
this.pageNo = val;
this.systemId = this.getCookie("systemId");
this.systemId = this.systemId ? this.systemId : 1
this.systemName = this.getCookie("systemName");
this.userId = this.getCookie("userId");
this.$get(this.api.QueryPointOfJudgement, {
systemId: this.systemId,
userId: this.userId,
// systemId: 1,
pageNum: this.pageNo,
pageSize: this.pageSize,
queryName: this.keyword
})
.then(res => {
this.tableData = res.message.list;
this.dataTotal = res.message.total;
})
.catch(err => {
console.log(err);
});
},
initData(){
this.pageNo = 1
this.handleCurrentChange(this.pageNo)
},
// setCookie(name, value) {
// if (value) {
// var days = 1; //
// var exp = new Date();
// exp.setTime(exp.getTime() + days * 24 * 60 * 60 * 1000); // Cookie, toGMTString
// document.cookie =
// name +
// "=" +
// escape(value) +
// ";expires=" +
// exp.toGMTString +
// ";path=/;";
// }
// },
//
HomepageJump() {
//ID
// this.setCookie("judgmentPointsId", "");
// console.log(this.getCookie("judgmentPointsId"));
// this.$router.push({ path: "/program" });
this.$router.push({ path: "/program" });
},
//
headClass() {
return "text-align: center;";
},
//
rowClass() {
return "text-align: center;";
},
getCookie(cookie_name) {
//cookiekeyvalue
var allcookies = document.cookie; //
var cookie_pos = allcookies.indexOf(cookie_name); // cookie,
if (cookie_pos != -1) {
// cookie_pos1
//cookie1=
cookie_pos = cookie_pos + cookie_name.length + 1; //cookie
var cookie_end = allcookies.indexOf(";", cookie_pos);
if (cookie_end == -1) {
cookie_end = allcookies.length;
} //cookie
var value = unescape(allcookies.substring(cookie_pos, cookie_end));
}
return value;
},
//
getListDelete(res) {
this.$confirm("此操作将永久删除该内容, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
center: true
})
.then(() => {
this.$post(this.api.DeletePointOfJudgement, {
judgmentPointsId: res.judgmentPointsId
})
.then(res => {
let totalPage = Math.ceil((this.dataTotal - 1) / this.pageSize);
let currentPage =
this.pageNo > totalPage ? totalPage : this.pageNo;
this.pageNo = currentPage < 1 ? 1 : currentPage;
this.handleCurrentChange(this.pageNo);
})
.catch(err => {
console.log(err);
});
this.$message({
type: "success",
message: "删除成功!"
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消删除"
});
});
},
//
handleClick(res) {
this.$router.push({
path: "/program",
query: { judgmentPointsId: res.judgmentPointsId }
});
}
}
};
</script>
<style lang="scss" scoped>
/deep/.ql-toolbar{
height: 0;
padding: 0;
border-bottom: 0;
}
//
.footer /deep/ .el-pagination span:not([class*="suffix"]),
.el-pagination button {
font-size: 16px;
margin-right: 30px;
}
.footer /deep/ .el-pagination {
text-align: right;
margin: 20px 0 0 0;
}
/deep/ .el-button {
line-height: 0;
}
.footer {
background-color: #ffffff;
margin-top: 10px;
padding: 10px 20px 20px 20px;
}
.footer_h {
position: relative;
height: 50px;
line-height: 50px;
}
.footer_h .black {
width: 8px;
height: 18px;
background-color: #333;
margin-top: 15px;
}
.footer_h p {
padding-left: 10px;
// padding-right: 980px;
font-size: 14px;
font-weight: 600;
margin: 0;
}
//
.footer /deep/ .el-textarea__inner {
height: 60px;
width: 540px;
resize: none;
border: 1px solid #9278ff;
font-size: 12px;
border-radius: 5px;
}
.footer /deep/ .el-textarea__inner:hover {
border: 1px solid #9278ff;
}
.footer /deep/ .el-table th.is-leaf,
.el-table td {
border-bottom: none;
}
.footer /deep/ .el-table--group::after,
.el-table--border::after,
.el-table::before {
background: rgba(255, 255, 255, 1);
}
//
/deep/ ::-webkit-scrollbar {
width: 6px; //
height: 6px; //
}
//
/deep/ ::-webkit-scrollbar-thumb {
background-color: #9278ff;
border-radius: 3px;
-webkit-box-shadow: inset 0 0 5px #dddddd;
}
/deep/ ::-webkit-scrollbar-track {
/*滚动条里面轨道*/
-webkit-box-shadow: inset 0 0 5px #dddddd;
border-radius: 0;
background: #dddddd;
}
.footer /deep/ .el-card__body {
padding: 0;
}
.footer /deep/ .el-card {
border: none;
}
.footer /deep/ .el-table th {
font-size: 14px;
font-family: Microsoft YaHei;
color: rgba(255, 255, 255, 1);
background-color: #9278ff;
}
.footer /deep/ .el-table--striped .el-table__body tr.el-table__row--striped td {
background-color: #f5f2ff;
}
.footer /deep/ .el-button--text {
padding-right: 20px;
color: #9278ff;
}
.footer /deep/ .el-button--text:focus,
.el-button--text:hover {
color: #9278ff;
}
.button {
height: 30px;
width: 80px;
margin-top: 7px;
border: none;
background-color: #9278ff;
color: #ffffff;
border-radius: 20px;
position: absolute;
right: 30px;
}
.button:focus {
outline: 0;
}
.header /deep/ [class*=" el-icon-"],
[class^="el-icon-"] {
line-height: 3;
padding-left: 10px;
}
.header {
background-color: #ffffff;
height: 50px;
font-size: 12px;
line-height: 50px;
font-weight: 600;
}
.header span {
font-size: 16px;
font-weight: 600;
padding-left: 5px;
}
.header p {
font-size: 14px;
padding-left: 20px;
margin: 0;
}
.flex {
display: flex;
justify-content: flex-start;
}
.flex-end{
display: flex;
justify-content: flex-end;
}
.content {
position: relative;
top: 10px;
}
</style>

@ -0,0 +1,383 @@
<template>
<div class="content">
<div class="header flex">
<i class="el-icon-arrow-left" @click="BackMain()" style="cursor:pointer">
<span>Back</span>
</i>
<p>{{systemName}} 判分点设置</p>
</div>
<div class="footer">
<div class="flex-end">
<div>
<el-input placeholder="请输入考核名称" prefix-icon="el-icon-search" v-model="keyword" clearable></el-input>
</div>
</div>
<div class="flex footer_h">
<!-- <i class="el-icon-collection-tag"></i> -->
<div class="black"></div>
<p>判分点列表</p>
<el-button class="button" @click="HomepageJump()">新增</el-button>
</div>
<div>
<el-row>
<el-col :span="24">
<el-card shadow="hover">
<el-table
:data="tableData"
:cell-style="rowClass"
:header-cell-style="headClass"
:stripe="true"
header-align="center"
>
<el-table-column type="index" label="序号" align="center">
<template slot-scope="scope">{{scope.$index + (pageNo - 1) * pageSize + 1}}</template>
</el-table-column>
<el-table-column prop="judgmentPointsName" label="判分点名称" align="center"></el-table-column>
<el-table-column label="实验要求" align="center">
<template slot-scope="scope">
<quill :border="true" :readonly="true" v-model="scope.row.experimentalRequirements" :minHeight="150" :height="150" />
</template>
</el-table-column>
<el-table-column prop="operate" label="操作" align="center">
<template slot-scope="scope">
<el-button @click="handleClick(scope.row)" type="text" size="small">编辑</el-button>
<el-button @click="getListDelete(scope.row)" type="text" size="small">删除</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
<!-- 分页 -->
<div class="block">
<el-pagination
background
@current-change="handleCurrentChange"
:current-page="pageNo"
:page-size="10"
layout="total,prev, pager, next, jumper"
:total="dataTotal"
></el-pagination>
</div>
</div>
</div>
</div>
</template>
<script>
import axios from "axios";
import quill from '@/components/quill'
export default {
data() {
return {
keyword: '',
tableData: [],
dataTotal: 0, // ()
pageNo: 1,
pageSize: 10,
currentPage: 1,
systemId: this.$route.query.systemId ? this.$route.query.systemId : 1,
userId: this.$route.query.userId,
systemName: "",
searchTimer: null
};
},
components: {quill},
watch: {
keyword: function(val) {
clearTimeout(this.searchTimer)
this.searchTimer = setTimeout(() => {
this.handleCurrentChange(this.pageNo)
},500)
},
},
mounted() {
this.$route.query.token && this.$store.commit('setToken',this.$route.query.token)
this.handleCurrentChange(this.pageNo);
},
methods: {
changeSwitch(e, row, index) {
let newData = row;
newData.isopen = newData.isopen === 1 ? 1 : 0;
this.tableData[index] = newData;
this.$post(this.api.UpdateIsOpen, {
judgmentPointsId: row.judgmentPointsId,
isopen: newData.isopen
});
},
BackMain() {
// window.location = "http://www.liuwanr.cn:8080/serviceSide/#/configure";
history.back()
},
handleCurrentChange(val) {
this.pageNo = val;
let data = {
systemId: this.systemId,
userId: this.userId,
pageNum: this.pageNo,
pageSize: this.pageSize,
judgmentPointsName: this.keyword
}
this.$get(this.api.queryListTrading,data)
.then(res => {
this.tableData = res.message.rows
this.dataTotal = res.message.total
})
.catch(err => {
console.log(err);
});
},
// setCookie(name, value) {
// if (value) {
// var days = 1; //
// var exp = new Date();
// exp.setTime(exp.getTime() + days * 24 * 60 * 60 * 1000); // Cookie, toGMTString
// document.cookie =
// name +
// "=" +
// escape(value) +
// ";expires=" +
// exp.toGMTString +
// ";path=/;";
// }
// },
//
HomepageJump() {
//ID
// this.setCookie("judgmentPointsId", "");
// console.log(this.getCookie("judgmentPointsId"));
if(this.systemId == 2){
this.$router.push(`programOption?systemId=${this.systemId}&userId=${this.userId}`);
}else{
this.$router.push(`programOptions?systemId=${this.systemId}&userId=${this.userId}`);
}
},
//
headClass() {
return "text-align: center;";
},
//
rowClass() {
return "text-align: center;";
},
getCookie(cookie_name) {
//cookiekeyvalue
var allcookies = document.cookie; //
var cookie_pos = allcookies.indexOf(cookie_name); // cookie,
if (cookie_pos != -1) {
// cookie_pos1
//cookie1=
cookie_pos = cookie_pos + cookie_name.length + 1; //cookie
var cookie_end = allcookies.indexOf(";", cookie_pos);
if (cookie_end == -1) {
cookie_end = allcookies.length;
} //cookie
var value = unescape(allcookies.substring(cookie_pos, cookie_end));
}
return value;
},
//
getListDelete(row) {
this.$confirm("此操作将永久删除该内容, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
center: true
})
.then(() => {
let data = [row.id]
this.$post(`${this.api.deleteTrading}`,data)
.then(res => {
this.handleCurrentChange(this.pageNo);
})
.catch(err => {
console.log(err);
});
this.$message({
type: "success",
message: "删除成功!"
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消删除"
});
});
},
//
handleClick(res) {
if(this.systemId == 2){
this.$router.push(`programOption?systemId=${this.systemId}&userId=${this.userId}&id=${res.id}`);
}else{
this.$router.push(`programOptions?systemId=${this.systemId}&userId=${this.userId}&id=${res.id}`);
}
}
}
};
</script>
<style lang="scss" scoped>
/deep/.ql-toolbar{
height: 0;
padding: 0;
border-bottom: 0;
}
//
.footer /deep/ .el-pagination span:not([class*="suffix"]),
.el-pagination button {
font-size: 16px;
margin-right: 30px;
}
.footer /deep/ .el-pagination {
text-align: right;
margin: 20px 0 0 0;
}
/deep/ .el-button {
line-height: 0;
}
.footer {
background-color: #ffffff;
margin-top: 10px;
padding: 10px 20px 20px 20px;
}
.footer_h {
position: relative;
line-height: 50px;
}
.footer_h .black {
width: 8px;
height: 18px;
background-color: #333;
margin-top: 15px;
}
.footer_h p {
padding-left: 10px;
// padding-right: 980px;
font-size: 14px;
font-weight: 600;
margin: 0;
}
//
.footer /deep/ .el-textarea__inner {
height: 60px;
width: 540px;
resize: none;
border: 1px solid #9278ff;
font-size: 12px;
border-radius: 5px;
}
.footer /deep/ .el-textarea__inner:hover {
border: 1px solid #9278ff;
}
.footer /deep/ .el-table th.is-leaf,
.el-table td {
border-bottom: none;
}
.footer /deep/ .el-table--group::after,
.el-table--border::after,
.el-table::before {
background: rgba(255, 255, 255, 1);
}
//
/deep/ ::-webkit-scrollbar {
width: 6px; //
height: 6px; //
}
//
/deep/ ::-webkit-scrollbar-thumb {
background-color: #9278ff;
border-radius: 3px;
-webkit-box-shadow: inset 0 0 5px #dddddd;
}
/deep/ ::-webkit-scrollbar-track {
/*滚动条里面轨道*/
-webkit-box-shadow: inset 0 0 5px #dddddd;
border-radius: 0;
background: #dddddd;
}
.footer /deep/ .el-card__body {
padding: 0;
}
.footer /deep/ .el-card {
border: none;
}
.footer /deep/ .el-table th {
font-size: 14px;
font-family: Microsoft YaHei;
color: rgba(255, 255, 255, 1);
background-color: #9278ff;
}
.footer /deep/ .el-table--striped .el-table__body tr.el-table__row--striped td {
background-color: #f5f2ff;
}
.footer /deep/ .el-button--text {
padding-right: 20px;
color: #9278ff;
}
.footer /deep/ .el-button--text:focus,
.el-button--text:hover {
color: #9278ff;
}
.button {
height: 30px;
width: 80px;
margin-top: 7px;
border: none;
background-color: #9278ff;
color: #ffffff;
border-radius: 20px;
position: absolute;
right: 30px;
}
.button:focus {
outline: 0;
}
.header /deep/ [class*=" el-icon-"],
[class^="el-icon-"] {
line-height: 3;
padding-left: 10px;
}
.header {
background-color: #ffffff;
height: 50px;
font-size: 12px;
line-height: 50px;
font-weight: 600;
}
.header span {
font-size: 16px;
font-weight: 600;
padding-left: 5px;
}
.header p {
font-size: 14px;
padding-left: 20px;
margin: 0;
}
.flex {
display: flex;
justify-content: flex-start;
}
.flex-end{
display: flex;
justify-content: flex-end;
}
.content {
position: relative;
top: 10px;
}
</style>

@ -0,0 +1,639 @@
<template>
<div class="content">
<!-- 贷款申请表 -->
<div class="first"><i class="el-icon-error"
style="font-size:26px;padding-right: 10px;"></i></div>
<p class="center">贷款申请表</p>
<div class="footer">
<!-- 申请人基本信息 -->
<div>
<div class="flex footer_one">
<div class="black"></div>
<p>申请人基本信息</p>
</div>
<div class="flex input">
<div class="flex">
<p>借款人姓名</p>
<el-input placeholder="请输入内容"
v-model="input">
</el-input>
</div>
<div class="flex">
<p>性别</p>
<el-select v-model="value"
placeholder="请选择">
<el-option v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>身份证号</p>
<el-input placeholder="请输入内容"
v-model="input1">
</el-input>
</div>
<div class="flex date">
<p>出生年月</p>
<el-date-picker v-model="value1"
type="date"
placeholder="选择日期">
</el-date-picker>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>婚姻状况</p>
<el-select v-model="value2"
placeholder="请选择">
<el-option v-for="item in options1"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<div class="flex">
<p>教育程度</p>
<el-select v-model="value3"
placeholder="请选择">
<el-option v-for="item in options2"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>户籍所在地</p>
<el-input placeholder="请输入内容"
v-model="input2">
</el-input>
</div>
<div class="flex">
<p>现住地址</p>
<el-input placeholder="请输入内容"
v-model="input3">
</el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>住宅电话</p>
<el-input placeholder="请输入内容"
v-model="input4">
</el-input>
</div>
<div class="flex">
<p>手机号码</p>
<el-input placeholder="请输入内容"
v-model="input5">
</el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>生产经营类型</p>
<el-input placeholder="请输入内容"
v-model="input6">
</el-input>
</div>
<div class="flex">
<p>家庭劳动力数量</p>
<el-input placeholder="请输入内容"
v-model="input7">
</el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>配偶姓名</p>
<el-input placeholder="请输入内容"
v-model="input8">
</el-input>
</div>
<div class="flex">
<p>配偶身份证号</p>
<el-input placeholder="请输入内容"
v-model="input9">
</el-input>
</div>
</div>
</div>
<!-- 贷款申请信息 -->
<div>
<div class="flex footer_one">
<div class="black"></div>
<p>贷款申请信息</p>
</div>
<div class="flex input">
<div class="flex">
<p>申请金额</p>
<span class="left">大写</span>
<el-input placeholder="请输入内容"
style="width:220px;"
v-model="data">
</el-input>
</div>
<div class="flex">
<p>申请金额</p>
<span class="left">小写</span>
<el-input placeholder="请输入内容"
style="width:220px;"
v-model="data1">
</el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>贷款期限</p>
<el-input placeholder="请输入内容"
style="width:220px;"
v-model="data2">
</el-input>
<span class="right_p20"></span>
</div>
<div class="flex date">
<p>借款用途</p>
<el-input placeholder="请输入内容"
v-model="data3">
</el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>还款方式</p>
<el-select v-model="value4"
placeholder="请选择">
<el-option v-for="item in options3"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<div class="flex">
<p>首次还本月</p>
<span class="left"></span>
<el-input placeholder="请输入内容"
style="width:210px;"
v-model="data4">
</el-input>
<span class="right"></span>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>()款账户户名</p>
<el-input placeholder="请输入内容"
v-model="data5">
</el-input>
</div>
<div class="flex">
<p>账号</p>
<el-input placeholder="请输入内容"
v-model="data6">
</el-input>
</div>
</div>
</div>
<!-- 保证人基本信息 -->
<div>
<div class="flex footer_one">
<div class="black"></div>
<p>保证人基本信息</p>
</div>
<div class="flex input">
<div class="flex">
<p>保证人姓名</p>
<el-input placeholder="请输入内容"
v-model="bail">
</el-input>
</div>
<div class="flex">
<p>性别</p>
<el-select v-model="value5"
placeholder="请选择">
<el-option v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>身份证号</p>
<el-input placeholder="请输入内容"
v-model="bail1">
</el-input>
</div>
<div class="flex date">
<p>出生年月</p>
<el-date-picker v-model="value6"
type="date"
placeholder="选择日期">
</el-date-picker>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>婚姻状况</p>
<el-select v-model="value7"
placeholder="请选择">
<el-option v-for="item in options1"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<div class="flex">
<p>教育程度</p>
<el-select v-model="value8"
placeholder="请选择">
<el-option v-for="item in options2"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>户籍所在地</p>
<el-input placeholder="请输入内容"
v-model="bail3">
</el-input>
</div>
<div class="flex">
<p>现住地址</p>
<el-input placeholder="请输入内容"
v-model="bail4">
</el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>联系电话</p>
<el-input placeholder="请输入内容"
v-model="bail5">
</el-input>
</div>
<div class="flex">
<p>工作单位</p>
<el-input placeholder="请输入内容"
v-model="bail6">
</el-input>
</div>
</div>
<div class="flex input">
<div class="flex">
<p>月收入</p>
<el-input placeholder="请输入内容"
style="width:220px;"
v-model="bail7">
</el-input>
<span class="right_p20"></span>
</div>
<div class="flex">
<p>与申请人关系</p>
<el-input placeholder="请输入内容"
v-model="bail8">
</el-input>
</div>
</div>
</div>
<!-- 借款人与保证人声明及承诺 -->
<div>
<div class="flex footer_one">
<div class="black"></div>
<p>借款人与保证人声明及承诺</p>
</div>
<div class="box">
<p>1.我承诺以上所填信息完全属实若由xx银行工作人员或其他人员代为填写是经我授权并认可的且按规定报送责行留存的资料复印件属实;</p>
<p>2.我承认本申请表作为向责行申请贷款的依据无论银行是否贷款银行均有权保留此申请书及相关资料;</p>
<p>3.经贵行审查本申请不符合规定的条件而未予通过时我没有异议;</p>
<p>4.本人授权x x银行在本次业务过程中(从业务申请至业务终止)向中国人民银行个人信用信息基础数据库及信贷征信主管部门批准建立的其他个人信用数据库或有关单位部门及个人查询并留存本人的信用信息并将本人信用信息提供给上述个人信用数据库查询获得的信用报告限用于中国人民银行颁布的个人信用信息基础数据库管理暂行办法规定用途范围内;</p>
<p>5.保证人已明确知道如果借款人不能及时偿还全部贷款本息时保证人应当替其偿还;</p>
<p>6.我们承诺借款人与保证人家庭之间的经济相互独立且无其他债权债务关系贷款由借款人用于申请时指定的用途不由保证人使用</p>
<div class="flex small_box"
style="margin-top: 20px;">
<p>申请人签字</p>
<el-input placeholder="请输入内容"
v-model="sign">
</el-input>
</div>
<div class="flex small_box">
<p>申请人配偶(主要财产共有人)签字</p>
<el-input placeholder="请输入内容"
v-model="sign1">
</el-input>
</div>
<div class="flex small_box">
<p>保证人签字</p>
<el-input placeholder="请输入内容"
v-model="sign2">
</el-input>
</div>
<div class="flex date small_box"
style="justify-content:flex-end;">
<p>日期</p>
<el-date-picker v-model="value9"
type="date"
placeholder="选择日期">
</el-date-picker>
</div>
</div>
</div>
<!-- 业务审批 -->
<div>
<div class="flex footer_one">
<div class="black"></div>
<p>业务审批</p>
</div>
<div class="box"
style="height: 200px;">
<div class="flex small_box"
style="margin-top: 50px;">
<p>申请人签字</p>
<el-select v-model="sign3"
placeholder="请选择">
<el-option v-for="item in options4"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</div>
</div>
</div>
<div style="height:40px"></div>
</div>
</template>
<script>
export default {
data () {
return {
input: '',
input1: '',
input2: '',
input3: '',
input4: '',
input5: '',
input6: '',
input7: '',
input8: '',
input9: '',
value: '',
value1: '',
value2: '',
value3: '',
value4: '',
value5: '',
value6: '',
value7: '',
value8: '',
value9: '',
data: '',
data1: '',
data2: '',
data3: '',
data4: '',
data5: '',
data6: '',
bail: '',
bail1: '',
bail2: '',
bail3: '',
bail4: '',
bail5: '',
bail6: '',
bail7: '',
bail8: '',
sign: '',
sign1: '',
sign2: '',
sign3: '',
options: [{
value: '选项1',
label: '男'
}, {
value: '选项2',
label: '女'
}],
options1: [{
value: '选项1',
label: '未婚'
}, {
value: '选项2',
label: '已婚'
}, {
value: '选项3',
label: '离婚'
}],
options2: [{
value: '选项1',
label: '研究生及以上'
}, {
value: '选项2',
label: '大学本科'
}, {
value: '选项3',
label: '大专/高职'
}, {
value: '选项4',
label: '初中及以下'
}],
options3: [{
value: '选项1',
label: '一次性还本利息'
}, {
value: '选项2',
label: '等额本息还款'
}, {
value: '选项3',
label: '阶段性等额本息还款'
}],
options4: [{
value: '选项1',
label: '同意'
}, {
value: '选项2',
label: '不同意'
}]
}
}
}
</script>
<style lang="scss" scoped>
.black {
width: 8px;
height: 18px;
background-color: #333;
margin-top: 10px;
}
//
.box {
width: 800px;
border: 1px solid #9278ff;
padding: 20px;
margin: 0 auto;
}
.box p {
font-size: 14px;
margin: 0;
padding: 2px 0;
}
.small_box {
margin-bottom: 15px;
}
.small_box p {
width: 220px;
padding-right: 20px;
font-size: 14px;
margin: 0;
text-align: right;
}
//
.left {
padding-right: 10px;
font-size: 14px;
}
.right {
padding-left: 10px;
font-size: 14px;
}
.right_p20 {
padding-left: 20px;
font-size: 14px;
}
//
.date /deep/ .el-input__icon {
line-height: 2;
}
/deep/ .el-date-editor.el-input,
.el-date-editor.el-input__inner {
width: 190px;
}
//
/deep/ .el-select .el-input .el-select__caret {
line-height: 2;
}
/deep/ .el-select__caret:before {
content: "\e78f";
font-size: 8px;
padding: 1px;
background-color: #9278ff;
border-radius: 50%;
color: #ffffff;
}
/deep/ .el-select .el-input__inner:hover {
border: 1px solid #9278ff;
}
/deep/ .el-input--suffix .el-input__inner:focus,
.el-input--suffix .el-input__inner:hover {
border: 1px solid #9278ff;
}
//
/deep/ .el-input {
width: 190px;
text-align: right;
}
/deep/ .el-input__inner {
height: 30px;
padding-right: 0;
}
/deep/ .el-input__inner {
border: 1px solid #9278ff;
}
/deep/ .el-input__inner:hover {
border: 1px solid #9278ff;
}
/deep/ .el-table .cell {
line-height: 1;
}
.input p {
width: 120px;
padding-right: 20px;
padding-top: 3px;
font-size: 14px;
margin: 0;
text-align: right;
}
.input {
justify-content: space-around;
margin-bottom: 15px;
}
.footer_one p {
padding-left: 10px;
font-size: 12px;
font-weight: 600;
}
.footer_one {
height: 40px;
justify-content: flex-start;
margin: 50px 0 10px 300px;
}
/deep/ [class*="el-icon-"],
[class^="el-icon-"] {
line-height: 3.5;
color: #9278ff;
}
.flex {
display: flex;
}
.center {
height: 40px;
line-height: 40px;
// background-color: yellow;
margin: 0;
text-align: center;
font-size: 16px;
}
.first {
text-align: right;
height: 40px;
line-height: 40px;
// background-color: red;
}
.content {
background-color: #f2f6fc;
position: relative;
top: 10px;
}
//
/deep/ ::-webkit-scrollbar {
width: 6px; //
height: 6px; //
}
//
/deep/ ::-webkit-scrollbar-thumb {
background-color: #9278ff;
border-radius: 3px;
-webkit-box-shadow: inset 0 0 5px #dddddd;
}
/deep/ ::-webkit-scrollbar-track {
/*滚动条里面轨道*/
-webkit-box-shadow: inset 0 0 5px #dddddd;
border-radius: 0;
background: #dddddd;
}
</style>

@ -0,0 +1,667 @@
<template>
<!-- 编程类 -->
<div class="content">
<div class="header flex">
<i class="el-icon-arrow-left"
@click="Back()"
style="cursor:pointer">
<span>Back</span>
</i>
<p>判分点设置</p>
<el-button type="primary"
@click="Savejump('ruleForm')">保存</el-button>
</div>
<div class="footer">
<div>
<div class="flex footer_h">
<div class="black"></div>
<p>基本信息</p>
</div>
<el-form :model="ruleForm"
:rules="rules"
ref="ruleForm"
label-width="150px">
<el-form-item label="请输入判分点名称"
prop="judgmentPointsName">
<el-input v-model="ruleForm.judgmentPointsName" @change="nameChange"></el-input>
</el-form-item>
<el-form-item label="实验要求" prop="experimentalRequirements">
<quill :toref="'editor1'" :border="true" v-model="ruleForm.experimentalRequirements" :minHeight="150" :height="150" />
</el-form-item>
</el-form>
<div class="flex footer_b">
<div class="black"></div>
<p>实验代码</p>
</div>
<div class="footer_inputs1">
<p style=" text-align: center;">参考答案</p>
<div style="padding: 10px 50px">
<quill1 :toref="'editor2'" :border="true" v-model="ruleForm.experimentcode" :minHeight="300" :height="300" />
<!-- <textarea id="memo1"
v-model="ruleForm.experimentcode"
style="outline:none;"></textarea> -->
</div>
</div>
<div class="flex footer_b">
<div class="black"></div>
<p>判分规则</p>
<el-button type="primary"
:disabled="isAdd"
@click="AddListRow()">新增</el-button>
</div>
</div>
<el-row>
<el-col :span="24">
<el-card shadow="hover">
<el-table :data="tableData"
:stripe="true"
:cell-style="rowClass"
:header-cell-style="headClass"
header-align="center"
ref="editTable">
<el-table-column prop="decisionPointRule"
type="index"
label="序号"
align="center"
width="80"></el-table-column>
<el-table-column label="编译器中正确答案"
align="center">
<template slot-scope="scope">
<p class="p">字段一致性规则用户编辑器中至少出现如下语句</p>
<el-input type="textarea"
:rows="2"
v-model="scope.row.judgmentRulesRule"
:disabled="scope.row.isShow"></el-input>
</template>
</el-table-column>
<el-table-column align="center"
width="150">
<template slot-scope="scope">
<el-button type="primary"
:disabled="scope.row.isShow"
style="cursor:pointer;border-radius: 50%;"
circle
@click="getPerhaps(scope.row)">{{scope.row.perhaps==0?"且":"或"}}</el-button>
</template>
</el-table-column>
<el-table-column label="终端中正确答案"
align="center">
<template slot-scope="scope">
<p class="p">运行结果一致性规则用户运行结果需要与下方代码运行结果一致</p>
<el-input type="textarea"
:rows="2"
v-model="scope.row.judgmentRulesPoint"
:disabled="scope.row.isShow"></el-input>
</template>
</el-table-column>
<el-table-column label="操作"
align="center"
width="300">
<template slot-scope="scope">
<el-link size="mini"
type="primary"
:underline="false"
v-show="scope.row.isShow"
@click="getHandleEdit(scope.row)">编辑</el-link>
<el-link type="primary"
size="mini"
:underline="false"
v-show="!scope.row.isShow"
@click="getRule(scope.row)">保存</el-link>
<el-link size="mini"
type="primary"
:underline="false"
v-show="!scope.row.isShow"
@click="dialogFormVisible(scope.$index,scope.row)">取消</el-link>
<el-link size="mini"
type="primary"
:underline="false"
v-show="!scope.row.isShow"
@click="getRuleDelete(scope.$index,scope.row)">删除</el-link>
</template>
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</div>
</div>
</template>
<script>
import quill from '@/components/quill'
import quill1 from '@/components/quill'
export default {
data () {
return {
ruleForm: {
judgmentPointsName: "",
experimentalRequirements: "",
experimentcode: ""
},
tableData: [],
id: "",
rules: {
judgmentPointsName: [
{ required: true, message: "内容不能为空", trigger: "blur" }
],
experimentalRequirements: [
{ required: true, message: "实验要求不能为空", trigger: "blur" }
],
experimentcode: [
{ required: true, message: "参考答案不能为空", trigger: "blur" }
]
},
decisionPointRule: "",
systemId: "",
userId: "",
ruleIds: [],
jRP: "",
jRR: "",
isAdd: false,
originalName: '',
nameRepeat: false
};
},
components: {quill,quill1},
mounted () {
this.getMesg();
},
methods: {
//
getPerhaps (a) {
if (a.perhaps == 1) {
a.perhaps = "0";
} else {
a.perhaps = "1";
}
},
//()
getMesg () {
if (this.$route.query.judgmentPointsId) {
this.$get(this.api.QueryPfdInformation, {
judgmentPointsId: this.$route.query.judgmentPointsId
})
.then(res => {
res.message.rules.map(e => {
this.$set(e, "isQie", true);
this.$set(e, "isShow", true);
});
this.ruleForm = {
judgmentPointsName: res.message.point.judgmentPointsName,
experimentalRequirements:
res.message.point.experimentalRequirements,
experimentcode: res.message.point.experimentcode
};
this.originalName = res.message.point.judgmentPointsName
this.tableData = res.message.rules;
let arr1 = this.tableData;
let result1 = arr1.map(e => e.decisionPointRule);
this.ruleIds = this.ruleIds.concat(result1);
// this.decisionPointRule=res.message.rules[0].decisionPointRule;
})
.catch(err => { });
}
},
nameChange(){
if(this.ruleForm.judgmentPointsName !== this.originalName){
this.$get(`${this.api.JudgmentPointNameRepetition}?judgmentPointName=${this.ruleForm.judgmentPointsName}`).then(res => {
this.nameRepeat = false
}).catch(res => {
this.nameRepeat = true
})
}else{
this.nameRepeat = false
}
},
//
Savejump (formName) {
if (this.ruleIds != "") {
this.$refs[formName].validate(valid => {
if (valid) {
if(this.nameRepeat) return this.$message.error('当前判分点名称已存在!')
if (this.$route.query.judgmentPointsId) {
//
this.$post(this.api.UpdatePointOfJudgement, {
points: {
experimentalRequirements: this.ruleForm
.experimentalRequirements,
judgmentPointsName: this.ruleForm.judgmentPointsName,
experimentcode: this.ruleForm.experimentcode,
judgmentPointsId: this.$route.query.judgmentPointsId
},
ruleIds: this.ruleIds
})
.then(res => {
this.$router.back()
})
.catch(err => {
console.log(err);
});
} else {
this.systemId = this.getCookie("systemId");
this.systemId = this.systemId ? this.systemId : 1
this.userId = this.getCookie("userId");
//
this.$post(this.api.AddPfdInformation, {
points: {
experimentalRequirements: this.ruleForm
.experimentalRequirements,
judgmentPointsName: this.ruleForm.judgmentPointsName,
experimentcode: this.ruleForm.experimentcode,
judgmentPointsType: 1,
systemId: this.systemId,
userId: this.userId,
// systemId: 1,
// userId: 4
},
ruleIds: this.ruleIds
})
.then(res => {
this.$router.back()
})
.catch(err => {
console.log(err);
});
}
} else {
console.log("error submit!!");
return false;
}
});
} else {
this.$message.error("错了哦,判分规则不能为空");
}
},
getCookie (cookie_name) {
//cookiekeyvalue
var allcookies = document.cookie; //
var cookie_pos = allcookies.indexOf(cookie_name); // cookie,
if (cookie_pos != -1) {
// cookie_pos1
//cookie1=
cookie_pos = cookie_pos + cookie_name.length + 1; //cookie
var cookie_end = allcookies.indexOf(";", cookie_pos);
if (cookie_end == -1) {
cookie_end = allcookies.length;
} //cookie
var value = unescape(allcookies.substring(cookie_pos, cookie_end));
}
return value;
},
Back () {
this.$router.back()
},
//
headClass () {
return "text-align: center;";
},
//
rowClass () {
return "text-align: center;";
},
//
getRule (row) {
if (!row.judgmentRulesRule && !row.judgmentRulesPoint) {
this.$message({
showClose: true,
message: "内容不能为空",
type: "warning"
});
} else {
if (row.decisionPointRule) {
this.$post(this.api.UpdatePointOfJudgementRule, {
judgmentRulesRule: row.judgmentRulesRule,
judgmentRulesPoint: row.judgmentRulesPoint,
perhaps: String(row.perhaps),
decisionPointRule: row.decisionPointRule
})
.then(res => {
this.isAdd = false;
row.isShow = true;
this.getContent();
})
.catch(err => {
console.log(err);
});
} else {
//
this.$post(this.api.AddPfdgzInformation, {
judgmentRulesRule: row.judgmentRulesRule,
judgmentRulesPoint: row.judgmentRulesPoint,
perhaps: String(row.perhaps)
})
.then(s => {
this.isAdd = false;
row.isShow = true;
this.id = s.message;
this.ruleIds.push(this.id);
console.log(this.ruleIds);
this.getContent();
})
.catch(err => {
console.log(err);
});
}
}
},
//
dialogFormVisible (index, row) {
this.isAdd = false;
if (!row.decisionPointRule) {
this.tableData.splice(index, 1);
} else {
if (!row.judgmentRulesRule && !row.judgmentRulesPoint) {
this.$message({
showClose: true,
message: "内容不能为空",
type: "warning"
});
} else {
row.isShow = true;
row.judgmentRulesRule = this.jRR;
row.judgmentRulesPoint = this.jRP;
}
}
},
//
getHandleEdit (row) {
this.isAdd = true;
row.isShow = false;
this.jRR = row.judgmentRulesRule;
this.jRP = row.judgmentRulesPoint;
},
//
getRuleDelete (index, row) {
if (!row.decisionPointRule) {
this.tableData.splice(index, 1);
this.isAdd = false;
} else {
this.$confirm("此操作将永久删除该内容, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
center: true
})
.then(() => {
this.$post(this.api.DeletePointOfJudgementRule, {
decisionPointRule: row.decisionPointRule
})
.then(res => {
this.getContent();
this.isAdd = false;
})
.catch(err => {
console.log(err);
});
this.$message({
type: "success",
message: "删除成功!"
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消删除"
});
});
}
},
//
getContent () {
this.$get(this.api.QueryPfdgzInformation, {
ruleIds: this.ruleIds.join()
})
.then(s => {
s.message.map(e => {
this.$set(e, "isQie", true);
this.$set(e, "isShow", true);
});
this.tableData = s.message;
this.decisionPointRule = s.message[0].decisionPointRule;
})
.catch(err => {
console.log(err);
});
},
//
AddListRow () {
this.isAdd = true;
this.tableData.push({
decisionPointRule: "",
judgmentRulesRule: "",
isQie: true,
isShow: false,
judgmentRulesPoint: "",
perhaps: "0"
});
this.$nextTick(() => {
this.scrollToTop();
});
},
scrollToTop () {
const c =
document.documentElement.scrollHeight || document.body.scrollHeight;
window.scrollTo(0, c);
}
}
};
</script>
<style lang="scss" scoped>
//
/deep/ .el-link.el-link--primary {
padding-right: 10px;
}
/deep/ .el-button {
line-height: 0;
height: 30px;
width: 80px;
margin-top: 7px;
border-radius: 20px;
position: absolute;
right: 30px;
}
/deep/ .el-input__inner {
border: 1px solid #9278ff;
}
/deep/ .el-form-item {
margin-top: 15px;
}
//
/deep/ .el-button--text {
color: #9278ff;
}
/deep/ .el-button--text:focus,
.el-button--text:hover {
color: #9278ff;
}
.border {
width: 50px;
height: 50px;
border: 1px solid #9278ff;
border-radius: 50%;
margin: auto;
}
.p {
font-size: 12px;
font-weight: 600;
}
//
/deep/ .el-textarea__inner {
height: 145px;
width: 650px;
resize: none;
border: 1px solid #9278ff;
font-size: 12px;
border-radius: 5px;
}
/deep/ .el-textarea__inner:hover {
border: 1px solid #9278ff;
}
//
/deep/ ::-webkit-scrollbar {
width: 6px; //
height: 6px; //
}
//
/deep/ ::-webkit-scrollbar-thumb {
background-color: #9278ff;
border-radius: 3px;
-webkit-box-shadow: inset 0 0 5px #dddddd;
}
/deep/ ::-webkit-scrollbar-track {
/*滚动条里面轨道*/
-webkit-box-shadow: inset 0 0 5px #dddddd;
border-radius: 0;
background: #dddddd;
}
/deep/ .el-row {
padding: 0 20px;
margin-bottom: 60px;
}
/deep/ .el-card__body {
padding: 0;
}
/deep/ .el-card {
border: none;
}
/deep/ .el-table th {
font-size: 14px;
font-family: Microsoft YaHei;
color: rgba(255, 255, 255, 1);
background-color: #9278ff;
}
/deep/ .el-table td,
.el-table th {
padding-top: 0;
}
.footer_b p {
margin: 0;
padding-left: 10px;
font-size: 14px;
}
.footer_b {
padding: 10px 0;
border-top: 1px dashed #cccccc;
margin: 0 15px;
height: 45px;
line-height: 45px;
}
//
#memo {
margin-left: 10px;
height: 200px;
width: 800px;
resize: none;
border: 1px solid #9278ff;
font-size: 12px;
border-radius: 5px;
}
#memo1 {
height: 300px;
width: 1700px;
resize: none;
border: 1px solid #9278ff;
font-size: 12px;
border-radius: 5px;
padding: 10px 20px;
}
/deep/ .el-input--suffix .el-input__inner {
border: 1px solid #9278ff;
}
.footer_input p {
font-size: 12px;
padding-right: 20px;
}
.footer_input {
padding: 30px 0 20px 80px;
}
.footer_inputs {
padding: 30px 0 20px 80px;
}
.footer_inputs1 {
padding-bottom: 50px;
text-align: center;
}
.footer_inputs1 p {
margin: 0 0 15px 0;
font-size: 14px;
}
.footer_inputs p {
font-size: 12px;
padding-right: 20px;
}
/deep/ .el-input {
width: 30%;
}
/deep/ [class*=" el-icon-"],
[class^="el-icon-"] {
line-height: 3;
padding-left: 10px;
}
.header {
background-color: #ffffff;
height: 45px;
line-height: 45px;
font-size: 14px;
font-weight: 600;
position: relative;
}
.header span {
font-size: 14px;
font-weight: 600;
padding-left: 5px;
}
.header p {
padding-left: 20px;
margin: 0;
}
.footer_h {
border-top: 1px dashed #cccccc;
border-bottom: 1px dashed #cccccc;
margin: 0 15px;
height: 45px;
line-height: 45px;
}
.flex {
display: flex;
justify-content: flex-start;
}
.footer {
background-color: #ffffff;
}
.footer_h p {
padding-left: 10px;
font-size: 14px;
margin: 0;
}
.black {
width: 8px;
height: 18px;
background-color: #333;
margin-top: 10px;
}
.content {
position: relative;
top: 10px;
}
</style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,459 @@
<template>
<div class="content">
<div class="header flex">
<i class="el-icon-arrow-left" @click="Back()" style="cursor:pointer">
<span>Back</span>
</i>
<p>判分点设置</p>
<button class="button" @click="Savejump()">保存</button>
</div>
<div class="footer">
<div>
<div class="flex footer_h">
<div class="black"></div>
<p>基本信息</p>
</div>
<div class="flex footer_input">
<p>判分点名称</p>
<el-input placeholder="请输入内容" v-model="input" clearable></el-input>
</div>
<div class="flex footer_inputs">
<p>实验要求</p>
<textarea id="memo" style="outline:none;"></textarea>
</div>
<div class="flex footer_b">
<div class="black"></div>
<p>判分规则</p>
</div>
</div>
</div>
<div>
<!-- 工具类 -->
<!-- 表格 -->
<el-row>
<el-col :span="24">
<el-card shadow="hover">
<el-table
:data="tableData"
:stripe="true"
:cell-style="rowClass"
:header-cell-style="headClass"
:row-class-name="tableRowClassName"
>
<el-table-column label="流程判分正确答案" >
<template slot-scope="scope">
<p class="p">操作一致性规则用户完成的功能操作与下方设置的操作点一致</p>
<div class="box">
<div class="flex box_p">
<p>一级栏目</p>
<el-select v-model="value1" clearable placeholder="数据采集">
<el-option
v-for="item in options1"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<!-- `checked` true false -->
<el-checkbox v-model="checked1">是否判分</el-checkbox>
</div>
<div class="flex box_p">
<p>二级栏目</p>
<el-select v-model="value2" clearable placeholder="新建任务">
<el-option
v-for="item in options2"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<!-- `checked` true false -->
<el-checkbox v-model="checked2">是否判分</el-checkbox>
</div>
<div class="flex box_p">
<p>三级选项</p>
<el-select v-model="value3" clearable placeholder="选择'京东电商数据'爬虫">
<el-option
v-for="item in options3"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<!-- `checked` true false -->
<el-checkbox v-model="checked3">是否判分</el-checkbox>
</div>
<div class="flex box_p">
<p>操作按钮</p>
<el-select v-model="value4" clearable placeholder="启动爬虫">
<el-option
v-for="item in options4"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<!-- `checked` true false -->
<el-checkbox v-model="checked4">是否判分</el-checkbox>
</div>
</div>
</template>
</el-table-column>
<el-table-column label=" " width="150">
<template slot-scope="scope">
<div class="border">
<p v-show="isQie" @click="getQie()">{{scope.row.qie}}</p>
<p v-show="!isQie" @click="getHuo()">{{scope.row.huo}}</p>
</div>
</template>
</el-table-column>
<el-table-column label="运行结果正确答案">
<template slot-scope="scope">
<p class="p">交易结果一致性规则用户运行结果需要与下方代码运行结果一致</p>
<textarea class="meui" style="outline:none;"></textarea>
</template>
</el-table-column>
<el-table-column label="操作" width="300">
<template slot-scope="scope">
<el-button size="mini" type="text" v-show="isShow" @click="handleEdit()">编辑</el-button>
<el-button
type="text"
size="mini"
v-show="!isShow"
@click="addTab(scope.$index, scope.row)"
>保存</el-button>
<el-button
size="mini"
type="text"
v-show="!isShow"
@click="dialogFormVisible()"
>取消</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</div>
</div>
</template>
<script>
export default {
data() {
return {
input: "",
textarea: "",
tableData: [
{
qie: "且",
huo: "或"
}
],
options1: [
{
value: "选项1",
label: "币币交易"
},
{
value: "选项2",
label: "网络交易"
}
],
options2: [
{
value: "选项3",
label: "限价交易"
}
],
options3: [
{
value: "选项4",
label: "买入BTC"
}
],
options4: [
{
value: "选项5",
label: "买入BTC"
}
],
checked1: true,
checked2: true,
checked3: true,
checked4: true,
isShow: true,
isQie: true
};
},
methods: {
Savejump() {
this.$router.push({ path: "/" });
},
Back() {
this.$router.push({ path: "/" });
},
getQie() {
this.isQie = false;
},
getHuo() {
this.isQie = true;
},
handleEdit() {
this.isShow = false;
},
addTab(tabName, targetName) {
let newTabName = ++this.tabIndex + "";
this.editableTabs.push({
title: tabName,
name: newTabName,
content: "New Tab content"
});
this.editableTabsValue = newTabName;
this.dialogFormVisible = false;
},
dialogFormVisible() {
this.isShow = true;
},
//
headClass() {
return "text-align: center;";
},
//
rowClass() {
return "text-align: center;";
}
}
};
</script>
<style lang="scss" scoped>
//
.border {
width: 50px;
height: 50px;
border: 1px solid #9278ff;
border-radius: 50%;
margin: auto;
}
//
.box /deep/ .el-checkbox:last-of-type {
margin: 15px 0 0 15px;
}
//
.box {
border: 1px solid #9278ff;
width: 500px;
margin: 0 auto;
}
.box /deep/ .el-input {
width: 190px;
}
.box /deep/ .el-input--suffix .el-input__inner {
height: 25px;
padding-right: 0;
}
.box /deep/ .el-input--suffix .el-input__inner {
border: 1px solid #9278ff;
}
.box /deep/ .el-input--suffix .el-input__inner:focus,
.el-input--suffix .el-input__inner:hover {
border: 1px solid #9278ff;
}
/deep/ .el-table .cell {
line-height: 1;
}
.box_p {
padding-left: 20px;
}
.box_p p {
padding-right: 20px;
}
//
.meui {
// margin-left: 10px;
height: 165px;
width: 500px;
resize: none;
border: 1px solid #9278ff;
font-size: 12px;
margin: 0 auto;
// border-radius: 5px;
}
//
.p {
font-size: 10px;
font-weight: 600;
}
/deep/ .el-select {
padding-top: 10px;
}
/deep/ .el-table td,
.el-table th {
padding-top: 0;
}
.box /deep/ [class*=" el-icon-"],
[class^="el-icon-"] {
line-height: 1;
padding-left: 0;
}
/deep/ .el-select__caret:before {
content: "\e78f";
font-size: 8px;
padding: 1px;
background-color: #9278ff;
border-radius: 50%;
color: #ffffff;
}
//
/deep/ ::-webkit-scrollbar {
width: 6px; //
height: 6px; //
}
//
/deep/ ::-webkit-scrollbar-thumb {
background-color: #9278ff;
border-radius: 3px;
-webkit-box-shadow: inset 0 0 5px #dddddd;
}
/deep/ ::-webkit-scrollbar-track {
/*滚动条里面轨道*/
-webkit-box-shadow: inset 0 0 5px #dddddd;
border-radius: 0;
background: #dddddd;
}
/deep/ .el-row {
padding: 0 20px;
}
/deep/ .el-card__body {
padding: 0;
}
/deep/ .el-card {
border: none;
}
/deep/ .el-table th {
font-size: 14px;
font-family: Microsoft YaHei;
color: rgba(255, 255, 255, 1);
background-color: #9278ff;
}
.footer_b p {
// padding-right: 800px;
margin: 0;
padding-left: 10px;
font-size: 12px;
}
.footer_b {
padding: 10px 0;
border-top: 1px dashed #cccccc;
margin: 0 15px;
height: 45px;
line-height: 45px;
}
//
#memo {
margin-left: 10px;
height: 200px;
width: 800px;
resize: none;
border: 1px solid #9278ff;
font-size: 12px;
border-radius: 5px;
}
/deep/ .el-input--suffix .el-input__inner {
border: 1px solid #9278ff;
}
.footer_input p {
font-size: 12px;
padding-right: 20px;
}
.footer_input {
padding: 30px 0 20px 80px;
}
.footer_inputs {
padding: 30px 0 20px 80px;
}
.footer_inputs p {
font-size: 12px;
padding-right: 20px;
}
/deep/ .el-input {
width: 30%;
}
.button {
height: 30px;
width: 80px;
margin-top: 7px;
border: none;
background-color: #9278ff;
color: #ffffff;
border-radius: 20px;
position: absolute;
right: 30px;
}
.button:focus {
outline: 0;
}
/deep/ [class*=" el-icon-"],
[class^="el-icon-"] {
line-height: 3;
padding-left: 10px;
}
.header {
background-color: #ffffff;
height: 45px;
line-height: 45px;
font-size: 14px;
font-weight: 600;
position: relative;
}
.header span  {
font-size: 16px;
font-weight: 600;
padding-left: 5px;
}
.header p {
padding-left: 20px;
margin: 0;
}
.footer_h {
// padding: 10px 0;
border-top: 1px dashed #cccccc;
border-bottom: 1px dashed #cccccc;
margin: 0 15px;
height: 45px;
line-height: 45px;
}
.flex {
display: flex;
justify-content: flex-start;
}
.footer {
background-color: #ffffff;
}
.footer_h p {
padding-left: 10px;
font-size: 12px;
margin: 0;
}
.black {
width: 8px;
height: 18px;
background-color: #333;
margin-top: 10px;
}
.content {
background-color: #fff;
position: relative;
top: 10px;
}
</style>

@ -0,0 +1,521 @@
<template>
<!-- 交易类 -->
<div class="content">
<div class="header flex">
<i class="el-icon-arrow-left" @click="Back()" style="cursor:pointer">
<span>Back</span>
</i>
<p>判分点设置</p>
<button class="button" @click="Savejump()">保存</button>
</div>
<div class="footer">
<div>
<div class="flex footer_h">
<div class="black"></div>
<p>基本信息</p>
</div>
<div class="flex footer_input">
<p>判分点名称</p>
<el-input placeholder="请输入内容" v-model="input" clearable></el-input>
</div>
<div class="flex footer_inputs">
<p>实验要求</p>
<textarea id="memo" style="outline:none;"></textarea>
</div>
</div>
<div class="flex footer_b">
<div class="black"></div>
<p>判分规则</p>
<button class="button">新增</button>
</div>
<el-row>
<el-col :span="24">
<el-card shadow="hover">
<el-table
:data="tableData"
:stripe="true"
:cell-style="rowClass"
header-align="center"
:header-cell-style="headClass"
:row-class-name="tableRowClassName"
>
<el-table-column prop="id" type="index" label="序号" width="80"></el-table-column>
<el-table-column label="流程判分正确答案">
<template slot-scope="scope">
<p class="p">操作一致性规则用户完成的功能操作与下方设置的操作点一致</p>
<div class="box">
<div class="flex box_p">
<p>一级栏目</p>
<el-select v-model="value1" clearable placeholder="币币交易">
<el-option
v-for="item in options1"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="flex box_p">
<p>二级栏目</p>
<el-select v-model="value2" clearable placeholder="限价交易">
<el-option
v-for="item in options2"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="flex box_p">
<p>操作按钮</p>
<el-select v-model="value3" clearable placeholder="买入BTC">
<el-option
v-for="item in options3"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</div>
</template>
</el-table-column>
<el-table-column label=" " width="150">
<template slot-scope="scope">
<div class="border">
<p v-show="scope.row.isQie" @click="getQie(scope.row)" style="cursor:pointer"></p>
<p v-show="!scope.row.isQie" @click="getHuo(scope.row)" style="cursor:pointer"></p>
</div>
</template>
</el-table-column>
<el-table-column label="交易结果正确答案">
<template slot-scope="scope">
<p class="p">交易结果一致性规则用户交易结果需要与下面设置的交易结果指标要求一致</p>
<div class="box">
<div class="flex box_p">
<p>指标类别</p>
<el-select v-model="value4" clearable placeholder="交易结果指标">
<el-option
v-for="item in values1"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="flex box_p">
<p>交易指标</p>
<el-select v-model="value5" clearable placeholder="BTC买入量">
<el-option
v-for="item in values2"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="flex box_p box_right" style="padding-left: 30px;">
<p>交易结果区间</p>
<el-select v-model="value6" clearable placeholder="(">
<el-option
v-for="item in values3"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<el-input
placeholder="100"
style="width:80px;margin:8px 10px 0 10px;"
v-model="input1"
clearable
></el-input>
<el-input
placeholder="100"
v-model="input2"
style="width:80px;margin:8px 10px 0 0;"
clearable
></el-input>
<el-select v-model="value7" clearable placeholder=")">
<el-option
v-for="item in values4"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</div>
</template>
</el-table-column>
<el-table-column label="操作" width="300">
<template slot-scope="scope">
<el-button size="mini" type="text" v-show="isShow" @click="handleEdit()">编辑</el-button>
<el-button
type="text"
size="mini"
v-show="!isShow"
@click="addTab(scope.$index, scope.row)"
>保存</el-button>
<el-button
size="mini"
type="text"
v-show="!isShow"
@click="dialogFormVisible()"
>取消</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</div>
</div>
</template>
<script>
export default {
data() {
return {
input: "",
textarea: "",
tableData: [
{
qie: "且",
huo: "或"
}
],
options1: [
{
value: "选项1",
label: "币币交易"
},
{
value: "选项2",
label: "网络交易"
}
],
options2: [
{
value: "选项1",
label: "限价交易"
}
],
options3: [
{
value: "选项1",
label: "买入BTC"
}
],
values1: [
{
value: "选项1",
label: "交易结果指标"
},
{
value: "选项2",
label: "交易过程指标"
}
],
values2: [
{
value: "选项1",
label: "BTC买入量"
},
{
value: "选项2",
label: "总资产收益率"
}
],
values3: [
{
value: "选项1",
label: "("
},
{
value: "选项2",
label: "["
}
],
values4: [
{
value: "选项1",
label: ")"
},
{
value: "选项2",
label: "]"
}
],
value1: "",
value2: "",
value3: "",
value4: "",
value5: "",
value6: "",
value7: "",
input1: "",
input2: "",
isShow: true,
isQie: true
};
},
methods: {
Savejump() {
this.$router.push({ path: "/" });
},
Back() {
this.$router.push({ path: "/" });
},
getQie() {
this.isQie = false;
},
getHuo() {
this.isQie = true;
},
handleEdit() {
this.isShow = false;
},
addTab(tabName, targetName) {
let newTabName = ++this.tabIndex + "";
this.editableTabs.push({
title: tabName,
name: newTabName,
content: "New Tab content"
});
this.editableTabsValue = newTabName;
this.dialogFormVisible = false;
},
dialogFormVisible() {
this.isShow = true;
},
//
headClass() {
return "text-align: center;";
},
//
rowClass() {
return "text-align: center;";
}
}
};
</script>
<style lang="scss" scoped>
//
//
.border {
width: 50px;
height: 50px;
border: 1px solid #9278ff;
border-radius: 50%;
margin: auto;
}
//
.box {
border: 1px solid #9278ff;
width: 500px;
margin: 0 auto;
}
.box /deep/ .el-input {
width: 150px;
}
.box_right /deep/ .el-input {
width: 51px;
margin-right: 0;
}
.box /deep/ .el-input--suffix .el-input__inner {
height: 25px;
padding-right: 0;
}
.box /deep/ .el-input--suffix .el-input__inner {
border: 1px solid #9278ff;
}
.box /deep/ .el-input--suffix .el-input__inner:focus,
.el-input--suffix .el-input__inner:hover {
border: 1px solid #9278ff;
}
/deep/ .el-table .cell {
line-height: 1;
}
.box_p {
padding-left: 50px;
}
.box_p p {
padding-right: 20px;
}
//
.p {
font-size: 12px;
font-weight: 600;
}
/deep/ .el-select {
padding-top: 10px;
}
/deep/ .el-table td,
.el-table th {
padding-top: 0;
}
.box /deep/ [class*=" el-icon-"],
[class^="el-icon-"] {
line-height: 1;
padding-left: 0;
}
/deep/ .el-select__caret:before {
content: "\e78f";
font-size: 8px;
padding: 1px;
background-color: #9278ff;
border-radius: 50%;
color: #ffffff;
}
/deep/ .el-row {
padding: 0 20px;
}
/deep/ .el-card__body {
padding: 0;
}
/deep/ .el-card {
border: none;
}
//
/deep/ ::-webkit-scrollbar {
width: 6px; //
height: 6px; //
}
//
/deep/ ::-webkit-scrollbar-thumb {
background-color: #9278ff;
border-radius: 3px;
-webkit-box-shadow: inset 0 0 5px #dddddd;
}
/deep/ ::-webkit-scrollbar-track {
/*滚动条里面轨道*/
-webkit-box-shadow: inset 0 0 5px #dddddd;
border-radius: 0;
background: #dddddd;
}
/deep/ .el-table th {
font-size: 14px;
font-family: Microsoft YaHei;
color: rgba(255, 255, 255, 1);
background-color: #9278ff;
}
.footer_b p {
// padding-right: 800px;
margin: 0;
padding-left: 10px;
font-size: 12px;
}
.footer_b {
padding: 10px 0;
border-top: 1px dashed #cccccc;
margin: 0 15px;
height: 45px;
line-height: 45px;
}
//
#memo {
margin-left: 10px;
height: 200px;
width: 800px;
resize: none;
border: 1px solid #9278ff;
font-size: 12px;
border-radius: 5px;
}
/deep/ .el-input--suffix .el-input__inner {
border: 1px solid #9278ff;
}
.footer_input p {
font-size: 12px;
padding-right: 20px;
}
.footer_input {
padding: 30px 0 20px 80px;
}
.footer_inputs {
padding: 30px 0 20px 80px;
}
.footer_inputs p {
font-size: 12px;
padding-right: 20px;
}
/deep/ .el-input {
width: 30%;
}
.button {
height: 30px;
width: 80px;
margin-top: 7px;
border: none;
background-color: #9278ff;
color: #ffffff;
border-radius: 20px;
position: absolute;
right: 30px;
}
.button:focus {
outline: 0;
}
/deep/ [class*=" el-icon-"],
[class^="el-icon-"] {
line-height: 3;
padding-left: 10px;
}
.header {
background-color: #ffffff;
height: 45px;
line-height: 45px;
font-size: 14px;
font-weight: 600;
position: relative;
}
.header span {
font-size: 14px;
font-weight: 600;
padding-left: 5px;
}
.header p {
padding-left: 20px;
margin: 0;
}
.footer_h {
// padding: 10px 0;
border-top: 1px dashed #cccccc;
border-bottom: 1px dashed #cccccc;
margin: 0 15px;
height: 45px;
line-height: 45px;
}
.flex {
display: flex;
justify-content: flex-start;
}
.footer {
background-color: #ffffff;
}
.footer_h p {
padding-left: 10px;
font-size: 12px;
margin: 0;
}
.black {
width: 8px;
height: 18px;
background-color: #333;
margin-top: 10px;
}
.content {
background-color: #f2f6fc;
position: relative;
top: 10px;
}
</style>

@ -0,0 +1,26 @@
// 引入等比适配插件
const px2rem = require('postcss-px2rem')
// 配置基本大小
const postcss = px2rem({
// 基准大小 baseSize,需要和rem.js中相同
remUnit: 16
})
// 使用等比适配插件
module.exports = {
lintOnSave: true,
css: {
loaderOptions: {
postcss: {
plugins: [
postcss
]
}
}
},
publicPath: './',
outputDir: 'dist',
assetsDir: 'static'
}
Loading…
Cancel
Save