init
|
@ -0,0 +1,14 @@
|
|||
# https://editorconfig.org
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.md]
|
||||
insert_final_newline = false
|
||||
trim_trailing_whitespace = false
|
|
@ -0,0 +1,7 @@
|
|||
# just a flag
|
||||
ENV = 'development'
|
||||
|
||||
# base api
|
||||
# VUE_APP_BASE_API = '/dev-api'
|
||||
|
||||
VUE_APP_BASE_API ='http://ykdz.yundazhou.com:18080/api'
|
|
@ -0,0 +1,9 @@
|
|||
# just a flag
|
||||
ENV = 'production'
|
||||
|
||||
# base api
|
||||
#VUE_APP_BASE_API = '/prod-api'
|
||||
|
||||
VUE_APP_BASE_API = 'http://10.14.217.221:17001/'
|
||||
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
NODE_ENV = production
|
||||
|
||||
# just a flag
|
||||
ENV = 'staging'
|
||||
|
||||
# base api
|
||||
VUE_APP_BASE_API = '/stage-api'
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
build/*.js
|
||||
src/assets
|
||||
public
|
||||
dist
|
|
@ -0,0 +1,199 @@
|
|||
module.exports = {
|
||||
root: true,
|
||||
parserOptions: {
|
||||
parser: 'babel-eslint',
|
||||
sourceType: 'module'
|
||||
},
|
||||
env: {
|
||||
browser: true,
|
||||
node: true,
|
||||
es6: true,
|
||||
},
|
||||
extends: ['plugin:vue/recommended', 'eslint:recommended'],
|
||||
|
||||
// add your custom rules here
|
||||
//it is base on https://github.com/vuejs/eslint-config-vue
|
||||
rules: {
|
||||
"vue/max-attributes-per-line": [2, {
|
||||
"singleline": 10,
|
||||
"multiline": {
|
||||
"max": 1,
|
||||
"allowFirstLine": false
|
||||
}
|
||||
}],
|
||||
"vue/singleline-html-element-content-newline": "off",
|
||||
"vue/multiline-html-element-content-newline":"off",
|
||||
"vue/name-property-casing": ["error", "PascalCase"],
|
||||
"vue/no-v-html": "off",
|
||||
'accessor-pairs': 2,
|
||||
'arrow-spacing': [2, {
|
||||
'before': true,
|
||||
'after': true
|
||||
}],
|
||||
'block-spacing': [2, 'always'],
|
||||
'brace-style': [2, '1tbs', {
|
||||
'allowSingleLine': true
|
||||
}],
|
||||
'camelcase': [0, {
|
||||
'properties': 'always'
|
||||
}],
|
||||
'comma-dangle': [2, 'only-multiline'],
|
||||
'comma-spacing': [2, {
|
||||
'before': false,
|
||||
'after': true
|
||||
}],
|
||||
'comma-style': [2, 'last'],
|
||||
'constructor-super': 2,
|
||||
'curly': [2, 'multi-line'],
|
||||
'dot-location': [2, 'property'],
|
||||
'eol-last': 2,
|
||||
'eqeqeq': ["error", "always", {"null": "ignore"}],
|
||||
'generator-star-spacing': [2, {
|
||||
'before': true,
|
||||
'after': true
|
||||
}],
|
||||
'handle-callback-err': [2, '^(err|error)$'],
|
||||
// 'indent': [2, 2, {
|
||||
// 'SwitchCase': 1
|
||||
// }],
|
||||
"vue/html-indent": "off",
|
||||
'jsx-quotes': [2, 'prefer-single'],
|
||||
'key-spacing': [2, {
|
||||
'beforeColon': false,
|
||||
'afterColon': true
|
||||
}],
|
||||
'keyword-spacing': [2, {
|
||||
'before': true,
|
||||
'after': true
|
||||
}],
|
||||
'new-cap': [2, {
|
||||
'newIsCap': true,
|
||||
'capIsNew': false
|
||||
}],
|
||||
'new-parens': 2,
|
||||
'no-array-constructor': 2,
|
||||
'no-caller': 2,
|
||||
'no-console': 'off',
|
||||
'no-class-assign': 2,
|
||||
'no-cond-assign': 2,
|
||||
'no-const-assign': 2,
|
||||
'no-control-regex': 0,
|
||||
'no-delete-var': 2,
|
||||
'no-dupe-args': 2,
|
||||
'no-dupe-class-members': 2,
|
||||
'no-dupe-keys': 2,
|
||||
'no-duplicate-case': 2,
|
||||
'no-empty-character-class': 2,
|
||||
'no-empty-pattern': 2,
|
||||
'no-eval': 2,
|
||||
'no-ex-assign': 2,
|
||||
'no-extend-native': 2,
|
||||
'no-extra-bind': 2,
|
||||
'no-extra-boolean-cast': 2,
|
||||
'no-extra-parens': [2, 'functions'],
|
||||
'no-fallthrough': 2,
|
||||
'no-floating-decimal': 2,
|
||||
'no-func-assign': 2,
|
||||
'no-implied-eval': 2,
|
||||
'no-inner-declarations': [2, 'functions'],
|
||||
'no-invalid-regexp': 2,
|
||||
'no-irregular-whitespace': 2,
|
||||
'no-iterator': 2,
|
||||
'no-label-var': 2,
|
||||
'no-labels': [2, {
|
||||
'allowLoop': false,
|
||||
'allowSwitch': false
|
||||
}],
|
||||
'no-lone-blocks': 2,
|
||||
'no-mixed-spaces-and-tabs': 2,
|
||||
'no-multi-spaces': 2,
|
||||
'no-multi-str': 2,
|
||||
'no-multiple-empty-lines': [2, {
|
||||
'max': 1
|
||||
}],
|
||||
'no-native-reassign': 2,
|
||||
'no-negated-in-lhs': 2,
|
||||
'no-new-object': 2,
|
||||
'no-new-require': 2,
|
||||
'no-new-symbol': 2,
|
||||
'no-new-wrappers': 2,
|
||||
'no-obj-calls': 2,
|
||||
'no-octal': 2,
|
||||
'no-octal-escape': 2,
|
||||
'no-path-concat': 2,
|
||||
'no-proto': 2,
|
||||
'no-redeclare': 2,
|
||||
'no-regex-spaces': 2,
|
||||
'no-return-assign': [2, 'except-parens'],
|
||||
'no-self-assign': 2,
|
||||
'no-self-compare': 2,
|
||||
'no-sequences': 2,
|
||||
'no-shadow-restricted-names': 2,
|
||||
'no-spaced-func': 2,
|
||||
'no-sparse-arrays': 2,
|
||||
'no-this-before-super': 2,
|
||||
'no-throw-literal': 2,
|
||||
'no-trailing-spaces': 2,
|
||||
'no-undef': 2,
|
||||
'no-undef-init': 2,
|
||||
'no-unexpected-multiline': 2,
|
||||
'no-unmodified-loop-condition': 2,
|
||||
'no-unneeded-ternary': [2, {
|
||||
'defaultAssignment': false
|
||||
}],
|
||||
'no-unreachable': 2,
|
||||
'no-unsafe-finally': 2,
|
||||
'no-unused-vars': [2, {
|
||||
'vars': 'all',
|
||||
'args': 'none'
|
||||
}],
|
||||
'no-useless-call': 2,
|
||||
'no-useless-computed-key': 2,
|
||||
'no-useless-constructor': 2,
|
||||
'no-useless-escape': 0,
|
||||
'no-whitespace-before-property': 2,
|
||||
'no-with': 2,
|
||||
'one-var': [2, {
|
||||
'initialized': 'never'
|
||||
}],
|
||||
'operator-linebreak': [2, 'after', {
|
||||
'overrides': {
|
||||
'?': 'before',
|
||||
':': 'before'
|
||||
}
|
||||
}],
|
||||
'padded-blocks': [2, 'never'],
|
||||
'quotes': [2, 'single', {
|
||||
'avoidEscape': true,
|
||||
'allowTemplateLiterals': true
|
||||
}],
|
||||
'semi': [2, 'never'],
|
||||
'semi-spacing': [2, {
|
||||
'before': false,
|
||||
'after': true
|
||||
}],
|
||||
'space-before-blocks': [2, 'always'],
|
||||
'space-before-function-paren': [2, 'never'],
|
||||
'space-in-parens': [2, 'never'],
|
||||
'space-infix-ops': 2,
|
||||
'space-unary-ops': [2, {
|
||||
'words': true,
|
||||
'nonwords': false
|
||||
}],
|
||||
'spaced-comment': [2, 'always', {
|
||||
'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
|
||||
}],
|
||||
'template-curly-spacing': [2, 'never'],
|
||||
'use-isnan': 2,
|
||||
'valid-typeof': 2,
|
||||
'wrap-iife': [2, 'any'],
|
||||
'yield-star-spacing': [2, 'both'],
|
||||
'yoda': [2, 'never'],
|
||||
'prefer-const': 2,
|
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
|
||||
'object-curly-spacing': [2, 'always', {
|
||||
objectsInObjects: false
|
||||
}],
|
||||
'array-bracket-spacing': [2, 'never']
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
.DS_Store
|
||||
node_modules/
|
||||
dist/
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
**/*.log
|
||||
/web
|
||||
/web.*/
|
||||
/web-*-*
|
||||
|
||||
tests/**/coverage/
|
||||
tests/e2e/reports
|
||||
selenium-debug.log
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.local
|
||||
|
||||
package-lock.json
|
||||
yarn.lock
|
|
@ -0,0 +1,5 @@
|
|||
language: node_js
|
||||
node_js: 10
|
||||
script: npm run test
|
||||
notifications:
|
||||
email: false
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2017-present PanJiaChen
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
|
@ -0,0 +1,14 @@
|
|||
module.exports = {
|
||||
presets: [
|
||||
// https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app
|
||||
'@vue/cli-plugin-babel/preset'
|
||||
],
|
||||
'env': {
|
||||
'development': {
|
||||
// babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require().
|
||||
// This plugin can significantly increase the speed of hot updates, when you have a large number of pages.
|
||||
// https://panjiachen.github.io/vue-element-admin-site/guide/advanced/lazy-loading.html
|
||||
'plugins': ['dynamic-import-node']
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
const { run } = require('runjs')
|
||||
const chalk = require('chalk')
|
||||
const config = require('../vue.config.js')
|
||||
const rawArgv = process.argv.slice(2)
|
||||
const args = rawArgv.join(' ')
|
||||
|
||||
if (process.env.npm_config_preview || rawArgv.includes('--preview')) {
|
||||
const report = rawArgv.includes('--report')
|
||||
|
||||
run(`vue-cli-service build ${args}`)
|
||||
|
||||
const port = 9526
|
||||
const publicPath = config.publicPath
|
||||
|
||||
var connect = require('connect')
|
||||
var serveStatic = require('serve-static')
|
||||
const app = connect()
|
||||
|
||||
app.use(
|
||||
publicPath,
|
||||
serveStatic('./dist', {
|
||||
index: ['index.html', '/']
|
||||
})
|
||||
)
|
||||
|
||||
app.listen(port, function () {
|
||||
console.log(chalk.green(`> Preview at http://localhost:${port}${publicPath}`))
|
||||
if (report) {
|
||||
console.log(chalk.green(`> Report at http://localhost:${port}${publicPath}report.html`))
|
||||
}
|
||||
|
||||
})
|
||||
} else {
|
||||
run(`vue-cli-service build ${args}`)
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"baseUrl": "./",
|
||||
"paths": {
|
||||
"@/*": ["src/*"]
|
||||
}
|
||||
},
|
||||
"exclude": ["node_modules", "dist"]
|
||||
}
|
|
@ -0,0 +1,116 @@
|
|||
{
|
||||
"name": "vue-element-admin",
|
||||
"version": "4.4.0",
|
||||
"description": "A magical vue admin. An out-of-box UI solution for enterprise applications. Newest development stack of vue. Lots of awesome features",
|
||||
"author": "Pan <panfree23@gmail.com>",
|
||||
"scripts": {
|
||||
"dev": "vue-cli-service serve",
|
||||
"lint": "eslint --ext .js,.vue src",
|
||||
"build:prod": "vue-cli-service build",
|
||||
"build:dev": "vue-cli-service build --mode development",
|
||||
"build:stage": "vue-cli-service build --mode staging",
|
||||
"preview": "node build/index.js --preview",
|
||||
"new": "plop",
|
||||
"svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml",
|
||||
"test:unit": "jest --clearCache && vue-cli-service test:unit",
|
||||
"test:ci": "npm run lint && npm run test:unit"
|
||||
},
|
||||
"dependencies": {
|
||||
"@tinymce/tinymce-vue": "^3.2.8",
|
||||
"axios": "0.18.1",
|
||||
"clipboard": "2.0.4",
|
||||
"co": "^4.6.0",
|
||||
"codemirror": "5.45.0",
|
||||
"core-js": "3.6.5",
|
||||
"driver.js": "0.9.5",
|
||||
"dropzone": "5.5.1",
|
||||
"echarts": "^4.2.1",
|
||||
"element-ui": "2.13.2",
|
||||
"file-saver": "2.0.1",
|
||||
"fuse.js": "3.4.4",
|
||||
"js-cookie": "2.2.0",
|
||||
"js-sha1": "^0.6.0",
|
||||
"jsonlint": "1.6.3",
|
||||
"jszip": "3.2.1",
|
||||
"normalize.css": "7.0.0",
|
||||
"nprogress": "0.2.0",
|
||||
"number-precision": "^1.6.0",
|
||||
"path-to-regexp": "2.4.0",
|
||||
"screenfull": "4.2.0",
|
||||
"script-loader": "0.7.2",
|
||||
"sortablejs": "1.8.4",
|
||||
"tui-editor": "1.3.3",
|
||||
"vue": "2.6.10",
|
||||
"vue-count-to": "1.0.13",
|
||||
"vue-router": "3.0.2",
|
||||
"vue-splitpane": "1.0.4",
|
||||
"vuedraggable": "2.20.0",
|
||||
"vuex": "3.1.0",
|
||||
"xlsx": "0.14.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/cli-plugin-babel": "4.4.4",
|
||||
"@vue/cli-plugin-eslint": "4.4.4",
|
||||
"@vue/cli-plugin-unit-jest": "4.4.4",
|
||||
"@vue/cli-service": "4.4.4",
|
||||
"@vue/test-utils": "1.0.0-beta.29",
|
||||
"autoprefixer": "9.5.1",
|
||||
"babel-eslint": "10.1.0",
|
||||
"babel-jest": "23.6.0",
|
||||
"babel-plugin-dynamic-import-node": "2.3.3",
|
||||
"chalk": "2.4.2",
|
||||
"chokidar": "2.1.5",
|
||||
"connect": "3.6.6",
|
||||
"eslint": "6.7.2",
|
||||
"eslint-plugin-vue": "6.2.2",
|
||||
"html-webpack-plugin": "3.2.0",
|
||||
"husky": "1.3.1",
|
||||
"lint-staged": "8.1.5",
|
||||
"mockjs": "1.0.1-beta3",
|
||||
"plop": "2.3.0",
|
||||
"runjs": "4.3.2",
|
||||
"sass": "1.26.2",
|
||||
"sass-loader": "8.0.2",
|
||||
"script-ext-html-webpack-plugin": "2.1.3",
|
||||
"serve-static": "1.13.2",
|
||||
"svg-sprite-loader": "4.1.3",
|
||||
"svgo": "1.2.0",
|
||||
"vue-template-compiler": "2.6.10"
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
"last 2 versions"
|
||||
],
|
||||
"bugs": {
|
||||
"url": "https://github.com/PanJiaChen/vue-element-admin/issues"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.9",
|
||||
"npm": ">= 3.0.0"
|
||||
},
|
||||
"keywords": [
|
||||
"vue",
|
||||
"admin",
|
||||
"dashboard",
|
||||
"element-ui",
|
||||
"boilerplate",
|
||||
"admin-template",
|
||||
"management-system"
|
||||
],
|
||||
"license": "MIT",
|
||||
"lint-staged": {
|
||||
"src/**/*.{js,vue}": [
|
||||
"eslint --fix",
|
||||
"git add"
|
||||
]
|
||||
},
|
||||
"husky": {
|
||||
"hooks": {
|
||||
"pre-commit": "lint-staged"
|
||||
}
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/PanJiaChen/vue-element-admin.git"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
module.exports = {
|
||||
plugins: {
|
||||
autoprefixer: {}
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 2.7 KiB |
|
@ -0,0 +1,16 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<!-- <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script> -->
|
||||
<title><%= webpackConfig.name %></title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,124 @@
|
|||
<!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" />
|
||||
<title>Document</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: 仿宋;
|
||||
width: 793.8px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.fs16 {
|
||||
font-size: 16px;
|
||||
}
|
||||
.fs32 {
|
||||
font-size: 32px;
|
||||
}
|
||||
.blod {
|
||||
font-weight: 600;
|
||||
}
|
||||
.text-right {
|
||||
text-align: right;
|
||||
}
|
||||
.center {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p class="fs32 blod center">房票安置转换协议</p>
|
||||
<!-- <strong
|
||||
><span style="font-family: 仿宋; font-size: 32px"
|
||||
>房票安置转换</span
|
||||
></strong
|
||||
><strong
|
||||
><span style="font-family: 仿宋; font-size: 32px">协议</span></strong
|
||||
> -->
|
||||
<p class="fs16 text-right">
|
||||
编号:
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">甲方</span
|
||||
><span style="font-family: 仿宋">:</span></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">内江</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">区</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">街道办事处</span>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">乙方</span
|
||||
><span style="font-family: 仿宋">:姓名:</span></span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> <span style="font-family: 仿宋">性别</span
|
||||
><span style="font-family: 仿宋">:</span></span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> <span style="font-family: 仿宋">身份证号码</span
|
||||
><span style="font-family: 仿宋">:</span></span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>身份证所载住址:内江</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">区</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">街道</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">社区</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">组</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">丙</span>
|
||||
<span style="font-family: 仿宋"
|
||||
>方:内江高新区拆迁协调办公室</span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p>
|
||||
<br />
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,879 @@
|
|||
<!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" />
|
||||
<title>房票安置转换协议</title>
|
||||
<style>
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
td,
|
||||
th {
|
||||
border: 1px solid #000;
|
||||
font-size: 14px;
|
||||
padding: 8px;
|
||||
}
|
||||
</style>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script>
|
||||
// var data = {
|
||||
// v1: "市中",
|
||||
// v2: "中央路",
|
||||
// v3: "李四",
|
||||
// v4: "男",
|
||||
// v5: "510105199807190532",
|
||||
// v6: "东兴",
|
||||
// v7: "红牌路",
|
||||
// v8: "平安公园小区",
|
||||
// v9: "1组",
|
||||
// v10: "10号",
|
||||
// v11: "危房拆迁",
|
||||
// v12: "2023",
|
||||
// v13: "6",
|
||||
// v14: "6",
|
||||
// v15: "拆迁办",
|
||||
// v16: "市中",
|
||||
// v17: "拆迁办",
|
||||
// v18: "拆迁办",
|
||||
// v19: "500000", //v19/v20
|
||||
// v20: "50",
|
||||
// v21: "10000",
|
||||
// v22: "500000",
|
||||
// v23: "3",
|
||||
// v24: "9000", //v23*3000
|
||||
// v25: "50", //v20
|
||||
// v26: "8190", //v20*0.91*180
|
||||
// v27: "50",
|
||||
// v28: "3750",
|
||||
// v29: "2000",
|
||||
// v30: "423000",
|
||||
// v31: "肆拾贰万叁仟元整",
|
||||
// v32: "5000",
|
||||
// v33: "3500",
|
||||
// v34: "30",
|
||||
// v35: "15",
|
||||
// v36: "15",
|
||||
// v37: "500",
|
||||
// v38: "7500",
|
||||
// v39: "150000",
|
||||
// v40: "拆迁办",
|
||||
// v41: "张三",
|
||||
// // v42: data['v1'],
|
||||
// // v43: data['v2'],
|
||||
// // v44: data['v6'],
|
||||
// // v45: data['v7'],
|
||||
// // v46: data['v8'],
|
||||
// // v47: data['v9'],
|
||||
// // v48: data['v3'],
|
||||
// };
|
||||
// data = {
|
||||
// ...data,
|
||||
// v42: data["v1"],
|
||||
// v43: data["v2"],
|
||||
// v44: data["v6"],
|
||||
// v45: data["v7"],
|
||||
// v46: data["v8"],
|
||||
// v47: data["v9"],
|
||||
// v48: data["v3"],
|
||||
// };
|
||||
// let tableData = [
|
||||
// {
|
||||
// name: "张三",
|
||||
// gx: "父亲",
|
||||
// idCard: "51010514455488751",
|
||||
// hjszd: "内江市市中区",
|
||||
// area: "50m²",
|
||||
// },
|
||||
// {
|
||||
// name: "李四",
|
||||
// gx: "母亲",
|
||||
// idCard: "51010514455488752",
|
||||
// hjszd: "内江市市北区",
|
||||
// area: "50m²",
|
||||
// },
|
||||
// ];
|
||||
// function init(data) {
|
||||
// for (item in data) {
|
||||
// $(`#${item}`).text(data[item]);
|
||||
// }
|
||||
// var str = "";
|
||||
// console.log("##", tableData);
|
||||
// tableData.map((item, index) => {
|
||||
// str += ` <tr>
|
||||
// <td>${item.name}</td>
|
||||
// <td>${item.gx}</td>
|
||||
// <td>${item.idCard}</td>
|
||||
// <td>${item.hjszd}</td>
|
||||
// ${index === 0 && `<td rowspan="4">${item.area}</td>`}
|
||||
// </tr>`;
|
||||
// });
|
||||
// console.log(str);
|
||||
// $("#tbody").append(str);
|
||||
// }
|
||||
function init() {
|
||||
data = JSON.parse(localStorage.getItem("ticket"));
|
||||
}
|
||||
$(function () {
|
||||
init(data);
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<p style="text-align: center; line-height: 37px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 32px"
|
||||
>房票安置转换</span
|
||||
></strong
|
||||
><strong
|
||||
><span style="font-family: 仿宋; font-size: 32px">协议</span></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-align: right; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 16px"
|
||||
><span style="font-family: 仿宋">编号</span
|
||||
><span style="font-family: 仿宋"
|
||||
>:
|
||||
</span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">甲方</span
|
||||
><span style="font-family: 仿宋">:</span></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">内江</span
|
||||
><span
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v1"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">区</span
|
||||
><span
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v2"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">街道办事处</span>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">乙方</span
|
||||
><span style="font-family: 仿宋">:姓名:</span></span
|
||||
><span
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v3"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> <span style="font-family: 仿宋">性别</span
|
||||
><span style="font-family: 仿宋">:</span></span
|
||||
><span
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v4"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> <span style="font-family: 仿宋">身份证号码</span
|
||||
><span style="font-family: 仿宋">:</span></span
|
||||
><span
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v5"
|
||||
> </span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>身份证所载住址:内江</span
|
||||
><span
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v6"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">区</span
|
||||
><span
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v7"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">街道</span
|
||||
><span
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v8"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">社区</span
|
||||
><span
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v9"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">组</span
|
||||
><span
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v10"
|
||||
> </span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">丙</span>
|
||||
<span style="font-family: 仿宋"
|
||||
>方:内江高新区拆迁协调办公室</span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"> </span>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">乙方系</span
|
||||
><span
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v11"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>项目的房屋被安置对象,于</span
|
||||
><span
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v12"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">年</span
|
||||
><span
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v13"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">月</span
|
||||
><span
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v14"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">日与内江市</span
|
||||
><span
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v15"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋"
|
||||
>签订了《统一建房拆迁安置协议》(以下简称</span
|
||||
><span style="font-family: 仿宋">“原协议”)。内江市</span></span
|
||||
><span
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v16"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>在原协议项下的全部权利和义务由甲方承继,并为尽快实现乙方的房屋安置,甲乙双方一致同意将原协议约定的统一建房安置方式变更为</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">房票安置</span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>方式,即由乙方在内江市</span
|
||||
><span
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v17"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>确定的房源库中自主购买房地产开发商的商品房进行房屋安置。为此,双方经协商,就</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">房票安置</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">事宜达成本协议。</span>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>一、乙方家庭户籍人员情况及安置房屋户型和面积</span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">乙方以户为单位作为</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">房票安置</span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>的被安置对象,其家庭户籍人员如下:</span
|
||||
>
|
||||
</p>
|
||||
<table style="width: 100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>姓名</th>
|
||||
<th>关系</th>
|
||||
<th>身份证</th>
|
||||
<th>户籍所在地</th>
|
||||
<th>原协议确定安置房屋户型和面积</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="tbody">
|
||||
<!-- <tr>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td rowspan="4"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr> -->
|
||||
</tbody>
|
||||
</table>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>二、安置方式</span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>原协议约定的统一建房安置方式现变更为</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">房票安置</span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>方式,即甲方按照政策和原协议确定的安置乙方的房屋户型、面积及家庭户籍人数计付安置补偿款,并由乙方用安置补偿款在</span
|
||||
><span
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v18"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>的房源库中自主选购房地产开发商的商品房,以实现房屋安置。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 43px; line-height: 37px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>三、安置补偿款和支付方式</span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>(一)安置补偿款</span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>1.基本安置补偿款:乙方的基本安置补偿款按乙方安置房屋面积与政策规定的补偿单价计付,经计算为</span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v19"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>元,计算公式为:安置面积</span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v20"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">㎡</span
|
||||
><span style="font-family: 仿宋">×</span></span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v21"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">元</span
|
||||
><span style="font-family: 仿宋">/㎡=</span></span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v22"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">元</span>
|
||||
<span style="font-family: 仿宋">;</span></span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">2.</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">房票安置补贴</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">:被安置人数</span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v23"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">人</span
|
||||
><span style="font-family: 仿宋">×3000元/人=</span></span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v24"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">元;</span>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>3.高层物业补贴:安置房屋面积</span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v25"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">㎡</span
|
||||
><span style="font-family: 仿宋">×0.91元/㎡/月×180月=</span></span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v26"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">元;</span>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">4.</span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>住宅专项维修资金补贴</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">:安置房屋面积</span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v27"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">㎡</span
|
||||
><span style="font-family: 仿宋">×75元/㎡=</span></span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v28"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">元。</span>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">5.过渡费支付:</span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v29"
|
||||
> <span
|
||||
style="font-family: 仿宋"
|
||||
>元。</span
|
||||
></span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">6.以上1-5项合计为</span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v30"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">元(大写:</span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v31"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">)。</span>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>(二)被安置对象超基本安置面积应缴纳的款项</span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋"
|
||||
>根据政策和原协议,乙方安置房屋超出基本安置面积(</span
|
||||
><span style="font-family: 仿宋"
|
||||
>30㎡/人)之外的部分,乙方按</span
|
||||
></span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v32"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">元</span
|
||||
><span style="font-family: 仿宋"
|
||||
>/㎡的优惠单价承担该超出部分房款的70%,据此计算,乙方应向甲方缴纳</span
|
||||
></span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v33"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>元,计算公式为:超基本安置面积(即安置房屋面积</span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v34"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">㎡-基本面积</span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v35"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">㎡)部分</span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v36"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">㎡</span
|
||||
><span style="font-family: 仿宋">×</span></span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v37"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">元</span
|
||||
><span style="font-family: 仿宋">/㎡=</span></span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v38"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">元</span>
|
||||
<span style="font-family: 仿宋">。</span></span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>上述(一)(二)两项经品迭后,乙方本协议项下最终实际获得的安置补偿款为</span
|
||||
></strong
|
||||
><strong
|
||||
><span style=""
|
||||
><span
|
||||
style="
|
||||
font-family: 仿宋;
|
||||
font-size: 19px;
|
||||
text-decoration: underline;
|
||||
"
|
||||
id="v39"
|
||||
> </span
|
||||
></span
|
||||
></strong
|
||||
><strong
|
||||
><span style="font-family: 仿宋; font-size: 19px">元。</span></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>(三)支付方式</span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>1.最终安置补偿款中的30%部分由甲方在乙方与房地产开发商签订商品房买卖合同后20个工作日内一次性支付。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>2.最终安置补偿款中的70%部分由甲方分期支付。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>四、商品房的选购及购房款的支付</span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>1.乙方应在本协议签订生效后1个月内在</span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v40"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">审核通过的</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">房票安置</span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>房屋的房源库中选择商品房并签订商品房买卖合同。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>2.乙方以户为单位进行商品房选购安置,并指定家庭户籍成员中的</span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v41"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>作为购房人(即商品房买卖合同购买人、房屋产权人和借款合同借款人)。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>3.为确保乙方依法得到房屋安置,不因房屋拆迁影响居住条件,乙方获得的安置补偿款须用于购买商品房,且选购的商品房价款不因房源户型限制而低于安置补偿款的90%;如乙方选购的商品房价款超过安置补偿款的,超出部分由乙方自行筹集解决。</span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>五、其他事项</span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 43px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>1.本协议签订后,乙方如果未按本协议约定期限选购商品房实现安置的,本协议自动终止,乙方的房屋安置按原协议执行。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 43px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>2.乙方在签订本协议后,不得再次要求甲方变更安置方式。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 43px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>3.甲方如果未按本协议约定向乙方支付安置补偿款,由此给乙方造成的损失由甲方全部承担。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>4.乙方购房价款在安置补偿款以内的,不承担契税;购房价款超过安置补偿款的部分,按相关政策规定缴纳契税。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>5.乙方购买商品房所产生的办证费用、维修资金、物业管理费等由乙方自行承担。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>6.本协议签订后,原协议与本协议不一致的以本协议为准,未做变更的继续有效。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>7.甲、乙双方签订房票安置协议及相关事项由丙方监管。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 43px; line-height: 37px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>六、协议的生效</span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>本协议经甲方盖章、乙方签字</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">、</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">丙方盖章</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">后生效。</span>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">本协议一式</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">五</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">份,甲方持三份、乙</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">方</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">持一份</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">、</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">丙方持一份</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">。</span>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">(以下无正文)</span>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"> </span>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">甲</span>
|
||||
<span style="font-family: 仿宋">方:内江市</span></span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v42"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">区</span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v43"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>街道办事处(盖章)</span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">法定代表人(签名):</span>
|
||||
</span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">分管领导:</span>
|
||||
|
||||
</span>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">经办人:</span>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"> </span>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">乙</span>
|
||||
<span style="font-family: 仿宋">方:内江市</span></span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v44"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">区</span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v45"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">街道</span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v46"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">社区</span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v47"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">组户主</span
|
||||
><span style=""
|
||||
><span
|
||||
style="font-family: 仿宋; font-size: 19px; text-decoration: underline"
|
||||
id="v48"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"> </span>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">乙方代表(签名):</span>
|
||||
</span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">身份证号码:</span>
|
||||
</span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"> </span>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">丙</span>
|
||||
<span style="font-family: 仿宋"
|
||||
>方:内江高新区拆迁协调办公室</span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">丙</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">方代表(</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">盖章</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">):</span>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"> </span>
|
||||
</p>
|
||||
<p style="line-height: 37px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">签约时间:</span>
|
||||
<span style="font-family: 仿宋">年</span>
|
||||
<span style="font-family: 仿宋">月</span>
|
||||
<span style="font-family: 仿宋">日</span></span
|
||||
>
|
||||
</p>
|
||||
<p>
|
||||
<span style="font-family: Calibri; font-size: 14px"> </span>
|
||||
</p>
|
||||
<p>
|
||||
<br />
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,700 @@
|
|||
<!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" />
|
||||
<title>安置补偿款监管使用协议</title>
|
||||
</head>
|
||||
<body>
|
||||
<p style="text-align: center; line-height: 37px">
|
||||
<strong
|
||||
><span style="font-family: 宋体; font-size: 32px"
|
||||
>安置补偿款监管使用协议</span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"> </span>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>甲方(被安置对象、商品房购买人、借款人):</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">身份证号码:</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">地址:</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">电话:</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">所属征收项目名称:</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">房票安置转换</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">协议编号:</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
><strong
|
||||
><span style="font-family: 仿宋; font-size: 24px"
|
||||
> </span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>乙方(商品房出卖人):</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"> </span>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">法定代表人:</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">地址:</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">电话:</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p> </p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">丙方(贷款银行):</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">地址:</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">联系电话:</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"> </span>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>丁方(资金监管方):</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">地址:</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">电话:</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"> </span>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px">为确保甲方通过内江</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">区实施的</span
|
||||
><span style="font-family: 仿宋">“</span></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">房票安置</span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>”工作以实现房屋安置,确保乙方取得出售给甲方的商品房购房款和丙方收回出借给甲方的按揭款,维护甲乙丙三方合法权益,甲方授权丁方监管其获得的安置补偿款,且甲乙丙三方均同意由丁方代甲方将本协议约定的甲方被监管安置补偿款资金(下称“甲方被监管资金”)用于向乙方支付购房款和向丙方偿付按揭款本息。为此,甲乙丙丁四方</span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>经协商一致,签订本协议</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">。</span>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">第一条</span>
|
||||
<span style="font-family: 仿宋"
|
||||
>甲方选购商品房的价款总额与支付方式</span
|
||||
></span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>1.甲方选购的商品房的主要情况</span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>甲方自愿选购乙方出售(楼盘名称)</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">的商品房,包括:(</span
|
||||
><span style="font-family: 仿宋">1)住宅房屋。房号:</span></span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">;建筑面积</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">㎡;</span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">(</span
|
||||
><span style="font-family: 仿宋">2)车位。车位号:</span></span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">;建筑面积</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">㎡。</span>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>甲方所购商品房的具体情况以及双方的权利义务等,由甲方与乙方另行签订的</span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>商品房买卖合同约定,并以其为准。</span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> <span style="font-family: 仿宋"
|
||||
>2.甲方选购的商品房价款</span
|
||||
></span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>甲方选购乙方商品房的</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">总价款为</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">元,其中:</span>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">(</span
|
||||
><span style="font-family: 仿宋"
|
||||
>1)住宅房屋价款为人民币 </span
|
||||
></span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">元(建筑面积</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">㎡</span
|
||||
><span style="font-family: 仿宋">×</span></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">建筑单价</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">元</span
|
||||
><span style="font-family: 仿宋">/㎡);</span></span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">(</span
|
||||
><span style="font-family: 仿宋">2)车位价款为人民币</span></span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">元(建筑面积</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">㎡</span
|
||||
><span style="font-family: 仿宋">×</span></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">建筑单价</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">元</span
|
||||
><span style="font-family: 仿宋">/㎡)。</span></span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>3.商品房价款支付方式及时间</span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">(</span
|
||||
><span style="font-family: 仿宋">1)商品房总价款中的</span></span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">元(大写</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋"
|
||||
>元整),由甲方授权丁方在收到本协议项下的甲方安置补偿款后</span
|
||||
><span style="font-family: 仿宋"
|
||||
>20个工作日内代为向乙方支付;</span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">(</span
|
||||
><span style="font-family: 仿宋">2)商品房总价款中的</span></span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">元(大写</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>元整),由甲方自行筹集资金,在签订商品房买卖合同前直接向乙方支付;</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">(</span
|
||||
><span style="font-family: 仿宋"
|
||||
>3)除上述第(1)(2)项的款项作为购房首付款,商品房总价款中的剩余款项</span
|
||||
></span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">元(大写</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>元整)由甲方向丙方进行按揭贷款,甲方授权丁方按月将安置补偿款用于代甲方向丙方偿付按揭款本息。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 40px; line-height: 35px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">第二条</span>
|
||||
<span style="font-family: 仿宋">甲方按揭贷款额度</span></span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 40px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>丙方经甲方申请,同意向甲方发放购买乙方商品房所需的按揭贷款共计</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">元(大写</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>元整),每月还款金额为</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">元(大写</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>元整)。具体借款期限、利率、发放方式、分期还款时间以及权利义务等由甲方与丙方签订的借款合同约定,并以其为准。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 40px; line-height: 35px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">第三条</span>
|
||||
<span style="font-family: 仿宋">甲方被监管资金的额度</span></span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>甲方授权丁方对甲方获得的全部安置补偿款进行监管,金额为:</span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">元(大写</span
|
||||
><span style="text-decoration: underline"
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
></span
|
||||
><span style="font-family: 仿宋; font-size: 19px">元)。</span>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>(注:甲方办理商品房买卖涉及的各项税费及其他费用不属于甲方被监管资金的范围,由甲方自行向相关单位缴纳)</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">第四条</span>
|
||||
<span style="font-family: 仿宋">银行账户的开设</span></span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>为确保本协议项下的各项资金安全和各方目的的实现,甲方、乙方和丁方均需在丙方开设银行账户,用以接收和划转资金。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">第五条</span>
|
||||
<span style="font-family: 仿宋">甲方被监管资金的划转</span></span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>1.甲方授权丁方在各期安置补偿款进入甲方账户后的当日,即可将其全部转入丁方账户作为被监管资金。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>2.本协议项下的被监管资金,丁方根据甲乙双方商品房买卖合同约定的付款期限和本协议第一条第3款第(1)项约定的额度,首先将其用于代甲方向乙方支付购房款,丙方根据丁方的通知办理前述资金的划转;其后,丁方根据甲丙双方借款合同约定的还款期限和本协议第一条第3款第(2)项约定的额度,将其用于代甲方向丙方偿付按揭款本息。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">第六条</span>
|
||||
<span style="font-family: 仿宋">资金账户和资金监管要求</span></span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>1.甲方、乙方、丁方在丙方开设的账户,在甲方与乙方的商品房买卖合同约定的义务或甲方与丙方的借款合同约定的义务未履行完毕之前,不得撤销。若任何一方因债务致使账户及其资金被国家机关冻结或划付,应承担给自己和其他各方造成的一切损失。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>2.丁方对被监管资金须专款专用,不得挪作他用。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>3.因甲方的原因致使丁无法代甲方向乙方或丙方支付购房款或偿付按揭款,乙方或丙方应向甲方主张权利,丁方不承担任何责任。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 40px; line-height: 35px">
|
||||
<strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
><span style="font-family: 仿宋">第七条</span>
|
||||
<span style="font-family: 仿宋">违约</span></span
|
||||
></strong
|
||||
><strong
|
||||
><span style="font-family: 仿宋; font-size: 19px">责任</span></strong
|
||||
><span style="font-family: 仿宋; font-size: 19px"> </span>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>1.甲方在商品房买卖合同或借款合同义务未履行完毕前擅自撤销账户,或者账户未存入足额的支付购房款或偿付贷款本息的资金,或者账户及其资金被国家机关冻结或划付,致使乙方不能取得购房款或丙方不能收回按揭款本息的,应按商品房买卖合同或借款合同的约定承担违约金;如违约金不足以弥补给乙方造成的损失的,还应赔偿对方损失。</span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>2.丁方在甲方被监管资金已按时足额转入其账户后未按时足额代为向乙方支付购房款或向丙方偿付按揭款本息,或者将甲方被监管资金挪作他用,除应继续履行代付或代还义务外,应</span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
>比照商品房买卖合同或借款合同的约定承担违约金;如违约金不足以弥补给乙方或丙方造成的损失的,还应赔偿该损失。</span
|
||||
><span style="font-family: 仿宋; font-size: 19px"
|
||||
> </span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; font-size: 19px"
|
||||
>3.任何一方违反本协议约定,除按约定支付违约金外,还应承担权利方为主张权利而产生的包括但不限于诉讼费、保全费、执行费、律师费、差旅费等。
|
||||
</span
|
||||
><span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
> </span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<strong
|
||||
><span
|
||||
style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
><span style="font-family: 仿宋">第八条</span>
|
||||
<span style="font-family: 仿宋">争议的解决</span></span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
>1.本协议在履行过程中如果发生争议,各方应协商解决,协商不成的,向丁方所在地人民法院提起诉讼解决。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
>2.本协议内容涉及资金监管、商品房买卖、借款等行为和关系,若协议履行中发生的争议仅涉及单一行为关系时,其诉讼当事人仅限于该行为关系的争议当事人,不得滥用权利将无关的其他协议主体列为诉讼当事人,否则,应承担给其他协议主体造成的损失(如律师费、误工费、差旅费等)。</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<strong
|
||||
><span
|
||||
style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
><span style="font-family: 仿宋">第九条</span>
|
||||
<span style="font-family: 仿宋">附则</span></span
|
||||
></strong
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
>1.本协议未尽事宜,可签订</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">补充协议</span
|
||||
><span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
>。</span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
> <span style="font-family: 仿宋"
|
||||
>2.本协议经甲乙丙丁四方盖章或签字后生效。</span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
>3.本协议一式四份,甲乙丙丁四方各执一份</span
|
||||
><span style="font-family: 仿宋; font-size: 19px">,</span
|
||||
><span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
>均具有同等法律效力。</span
|
||||
>
|
||||
</p>
|
||||
<!-- <p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
> </span
|
||||
>
|
||||
</p>
|
||||
<p style="text-indent: 37px; line-height: 35px">
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
> </span
|
||||
>
|
||||
</p> -->
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
> </span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
><span style="font-family: 仿宋">甲方(公章):</span>
|
||||
<span
|
||||
style="font-family: 仿宋"
|
||||
>乙方(签字):</span
|
||||
>
|
||||
</span>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
><span style="font-family: 仿宋">授权代表:</span>
|
||||
<span
|
||||
style="font-family: 仿宋"
|
||||
>身份证件号码</span
|
||||
><span style="font-family: 仿宋">: </span></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
><span style="font-family: 仿宋">联系地址:</span>
|
||||
<span
|
||||
style="font-family: 仿宋"
|
||||
>联系电话:</span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
><span style="font-family: 仿宋">联系电话:</span>
|
||||
</span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
> </span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
><span style="font-family: 仿宋">丙方(公章):</span>
|
||||
<span
|
||||
style="font-family: 仿宋"
|
||||
>丁方(盖章):</span
|
||||
>
|
||||
</span>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
><span style="font-family: 仿宋">授权代表:</span>
|
||||
<span
|
||||
style="font-family: 仿宋"
|
||||
>授权代理人</span
|
||||
><span style="font-family: 仿宋">: </span></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
><span style="font-family: 仿宋">联系地址:</span>
|
||||
<span
|
||||
style="font-family: 仿宋"
|
||||
>联系电话:</span
|
||||
></span
|
||||
>
|
||||
</p>
|
||||
<p style="line-height: 35px">
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
><span style="font-family: 仿宋">联系电话:</span>
|
||||
</span
|
||||
>
|
||||
</p>
|
||||
<p style="text-align: center; line-height: 35px">
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
> </span
|
||||
>
|
||||
</p>
|
||||
<p style="text-align: center; line-height: 35px">
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
> </span
|
||||
>
|
||||
</p>
|
||||
<p>
|
||||
<span style="font-family: 仿宋; color: rgb(51, 51, 51); font-size: 19px"
|
||||
><span style="font-family: 仿宋">签订时间:</span> <span
|
||||
style="font-family: 仿宋"
|
||||
>年</span
|
||||
>
|
||||
<span style="font-family: 仿宋">月</span> <span
|
||||
style="font-family: 仿宋"
|
||||
>日</span
|
||||
>
|
||||
</span
|
||||
>
|
||||
</p>
|
||||
<p>
|
||||
<br />
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,6 @@
|
|||
<template>
|
||||
<div id="app">
|
||||
<router-view />
|
||||
|
||||
</div>
|
||||
</template>
|
|
@ -0,0 +1,47 @@
|
|||
// 公告或新闻管理
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 新增
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: '/affiche/add',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除
|
||||
export function del(data) {
|
||||
return request({
|
||||
url: '/affiche/delete',
|
||||
method: 'delete',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
// 详情
|
||||
export function info(data) {
|
||||
return request({
|
||||
url: '/affiche/info',
|
||||
method: 'post',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
// 列表
|
||||
export function list(data) {
|
||||
return request({
|
||||
url: '/affiche/list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改
|
||||
export function update(data) {
|
||||
return request({
|
||||
url: '/affiche/update',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
export function fetchList(query) {
|
||||
return request({
|
||||
url: '/vue-element-admin/article/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
export function fetchArticle(id) {
|
||||
return request({
|
||||
url: '/vue-element-admin/article/detail',
|
||||
method: 'get',
|
||||
params: { id }
|
||||
})
|
||||
}
|
||||
|
||||
export function fetchPv(pv) {
|
||||
return request({
|
||||
url: '/vue-element-admin/article/pv',
|
||||
method: 'get',
|
||||
params: { pv }
|
||||
})
|
||||
}
|
||||
|
||||
export function createArticle(data) {
|
||||
return request({
|
||||
url: '/vue-element-admin/article/create',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function updateArticle(data) {
|
||||
return request({
|
||||
url: '/vue-element-admin/article/update',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
// 用户机构认证申请列表
|
||||
export function list(data) {
|
||||
return request({
|
||||
url: '/businessAuthenticationApply/list',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
// 楼盘管理
|
||||
import request from "@/utils/request";
|
||||
|
||||
/**
|
||||
* 楼盘列表
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
export function list(data) {
|
||||
return request({
|
||||
url: "/housingResources/propertiesForSale",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 楼盘新增/修改
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
export function update(data) {
|
||||
return request({
|
||||
url: "/housingResources/propertiesForSale",
|
||||
method: "put",
|
||||
data: data,
|
||||
});
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
// 用户管理
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 用户列表
|
||||
export function list(data) {
|
||||
return request({
|
||||
url: '/consumer/list',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
import request from "@/utils/request";
|
||||
|
||||
// 新增
|
||||
export function list(data) {
|
||||
return request({
|
||||
url: "/contractRecord/getList",
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
export function getDownloadUrl(data) {
|
||||
return request({
|
||||
url: "/contractRecord/getDownloadUrl",
|
||||
method: "get",
|
||||
params: data,
|
||||
});
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
export function served_increase(data) {
|
||||
return request({
|
||||
url: '/admin/served_increase',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function homeCount(data) {
|
||||
return request({
|
||||
url: '/admin/home',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function auditCount(data) {
|
||||
return request({
|
||||
url: '/admin/audit/statistics_index',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
// 费用返还
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 列表
|
||||
export function list(data) {
|
||||
return request({
|
||||
url: '/business/businessFeeRefundList',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
// 添加
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: '/business/businessFeeRefundAdd',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
// 机构列表
|
||||
export function businessList(data) {
|
||||
return request({
|
||||
url: '/business/businessList',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
// 反馈
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 列表
|
||||
export function list(data) {
|
||||
return request({
|
||||
url: '/feedback/list',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 列表
|
||||
export function update(data) {
|
||||
return request({
|
||||
url: '/feedback/update',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
// 财务流水管理
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 订单列表
|
||||
export function list(data) {
|
||||
return request({
|
||||
url: '/finance/orderList',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
// 房源管理
|
||||
import request from "@/utils/request";
|
||||
|
||||
/**
|
||||
* 房源列表
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
export function list(data) {
|
||||
return request({
|
||||
url: "/housingResources/housingResources/list",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 房源创建
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: "/housingResources/housingResources",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 房源上下架
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
export function offShelf(data) {
|
||||
return request({
|
||||
url: "/housingResources/housingResources/offShelf",
|
||||
method: "put",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 房源修改
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
export function update(data) {
|
||||
return request({
|
||||
url: "/housingResources/housingResources/update",
|
||||
method: "put",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
export function housingImport(data) {
|
||||
return request({
|
||||
url: "/housingResources/housingResourcesBatch",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
|
@ -0,0 +1,164 @@
|
|||
// 房源管理
|
||||
import request from "@/utils/request";
|
||||
|
||||
/**
|
||||
* 房源列表
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
export function list(data) {
|
||||
return request({
|
||||
url: "/housingTicket/housingResources/list",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
// export function deal(data) {
|
||||
// return request({
|
||||
// url: "/housingTicket/deal/phase1",
|
||||
// method: "post",
|
||||
// data: data,
|
||||
// });
|
||||
// }
|
||||
export function deal(data) {
|
||||
return request({
|
||||
url: "/housingTicket/deal/phase1N",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
export function dealPhase2(data) {
|
||||
return request({
|
||||
url: "/housingTicket/deal/phase2",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
export function dealPhase3(data) {
|
||||
return request({
|
||||
url: "/housingTicket/deal/phase3",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
export function getPhase3Data(data) {
|
||||
return request({
|
||||
url: "/housingTicket/deal/phase3/getData",
|
||||
method: "get",
|
||||
params: data,
|
||||
});
|
||||
}
|
||||
|
||||
export function dealPhase4(data) {
|
||||
return request({
|
||||
url: "/housingTicket/deal/phase4",
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
export function getPhase5Data(data) {
|
||||
return request({
|
||||
url: "/housingTicket/deal/phase5",
|
||||
method: "get",
|
||||
params: data,
|
||||
});
|
||||
}
|
||||
|
||||
export function dealPhase5(data) {
|
||||
return request({
|
||||
url: "/housingTicket/deal/phase5",
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
export function dealPhase5F(data) {
|
||||
return request({
|
||||
url: "/housingTicket/deal/phase5F",
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
export function getPhase6Data(data) {
|
||||
return request({
|
||||
url: "/housingTicket/deal/phase6/getData",
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
export function dealPhase6(data) {
|
||||
return request({
|
||||
url: "/housingTicket/deal/phase6",
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
export function dealPhase25(data) {
|
||||
return request({
|
||||
url: "/housingTicket/deal/phase25",
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
}
|
||||
export function dealPhase55(data) {
|
||||
return request({
|
||||
url: "/housingTicket/deal/phase55",
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
export function disuse(id) {
|
||||
return request({
|
||||
url: `/housingTicket/deal/disuse?id=${id}`,
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
||||
export function phase1GetTicketNumber(data) {
|
||||
return request({
|
||||
url: "/housingTicket/deal/phase1GetTicketNumber",
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
export function phase5Export(data) {
|
||||
return request({
|
||||
url: "/housingTicket/phase5Export",
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
export function phase32(data) {
|
||||
return request({
|
||||
url: "/housingTicket/deal/phase32",
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
export function phase2GetData(params) {
|
||||
return request({
|
||||
url: "/housingTicket/deal/phase2GetData",
|
||||
method: "get",
|
||||
params,
|
||||
});
|
||||
}
|
||||
|
||||
export function phase321(params) {
|
||||
return request({
|
||||
url: "/housingTicket/deal/phase321",
|
||||
method: "get",
|
||||
params,
|
||||
});
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
import request from "@/utils/request";
|
||||
|
||||
// 新增
|
||||
export function serviceAgreementUrl(data) {
|
||||
return request({
|
||||
url: "/staff/serviceAgreementUrl",
|
||||
method: "get",
|
||||
params: data,
|
||||
});
|
||||
}
|
||||
|
||||
export function ticketNumberforUserList(data) {
|
||||
console.log(data);
|
||||
return request({
|
||||
url: "/housingTicket/deal/phase1GetTicketNumberAndUserList",
|
||||
method: "get",
|
||||
params: data,
|
||||
});
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
import request from "@/utils/request";
|
||||
|
||||
export function list(data) {
|
||||
return request({
|
||||
url: "/housingTicketPre/prePhase1List",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: "/housingTicketPre/prePhase1N",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
export function prePhase2(data) {
|
||||
return request({
|
||||
url: "/housingTicketPre/prePhase2",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
// 房源管理
|
||||
import request from "@/utils/request";
|
||||
|
||||
/**
|
||||
* 房源列表
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
export function list(data) {
|
||||
return request({
|
||||
url: "/project",
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
export function createAndUpdate(data) {
|
||||
return request({
|
||||
url: "/project",
|
||||
method: "put",
|
||||
data: data,
|
||||
});
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
export function getToken() {
|
||||
return request({
|
||||
url: '/admin/upload_token', // 假地址 自行替换
|
||||
method: 'post'
|
||||
})
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
// 常见问题
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 新增
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: '/questions/add',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
// 删除
|
||||
export function del(data) {
|
||||
return request({
|
||||
url: '/questions/del',
|
||||
method: 'delete',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
// 列表
|
||||
export function list(data) {
|
||||
return request({
|
||||
url: '/questions/list',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
// 用户管理
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 列表
|
||||
export function list(data) {
|
||||
return request({
|
||||
url: '/release/list',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 新增
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: '/release/add',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除
|
||||
export function del(data) {
|
||||
return request({
|
||||
url: '/release/delete',
|
||||
method: 'delete',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改
|
||||
export function update(data) {
|
||||
return request({
|
||||
url: '/release/update',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 详情
|
||||
export function info(data) {
|
||||
return request({
|
||||
url: '/release/info',
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
export function searchUser(name) {
|
||||
return request({
|
||||
url: '/vue-element-admin/search/user',
|
||||
method: 'get',
|
||||
params: { name }
|
||||
})
|
||||
}
|
||||
|
||||
export function transactionList(query) {
|
||||
return request({
|
||||
url: '/vue-element-admin/transaction/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
export function getRoutes() {
|
||||
return request({
|
||||
url: '/vue-element-admin/routes',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
export function getRoles() {
|
||||
return request({
|
||||
url: '/vue-element-admin/roles',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
export function addRole(data) {
|
||||
return request({
|
||||
url: '/vue-element-admin/role',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function updateRole(id, data) {
|
||||
return request({
|
||||
url: `/vue-element-admin/role/${id}`,
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function deleteRole(id) {
|
||||
return request({
|
||||
url: `/vue-element-admin/role/${id}`,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
|
@ -0,0 +1,119 @@
|
|||
// 视频点位治理
|
||||
import request from "@/utils/request";
|
||||
|
||||
/**
|
||||
* 列表
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
export function list(data) {
|
||||
return request({
|
||||
url: "/spdwzl/list",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 视频点位-列表
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
export function spList(data) {
|
||||
return request({
|
||||
url: "/spdwzl/spList",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 分组管理-增改
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
export function groupAdminUpdate(data) {
|
||||
return request({
|
||||
url: "/spdwzl/groupAdminUpdate",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 视频点位-配置分组
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
export function spGroupSet(data) {
|
||||
return request({
|
||||
url: "/spdwzl/spGroupSet",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 视频点位-重置标注数据
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
export function remarkReset() {
|
||||
return request({
|
||||
url: "/spdwzl/remarkReset",
|
||||
method: "post",
|
||||
// data: data,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 分组管理-列表(无分页)
|
||||
* @param {*} params
|
||||
* @returns
|
||||
*/
|
||||
export function groupList() {
|
||||
return request({
|
||||
url: "/spdwzl/groupList",
|
||||
method: "get",
|
||||
// params,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分组信息
|
||||
* @param {*} params
|
||||
* @returns
|
||||
*/
|
||||
export function getGroupInfo(params) {
|
||||
return request({
|
||||
url: "/spdwzl/getGroupInfo",
|
||||
method: "get",
|
||||
params,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据监控编号获取url播放地址
|
||||
* @param {*} params
|
||||
* @returns
|
||||
*/
|
||||
export function getUrl(params) {
|
||||
return request({
|
||||
url: "/spdwzl/getUrl",
|
||||
method: "get",
|
||||
params,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 标注
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
export function marking(data) {
|
||||
return request({
|
||||
url: "/spdwzl/marking",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
// 账号管理
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 新增账号
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: '/staff/add',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除
|
||||
export function deleteInfo(data) {
|
||||
return request({
|
||||
url: '/staff/delete',
|
||||
method: 'delete',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
// 获取可添加账号类型
|
||||
export function getAddType(data) {
|
||||
return request({
|
||||
url: '/staff/getAddType',
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
// 详情
|
||||
export function info(data) {
|
||||
return request({
|
||||
url: '/staff',
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
// 根据用户id获取详情
|
||||
export function infoById(data) {
|
||||
return request({
|
||||
url: '/staff/infoById',
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
// 账号列表
|
||||
export function list(data) {
|
||||
return request({
|
||||
url: '/staff/list',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 重置密码
|
||||
export function reset(data) {
|
||||
return request({
|
||||
url: '/staff/reset',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改
|
||||
export function update(data) {
|
||||
return request({
|
||||
url: '/staff',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 强制登录
|
||||
export function forceLogin(data) {
|
||||
return request({
|
||||
url: '/commonLogin/login',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 强制登录
|
||||
export function forceLoginInfo(data) {
|
||||
return request({
|
||||
url: '/staff/forceLoginInfo',
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
}
|
|
@ -0,0 +1,86 @@
|
|||
// 房票管理
|
||||
import request from "@/utils/request";
|
||||
|
||||
/**
|
||||
* 房票列表
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
export function list(data) {
|
||||
return request({
|
||||
url: "/housingTicket/list",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 房票创建
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: "/housingTicket/create",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
export function numberAdd(data) {
|
||||
return request({
|
||||
url: "/housingTicket/numberAdd",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
export function getLastNumber() {
|
||||
return request({
|
||||
url: "/housingTicket/getLastNumber",
|
||||
method: "get",
|
||||
// data: data,
|
||||
});
|
||||
}
|
||||
|
||||
export function info(data) {
|
||||
return request({
|
||||
url: "/housingTicket/info",
|
||||
method: "get",
|
||||
params:data
|
||||
// data: data,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
export function getStatistics(data) {
|
||||
return request({
|
||||
url: "/repaymentRecordPlan",
|
||||
method: "get",
|
||||
params:data
|
||||
// data: data,
|
||||
});
|
||||
}
|
||||
|
||||
export function getNormalData(data) {
|
||||
return request({
|
||||
url: "/repaymentRecordPlan/normalData",
|
||||
method: "get",
|
||||
params:data
|
||||
// data: data,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 用户导出
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
export function listExport(data) {
|
||||
return request({
|
||||
url: "/housingTicket/listExport",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
// 新增
|
||||
export function uploadFile(data) {
|
||||
let formData = new FormData()
|
||||
formData.append('file',data.file)
|
||||
return request({
|
||||
url: '/commonLogin/upload',
|
||||
method: 'post',
|
||||
data: formData
|
||||
})
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
export function login(data) {
|
||||
console.log(data);
|
||||
return request({
|
||||
url: '/commonLogin/login',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function getInfo() {
|
||||
return request({
|
||||
url: '/staff',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
export function list(data) {
|
||||
return request({
|
||||
url: '/staff/list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
export function editPassword(data) {
|
||||
return request({
|
||||
url: '/admin/admin/editPassword',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function logout() {
|
||||
return request({
|
||||
url: '/vue-element-admin/user/logout',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
After Width: | Height: | Size: 160 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 866 B |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 6.1 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 962 B |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 869 B |
After Width: | Height: | Size: 1.8 MiB |
After Width: | Height: | Size: 352 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 274 KiB |
|
@ -0,0 +1,145 @@
|
|||
<template>
|
||||
<el-cascader ref="address-cascader" v-model="data" :props="props" :options="dataOptions" :multiple="multiple" :placeholder="placeholder" :clearable="clearable" :style="{'min-width': (level +1) * 75 + 'px'}" @change="cascaderChange" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getSysArea } from '@/api/basic'
|
||||
export default {
|
||||
name: 'AddressCascader',
|
||||
props: {
|
||||
value: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
level: {
|
||||
type: Number,
|
||||
default: 2,
|
||||
},
|
||||
multiple: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
placeholder: {
|
||||
type: String,
|
||||
default: '请选择'
|
||||
},
|
||||
clearable: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
data: [],
|
||||
props: {
|
||||
lazy: true,
|
||||
multiple: this.multiple,
|
||||
lazyLoad: new Function(),
|
||||
value: 'id',
|
||||
label: 'name',
|
||||
checkStrictly: true
|
||||
},
|
||||
dataOptions: []
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
value: {
|
||||
deep: true,
|
||||
handler() {
|
||||
this.initValue()
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.initValue()
|
||||
this.initLazyLoad()
|
||||
},
|
||||
methods: {
|
||||
initValue() {
|
||||
// console.log(this.level)
|
||||
this.data = this.value || []
|
||||
if (this.level && this.multiple) this.initDataOptions()
|
||||
},
|
||||
async initDataOptions() {
|
||||
const that = this
|
||||
const { data, props } = this
|
||||
// console.log(data)
|
||||
if (!data || !data.length) return
|
||||
if (props.multiple) {
|
||||
if (data.findIndex(add => add === undefined) !== -1) return
|
||||
const dataOptions = await this.getAddress(0)
|
||||
const pros = data.map((item) => {
|
||||
return item.reduce(async(prev, current, index) => {
|
||||
const prevData = await prev
|
||||
const addressItem = prevData.find((it) => current === it.id)
|
||||
let children = addressItem.children
|
||||
if (!children && index < that.level) {
|
||||
children = await this.getAddress(current)
|
||||
if (index >= that.level - 1) {
|
||||
children = children.map(ars => {
|
||||
ars.leaf = true
|
||||
return ars
|
||||
})
|
||||
}
|
||||
addressItem.children = children
|
||||
}
|
||||
return children
|
||||
}, dataOptions)
|
||||
})
|
||||
await Promise.all(pros)
|
||||
this.$set(this, 'dataOptions', dataOptions)
|
||||
} else {
|
||||
this.dataOptions = []
|
||||
}
|
||||
},
|
||||
initLazyLoad() {
|
||||
this.props.lazyLoad = (node, resolve) => {
|
||||
console.log(node)
|
||||
const { level, value, path } = node
|
||||
const { dataOptions } = this
|
||||
if (path) {
|
||||
let childrens = dataOptions
|
||||
path.forEach((p) => {
|
||||
if (childrens) {
|
||||
const childrenItem = childrens.find(c => c[this.props.value] === p)
|
||||
if (childrenItem) {
|
||||
childrens = childrenItem.children
|
||||
} else {
|
||||
childrens = childrenItem
|
||||
}
|
||||
}
|
||||
})
|
||||
if (childrens) {
|
||||
resolve([])
|
||||
} else {
|
||||
this.getNodes(level, resolve, value)
|
||||
}
|
||||
} else {
|
||||
this.getNodes(level, resolve, value)
|
||||
}
|
||||
}
|
||||
},
|
||||
getNodes(level, resolve, value = 0) {
|
||||
getSysArea({ pid: value, _t: Math.random() }).then((res) => {
|
||||
const { lists } = res.data
|
||||
// console.log(this.$refs['address-cascader'])
|
||||
const nodeArr = lists.map(item => ({
|
||||
id: item.id,
|
||||
name: item.name,
|
||||
leaf: level >= this.level,
|
||||
}))
|
||||
resolve(nodeArr)
|
||||
})
|
||||
},
|
||||
getAddress(pid) {
|
||||
return getSysArea({ pid, _t: Math.random() }).then(res => res.data.lists)
|
||||
},
|
||||
cascaderChange(e) {
|
||||
this.$emit('input', e)
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
|
@ -0,0 +1,111 @@
|
|||
<template>
|
||||
<transition :name="transitionName">
|
||||
<div v-show="visible" :style="customStyle" class="back-to-ceiling" @click="backToTop">
|
||||
<svg width="16" height="16" viewBox="0 0 17 17" xmlns="http://www.w3.org/2000/svg" class="Icon Icon--backToTopArrow" aria-hidden="true" style="height:16px;width:16px"><path d="M12.036 15.59a1 1 0 0 1-.997.995H5.032a.996.996 0 0 1-.997-.996V8.584H1.03c-1.1 0-1.36-.633-.578-1.416L7.33.29a1.003 1.003 0 0 1 1.412 0l6.878 6.88c.782.78.523 1.415-.58 1.415h-3.004v7.004z" /></svg>
|
||||
</div>
|
||||
</transition>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'BackToTop',
|
||||
props: {
|
||||
visibilityHeight: {
|
||||
type: Number,
|
||||
default: 400
|
||||
},
|
||||
backPosition: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
customStyle: {
|
||||
type: Object,
|
||||
default: function() {
|
||||
return {
|
||||
right: '50px',
|
||||
bottom: '50px',
|
||||
width: '40px',
|
||||
height: '40px',
|
||||
'border-radius': '4px',
|
||||
'line-height': '45px',
|
||||
background: '#e7eaf1'
|
||||
}
|
||||
}
|
||||
},
|
||||
transitionName: {
|
||||
type: String,
|
||||
default: 'fade'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
interval: null,
|
||||
isMoving: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
window.addEventListener('scroll', this.handleScroll)
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('scroll', this.handleScroll)
|
||||
if (this.interval) {
|
||||
clearInterval(this.interval)
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleScroll() {
|
||||
this.visible = window.pageYOffset > this.visibilityHeight
|
||||
},
|
||||
backToTop() {
|
||||
if (this.isMoving) return
|
||||
const start = window.pageYOffset
|
||||
let i = 0
|
||||
this.isMoving = true
|
||||
this.interval = setInterval(() => {
|
||||
const next = Math.floor(this.easeInOutQuad(10 * i, start, -start, 500))
|
||||
if (next <= this.backPosition) {
|
||||
window.scrollTo(0, this.backPosition)
|
||||
clearInterval(this.interval)
|
||||
this.isMoving = false
|
||||
} else {
|
||||
window.scrollTo(0, next)
|
||||
}
|
||||
i++
|
||||
}, 16.7)
|
||||
},
|
||||
easeInOutQuad(t, b, c, d) {
|
||||
if ((t /= d / 2) < 1) return c / 2 * t * t + b
|
||||
return -c / 2 * (--t * (t - 2) - 1) + b
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.back-to-ceiling {
|
||||
position: fixed;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.back-to-ceiling:hover {
|
||||
background: #d5dbe7;
|
||||
}
|
||||
|
||||
.fade-enter-active,
|
||||
.fade-leave-active {
|
||||
transition: opacity .5s;
|
||||
}
|
||||
|
||||
.fade-enter,
|
||||
.fade-leave-to {
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
.back-to-ceiling .Icon {
|
||||
fill: #9aaabf;
|
||||
background: none;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,82 @@
|
|||
<template>
|
||||
<el-breadcrumb class="app-breadcrumb" separator="/">
|
||||
<transition-group name="breadcrumb">
|
||||
<el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path">
|
||||
<span v-if="item.redirect==='noRedirect'||index==levelList.length-1" class="no-redirect">{{ item.meta.title }}</span>
|
||||
<a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a>
|
||||
</el-breadcrumb-item>
|
||||
</transition-group>
|
||||
</el-breadcrumb>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import pathToRegexp from 'path-to-regexp'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
levelList: null
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
$route(route) {
|
||||
// if you go to the redirect page, do not update the breadcrumbs
|
||||
if (route.path.startsWith('/redirect/')) {
|
||||
return
|
||||
}
|
||||
this.getBreadcrumb()
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getBreadcrumb()
|
||||
},
|
||||
methods: {
|
||||
getBreadcrumb() {
|
||||
// only show routes with meta.title
|
||||
let matched = this.$route.matched.filter(item => item.meta && item.meta.title)
|
||||
const first = matched[0]
|
||||
|
||||
if (!this.isDashboard(first)) {
|
||||
matched = [{ path: '/dashboard', meta: { title: 'Dashboard' }}].concat(matched)
|
||||
}
|
||||
|
||||
this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false)
|
||||
},
|
||||
isDashboard(route) {
|
||||
const name = route && route.name
|
||||
if (!name) {
|
||||
return false
|
||||
}
|
||||
return name.trim().toLocaleLowerCase() === 'Dashboard'.toLocaleLowerCase()
|
||||
},
|
||||
pathCompile(path) {
|
||||
// To solve this problem https://github.com/PanJiaChen/vue-element-admin/issues/561
|
||||
const { params } = this.$route
|
||||
var toPath = pathToRegexp.compile(path)
|
||||
return toPath(params)
|
||||
},
|
||||
handleLink(item) {
|
||||
const { redirect, path } = item
|
||||
if (redirect) {
|
||||
this.$router.push(redirect)
|
||||
return
|
||||
}
|
||||
this.$router.push(this.pathCompile(path))
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.app-breadcrumb.el-breadcrumb {
|
||||
display: inline-block;
|
||||
font-size: 14px;
|
||||
line-height: 50px;
|
||||
margin-left: 8px;
|
||||
|
||||
.no-redirect {
|
||||
color: #97a8be;
|
||||
cursor: text;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,155 @@
|
|||
<template>
|
||||
<div :id="id" :class="className" :style="{height:height,width:width}" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import echarts from 'echarts'
|
||||
import resize from './mixins/resize'
|
||||
|
||||
export default {
|
||||
mixins: [resize],
|
||||
props: {
|
||||
className: {
|
||||
type: String,
|
||||
default: 'chart'
|
||||
},
|
||||
id: {
|
||||
type: String,
|
||||
default: 'chart'
|
||||
},
|
||||
width: {
|
||||
type: String,
|
||||
default: '200px'
|
||||
},
|
||||
height: {
|
||||
type: String,
|
||||
default: '200px'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
chart: null
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initChart()
|
||||
},
|
||||
beforeDestroy() {
|
||||
if (!this.chart) {
|
||||
return
|
||||
}
|
||||
this.chart.dispose()
|
||||
this.chart = null
|
||||
},
|
||||
methods: {
|
||||
initChart() {
|
||||
this.chart = echarts.init(document.getElementById(this.id))
|
||||
|
||||
const xAxisData = []
|
||||
const data = []
|
||||
const data2 = []
|
||||
for (let i = 0; i < 50; i++) {
|
||||
xAxisData.push(i)
|
||||
data.push((Math.sin(i / 5) * (i / 5 - 10) + i / 6) * 5)
|
||||
data2.push((Math.sin(i / 5) * (i / 5 + 10) + i / 6) * 3)
|
||||
}
|
||||
this.chart.setOption({
|
||||
backgroundColor: '#08263a',
|
||||
grid: {
|
||||
left: '5%',
|
||||
right: '5%'
|
||||
},
|
||||
xAxis: [{
|
||||
show: false,
|
||||
data: xAxisData
|
||||
}, {
|
||||
show: false,
|
||||
data: xAxisData
|
||||
}],
|
||||
visualMap: {
|
||||
show: false,
|
||||
min: 0,
|
||||
max: 50,
|
||||
dimension: 0,
|
||||
inRange: {
|
||||
color: ['#4a657a', '#308e92', '#b1cfa5', '#f5d69f', '#f5898b', '#ef5055']
|
||||
}
|
||||
},
|
||||
yAxis: {
|
||||
axisLine: {
|
||||
show: false
|
||||
},
|
||||
axisLabel: {
|
||||
textStyle: {
|
||||
color: '#4a657a'
|
||||
}
|
||||
},
|
||||
splitLine: {
|
||||
show: true,
|
||||
lineStyle: {
|
||||
color: '#08263f'
|
||||
}
|
||||
},
|
||||
axisTick: {
|
||||
show: false
|
||||
}
|
||||
},
|
||||
series: [{
|
||||
name: 'back',
|
||||
type: 'bar',
|
||||
data: data2,
|
||||
z: 1,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
opacity: 0.4,
|
||||
barBorderRadius: 5,
|
||||
shadowBlur: 3,
|
||||
shadowColor: '#111'
|
||||
}
|
||||
}
|
||||
}, {
|
||||
name: 'Simulate Shadow',
|
||||
type: 'line',
|
||||
data,
|
||||
z: 2,
|
||||
showSymbol: false,
|
||||
animationDelay: 0,
|
||||
animationEasing: 'linear',
|
||||
animationDuration: 1200,
|
||||
lineStyle: {
|
||||
normal: {
|
||||
color: 'transparent'
|
||||
}
|
||||
},
|
||||
areaStyle: {
|
||||
normal: {
|
||||
color: '#08263a',
|
||||
shadowBlur: 50,
|
||||
shadowColor: '#000'
|
||||
}
|
||||
}
|
||||
}, {
|
||||
name: 'front',
|
||||
type: 'bar',
|
||||
data,
|
||||
xAxisIndex: 1,
|
||||
z: 3,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
barBorderRadius: 5
|
||||
}
|
||||
}
|
||||
}],
|
||||
animationEasing: 'elasticOut',
|
||||
animationEasingUpdate: 'elasticOut',
|
||||
animationDelay(idx) {
|
||||
return idx * 20
|
||||
},
|
||||
animationDelayUpdate(idx) {
|
||||
return idx * 20
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,227 @@
|
|||
<template>
|
||||
<div :id="id" :class="className" :style="{height:height,width:width}" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import echarts from 'echarts'
|
||||
import resize from './mixins/resize'
|
||||
|
||||
export default {
|
||||
mixins: [resize],
|
||||
props: {
|
||||
className: {
|
||||
type: String,
|
||||
default: 'chart'
|
||||
},
|
||||
id: {
|
||||
type: String,
|
||||
default: 'chart'
|
||||
},
|
||||
width: {
|
||||
type: String,
|
||||
default: '200px'
|
||||
},
|
||||
height: {
|
||||
type: String,
|
||||
default: '200px'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
chart: null
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initChart()
|
||||
},
|
||||
beforeDestroy() {
|
||||
if (!this.chart) {
|
||||
return
|
||||
}
|
||||
this.chart.dispose()
|
||||
this.chart = null
|
||||
},
|
||||
methods: {
|
||||
initChart() {
|
||||
this.chart = echarts.init(document.getElementById(this.id))
|
||||
|
||||
this.chart.setOption({
|
||||
backgroundColor: '#394056',
|
||||
title: {
|
||||
top: 20,
|
||||
text: 'Requests',
|
||||
textStyle: {
|
||||
fontWeight: 'normal',
|
||||
fontSize: 16,
|
||||
color: '#F1F1F3'
|
||||
},
|
||||
left: '1%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
lineStyle: {
|
||||
color: '#57617B'
|
||||
}
|
||||
}
|
||||
},
|
||||
legend: {
|
||||
top: 20,
|
||||
icon: 'rect',
|
||||
itemWidth: 14,
|
||||
itemHeight: 5,
|
||||
itemGap: 13,
|
||||
data: ['CMCC', 'CTCC', 'CUCC'],
|
||||
right: '4%',
|
||||
textStyle: {
|
||||
fontSize: 12,
|
||||
color: '#F1F1F3'
|
||||
}
|
||||
},
|
||||
grid: {
|
||||
top: 100,
|
||||
left: '2%',
|
||||
right: '2%',
|
||||
bottom: '2%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: [{
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: '#57617B'
|
||||
}
|
||||
},
|
||||
data: ['13:00', '13:05', '13:10', '13:15', '13:20', '13:25', '13:30', '13:35', '13:40', '13:45', '13:50', '13:55']
|
||||
}],
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name: '(%)',
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: '#57617B'
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
margin: 10,
|
||||
textStyle: {
|
||||
fontSize: 14
|
||||
}
|
||||
},
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
color: '#57617B'
|
||||
}
|
||||
}
|
||||
}],
|
||||
series: [{
|
||||
name: 'CMCC',
|
||||
type: 'line',
|
||||
smooth: true,
|
||||
symbol: 'circle',
|
||||
symbolSize: 5,
|
||||
showSymbol: false,
|
||||
lineStyle: {
|
||||
normal: {
|
||||
width: 1
|
||||
}
|
||||
},
|
||||
areaStyle: {
|
||||
normal: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
||||
offset: 0,
|
||||
color: 'rgba(137, 189, 27, 0.3)'
|
||||
}, {
|
||||
offset: 0.8,
|
||||
color: 'rgba(137, 189, 27, 0)'
|
||||
}], false),
|
||||
shadowColor: 'rgba(0, 0, 0, 0.1)',
|
||||
shadowBlur: 10
|
||||
}
|
||||
},
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: 'rgb(137,189,27)',
|
||||
borderColor: 'rgba(137,189,2,0.27)',
|
||||
borderWidth: 12
|
||||
|
||||
}
|
||||
},
|
||||
data: [220, 182, 191, 134, 150, 120, 110, 125, 145, 122, 165, 122]
|
||||
}, {
|
||||
name: 'CTCC',
|
||||
type: 'line',
|
||||
smooth: true,
|
||||
symbol: 'circle',
|
||||
symbolSize: 5,
|
||||
showSymbol: false,
|
||||
lineStyle: {
|
||||
normal: {
|
||||
width: 1
|
||||
}
|
||||
},
|
||||
areaStyle: {
|
||||
normal: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
||||
offset: 0,
|
||||
color: 'rgba(0, 136, 212, 0.3)'
|
||||
}, {
|
||||
offset: 0.8,
|
||||
color: 'rgba(0, 136, 212, 0)'
|
||||
}], false),
|
||||
shadowColor: 'rgba(0, 0, 0, 0.1)',
|
||||
shadowBlur: 10
|
||||
}
|
||||
},
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: 'rgb(0,136,212)',
|
||||
borderColor: 'rgba(0,136,212,0.2)',
|
||||
borderWidth: 12
|
||||
|
||||
}
|
||||
},
|
||||
data: [120, 110, 125, 145, 122, 165, 122, 220, 182, 191, 134, 150]
|
||||
}, {
|
||||
name: 'CUCC',
|
||||
type: 'line',
|
||||
smooth: true,
|
||||
symbol: 'circle',
|
||||
symbolSize: 5,
|
||||
showSymbol: false,
|
||||
lineStyle: {
|
||||
normal: {
|
||||
width: 1
|
||||
}
|
||||
},
|
||||
areaStyle: {
|
||||
normal: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
||||
offset: 0,
|
||||
color: 'rgba(219, 50, 51, 0.3)'
|
||||
}, {
|
||||
offset: 0.8,
|
||||
color: 'rgba(219, 50, 51, 0)'
|
||||
}], false),
|
||||
shadowColor: 'rgba(0, 0, 0, 0.1)',
|
||||
shadowBlur: 10
|
||||
}
|
||||
},
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: 'rgb(219,50,51)',
|
||||
borderColor: 'rgba(219,50,51,0.2)',
|
||||
borderWidth: 12
|
||||
}
|
||||
},
|
||||
data: [220, 182, 125, 145, 122, 191, 134, 150, 120, 110, 165, 122]
|
||||
}]
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,271 @@
|
|||
<template>
|
||||
<div :id="id" :class="className" :style="{height:height,width:width}" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import echarts from 'echarts'
|
||||
import resize from './mixins/resize'
|
||||
|
||||
export default {
|
||||
mixins: [resize],
|
||||
props: {
|
||||
className: {
|
||||
type: String,
|
||||
default: 'chart'
|
||||
},
|
||||
id: {
|
||||
type: String,
|
||||
default: 'chart'
|
||||
},
|
||||
width: {
|
||||
type: String,
|
||||
default: '200px'
|
||||
},
|
||||
height: {
|
||||
type: String,
|
||||
default: '200px'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
chart: null
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initChart()
|
||||
},
|
||||
beforeDestroy() {
|
||||
if (!this.chart) {
|
||||
return
|
||||
}
|
||||
this.chart.dispose()
|
||||
this.chart = null
|
||||
},
|
||||
methods: {
|
||||
initChart() {
|
||||
this.chart = echarts.init(document.getElementById(this.id))
|
||||
const xData = (function() {
|
||||
const data = []
|
||||
for (let i = 1; i < 13; i++) {
|
||||
data.push(i + 'month')
|
||||
}
|
||||
return data
|
||||
}())
|
||||
this.chart.setOption({
|
||||
backgroundColor: '#344b58',
|
||||
title: {
|
||||
text: 'statistics',
|
||||
x: '20',
|
||||
top: '20',
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
fontSize: '22'
|
||||
},
|
||||
subtextStyle: {
|
||||
color: '#90979c',
|
||||
fontSize: '16'
|
||||
}
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
textStyle: {
|
||||
color: '#fff'
|
||||
}
|
||||
}
|
||||
},
|
||||
grid: {
|
||||
left: '5%',
|
||||
right: '5%',
|
||||
borderWidth: 0,
|
||||
top: 150,
|
||||
bottom: 95,
|
||||
textStyle: {
|
||||
color: '#fff'
|
||||
}
|
||||
},
|
||||
legend: {
|
||||
x: '5%',
|
||||
top: '10%',
|
||||
textStyle: {
|
||||
color: '#90979c'
|
||||
},
|
||||
data: ['female', 'male', 'average']
|
||||
},
|
||||
calculable: true,
|
||||
xAxis: [{
|
||||
type: 'category',
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: '#90979c'
|
||||
}
|
||||
},
|
||||
splitLine: {
|
||||
show: false
|
||||
},
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
splitArea: {
|
||||
show: false
|
||||
},
|
||||
axisLabel: {
|
||||
interval: 0
|
||||
|
||||
},
|
||||
data: xData
|
||||
}],
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
splitLine: {
|
||||
show: false
|
||||
},
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: '#90979c'
|
||||
}
|
||||
},
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
axisLabel: {
|
||||
interval: 0
|
||||
},
|
||||
splitArea: {
|
||||
show: false
|
||||
}
|
||||
}],
|
||||
dataZoom: [{
|
||||
show: true,
|
||||
height: 30,
|
||||
xAxisIndex: [
|
||||
0
|
||||
],
|
||||
bottom: 30,
|
||||
start: 10,
|
||||
end: 80,
|
||||
handleIcon: 'path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z',
|
||||
handleSize: '110%',
|
||||
handleStyle: {
|
||||
color: '#d3dee5'
|
||||
|
||||
},
|
||||
textStyle: {
|
||||
color: '#fff' },
|
||||
borderColor: '#90979c'
|
||||
|
||||
}, {
|
||||
type: 'inside',
|
||||
show: true,
|
||||
height: 15,
|
||||
start: 1,
|
||||
end: 35
|
||||
}],
|
||||
series: [{
|
||||
name: 'female',
|
||||
type: 'bar',
|
||||
stack: 'total',
|
||||
barMaxWidth: 35,
|
||||
barGap: '10%',
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: 'rgba(255,144,128,1)',
|
||||
label: {
|
||||
show: true,
|
||||
textStyle: {
|
||||
color: '#fff'
|
||||
},
|
||||
position: 'insideTop',
|
||||
formatter(p) {
|
||||
return p.value > 0 ? p.value : ''
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
data: [
|
||||
709,
|
||||
1917,
|
||||
2455,
|
||||
2610,
|
||||
1719,
|
||||
1433,
|
||||
1544,
|
||||
3285,
|
||||
5208,
|
||||
3372,
|
||||
2484,
|
||||
4078
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
name: 'male',
|
||||
type: 'bar',
|
||||
stack: 'total',
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: 'rgba(0,191,183,1)',
|
||||
barBorderRadius: 0,
|
||||
label: {
|
||||
show: true,
|
||||
position: 'top',
|
||||
formatter(p) {
|
||||
return p.value > 0 ? p.value : ''
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
data: [
|
||||
327,
|
||||
1776,
|
||||
507,
|
||||
1200,
|
||||
800,
|
||||
482,
|
||||
204,
|
||||
1390,
|
||||
1001,
|
||||
951,
|
||||
381,
|
||||
220
|
||||
]
|
||||
}, {
|
||||
name: 'average',
|
||||
type: 'line',
|
||||
stack: 'total',
|
||||
symbolSize: 10,
|
||||
symbol: 'circle',
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: 'rgba(252,230,48,1)',
|
||||
barBorderRadius: 0,
|
||||
label: {
|
||||
show: true,
|
||||
position: 'top',
|
||||
formatter(p) {
|
||||
return p.value > 0 ? p.value : ''
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
data: [
|
||||
1036,
|
||||
3693,
|
||||
2962,
|
||||
3810,
|
||||
2519,
|
||||
1915,
|
||||
1748,
|
||||
4675,
|
||||
6209,
|
||||
4323,
|
||||
2865,
|
||||
4298
|
||||
]
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,56 @@
|
|||
import { debounce } from '@/utils'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
$_sidebarElm: null,
|
||||
$_resizeHandler: null
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initListener()
|
||||
},
|
||||
activated() {
|
||||
if (!this.$_resizeHandler) {
|
||||
// avoid duplication init
|
||||
this.initListener()
|
||||
}
|
||||
|
||||
// when keep-alive chart activated, auto resize
|
||||
this.resize()
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.destroyListener()
|
||||
},
|
||||
deactivated() {
|
||||
this.destroyListener()
|
||||
},
|
||||
methods: {
|
||||
// use $_ for mixins properties
|
||||
// https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
|
||||
$_sidebarResizeHandler(e) {
|
||||
if (e.propertyName === 'width') {
|
||||
this.$_resizeHandler()
|
||||
}
|
||||
},
|
||||
initListener() {
|
||||
this.$_resizeHandler = debounce(() => {
|
||||
this.resize()
|
||||
}, 100)
|
||||
window.addEventListener('resize', this.$_resizeHandler)
|
||||
|
||||
this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0]
|
||||
this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler)
|
||||
},
|
||||
destroyListener() {
|
||||
window.removeEventListener('resize', this.$_resizeHandler)
|
||||
this.$_resizeHandler = null
|
||||
|
||||
this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler)
|
||||
},
|
||||
resize() {
|
||||
const { chart } = this
|
||||
chart && chart.resize()
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,166 @@
|
|||
<template>
|
||||
<div class="dndList">
|
||||
<div :style="{width:width1}" class="dndList-list">
|
||||
<h3>{{ list1Title }}</h3>
|
||||
<draggable :set-data="setData" :list="list1" group="article" class="dragArea">
|
||||
<div v-for="element in list1" :key="element.id" class="list-complete-item">
|
||||
<div class="list-complete-item-handle">
|
||||
{{ element.id }}[{{ element.author }}] {{ element.title }}
|
||||
</div>
|
||||
<div style="position:absolute;right:0px;">
|
||||
<span style="float: right ;margin-top: -20px;margin-right:5px;" @click="deleteEle(element)">
|
||||
<i style="color:#ff4949" class="el-icon-delete" />
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</draggable>
|
||||
</div>
|
||||
<div :style="{width:width2}" class="dndList-list">
|
||||
<h3>{{ list2Title }}</h3>
|
||||
<draggable :list="list2" group="article" class="dragArea">
|
||||
<div v-for="element in list2" :key="element.id" class="list-complete-item">
|
||||
<div class="list-complete-item-handle2" @click="pushEle(element)">
|
||||
{{ element.id }} [{{ element.author }}] {{ element.title }}
|
||||
</div>
|
||||
</div>
|
||||
</draggable>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import draggable from 'vuedraggable'
|
||||
|
||||
export default {
|
||||
name: 'DndList',
|
||||
components: { draggable },
|
||||
props: {
|
||||
list1: {
|
||||
type: Array,
|
||||
default() {
|
||||
return []
|
||||
}
|
||||
},
|
||||
list2: {
|
||||
type: Array,
|
||||
default() {
|
||||
return []
|
||||
}
|
||||
},
|
||||
list1Title: {
|
||||
type: String,
|
||||
default: 'list1'
|
||||
},
|
||||
list2Title: {
|
||||
type: String,
|
||||
default: 'list2'
|
||||
},
|
||||
width1: {
|
||||
type: String,
|
||||
default: '48%'
|
||||
},
|
||||
width2: {
|
||||
type: String,
|
||||
default: '48%'
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
isNotInList1(v) {
|
||||
return this.list1.every(k => v.id !== k.id)
|
||||
},
|
||||
isNotInList2(v) {
|
||||
return this.list2.every(k => v.id !== k.id)
|
||||
},
|
||||
deleteEle(ele) {
|
||||
for (const item of this.list1) {
|
||||
if (item.id === ele.id) {
|
||||
const index = this.list1.indexOf(item)
|
||||
this.list1.splice(index, 1)
|
||||
break
|
||||
}
|
||||
}
|
||||
if (this.isNotInList2(ele)) {
|
||||
this.list2.unshift(ele)
|
||||
}
|
||||
},
|
||||
pushEle(ele) {
|
||||
for (const item of this.list2) {
|
||||
if (item.id === ele.id) {
|
||||
const index = this.list2.indexOf(item)
|
||||
this.list2.splice(index, 1)
|
||||
break
|
||||
}
|
||||
}
|
||||
if (this.isNotInList1(ele)) {
|
||||
this.list1.push(ele)
|
||||
}
|
||||
},
|
||||
setData(dataTransfer) {
|
||||
// to avoid Firefox bug
|
||||
// Detail see : https://github.com/RubaXa/Sortable/issues/1012
|
||||
dataTransfer.setData('Text', '')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.dndList {
|
||||
background: #fff;
|
||||
padding-bottom: 40px;
|
||||
&:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
.dndList-list {
|
||||
float: left;
|
||||
padding-bottom: 30px;
|
||||
&:first-of-type {
|
||||
margin-right: 2%;
|
||||
}
|
||||
.dragArea {
|
||||
margin-top: 15px;
|
||||
min-height: 50px;
|
||||
padding-bottom: 30px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.list-complete-item {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
font-size: 14px;
|
||||
padding: 5px 12px;
|
||||
margin-top: 4px;
|
||||
border: 1px solid #bfcbd9;
|
||||
transition: all 1s;
|
||||
}
|
||||
|
||||
.list-complete-item-handle {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
margin-right: 50px;
|
||||
}
|
||||
|
||||
.list-complete-item-handle2 {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.list-complete-item.sortable-chosen {
|
||||
background: #4AB7BD;
|
||||
}
|
||||
|
||||
.list-complete-item.sortable-ghost {
|
||||
background: #30B08F;
|
||||
}
|
||||
|
||||
.list-complete-enter,
|
||||
.list-complete-leave-active {
|
||||
opacity: 0;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,65 @@
|
|||
<template>
|
||||
<el-select ref="dragSelect" v-model="selectVal" v-bind="$attrs" class="drag-select" multiple v-on="$listeners">
|
||||
<slot />
|
||||
</el-select>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Sortable from 'sortablejs'
|
||||
|
||||
export default {
|
||||
name: 'DragSelect',
|
||||
props: {
|
||||
value: {
|
||||
type: Array,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
selectVal: {
|
||||
get() {
|
||||
return [...this.value]
|
||||
},
|
||||
set(val) {
|
||||
this.$emit('input', [...val])
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.setSort()
|
||||
},
|
||||
methods: {
|
||||
setSort() {
|
||||
const el = this.$refs.dragSelect.$el.querySelectorAll('.el-select__tags > span')[0]
|
||||
this.sortable = Sortable.create(el, {
|
||||
ghostClass: 'sortable-ghost', // Class name for the drop placeholder,
|
||||
setData: function(dataTransfer) {
|
||||
dataTransfer.setData('Text', '')
|
||||
// to avoid Firefox bug
|
||||
// Detail see : https://github.com/RubaXa/Sortable/issues/1012
|
||||
},
|
||||
onEnd: evt => {
|
||||
const targetRow = this.value.splice(evt.oldIndex, 1)[0]
|
||||
this.value.splice(evt.newIndex, 0, targetRow)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.drag-select {
|
||||
::v-deep {
|
||||
.sortable-ghost {
|
||||
opacity: .8;
|
||||
color: #fff !important;
|
||||
background: #42b983 !important;
|
||||
}
|
||||
|
||||
.el-tag {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,297 @@
|
|||
<template>
|
||||
<div :id="id" :ref="id" :action="url" class="dropzone">
|
||||
<input type="file" name="file">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Dropzone from 'dropzone'
|
||||
import 'dropzone/dist/dropzone.css'
|
||||
// import { getToken } from 'api/qiniu';
|
||||
|
||||
Dropzone.autoDiscover = false
|
||||
|
||||
export default {
|
||||
props: {
|
||||
id: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
url: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
clickable: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
defaultMsg: {
|
||||
type: String,
|
||||
default: '上传图片'
|
||||
},
|
||||
acceptedFiles: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
thumbnailHeight: {
|
||||
type: Number,
|
||||
default: 200
|
||||
},
|
||||
thumbnailWidth: {
|
||||
type: Number,
|
||||
default: 200
|
||||
},
|
||||
showRemoveLink: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
maxFilesize: {
|
||||
type: Number,
|
||||
default: 2
|
||||
},
|
||||
maxFiles: {
|
||||
type: Number,
|
||||
default: 3
|
||||
},
|
||||
autoProcessQueue: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
useCustomDropzoneOptions: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
defaultImg: {
|
||||
default: '',
|
||||
type: [String, Array]
|
||||
},
|
||||
couldPaste: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dropzone: '',
|
||||
initOnce: true
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
defaultImg(val) {
|
||||
if (val.length === 0) {
|
||||
this.initOnce = false
|
||||
return
|
||||
}
|
||||
if (!this.initOnce) return
|
||||
this.initImages(val)
|
||||
this.initOnce = false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
const element = document.getElementById(this.id)
|
||||
const vm = this
|
||||
this.dropzone = new Dropzone(element, {
|
||||
clickable: this.clickable,
|
||||
thumbnailWidth: this.thumbnailWidth,
|
||||
thumbnailHeight: this.thumbnailHeight,
|
||||
maxFiles: this.maxFiles,
|
||||
maxFilesize: this.maxFilesize,
|
||||
dictRemoveFile: 'Remove',
|
||||
addRemoveLinks: this.showRemoveLink,
|
||||
acceptedFiles: this.acceptedFiles,
|
||||
autoProcessQueue: this.autoProcessQueue,
|
||||
dictDefaultMessage: '<i style="margin-top: 3em;display: inline-block" class="material-icons">' + this.defaultMsg + '</i><br>Drop files here to upload',
|
||||
dictMaxFilesExceeded: '只能一个图',
|
||||
previewTemplate: '<div class="dz-preview dz-file-preview"> <div class="dz-image" style="width:' + this.thumbnailWidth + 'px;height:' + this.thumbnailHeight + 'px" ><img style="width:' + this.thumbnailWidth + 'px;height:' + this.thumbnailHeight + 'px" data-dz-thumbnail /></div> <div class="dz-details"><div class="dz-size"><span data-dz-size></span></div> <div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div> <div class="dz-error-message"><span data-dz-errormessage></span></div> <div class="dz-success-mark"> <i class="material-icons">done</i> </div> <div class="dz-error-mark"><i class="material-icons">error</i></div></div>',
|
||||
init() {
|
||||
const val = vm.defaultImg
|
||||
if (!val) return
|
||||
if (Array.isArray(val)) {
|
||||
if (val.length === 0) return
|
||||
val.map((v, i) => {
|
||||
const mockFile = { name: 'name' + i, size: 12345, url: v }
|
||||
this.options.addedfile.call(this, mockFile)
|
||||
this.options.thumbnail.call(this, mockFile, v)
|
||||
mockFile.previewElement.classList.add('dz-success')
|
||||
mockFile.previewElement.classList.add('dz-complete')
|
||||
vm.initOnce = false
|
||||
return true
|
||||
})
|
||||
} else {
|
||||
const mockFile = { name: 'name', size: 12345, url: val }
|
||||
this.options.addedfile.call(this, mockFile)
|
||||
this.options.thumbnail.call(this, mockFile, val)
|
||||
mockFile.previewElement.classList.add('dz-success')
|
||||
mockFile.previewElement.classList.add('dz-complete')
|
||||
vm.initOnce = false
|
||||
}
|
||||
},
|
||||
accept: (file, done) => {
|
||||
/* 七牛*/
|
||||
// const token = this.$store.getters.token;
|
||||
// getToken(token).then(response => {
|
||||
// file.token = response.data.qiniu_token;
|
||||
// file.key = response.data.qiniu_key;
|
||||
// file.url = response.data.qiniu_url;
|
||||
// done();
|
||||
// })
|
||||
done()
|
||||
},
|
||||
sending: (file, xhr, formData) => {
|
||||
// formData.append('token', file.token);
|
||||
// formData.append('key', file.key);
|
||||
vm.initOnce = false
|
||||
}
|
||||
})
|
||||
|
||||
if (this.couldPaste) {
|
||||
document.addEventListener('paste', this.pasteImg)
|
||||
}
|
||||
|
||||
this.dropzone.on('success', file => {
|
||||
vm.$emit('dropzone-success', file, vm.dropzone.element)
|
||||
})
|
||||
this.dropzone.on('addedfile', file => {
|
||||
vm.$emit('dropzone-fileAdded', file)
|
||||
})
|
||||
this.dropzone.on('removedfile', file => {
|
||||
vm.$emit('dropzone-removedFile', file)
|
||||
})
|
||||
this.dropzone.on('error', (file, error, xhr) => {
|
||||
vm.$emit('dropzone-error', file, error, xhr)
|
||||
})
|
||||
this.dropzone.on('successmultiple', (file, error, xhr) => {
|
||||
vm.$emit('dropzone-successmultiple', file, error, xhr)
|
||||
})
|
||||
},
|
||||
destroyed() {
|
||||
document.removeEventListener('paste', this.pasteImg)
|
||||
this.dropzone.destroy()
|
||||
},
|
||||
methods: {
|
||||
removeAllFiles() {
|
||||
this.dropzone.removeAllFiles(true)
|
||||
},
|
||||
processQueue() {
|
||||
this.dropzone.processQueue()
|
||||
},
|
||||
pasteImg(event) {
|
||||
const items = (event.clipboardData || event.originalEvent.clipboardData).items
|
||||
if (items[0].kind === 'file') {
|
||||
this.dropzone.addFile(items[0].getAsFile())
|
||||
}
|
||||
},
|
||||
initImages(val) {
|
||||
if (!val) return
|
||||
if (Array.isArray(val)) {
|
||||
val.map((v, i) => {
|
||||
const mockFile = { name: 'name' + i, size: 12345, url: v }
|
||||
this.dropzone.options.addedfile.call(this.dropzone, mockFile)
|
||||
this.dropzone.options.thumbnail.call(this.dropzone, mockFile, v)
|
||||
mockFile.previewElement.classList.add('dz-success')
|
||||
mockFile.previewElement.classList.add('dz-complete')
|
||||
return true
|
||||
})
|
||||
} else {
|
||||
const mockFile = { name: 'name', size: 12345, url: val }
|
||||
this.dropzone.options.addedfile.call(this.dropzone, mockFile)
|
||||
this.dropzone.options.thumbnail.call(this.dropzone, mockFile, val)
|
||||
mockFile.previewElement.classList.add('dz-success')
|
||||
mockFile.previewElement.classList.add('dz-complete')
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.dropzone {
|
||||
border: 2px solid #E5E5E5;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
color: #777;
|
||||
transition: background-color .2s linear;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.dropzone:hover {
|
||||
background-color: #F6F6F6;
|
||||
}
|
||||
|
||||
i {
|
||||
color: #CCC;
|
||||
}
|
||||
|
||||
.dropzone .dz-image img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.dropzone input[name='file'] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.dropzone .dz-preview .dz-image {
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
.dropzone .dz-preview:hover .dz-image img {
|
||||
transform: none;
|
||||
filter: none;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.dropzone .dz-preview .dz-details {
|
||||
bottom: 0px;
|
||||
top: 0px;
|
||||
color: white;
|
||||
background-color: rgba(33, 150, 243, 0.8);
|
||||
transition: opacity .2s linear;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.dropzone .dz-preview .dz-details .dz-filename:hover span {
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.dropzone .dz-preview .dz-remove {
|
||||
position: absolute;
|
||||
z-index: 30;
|
||||
color: white;
|
||||
margin-left: 15px;
|
||||
padding: 10px;
|
||||
top: inherit;
|
||||
bottom: 15px;
|
||||
border: 2px white solid;
|
||||
text-decoration: none;
|
||||
text-transform: uppercase;
|
||||
font-size: 0.8rem;
|
||||
font-weight: 800;
|
||||
letter-spacing: 1.1px;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.dropzone .dz-preview:hover .dz-remove {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark {
|
||||
margin-left: -40px;
|
||||
margin-top: -50px;
|
||||
}
|
||||
|
||||
.dropzone .dz-preview .dz-success-mark i, .dropzone .dz-preview .dz-error-mark i {
|
||||
color: white;
|
||||
font-size: 5rem;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,78 @@
|
|||
<template>
|
||||
<div v-if="errorLogs.length>0">
|
||||
<el-badge :is-dot="true" style="line-height: 25px;margin-top: -5px;" @click.native="dialogTableVisible=true">
|
||||
<el-button style="padding: 8px 10px;" size="small" type="danger">
|
||||
<svg-icon icon-class="bug" />
|
||||
</el-button>
|
||||
</el-badge>
|
||||
|
||||
<el-dialog :visible.sync="dialogTableVisible" width="80%" append-to-body>
|
||||
<div slot="title">
|
||||
<span style="padding-right: 10px;">Error Log</span>
|
||||
<el-button size="mini" type="primary" icon="el-icon-delete" @click="clearAll">Clear All</el-button>
|
||||
</div>
|
||||
<el-table :data="errorLogs" border>
|
||||
<el-table-column label="Message">
|
||||
<template slot-scope="{row}">
|
||||
<div>
|
||||
<span class="message-title">Msg:</span>
|
||||
<el-tag type="danger">
|
||||
{{ row.err.message }}
|
||||
</el-tag>
|
||||
</div>
|
||||
<br>
|
||||
<div>
|
||||
<span class="message-title" style="padding-right: 10px;">Info: </span>
|
||||
<el-tag type="warning">
|
||||
{{ row.vm.$vnode.tag }} error in {{ row.info }}
|
||||
</el-tag>
|
||||
</div>
|
||||
<br>
|
||||
<div>
|
||||
<span class="message-title" style="padding-right: 16px;">Url: </span>
|
||||
<el-tag type="success">
|
||||
{{ row.url }}
|
||||
</el-tag>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="Stack">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.err.stack }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'ErrorLog',
|
||||
data() {
|
||||
return {
|
||||
dialogTableVisible: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
errorLogs() {
|
||||
return this.$store.getters.errorLogs
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
clearAll() {
|
||||
this.dialogTableVisible = false
|
||||
this.$store.dispatch('errorLog/clearErrorLog')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.message-title {
|
||||
font-size: 16px;
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
padding-right: 8px;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,61 @@
|
|||
<template>
|
||||
<el-button v-loading="loading" :type="type" :size="size" @click="download">
|
||||
模板下载
|
||||
</el-button>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { get_template } from '@/api/import-data'
|
||||
export default {
|
||||
props: {
|
||||
action: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
code: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
default: 'success'
|
||||
},
|
||||
size: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
downloadList: []
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getData()
|
||||
},
|
||||
methods: {
|
||||
getData() {
|
||||
get_template().then(res => {
|
||||
console.log(res)
|
||||
this.downloadList = res.data.filter(item => item.mark === this.action)
|
||||
})
|
||||
},
|
||||
download() {
|
||||
this.loading = true
|
||||
this.downloadList.forEach((item, index) => {
|
||||
setTimeout(() => {
|
||||
const aEl = document.createElement('a')
|
||||
const e = document.createEvent('MouseEvents') // 创建鼠标事件对象
|
||||
e.initEvent('click', false, false) // 初始化事件对象
|
||||
aEl.href = item.url
|
||||
// aEl.click()
|
||||
aEl.dispatchEvent(e)
|
||||
aEl.remove()
|
||||
}, index * 500)
|
||||
})
|
||||
this.loading = false
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,132 @@
|
|||
<template>
|
||||
<div class="filter-container">
|
||||
<template v-for="(item, index) of inputs">
|
||||
<!-- <el-input
|
||||
:key="item.prop || ('i-' + index)"
|
||||
v-model="info[item.prop]"
|
||||
:placeholder="item.placeholder"
|
||||
prefix-icon="el-icon-search"
|
||||
clearable
|
||||
@keyup.enter.native="handleClick('enter')"
|
||||
/> -->
|
||||
<my-field :key="'i-' + item.prop + index" v-model="info[item.prop]" :field="{...item, clearable: true}" style="width: 240px;" class="filter-item input" @keyup.enter.native="handleClick('search')" />
|
||||
</template>
|
||||
<el-button
|
||||
class="filter-item"
|
||||
style="margin-left: 10px;"
|
||||
type="primary"
|
||||
icon="el-icon-search"
|
||||
@click="handleClick('search')"
|
||||
>搜索
|
||||
</el-button>
|
||||
<el-button
|
||||
class="filter-item"
|
||||
style="margin-left: 10px;"
|
||||
type="primary"
|
||||
@click="handleClick('reset')"
|
||||
>重置
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="hasExport"
|
||||
class="filter-item"
|
||||
style="margin-left: 10px;"
|
||||
type="primary"
|
||||
icon="el-icon-download"
|
||||
@click="handleClick('export')"
|
||||
>导出
|
||||
</el-button>
|
||||
<slot />
|
||||
<template v-for="(item, index) of handlers">
|
||||
<el-button
|
||||
:key="item.name || ('b-' + index)"
|
||||
class="filter-item"
|
||||
style="margin-left: 10px;"
|
||||
:type="item.type || 'primary'"
|
||||
:icon="item.icon"
|
||||
@click="handleClick(index)"
|
||||
>{{ item.title }}
|
||||
</el-button>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import MyField from '@/components/MyField'
|
||||
import { objectFindLikeValue, unfoldObjectKey } from '@/utils'
|
||||
export default {
|
||||
components: { MyField },
|
||||
props: {
|
||||
inputs: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
handlers: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
hasExport: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
info: {}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
inputs() {
|
||||
this.setData()
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.setData()
|
||||
},
|
||||
methods: {
|
||||
setData() {
|
||||
const { inputs } = this
|
||||
if (inputs && inputs.length) {
|
||||
inputs.forEach((item) => {
|
||||
this.$set(this.info, item.prop, item.defaultValue)
|
||||
})
|
||||
}
|
||||
},
|
||||
handleClick(type) {
|
||||
let detail
|
||||
if (typeof type === 'number') {
|
||||
detail = this.getInfoObject()
|
||||
if (this.handlers[type].handler) {
|
||||
this.handlers[type].handler(detail)
|
||||
}
|
||||
type = `handler`
|
||||
} else if (type === 'reset') {
|
||||
Object.keys(this.info).forEach(key => {
|
||||
this.info[key] = undefined
|
||||
})
|
||||
detail = this.getInfoObject()
|
||||
} else {
|
||||
detail = this.getInfoObject()
|
||||
}
|
||||
// const detail = this.getInfoObject()
|
||||
this.$emit(type, detail)
|
||||
this.$emit('all', { type, detail })
|
||||
},
|
||||
getInfoObject() {
|
||||
const { info } = this
|
||||
return unfoldObjectKey(info)
|
||||
},
|
||||
getModel(keyString) {
|
||||
return objectFindLikeValue(this.info, keyString)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.filter-item.input{
|
||||
margin-left: 3px;
|
||||
}
|
||||
.filter-container .filter-item.input:first-child{
|
||||
margin-left: 0px;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,54 @@
|
|||
<template>
|
||||
<a href="https://github.com/PanJiaChen/vue-element-admin" target="_blank" class="github-corner" aria-label="View source on Github">
|
||||
<svg
|
||||
width="80"
|
||||
height="80"
|
||||
viewBox="0 0 250 250"
|
||||
style="fill:#40c9c6; color:#fff;"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z" />
|
||||
<path
|
||||
d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2"
|
||||
fill="currentColor"
|
||||
style="transform-origin: 130px 106px;"
|
||||
class="octo-arm"
|
||||
/>
|
||||
<path
|
||||
d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z"
|
||||
fill="currentColor"
|
||||
class="octo-body"
|
||||
/>
|
||||
</svg>
|
||||
</a>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.github-corner:hover .octo-arm {
|
||||
animation: octocat-wave 560ms ease-in-out
|
||||
}
|
||||
|
||||
@keyframes octocat-wave {
|
||||
0%,
|
||||
100% {
|
||||
transform: rotate(0)
|
||||
}
|
||||
20%,
|
||||
60% {
|
||||
transform: rotate(-25deg)
|
||||
}
|
||||
40%,
|
||||
80% {
|
||||
transform: rotate(10deg)
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width:500px) {
|
||||
.github-corner:hover .octo-arm {
|
||||
animation: none
|
||||
}
|
||||
.github-corner .octo-arm {
|
||||
animation: octocat-wave 560ms ease-in-out
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,44 @@
|
|||
<template>
|
||||
<div style="padding: 0 15px;" @click="toggleClick">
|
||||
<svg
|
||||
:class="{'is-active':isActive}"
|
||||
class="hamburger"
|
||||
viewBox="0 0 1024 1024"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="64"
|
||||
height="64"
|
||||
>
|
||||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z" />
|
||||
</svg>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'Hamburger',
|
||||
props: {
|
||||
isActive: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
toggleClick() {
|
||||
this.$emit('toggleClick')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.hamburger {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.hamburger.is-active {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,180 @@
|
|||
<template>
|
||||
<div :class="{'show':show}" class="header-search">
|
||||
<svg-icon class-name="search-icon" icon-class="search" @click.stop="click" />
|
||||
<el-select
|
||||
ref="headerSearchSelect"
|
||||
v-model="search"
|
||||
:remote-method="querySearch"
|
||||
filterable
|
||||
default-first-option
|
||||
remote
|
||||
placeholder="Search"
|
||||
class="header-search-select"
|
||||
@change="change"
|
||||
>
|
||||
<el-option v-for="item in options" :key="item.path" :value="item" :label="item.title.join(' > ')" />
|
||||
</el-select>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// fuse is a lightweight fuzzy-search module
|
||||
// make search results more in line with expectations
|
||||
import Fuse from 'fuse.js'
|
||||
import path from 'path'
|
||||
|
||||
export default {
|
||||
name: 'HeaderSearch',
|
||||
data() {
|
||||
return {
|
||||
search: '',
|
||||
options: [],
|
||||
searchPool: [],
|
||||
show: false,
|
||||
fuse: undefined
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
routes() {
|
||||
return this.$store.getters.permission_routes
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
routes() {
|
||||
this.searchPool = this.generateRoutes(this.routes)
|
||||
},
|
||||
searchPool(list) {
|
||||
this.initFuse(list)
|
||||
},
|
||||
show(value) {
|
||||
if (value) {
|
||||
document.body.addEventListener('click', this.close)
|
||||
} else {
|
||||
document.body.removeEventListener('click', this.close)
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.searchPool = this.generateRoutes(this.routes)
|
||||
},
|
||||
methods: {
|
||||
click() {
|
||||
this.show = !this.show
|
||||
if (this.show) {
|
||||
this.$refs.headerSearchSelect && this.$refs.headerSearchSelect.focus()
|
||||
}
|
||||
},
|
||||
close() {
|
||||
this.$refs.headerSearchSelect && this.$refs.headerSearchSelect.blur()
|
||||
this.options = []
|
||||
this.show = false
|
||||
},
|
||||
change(val) {
|
||||
this.$router.push(val.path)
|
||||
this.search = ''
|
||||
this.options = []
|
||||
this.$nextTick(() => {
|
||||
this.show = false
|
||||
})
|
||||
},
|
||||
initFuse(list) {
|
||||
this.fuse = new Fuse(list, {
|
||||
shouldSort: true,
|
||||
threshold: 0.4,
|
||||
location: 0,
|
||||
distance: 100,
|
||||
maxPatternLength: 32,
|
||||
minMatchCharLength: 1,
|
||||
keys: [{
|
||||
name: 'title',
|
||||
weight: 0.7
|
||||
}, {
|
||||
name: 'path',
|
||||
weight: 0.3
|
||||
}]
|
||||
})
|
||||
},
|
||||
// Filter out the routes that can be displayed in the sidebar
|
||||
// And generate the internationalized title
|
||||
generateRoutes(routes, basePath = '/', prefixTitle = []) {
|
||||
let res = []
|
||||
|
||||
for (const router of routes) {
|
||||
// skip hidden router
|
||||
if (router.hidden) { continue }
|
||||
|
||||
const data = {
|
||||
path: path.resolve(basePath, router.path),
|
||||
title: [...prefixTitle]
|
||||
}
|
||||
|
||||
if (router.meta && router.meta.title) {
|
||||
data.title = [...data.title, router.meta.title]
|
||||
|
||||
if (router.redirect !== 'noRedirect') {
|
||||
// only push the routes with title
|
||||
// special case: need to exclude parent router without redirect
|
||||
res.push(data)
|
||||
}
|
||||
}
|
||||
|
||||
// recursive child routes
|
||||
if (router.children) {
|
||||
const tempRoutes = this.generateRoutes(router.children, data.path, data.title)
|
||||
if (tempRoutes.length >= 1) {
|
||||
res = [...res, ...tempRoutes]
|
||||
}
|
||||
}
|
||||
}
|
||||
return res
|
||||
},
|
||||
querySearch(query) {
|
||||
if (query !== '') {
|
||||
this.options = this.fuse.search(query)
|
||||
} else {
|
||||
this.options = []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.header-search {
|
||||
font-size: 0 !important;
|
||||
|
||||
.search-icon {
|
||||
cursor: pointer;
|
||||
font-size: 18px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.header-search-select {
|
||||
font-size: 18px;
|
||||
transition: width 0.2s;
|
||||
width: 0;
|
||||
overflow: hidden;
|
||||
background: transparent;
|
||||
border-radius: 0;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
|
||||
::v-deep .el-input__inner {
|
||||
border-radius: 0;
|
||||
border: 0;
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
box-shadow: none !important;
|
||||
border-bottom: 1px solid #d9d9d9;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
&.show {
|
||||
.header-search-select {
|
||||
width: 210px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|