Browse Source

first

master
kongxy 4 months ago
commit
1454dd9ec4
  1. 8
      .idea/.gitignore
  2. 12
      .idea/dataSources.xml
  3. 6
      .idea/inspectionProfiles/profiles_settings.xml
  4. 7
      .idea/misc.xml
  5. 8
      .idea/modules.xml
  6. 10
      .idea/process_manage.iml
  7. 8
      .idea/sqlDataSources.xml
  8. 6
      .idea/vcs.xml
  9. 0
      __init__.py
  10. 19
      crud.py
  11. 7
      database.py
  12. 34
      main.py
  13. 35
      models.py
  14. 21
      schemas.py
  15. 11
      test_main.http
  16. 23
      yxgck-demo/.gitignore
  17. 24
      yxgck-demo/README.md
  18. 5
      yxgck-demo/babel.config.js
  19. 19
      yxgck-demo/jsconfig.json
  20. 11761
      yxgck-demo/package-lock.json
  21. 45
      yxgck-demo/package.json
  22. 122
      yxgck-demo/public/Reset.css
  23. BIN
      yxgck-demo/public/favicon.ico
  24. 19
      yxgck-demo/public/index.html
  25. 23
      yxgck-demo/src/App.vue
  26. BIN
      yxgck-demo/src/assets/logo.png
  27. BIN
      yxgck-demo/src/assets/zz_logo.jpg
  28. 527
      yxgck-demo/src/components/contract/contractDetail.vue
  29. 238
      yxgck-demo/src/components/contract/contractList.vue
  30. 532
      yxgck-demo/src/components/device/deviceDetial.vue
  31. 249
      yxgck-demo/src/components/device/deviceList.vue
  32. 72
      yxgck-demo/src/components/navHeader.vue
  33. 13
      yxgck-demo/src/components/system/systemDic.vue
  34. 13
      yxgck-demo/src/components/system/systemUser.vue
  35. 89
      yxgck-demo/src/data/contactDataDetail.js
  36. 138
      yxgck-demo/src/data/contractDataList.js
  37. 150
      yxgck-demo/src/data/deviceDataDetail.js
  38. 171
      yxgck-demo/src/data/deviceDataList .js
  39. 22
      yxgck-demo/src/main.js
  40. 18
      yxgck-demo/src/route/routes.js
  41. 4
      yxgck-demo/vue.config.js

8
.idea/.gitignore vendored

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

12
.idea/dataSources.xml

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="demo" uuid="726f75a3-600c-4ae3-b122-44ab6f69d5c2">
<driver-ref>mysql.8</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://47.121.132.11:3306/demo</jdbc-url>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>
</project>

6
.idea/inspectionProfiles/profiles_settings.xml

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

7
.idea/misc.xml

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Black">
<option name="sdkName" value="Python 3.12 (process_manage)" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (process_manage)" project-jdk-type="Python SDK" />
</project>

8
.idea/modules.xml

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/process_manage.iml" filepath="$PROJECT_DIR$/.idea/process_manage.iml" />
</modules>
</component>
</project>

10
.idea/process_manage.iml

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.venv" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

8
.idea/sqlDataSources.xml

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DdlMappings">
<mapping uuid="4957defd-0d8d-4246-a757-a18644d3ea0f" name="mysql_remote">
<data-sources db="ea086fd1-b37c-4a7b-a54a-61bc70808a2f" />
</mapping>
</component>
</project>

6
.idea/vcs.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

0
__init__.py

19
crud.py

@ -0,0 +1,19 @@
from sqlalchemy.orm import Session
import models, schemas
def get_equipment(db: Session, equipment_id: int):
return db.query(models.Equipment).filter(models.Equipment.id == equipment_id).first()
def get_equipments(db: Session, skip: int = 0, limit: int = 10):
return db.query(models.Equipment).offset(skip).limit(limit).all()
def create_equipment(db: Session, equipment: schemas.EquipmentCreate):
db_equipment = models.Equipment(**equipment.dict())
db.add(db_equipment)
db.commit()
db.refresh(db_equipment)
return db_equipment

7
database.py

@ -0,0 +1,7 @@
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine("mysql+pymysql://admin:Admin_123@47.121.132.11:3306/demo")
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()

34
main.py

@ -0,0 +1,34 @@
from fastapi import FastAPI, Depends
from sqlalchemy.orm import Session
import crud
import schemas
from database import SessionLocal
app = FastAPI()
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@app.post("/equipment", response_model=schemas.Equipment)
def create_equipment(equipment: schemas.EquipmentCreate, db: Session = Depends(get_db)):
db_equipment = crud.create_equipment(db=db, equipment=equipment)
return db_equipment
@app.get("/equipments", response_model=list[schemas.Equipment])
def get_equipments(skip: int = 0, limit: int = 10, db: Session = Depends(get_db)):
equipments = crud.get_equipments(db, skip=skip, limit=limit)
return equipments
@app.get("/equipments/{equipment_id}", response_model=schemas.Equipment)
def get_equipment(equipment_id: int, db: Session = Depends(get_db)):
equipment = crud.get_equipment(db=db, equipment_id=equipment_id)
return equipment

35
models.py

@ -0,0 +1,35 @@
from sqlalchemy import Column, Integer, String, DECIMAL
from database import Base
# class Equipment(Base):
# __tablename__ = 'equipment'
#
# id = Column(Integer, primary_key=True)
# plan_year = Column(String)
# purchasing_authority = Column(String)
# department = Column(String)
# equipment_name = Column(String)
# quantity = Column(Integer)
# budget_unit_price = Column(DECIMAL)
# final_unit_price = Column(DECIMAL)
# purchase_item_no = Column(String)
# progress = Column(String)
# delete_flag = Column(Integer, default=0)
#
class Device(Base):
__tablename__ = 'device'
id = Column(Integer, primary_key=True)
year = Column(Integer)
name = Column(String)
auth = Column(Integer)
dep = Column(String)
num = Column(Integer)
pPrice = Column(DECIMAL)
dPrice = Column(DECIMAL)
proNum = Column(String)
process = Column(Integer)
delFlag = Column(Integer, default=0)

21
schemas.py

@ -0,0 +1,21 @@
from pydantic import BaseModel
class EquipmentCreate(BaseModel):
plan_year: str
purchasing_authority: str
department: str
equipment_name: str
quantity: int
budget_unit_price: float
final_unit_price: float
purchase_item_no: str
progress: str
delete_flag: int = 0
class Equipment(EquipmentCreate):
id: int
class Config:
orm_mode = True

11
test_main.http

@ -0,0 +1,11 @@
# Test your FastAPI endpoints
GET http://127.0.0.1:8000/
Accept: application/json
###
GET http://127.0.0.1:8000/hello/User
Accept: application/json
###

23
yxgck-demo/.gitignore vendored

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

24
yxgck-demo/README.md

@ -0,0 +1,24 @@
# yxgck-life-cycle
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Lints and fixes files
```
npm run lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).

5
yxgck-demo/babel.config.js

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

19
yxgck-demo/jsconfig.json

@ -0,0 +1,19 @@
{
"compilerOptions": {
"target": "es5",
"module": "esnext",
"baseUrl": "./",
"moduleResolution": "node",
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
}
}

11761
yxgck-demo/package-lock.json generated

File diff suppressed because it is too large Load Diff

45
yxgck-demo/package.json

@ -0,0 +1,45 @@
{
"name": "yxgck-life-cycle",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"core-js": "^3.8.3",
"element-ui": "^2.15.13",
"vue": "^2.6.14",
"vue-router": "^3.6.5"
},
"devDependencies": {
"@babel/core": "^7.12.16",
"@babel/eslint-parser": "^7.12.16",
"@vue/cli-plugin-babel": "~5.0.0",
"@vue/cli-plugin-eslint": "~5.0.0",
"@vue/cli-service": "~5.0.0",
"eslint": "^7.32.0",
"eslint-plugin-vue": "^8.0.3",
"vue-template-compiler": "^2.6.14"
},
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/essential",
"eslint:recommended"
],
"parserOptions": {
"parser": "@babel/eslint-parser"
},
"rules": {}
},
"browserslist": [
"> 1%",
"last 2 versions",
"not dead"
]
}

122
yxgck-demo/public/Reset.css

@ -0,0 +1,122 @@
html {
color: #000;
background: #FFF;
}
body,
div,
dl,
dt,
dd,
ul,
ol,
li,
h1,
h2,
h3,
h4,
h5,
h6,
pre,
form,
fieldset,
input,
textarea,
p,
blockquote,
th,
td {
margin: 0;
padding: 0;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
fieldset,
img {
border: 0;
}
address,
caption,
cite,
code,
dfn,
em,
strong,
th,
var {
font-style: normal;
font-weight: normal;
}
ol,
ul {
list-style: none;
}
caption,
th {
text-align: left;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-size: initial;
font-weight: normal;
}
q:before,
q:after {
content: '';
}
abbr,
acronym {
border: 0;
}
.el-menu.el-menu--horizontal {
border-bottom: none !important
}
.el-menu--horizontal>.el-menu-item.is-active {
border-bottom: 2px solid #fff !important;
color: #303133;
}
.box {
margin: 16px 16px 0 16px;
}
/* 定制整个滚动条 */
::-webkit-scrollbar {
width: 8px;
height: 8px;
/* 设置滚动条的宽度 */
}
/* 定制滚动条轨道 */
::-webkit-scrollbar-track {
background: #f1f1f1;
/* 设置轨道的背景颜色 */
}
/* 定制滚动条的滑块(thumb) */
::-webkit-scrollbar-thumb {
background: #9e9d9d;
/* 设置滑块的背景颜色 */
}
/* 当滑块悬停或活动时的样式 */
::-webkit-scrollbar-thumb:hover {
background: #8e8d8d;
/* 设置滑块在悬停状态下的背景颜色 */
}

BIN
yxgck-demo/public/favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

19
yxgck-demo/public/index.html

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

23
yxgck-demo/src/App.vue

@ -0,0 +1,23 @@
<template>
<div id="app">
<nav-header/>
<router-view></router-view>
</div>
</template>
<script>
import navHeader from './components/navHeader.vue'
export default {
name: 'App',
components: {
navHeader,
},
mounted() {
},
}
</script>
<style scoped>
</style>

BIN
yxgck-demo/src/assets/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

BIN
yxgck-demo/src/assets/zz_logo.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

527
yxgck-demo/src/components/contract/contractDetail.vue

@ -0,0 +1,527 @@
<template>
<div class="box">
<el-row>
<el-col :span="24">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: '/contract' }"
>合同管理</el-breadcrumb-item
>
<el-breadcrumb-item>合同详情</el-breadcrumb-item>
</el-breadcrumb>
</el-col>
</el-row>
<div class="main-container">
<el-card class="box-card" shadow="always">
<div slot="header" class="clearfix">
<h3>合同基本信息</h3>
</div>
<el-form
:inline="true"
size="small"
label-width="120px"
label-position="right"
:disabled="readonly"
:model="formInline"
class="demo-form-inline"
>
<el-form-item label="合同名称">
<el-input
v-model="formInline.htmc"
placeholder="合同名称"
></el-input>
</el-form-item>
<el-form-item label="项目名称">
<el-input v-model="formInline.ks" placeholder="项目名称"></el-input>
</el-form-item>
<el-form-item label="项目编号">
<el-input
v-model="formInline.ttmc"
placeholder="项目编号"
></el-input>
</el-form-item>
<el-form-item label="合同总金额(万元)">
<el-input
v-model="formInline.sl"
placeholder="合同总金额(万元)"
></el-input>
</el-form-item>
<el-form-item label="交接日期">
<el-input v-model="formInline.dw" placeholder="交接日期"></el-input>
</el-form-item>
<el-form-item label="验收日期">
<el-date-picker type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
<el-form-item label="交接人" label-width="85px">
<el-input v-model="formInline.dw" placeholder="交接人"></el-input>
</el-form-item>
<el-form-item label="乙方公司">
<el-input placeholder="人福医疗"></el-input>
</el-form-item>
<el-form-item label="乙方联系人">
<el-input placeholder="王丽"></el-input>
</el-form-item>
<el-form-item label="乙方联系方式">
<el-input placeholder="17777777777"></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input type="textarea"></el-input>
</el-form-item>
</el-form>
</el-card>
<el-card class="box-card" shadow="always">
<div slot="header" class="clearfix">
<h3>合同标的</h3>
<div class="bd-btns">
<el-button
type="primary"
:disabled="readonly"
size="small"
icon="el-icon-plus"
@click="onAddDevice"
>新增</el-button
>
</div>
<el-table
ref="multipleTable"
border
fit
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
:summary-method="getSummaries"
show-summary
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55"> </el-table-column>
<el-table-column type="index" width="50"> </el-table-column>
<el-table-column label="设备名称" width="200">
<template slot-scope="scope">
<el-input
:disabled="readonly"
v-model="scope.row.name"
></el-input>
</template>
</el-table-column>
<el-table-column label="科室">
<template slot-scope="scope">
<el-input
:disabled="readonly"
v-model="scope.row.ks"
></el-input>
</template>
</el-table-column>
<el-table-column label="型号" width="200">
<template slot-scope="scope">
<el-input
:disabled="readonly"
v-model="scope.row.xh"
></el-input>
</template>
</el-table-column>
<el-table-column label="生产厂家" width="200">
<template slot-scope="scope">
<el-input
:disabled="readonly"
v-model="scope.row.sccj"
></el-input>
</template>
</el-table-column>
<el-table-column label="数量">
<template slot-scope="scope">
<el-input
:disabled="readonly"
v-model="scope.row.sl"
></el-input>
</template>
</el-table-column>
<el-table-column label="单价(万元)">
<template slot-scope="scope">
<el-input
:disabled="readonly"
v-model="scope.row.dj"
></el-input>
</template>
</el-table-column>
<el-table-column label="总价(万元)">
<template slot-scope="scope">
<el-input
:disabled="readonly"
v-model="scope.row.zj"
></el-input>
</template>
</el-table-column>
<el-table-column label="备注" width="180">
<template slot-scope="scope">
<el-input
type="textarea"
:disabled="readonly"
v-model="scope.row.bz"
></el-input>
</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button
:disabled="readonly"
size="mini"
type="danger"
@click="handleDelete(scope.$index, scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</div>
</el-card>
<el-card class="box-card" shadow="always">
<div slot="header" class="clearfix">
<h3>合同进展</h3>
</div>
<el-collapse v-model="activeNames">
<el-collapse-item title="合同签订" name="3">
<template slot="title">
<h3>合同签订</h3>
<i class="header-icon el-icon-info"></i>
</template>
<el-timeline-item
v-for="(item, index) in htqd"
:key="timestamps3[index]"
:timestamp="timestamps3[index]"
placement="top"
>
<el-card>
<el-form
:inline="true"
size="small"
:disabled="readonly"
:model="item"
class="demo-form-inline"
>
<el-form-item label="经办人">
<el-input
v-model="item.name"
placeholder="经办人"
></el-input>
</el-form-item>
<el-form-item label="进展">
<el-select v-model="item.process" placeholder="进展">
<el-option label="未开始" value="01"></el-option>
<el-option label="进行中" value="02"></el-option>
<el-option label="已完成" value="03"></el-option>
</el-select>
</el-form-item>
<el-form-item label="开始时间">
<el-date-picker
type="date"
placeholder="选择日期"
v-model="item.startDate"
></el-date-picker>
</el-form-item>
<el-form-item label="结束时间">
<el-date-picker
type="date"
placeholder="选择日期"
v-model="item.endDate"
></el-date-picker>
</el-form-item>
<el-form-item label="备注">
<el-input type="textarea" v-model="item.remark"></el-input>
</el-form-item>
</el-form>
</el-card>
</el-timeline-item>
</el-collapse-item>
<el-collapse-item title="设备验收" name="4">
<template slot="title">
<h3>设备验收</h3>
<i class="header-icon el-icon-info"></i>
</template>
<el-form
:inline="true"
size="small"
:disabled="readonly"
:model="sbys"
class="demo-form-inline"
>
<el-form-item label="状态">
<el-select v-model="sbys.zt" placeholder="采购状态">
<el-option label="未开始" value="01"></el-option>
<el-option label="进行中" value="02"></el-option>
<el-option label="已完成" value="03"></el-option>
</el-select>
</el-form-item>
<el-form-item label="验收人">
<el-input v-model="sbys.name" placeholder="验收人"></el-input>
</el-form-item>
<el-form-item label="验收日期">
<el-date-picker
type="date"
placeholder="选择日期"
v-model="sbys.date"
></el-date-picker>
</el-form-item>
<el-form-item label="档案号">
<el-input v-model="sbys.dah" placeholder="档案号"></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input type="textarea" v-model="sbys.bz"></el-input>
</el-form-item>
</el-form>
</el-collapse-item>
<el-collapse-item title="付款" name="5">
<template slot="title">
<h3>付款</h3>
<i class="header-icon el-icon-info"></i>
</template>
<el-form
:inline="true"
size="small"
:disabled="readonly"
:model="fk"
class="demo-form-inline"
>
<el-form-item label="状态">
<el-select v-model="fk.zt" placeholder="采购状态">
<el-option label="未开始" value="01"></el-option>
<el-option label="进行中" value="02"></el-option>
<el-option label="已完成" value="03"></el-option>
</el-select>
</el-form-item>
<el-form-item label="付款批次">
<el-input v-model="fk.fkpc" placeholder="付款批次"></el-input>
</el-form-item>
<el-form-item label="金额">
<el-input v-model="fk.je" placeholder="金额"></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input type="textarea" v-model="fk.bz"></el-input>
</el-form-item>
</el-form>
</el-collapse-item>
<el-collapse-item title="质保金" name="6">
<template slot="title">
<h3>质保金</h3>
<i class="header-icon el-icon-info"></i>
</template>
<el-form
:inline="true"
size="small"
:disabled="readonly"
:model="zbj"
class="demo-form-inline"
>
<el-form-item label="状态">
<el-select v-model="zbj.zt" placeholder="状态">
<el-option label="未开始" value="01"></el-option>
<el-option label="进行中" value="02"></el-option>
<el-option label="已完成" value="03"></el-option>
</el-select>
</el-form-item>
<el-form-item label="质保金到期日期">
<el-date-picker
type="date"
placeholder="选择日期"
v-model="zbj.date"
></el-date-picker>
</el-form-item>
<el-form-item label="经办人">
<el-input v-model="zbj.name" placeholder="经办人"></el-input>
</el-form-item>
<el-form-item label="付款金额">
<el-input v-model="zbj.je" placeholder="付款金额"></el-input>
</el-form-item>
<el-form-item label="付款批次">
<el-input v-model="zbj.fkpc" placeholder="付款批次"></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input type="textarea" v-model="zbj.bz"></el-input>
</el-form-item>
</el-form>
</el-collapse-item>
</el-collapse>
</el-card>
</div>
<div class="operation-box">
<el-button type="primary" v-if="readonly" @click="edit">编辑</el-button>
<el-button type="primary" v-else @click="cancel">取消</el-button>
<el-button type="primary" @click="save">保存</el-button>
<el-button @click="back">返回上页</el-button>
</div>
</div>
</template>
<script>
import cddata from "../../data/contactDataDetail";
export default {
data() {
return {
formInline: {
user: "",
region: "",
},
readonly: true,
htqd: cddata.htqd,
timestamps1: [
"组织需求形式审查 2018/4/12 20:46",
"业务行政会议审议 2018/4/3",
"组织采购意向公示 2018/4/2",
"组织技术参数论证 2018/4/2",
"技术参数复核 2018/4/2",
"采购需求编报 2018/4/2",
"质疑答复流标复核 2018/4/2",
],
timestamps3: [
"采购交接 2018/4/12 20:46",
"医工科审核 2018/4/3",
"需求科室 2018/4/2",
"财务审核 2018/4/2",
"审核监管科审核 2018/4/2",
"法务 2018/4/2",
"印章申请 2018/4/2",
"合同签订 2018/4/2",
],
cg: cddata.cg,
sbys: cddata.sbys, //
fk: cddata.fk, //
zbj: cddata.zbj, //
activeNames: ["3", "4", "5", "6"],
tableData: [
{
name: "便携支气管镜",
ks: "神经外科",
xh: "inslight iS3",
sccj: "深圳因赛斯医疗科技有限公司",
sl: "1",
dj: "7.85",
zj: "7.85",
bz: "2022年度计划",
},
],
multipleSelection: [],
};
},
methods: {
//
getSummaries(){
const sums = [];
sums[7] = '总价(万元)';
var price = 0
this.tableData.forEach((item) => {
price += parseFloat(item.zj)
});
sums[8] = price;
return sums;
},
//
handleDelete(index) {
this.tableData.splice(index, 1);
console.log(this.tableData);
},
//
onAddDevice() {
var obj = {
name: "",
ks: "",
xh: "",
sccj: "",
sl: "",
dj: "0",
zj: "0",
bz: "",
};
this.tableData.push(obj);
},
onSubmit() {
console.log("submit!");
},
edit() {
this.readonly = false;
},
save() {
this.$confirm("是否保存?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.$message({
type: "success",
message: "保存成功!",
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消保存",
});
});
},
cancel() {
this.$confirm("是否取消编辑?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.readonly = true;
})
.catch(() => {});
},
back() {
this.$router.push("/device");
},
step(num) {
this.activeNames = num;
},
handleSelectionChange(val) {
this.multipleSelection = val;
},
},
mounted() {
console.log(this.$route.query.id);
if (this.$route.query.id) {
//
} else {
//
this.readonly = false;
}
},
};
</script>
<style>
.main-container {
width: calc(100% - 48px);
height: calc(100vh - 160px);
margin: 12px 12px 0 24px;
background-color: rgb(236, 233, 233);
overflow: auto;
}
.operation-box {
display: flex;
justify-content: center;
align-content: center;
background-color: rgba(141, 139, 139, 0.348);
width: calc(100% - 48px);
padding: 8px 0;
margin: 0 24px;
}
.box-card {
margin-top: 8px;
}
.bd-btns {
display: flex;
justify-content: flex-end;
align-items: center;
height: 60px;
}
.demo-form-inline {
margin: 0 24px;
}
</style>

238
yxgck-demo/src/components/contract/contractList.vue

@ -0,0 +1,238 @@
<template>
<div class="box">
<el-row>
<el-col :span="24">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item>合同管理</el-breadcrumb-item>
</el-breadcrumb>
</el-col>
</el-row>
<div class="container">
<el-row>
<el-form
:inline="true"
:model="formInline"
size="small"
class="demo-form-inline"
>
<el-form-item label="合同名称" label-width="100px">
<el-input
v-model="formInline.name"
placeholder="合同名称"
></el-input>
</el-form-item>
<el-form-item label="项目编号" label-width="100px">
<el-input
v-model="formInline.pnum"
placeholder="项目编号"
></el-input>
</el-form-item>
<el-form-item label="合同编号" label-width="100px">
<el-input
v-model="formInline.cnum"
placeholder="项目编号"
></el-input>
</el-form-item>
<el-form-item label="乙方公司" label-width="100px">
<el-input
v-model="formInline.company"
placeholder="乙方公司"
></el-input>
</el-form-item>
<el-form-item label="签订日期" label-width="100px">
<el-date-picker
v-model="formInline.rangeDate1"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="交接日期" label-width="100px">
<el-date-picker
v-model="formInline.rangeDate2"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="状态" label-width="100px">
<el-select v-model="formInline.status" placeholder="状态">
<el-option label="科室签字" value="1"></el-option>
<el-option label="财务审核" value="2"></el-option>
<el-option label="审核监管科审核" value="3"></el-option>
<el-option label="公司整改" value="4"></el-option>
<el-option label="法务审核" value="5"></el-option>
<el-option label="印章申请" value="6"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">查询</el-button>
<el-button style="margin-left: 64px" type="primary" @click="onAdd"
>新增</el-button
>
<el-button type="primary" @click="onDelete">删除</el-button>
<el-button type="primary" @click="onBatch">批量操作</el-button>
</el-form-item>
</el-form>
</el-row>
<el-table
ref="multipleTable"
fit
border
height="400"
:data="tableData"
tooltip-effect="dark"
:show-overflow-tooltip="true"
style="width: 100%; background-color: none"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55"> </el-table-column>
<el-table-column type="index" width="50"> </el-table-column>
<el-table-column prop="name" label="合同名称" width="200">
</el-table-column>
<el-table-column prop="pname" label="项目名称" width="200">
</el-table-column>
<el-table-column prop="company" label="乙方" width="120">
</el-table-column>
<el-table-column prop="cnum" label="合同编号"> </el-table-column>
<el-table-column prop="pnum" label="项目编号"> </el-table-column>
<el-table-column prop="rDate" label="采购交接日期" width="120">
</el-table-column>
<el-table-column prop="sdate" label="签订日期" width="120">
</el-table-column>
<el-table-column label="状态">
<template slot-scope="scope"
><a
style="cursor: pointer"
@click="handleDetailChange(scope.row)"
>{{ scope.row.status }}</a
></template
>
</el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[20, 50, 100, 200, 400]"
:page-size="20"
layout="total, sizes, prev, pager, next, jumper"
:total="400"
>
</el-pagination>
</div>
</div>
</template>
<script>
import contractDataList from "../../data/contractDataList";
export default {
data() {
return {
formInline: {
name: "", //
pnum: "", //
cnum: "", //
rangeDate1: "", //
rangeDate2: "", //
status: "", //
company: "", //
},
tableData: contractDataList,
currentPage: 1,
multipleSelection: [],
checkedCities: [
"序号",
"计划年度",
"采购权限",
"科室",
"设备名称",
"数量",
],
dialogExportVisible: false,
};
},
methods: {
onSubmit() {
console.log(this.formInline);
},
onAdd() {
console.log("onAdd");
this.$router.push({ path: "/contractDetail" });
},
onDelete() {
//
if (this.multipleSelection.length == 0) {
this.$message.error("请勾选的数据!");
return;
}
this.$confirm("确定删除?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.$message({
type: "success",
message: "删除成功!",
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消删除",
});
});
console.log("onDelete");
},
onExport() {
//
if (this.multipleSelection.length == 0) {
this.$message.error("请勾选数据!");
return;
}
//
this.dialogExportVisible = true;
},
onBatch() {
console.log("onBatch");
},
handleSelectionChange(val) {
this.multipleSelection = val;
console.log("handleSelectionChange:", val);
},
handleSizeChange(val) {
console.log(`每页 ${val}`);
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
},
handleDetailChange(val) {
this.$router.push({ path: "/contractDetail", query: { id: val.id } });
},
},
};
</script>
<style scoped>
.el-row {
margin: 10px;
}
a {
text-decoration: underline;
}
.container {
width: calc(100% - 48px);
height: calc(100vh - 160px);
margin: 12px 12px 0 24px;
}
</style>

532
yxgck-demo/src/components/device/deviceDetial.vue

@ -0,0 +1,532 @@
<template>
<div class="box">
<el-row>
<el-col :span="24">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: '/device' }"
>设备管理</el-breadcrumb-item
>
<el-breadcrumb-item>设备详情</el-breadcrumb-item>
</el-breadcrumb>
</el-col>
</el-row>
<div class="main-container">
<el-card class="box-card" shadow="always">
<div slot="header" class="clearfix">
<h3>基本信息</h3>
</div>
<el-form
:inline="true"
size="small"
label-width="120px"
label-position="right"
:disabled="readonly"
:model="formInline"
class="demo-form-inline"
>
<el-form-item label="设备名称">
<el-input
v-model="formInline.sbmc"
placeholder="设备名称"
></el-input>
</el-form-item>
<el-form-item label="科室">
<el-input v-model="formInline.ks" placeholder="科室"></el-input>
</el-form-item>
<el-form-item label="通用名称">
<el-input
v-model="formInline.ttmc"
placeholder="通用名称"
></el-input>
</el-form-item>
<el-form-item label="设备分类">
<el-select v-model="formInline.sbfl" placeholder="设备分类">
<el-option label="分类一" value="1"></el-option>
<el-option label="分类二" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="数量">
<el-input v-model="formInline.sl" placeholder="数量"></el-input>
</el-form-item>
<el-form-item label="单位">
<el-input v-model="formInline.dw" placeholder="单位"></el-input>
</el-form-item>
<el-form-item label="计划年度">
<el-select v-model="formInline.sbfl" placeholder="计划年度">
<el-option label="2019" value="1"></el-option>
<el-option label="2020" value="2"></el-option>
<el-option label="2021" value="3"></el-option>
<el-option label="2022" value="4"></el-option>
<el-option label="2023" value="5"></el-option>
<el-option label="2024" value="6"></el-option>
</el-select>
</el-form-item>
<el-form-item label="采购权限">
<el-select v-model="formInline.sbfl" placeholder="采购权限">
<el-option label="上级下发" value="1"></el-option>
<el-option label="医院自采" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="预算单价(万元)">
<el-input placeholder="100"></el-input>
</el-form-item>
<el-form-item label="预算总价(万元)">
<el-input placeholder="100"></el-input>
</el-form-item>
<el-form-item label="成交单价(万元)">
<el-input placeholder="80"></el-input>
</el-form-item>
<el-form-item label="成交总价(万元)">
<el-input placeholder="80"></el-input>
</el-form-item>
<el-form-item label="质保期(年)">
<el-input placeholder="2"></el-input>
</el-form-item>
<el-form-item label="经费来源">
<el-input placeholder="折旧基金"></el-input>
</el-form-item>
<el-form-item label="采购项目编号">
<el-input placeholder="2024020-3333-3333"></el-input>
</el-form-item>
<el-form-item label="合同名称">
<el-input placeholder="DR设备采购合同"></el-input>
</el-form-item>
<el-form-item label="验收日期">
<el-date-picker type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
<el-form-item label="合同编号" label-width='100px'>
<el-input placeholder="xxxxxxxx"></el-input>
</el-form-item>
<el-form-item label="付款状态" label-width='100px'>
<el-select v-model="formInline.sbfl" placeholder="未支付">
<el-option label="未支付" value="1"></el-option>
<el-option label="已支付" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="质保金支付日期" label-width='140px'>
<el-date-picker type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
<el-form-item label="是否有配套专用耗材" label-width='140px'>
<el-select v-model="formInline.sbfl" placeholder="有">
<el-option label="有" value="1"></el-option>
<el-option label="没有" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="乙方公司">
<el-input placeholder="人福医疗"></el-input>
</el-form-item>
<el-form-item label="乙方联系人">
<el-input placeholder="王丽"></el-input>
</el-form-item>
<el-form-item label="乙方联系方式">
<el-input placeholder="17777777777"></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input type="textarea"></el-input>
</el-form-item>
</el-form>
</el-card>
<el-card class="box-card" shadow="always">
<div slot="header" class="clearfix">
<h3>设备进展</h3>
<!-- <el-steps :active="5">
<el-step title="需求遍报" description="已完成">
<div slot="title" @click="step('1')">需求遍报</div>
</el-step>
<el-step title="采购状态" description="已完成"></el-step>
<el-step title="合同签订" description="已完成"></el-step>
<el-step title="设备验收" description="已完成"></el-step>
<el-step title="付款" description="已完成"></el-step>
<el-step title="质保金" description="未开始"></el-step>
</el-steps> -->
</div>
<el-collapse v-model="activeNames">
<el-collapse-item title="需求编报" name="1">
<template slot="title">
<h3>需求编报</h3>
<i class="header-icon el-icon-info"></i>
</template>
<el-timeline>
<el-timeline-item
v-for="(item, index) in xqbb"
:key="timestamps1[index]"
:timestamp="timestamps1[index]"
placement="top"
>
<el-card>
<el-form
:disabled="readonly"
:inline="true"
size="small"
:model="item"
class="demo-form-inline"
>
<el-form-item label="经办人">
<el-input
v-model="item.name"
placeholder="经办人"
></el-input>
</el-form-item>
<el-form-item label="进展">
<el-select v-model="item.process" placeholder="进展">
<el-option label="未开始" value="01"></el-option>
<el-option label="进行中" value="02"></el-option>
<el-option label="已完成" value="03"></el-option>
</el-select>
</el-form-item>
<el-form-item label="日期">
<el-date-picker
type="date"
placeholder="选择日期"
v-model="item.date"
></el-date-picker>
</el-form-item>
<el-form-item label="备注">
<el-input
type="textarea"
v-model="item.remark"
></el-input>
</el-form-item>
</el-form>
</el-card>
</el-timeline-item>
</el-timeline>
</el-collapse-item>
<el-collapse-item title="采购状态" name="2">
<template slot="title"
><h3>采购状态</h3>
<i class="header-icon el-icon-info"></i>
</template>
<el-form
:inline="true"
size="small"
:disabled="readonly"
:model="cg"
class="demo-form-inline"
>
<el-form-item label="需求公示时间">
<el-date-picker
type="date"
placeholder="选择日期"
v-model="cg.xqgs"
></el-date-picker>
</el-form-item>
<el-form-item label="第一次招标">
<el-input v-model="cg.zb1" placeholder="第一次招标"></el-input>
</el-form-item>
<el-form-item label="第二次招标">
<el-input v-model="cg.zb2" placeholder="第二次招标"></el-input>
</el-form-item>
<el-form-item label="第三次招标">
<el-input v-model="cg.zb3" placeholder="第三次招标"></el-input>
</el-form-item>
<el-form-item label="退回">
<el-input v-model="cg.th" placeholder="退回"></el-input>
</el-form-item>
<el-form-item label="采购状态">
<el-select v-model="cg.cgzt" placeholder="采购状态">
<el-option label="未开始" value="01"></el-option>
<el-option label="进行中" value="02"></el-option>
<el-option label="已完成" value="03"></el-option>
</el-select>
</el-form-item>
<el-form-item label="备注">
<el-input type="textarea" v-model="cg.remark"></el-input>
</el-form-item>
</el-form>
</el-collapse-item>
<el-collapse-item title="合同签订" name="3">
<template slot="title">
<h3>合同签订</h3>
<i class="header-icon el-icon-info"></i>
</template>
<el-timeline-item
v-for="(item, index) in htqd"
:key="timestamps3[index]"
:timestamp="timestamps3[index]"
placement="top"
>
<el-card>
<el-form
:inline="true"
size="small"
:disabled="readonly"
:model="item"
class="demo-form-inline"
>
<el-form-item label="经办人">
<el-input
v-model="item.name"
placeholder="经办人"
></el-input>
</el-form-item>
<el-form-item label="进展">
<el-select v-model="item.process" placeholder="进展">
<el-option label="未开始" value="01"></el-option>
<el-option label="进行中" value="02"></el-option>
<el-option label="已完成" value="03"></el-option>
</el-select>
</el-form-item>
<el-form-item label="开始时间">
<el-date-picker
type="date"
placeholder="选择日期"
v-model="item.startDate"
></el-date-picker>
</el-form-item>
<el-form-item label="结束时间">
<el-date-picker
type="date"
placeholder="选择日期"
v-model="item.endDate"
></el-date-picker>
</el-form-item>
<el-form-item label="备注">
<el-input type="textarea" v-model="item.remark"></el-input>
</el-form-item>
</el-form>
</el-card>
</el-timeline-item>
</el-collapse-item>
<el-collapse-item title="设备验收" name="4">
<template slot="title">
<h3>设备验收</h3>
<i class="header-icon el-icon-info"></i>
</template>
<el-form
:inline="true"
size="small"
:disabled="readonly"
:model="sbys"
class="demo-form-inline"
>
<el-form-item label="状态">
<el-select v-model="sbys.zt" placeholder="采购状态">
<el-option label="未开始" value="01"></el-option>
<el-option label="进行中" value="02"></el-option>
<el-option label="已完成" value="03"></el-option>
</el-select>
</el-form-item>
<el-form-item label="验收人">
<el-input v-model="sbys.name" placeholder="验收人"></el-input>
</el-form-item>
<el-form-item label="验收日期">
<el-date-picker
type="date"
placeholder="选择日期"
v-model="sbys.date"
></el-date-picker>
</el-form-item>
<el-form-item label="档案号">
<el-input v-model="sbys.dah" placeholder="档案号"></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input type="textarea" v-model="sbys.bz"></el-input>
</el-form-item>
</el-form>
</el-collapse-item>
<el-collapse-item title="付款" name="5">
<template slot="title">
<h3>付款</h3>
<i class="header-icon el-icon-info"></i>
</template>
<el-form
:inline="true"
size="small"
:disabled="readonly"
:model="fk"
class="demo-form-inline"
>
<el-form-item label="状态">
<el-select v-model="fk.zt" placeholder="采购状态">
<el-option label="未开始" value="01"></el-option>
<el-option label="进行中" value="02"></el-option>
<el-option label="已完成" value="03"></el-option>
</el-select>
</el-form-item>
<el-form-item label="付款批次">
<el-input v-model="fk.fkpc" placeholder="付款批次"></el-input>
</el-form-item>
<el-form-item label="金额">
<el-input v-model="fk.je" placeholder="金额"></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input type="textarea" v-model="fk.bz"></el-input>
</el-form-item>
</el-form>
</el-collapse-item>
<el-collapse-item title="质保金" name="6">
<template slot="title">
<h3>质保金</h3>
<i class="header-icon el-icon-info"></i>
</template>
<el-form
:inline="true"
size="small"
:disabled="readonly"
:model="zbj"
class="demo-form-inline"
>
<el-form-item label="状态">
<el-select v-model="zbj.zt" placeholder="状态">
<el-option label="未开始" value="01"></el-option>
<el-option label="进行中" value="02"></el-option>
<el-option label="已完成" value="03"></el-option>
</el-select>
</el-form-item>
<el-form-item label="质保金到期日期">
<el-date-picker
type="date"
placeholder="选择日期"
v-model="zbj.date"
></el-date-picker>
</el-form-item>
<el-form-item label="经办人">
<el-input v-model="zbj.name" placeholder="经办人"></el-input>
</el-form-item>
<el-form-item label="付款金额">
<el-input v-model="zbj.je" placeholder="付款金额"></el-input>
</el-form-item>
<el-form-item label="付款批次">
<el-input v-model="zbj.fkpc" placeholder="付款批次"></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input type="textarea" v-model="zbj.bz"></el-input>
</el-form-item>
</el-form>
</el-collapse-item>
</el-collapse>
</el-card>
</div>
<div class="operation-box">
<el-button type="primary" v-if="readonly" @click="edit">编辑</el-button>
<el-button type="primary" v-else @click="cancel">取消</el-button>
<el-button type="primary" @click="save">保存</el-button>
<el-button @click="back">返回上页</el-button>
</div>
</div>
</template>
<script>
import dddData from "../../data/deviceDataDetail";
export default {
data() {
return {
formInline: {
user: "",
region: "",
},
readonly: true,
xqbb: dddData.xqbb,
htqd: dddData.htqd,
timestamps1: [
"组织需求形式审查 2018/4/12 20:46",
"业务行政会议审议 2018/4/3",
"组织采购意向公示 2018/4/2",
"组织技术参数论证 2018/4/2",
"技术参数复核 2018/4/2",
"采购需求编报 2018/4/2",
"质疑答复流标复核 2018/4/2",
],
timestamps3: [
"采购交接 2018/4/12 20:46",
"医工科审核 2018/4/3",
"需求科室 2018/4/2",
"财务审核 2018/4/2",
"审核监管科审核 2018/4/2",
"法务 2018/4/2",
"印章申请 2018/4/2",
"合同签订 2018/4/2",
],
cg: dddData.cg,
sbys: dddData.sbys,
fk: dddData.fk,
zbj: dddData.zbj,
activeNames: ["1", "2", "3", "4", "5", "6"],
};
},
methods: {
onSubmit() {
console.log("submit!");
},
edit() {
this.readonly = false;
},
save() {
this.$confirm("是否保存?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.$message({
type: "success",
message: "保存成功!",
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消保存",
});
});
},
cancel() {
this.$confirm("是否取消编辑?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.readonly = true;
})
.catch(() => {});
},
back() {
this.$router.push("/device");
},
step(num) {
this.activeNames = num;
},
},
mounted() {
console.log(this.$route.query.id);
if (this.$route.query.id) {
//
} else {
//
this.readonly = false;
}
},
};
</script>
<style>
.main-container {
width: calc(100% - 48px);
height: calc(100vh - 160px);
margin: 12px 12px 0 24px;
background-color: rgb(236, 233, 233);
overflow: auto;
}
.operation-box {
display: flex;
justify-content: center;
align-content: center;
background-color: rgba(141, 139, 139, 0.348);
width: calc(100% - 48px);
padding: 8px 0;
margin: 0 24px;
}
.box-card {
margin-top: 8px;
}
.demo-form-inline {
margin: 0 24px;
}
</style>

249
yxgck-demo/src/components/device/deviceList.vue

@ -0,0 +1,249 @@
<template>
<div class="box">
<el-row>
<el-col :span="24">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item>设备管理</el-breadcrumb-item>
</el-breadcrumb>
</el-col>
</el-row>
<div class="container">
<el-row>
<el-form
:inline="true"
:model="formInline"
size="small"
class="demo-form-inline"
>
<el-form-item label="设备名称" label-width="100px">
<el-input
v-model="formInline.name"
placeholder="设备名称"
></el-input>
</el-form-item>
<el-form-item label="计划年度" label-width="100px">
<el-select v-model="formInline.year" placeholder="计划年度">
<el-option label="2019" value="1"></el-option>
<el-option label="2020" value="2"></el-option>
<el-option label="2021" value="3"></el-option>
<el-option label="2022" value="4"></el-option>
<el-option label="2023" value="5"></el-option>
<el-option label="2024" value="6"></el-option>
</el-select>
</el-form-item>
<el-form-item label="采购权限" label-width="80px">
<el-select v-model="formInline.auth" placeholder="采购权限">
<el-option label="联保部队" value="1"></el-option>
<el-option label="医院自采" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="科室" label-width="80px">
<el-select v-model="formInline.dep" placeholder="科室">
<el-option label="肿瘤科" value="1"></el-option>
<el-option label="普外" value="2"></el-option>
<el-option label="妇产科" value="3"></el-option>
<el-option label="麻醉科" value="4"></el-option>
</el-select>
</el-form-item>
<el-form-item label="项目采购编号" label-width="100px">
<el-input
v-model="formInline.num"
placeholder="项目采购编号"
></el-input>
</el-form-item>
<el-form-item label="进展" label-width="100px">
<el-select v-model="formInline.process" placeholder="进展">
<el-option label="需求编报" value="1"></el-option>
<el-option label="采购" value="2"></el-option>
<el-option label="合同签订" value="3"></el-option>
<el-option label="设备验收" value="4"></el-option>
<el-option label="付款" value="5"></el-option>
<el-option label="设备验收" value="6"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">查询</el-button>
<el-button style="margin-left: 64px" type="primary" @click="onAdd"
>新增</el-button
>
<el-button type="primary" @click="onDelete">删除</el-button>
<el-button type="primary" @click="onExport">导出报表</el-button>
<el-button type="primary" @click="onBatch">批量操作</el-button>
</el-form-item>
</el-form>
</el-row>
<el-table
ref="multipleTable"
fit
border
height="400"
:show-overflow-tooltip="true"
:data="tableData"
tooltip-effect="dark"
style="width: 100%; background-color: none"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55"> </el-table-column>
<el-table-column type="index" width="50"> </el-table-column>
<el-table-column prop="name" label="设备名称"> </el-table-column>
<el-table-column prop="year" label="计划年度" width="100">
</el-table-column>
<el-table-column prop="auth" label="采购权限"> </el-table-column>
<el-table-column prop="dep" label="科室"> </el-table-column>
<el-table-column prop="num" label="数量" width="80"> </el-table-column>
<el-table-column prop="pPrice" label="预算单价(万)" width="120">
</el-table-column>
<el-table-column prop="dPrice" label="成交单价(万)" width="120">
</el-table-column>
<el-table-column prop="proNum" label="采购项目编号"> </el-table-column>
<el-table-column label="进展" width="120">
<template slot-scope="scope"
><a
style="cursor: pointer"
@click="handleDetailChange(scope.row)"
>{{ scope.row.proNum }}</a
></template
>
</el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[20, 50, 100, 200, 400]"
:page-size="20"
layout="total, sizes, prev, pager, next, jumper"
:total="400"
>
</el-pagination>
</div>
<el-dialog
title="提示"
:visible.sync="dialogExportVisible"
width="30%"
>
<el-checkbox-group
v-model="checkedCities"
@change="handleCheckedCitiesChange"
>
<el-checkbox v-for="city in cities" :label="city" :key="city">{{
city
}}</el-checkbox>
</el-checkbox-group>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogExportVisible = false"> </el-button>
<el-button type="primary" @click="dialogExportVisible = false"
> </el-button
>
</span>
</el-dialog>
</div>
</template>
<script>
import deviceDataList from "../../data/deviceDataList ";
const cityOptions = ["序号", "计划年度", "采购权限", "科室","设备名称","数量","预算单价(万元)","成交单价(万元)","采购编号","进展"];
export default {
data() {
return {
formInline: {
name: "",
year: "",
auth: "",
dep: "",
num: "",
process: "",
},
tableData: deviceDataList,
currentPage: 4,
multipleSelection: [],
checkedCities: ["序号", "计划年度","采购权限", "科室","设备名称","数量"],
cities: cityOptions,
dialogExportVisible: false
};
},
methods: {
onSubmit() {
console.log(this.formInline);
},
onAdd() {
console.log("onAdd");
this.$router.push({ path: "/deviceDetail" });
},
onDelete() {
//
if(this.multipleSelection.length == 0){
this.$message.error('请勾选数据!');
return
}
this.$confirm("确定删除?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.$message({
type: "success",
message: "删除成功!",
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消删除",
});
});
console.log("onDelete");
},
onExport() {
//
if(this.multipleSelection.length == 0){
this.$message.error('请勾选数据!');
return
}
//
this.dialogExportVisible = true
},
onBatch() {
console.log("onBatch");
},
handleSelectionChange(val) {
this.multipleSelection = val;
console.log("handleSelectionChange:", val);
},
handleSizeChange(val) {
console.log(`每页 ${val}`);
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
},
handleDetailChange(val) {
this.$router.push({ path: "/deviceDetail", query: { id: val.id } });
},
handleCheckedCitiesChange(value) {
let checkedCount = value.length;
this.checkAll = checkedCount === this.cities.length;
this.isIndeterminate =
checkedCount > 0 && checkedCount < this.cities.length;
}
},
};
</script>
<style scoped>
.el-row {
margin: 10px;
}
a {
text-decoration: underline;
}
.container {
width: calc(100% - 48px);
height: calc(100vh - 160px);
margin: 12px 12px 0 24px;
}
</style>

72
yxgck-demo/src/components/navHeader.vue

@ -0,0 +1,72 @@
<template>
<div class="nav">
<img class="logo" src="../assets/zz_logo.jpg" />
<div class="main_title">{{ title }}</div>
<el-menu
default-active="/device"
mode="horizontal"
class="main_menu"
text-color='#000'
router
>
<el-menu-item index="/device">设备管理</el-menu-item>
<el-menu-item index="/contract">合同管理</el-menu-item>
<el-submenu index="3">
<template slot="title">系统管理</template>
<el-menu-item index="/systemUser">用户管理</el-menu-item>
<el-menu-item index="/systemDic">字典管理</el-menu-item>
</el-submenu>
</el-menu>
<div class="right_box">
<div>用户名{{ name }}</div>
<el-button type="primary" round>退出</el-button>
</div>
</div>
</template>
<script>
export default {
data() {
return {
title: "设备合同管理系统",
name: "黄凯",
};
},
methods: {
},
};
</script>
<style scoped>
.nav {
background-color: #409eff;
width: 100%;
height: 60px;
display: flex;
align-items: center;
}
.logo {
width: 48px;
height: 48px;
margin: 8px;
border-radius: 24px;
}
.main_title {
font-size: 28px;
font-family: cursive;
flex-grow: 2;
}
.main_menu {
flex-grow: 5;
background: none;
}
.right_box {
flex-grow: 1;
display: flex;
align-items: center;
justify-content: space-around;
}
</style>>

13
yxgck-demo/src/components/system/systemDic.vue

@ -0,0 +1,13 @@
<template>
<div>systemDic</div>
</template>
<script>
export default {
}
</script>
<style>
</style>

13
yxgck-demo/src/components/system/systemUser.vue

@ -0,0 +1,13 @@
<template>
<div>systemUser</div>
</template>
<script>
export default {
}
</script>
<style>
</style>

89
yxgck-demo/src/data/contactDataDetail.js

@ -0,0 +1,89 @@
//合同签订
const htqd = [
{
name: "", //经办人
process: "", //进展
startDate: "", //开始日期
endDate: "", //结束日期
remark: "", //备注
},
{
name: "", //经办人
process: "", //进展
startDate: "", //开始日期
endDate: "", //结束日期
remark: "", //备注
},
{
name: "", //经办人
process: "", //进展
startDate: "", //开始日期
endDate: "", //结束日期
remark: "", //备注
},
{
name: "", //经办人
process: "", //进展
startDate: "", //开始日期
endDate: "", //结束日期
remark: "", //备注
},
{
name: "", //经办人
process: "", //进展
startDate: "", //开始日期
endDate: "", //结束日期
remark: "", //备注
},
{
name: "", //经办人
process: "", //进展
startDate: "", //开始日期
endDate: "", //结束日期
remark: "", //备注
},
{
name: "", //经办人
process: "", //进展
startDate: "", //开始日期
endDate: "", //结束日期
remark: "", //备注
},
{
name: "", //经办人
process: "", //进展
startDate: "", //开始日期
endDate: "", //结束日期
remark: "", //备注
}
]
//设备验收
const sbys = {
name: "", //验收人
date: "", //验收日期
zt: "", //状态
dah: "", //档案号
bz: "", //备注
}
//付款
const fk = {
name: "", //验收人
fkpc: "", //付款批次
zt: "", //状态
je: "", //金额
bz: "", //备注
}
//质保金
const zbj = {
name: "", //验收人
date: "", //到期日期
je: "", //付款金额
zt: "", //状态
fkpc: "", //付款批次
bz: "", //备注
}
const cddata = { htqd: htqd, sbys: sbys,fk:fk ,zbj:zbj}
export default cddata

138
yxgck-demo/src/data/contractDataList.js

@ -0,0 +1,138 @@
//设备列表数据
const contractDataList = [
{
id: "00001",
name: "呼吸机设备采购合同",
pname:"呼吸机设备采购项目",
pnum: "2022-JQZWWH-WC3180",
cnum:"2022-JQZWWH-WC3180(00)-医疗-0058568",
company: "湖北人福医药集团有限公司",
sdate: "2023-03-06",
rDate: "2023-01-01",
status: "财务审核中",
},
{
id: "00002",
name: "呼吸机设备采购合同",
pname:"呼吸机设备采购项目",
pnum: "2022-JQZWWH-WC3180",
cnum:"2022-JQZWWH-WC3180(00)-医疗-0058568",
company: "湖北人福医药集团有限公司",
sdate: "2023-03-06",
rDate: "2023-01-01",
status: "财务审核中",
},
{
id: "00001",
name: "呼吸机设备采购合同",
pname:"呼吸机设备采购项目",
pnum: "2022-JQZWWH-WC3180",
cnum:"2022-JQZWWH-WC3180(00)-医疗-0058568",
company: "湖北人福医药集团有限公司",
sdate: "2023-03-06",
rDate: "2023-01-01",
status: "财务审核中",
},
{
id: "00001",
name: "呼吸机设备采购合同",
pname:"呼吸机设备采购项目",
pnum: "2022-JQZWWH-WC3180",
cnum:"2022-JQZWWH-WC3180(00)-医疗-0058568",
company: "湖北人福医药集团有限公司",
sdate: "2023-03-06",
rDate: "2023-01-01",
status: "财务审核中",
},
{
id: "00002",
name: "呼吸机设备采购合同",
pname:"呼吸机设备采购项目",
pnum: "2022-JQZWWH-WC3180",
cnum:"2022-JQZWWH-WC3180(00)-医疗-0058568",
company: "湖北人福医药集团有限公司",
sdate: "2023-03-06",
rDate: "2023-01-01",
status: "财务审核中",
},
{
id: "00001",
name: "呼吸机设备采购合同",
pname:"呼吸机设备采购项目",
pnum: "2022-JQZWWH-WC3180",
cnum:"2022-JQZWWH-WC3180(00)-医疗-0058568",
company: "湖北人福医药集团有限公司",
sdate: "2023-03-06",
rDate: "2023-01-01",
status: "财务审核中",
},
{
id: "00001",
name: "呼吸机设备采购合同",
pname:"呼吸机设备采购项目",
pnum: "2022-JQZWWH-WC3180",
cnum:"2022-JQZWWH-WC3180(00)-医疗-0058568",
company: "湖北人福医药集团有限公司",
sdate: "2023-03-06",
rDate: "2023-01-01",
status: "财务审核中",
},
{
id: "00002",
name: "呼吸机设备采购合同",
pname:"呼吸机设备采购项目",
pnum: "2022-JQZWWH-WC3180",
cnum:"2022-JQZWWH-WC3180(00)-医疗-0058568",
company: "湖北人福医药集团有限公司",
sdate: "2023-03-06",
rDate: "2023-01-01",
status: "财务审核中",
},
{
id: "00001",
name: "呼吸机设备采购合同",
pname:"呼吸机设备采购项目",
pnum: "2022-JQZWWH-WC3180",
cnum:"2022-JQZWWH-WC3180(00)-医疗-0058568",
company: "湖北人福医药集团有限公司",
sdate: "2023-03-06",
rDate: "2023-01-01",
status: "财务审核中",
},
{
id: "00001",
name: "呼吸机设备采购合同",
pname:"呼吸机设备采购项目",
pnum: "2022-JQZWWH-WC3180",
cnum:"2022-JQZWWH-WC3180(00)-医疗-0058568",
company: "湖北人福医药集团有限公司",
sdate: "2023-03-06",
rDate: "2023-01-01",
status: "财务审核中",
},
{
id: "00002",
name: "呼吸机设备采购合同",
pname:"呼吸机设备采购项目",
pnum: "2022-JQZWWH-WC3180",
cnum:"2022-JQZWWH-WC3180(00)-医疗-0058568",
company: "湖北人福医药集团有限公司",
sdate: "2023-03-06",
rDate: "2023-01-01",
status: "财务审核中",
},
{
id: "00001",
name: "呼吸机设备采购合同",
pname:"呼吸机设备采购项目",
pnum: "2022-JQZWWH-WC3180",
cnum:"2022-JQZWWH-WC3180(00)-医疗-0058568",
company: "湖北人福医药集团有限公司",
sdate: "2023-03-06",
rDate: "2023-01-01",
status: "财务审核中",
},
]
export default contractDataList

150
yxgck-demo/src/data/deviceDataDetail.js

@ -0,0 +1,150 @@
//需求编报
const xqbb = [
{
//组织需求形式审查
name: "", //经办人
process: "", //进展
date: "", //完成日期
remark: "", //备注
},
{
//业务行政会议审议
name: "", //经办人
process: "", //进展
date: "", //完成日期
remark: "", //备注
},
{
//业务行政会议审议
name: "", //经办人
process: "", //进展
date: "", //完成日期
remark: "", //备注
},
{
//业务行政会议审议
name: "", //经办人
process: "", //进展
date: "", //完成日期
remark: "", //备注
},
{
//业务行政会议审议
name: "", //经办人
process: "", //进展
date: "", //完成日期
remark: "", //备注
},
{
//业务行政会议审议
name: "", //经办人
process: "", //进展
date: "", //完成日期
remark: "", //备注
},
{
//业务行政会议审议
name: "", //经办人
process: "", //进展
date: "", //完成日期
remark: "", //备注
}
]
//采购状态
const cg = {
xqgs: "", //需求公示
zb1: "", //第一次招标
zb2: "", //第二次招标
zb3: "", //第三次招标
th: "", //退回
cgzt: "", //采购状态
bz: "", //备注
}
//合同签订
const htqd = [
{
name: "", //经办人
process: "", //进展
startDate: "", //开始日期
endDate: "", //结束日期
remark: "", //备注
},
{
name: "", //经办人
process: "", //进展
startDate: "", //开始日期
endDate: "", //结束日期
remark: "", //备注
},
{
name: "", //经办人
process: "", //进展
startDate: "", //开始日期
endDate: "", //结束日期
remark: "", //备注
},
{
name: "", //经办人
process: "", //进展
startDate: "", //开始日期
endDate: "", //结束日期
remark: "", //备注
},
{
name: "", //经办人
process: "", //进展
startDate: "", //开始日期
endDate: "", //结束日期
remark: "", //备注
},
{
name: "", //经办人
process: "", //进展
startDate: "", //开始日期
endDate: "", //结束日期
remark: "", //备注
},
{
name: "", //经办人
process: "", //进展
startDate: "", //开始日期
endDate: "", //结束日期
remark: "", //备注
},
{
name: "", //经办人
process: "", //进展
startDate: "", //开始日期
endDate: "", //结束日期
remark: "", //备注
}
]
//设备验收
const sbys = {
name: "", //验收人
date: "", //验收日期
zt: "", //状态
dah: "", //档案号
bz: "", //备注
}
//付款
const fk = {
name: "", //验收人
fkpc: "", //付款批次
zt: "", //状态
je: "", //金额
bz: "", //备注
}
//质保金
const zbj = {
name: "", //验收人
date: "", //到期日期
je: "", //付款金额
zt: "", //状态
fkpc: "", //付款批次
bz: "", //备注
}
const dddata = { xqbb: xqbb, htqd: htqd, cg: cg, sbys: sbys,fk:fk ,zbj:zbj}
export default dddata

171
yxgck-demo/src/data/deviceDataList .js

@ -0,0 +1,171 @@
//设备列表数据
const deviceDataList = [
{
id: "00001",
year: "2019",
name: "DR",
auth: "本级自购",
dep: "肿瘤科",
num: "1",
pPrice: "180",
dPrice: "150",
proNum: "需求编报",
},
{
id: "00002",
year: "2020",
name: "DR",
auth: "本级自购",
dep: "肿瘤科",
num: "1",
pPrice: "180",
dPrice: "150",
proNum: "采购",
},
{
id: "00003",
year: "2023",
name: "DR",
auth: "本级自购",
dep: "肿瘤科",
num: "1",
pPrice: "180",
dPrice: "150",
proNum: "合同签订",
},
{
id: "00001",
year: "2019",
name: "DR",
auth: "本级自购",
dep: "肿瘤科",
num: "1",
pPrice: "180",
dPrice: "150",
proNum: "设备验收",
},
{
id: "00002",
year: "2020",
name: "DR",
auth: "本级自购",
dep: "肿瘤科",
num: "1",
pPrice: "180",
dPrice: "150",
proNum: "付款",
},
{
id: "00003",
year: "2023",
name: "DR",
auth: "本级自购",
dep: "肿瘤科",
num: "1",
pPrice: "180",
dPrice: "150",
proNum: "设备验收",
},
{
id: "00001",
year: "2019",
name: "DR",
auth: "本级自购",
dep: "肿瘤科",
num: "1",
pPrice: "180",
dPrice: "150",
proNum: "xxxxxxxxxx",
},
{
id: "00002",
year: "2020",
name: "DR",
auth: "本级自购",
dep: "肿瘤科",
num: "1",
pPrice: "180",
dPrice: "150",
proNum: "xxxxxxxxxx",
},
{
id: "00003",
year: "2023",
name: "DR",
auth: "本级自购",
dep: "肿瘤科",
num: "1",
pPrice: "180",
dPrice: "150",
proNum: "xxxxxxxxxx",
},
{
id: "00001",
year: "2019",
name: "DR",
auth: "本级自购",
dep: "肿瘤科",
num: "1",
pPrice: "180",
dPrice: "150",
proNum: "xxxxxxxxxx",
},
{
id: "00002",
year: "2020",
name: "DR",
auth: "本级自购",
dep: "肿瘤科",
num: "1",
pPrice: "180",
dPrice: "150",
proNum: "xxxxxxxxxx",
},
{
id: "00003",
year: "2023",
name: "DR",
auth: "本级自购",
dep: "肿瘤科",
num: "1",
pPrice: "180",
dPrice: "150",
proNum: "xxxxxxxxxx",
},
{
id: "00001",
year: "2019",
name: "DR",
auth: "本级自购",
dep: "肿瘤科",
num: "1",
pPrice: "180",
dPrice: "150",
proNum: "xxxxxxxxxx",
},
{
id: "00002",
year: "2020",
name: "DR",
auth: "本级自购",
dep: "肿瘤科",
num: "1",
pPrice: "180",
dPrice: "150",
proNum: "xxxxxxxxxx",
},
{
id: "00003",
year: "2023",
name: "DR",
auth: "本级自购",
dep: "肿瘤科",
num: "1",
pPrice: "180",
dPrice: "150",
proNum: "xxxxxxxxxx",
}
]
export default deviceDataList

22
yxgck-demo/src/main.js

@ -0,0 +1,22 @@
import Vue from 'vue'
import App from './App.vue'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import routes from './route/routes'
Vue.use(ElementUI);
import VueRouter from 'vue-router'
Vue.use(VueRouter)
Vue.config.productionTip = false
const router = new VueRouter({
routes // (缩写) 相当于 routes: routes
})
new Vue({
router:router,
el: '#app',
render: h => h(App)
});

18
yxgck-demo/src/route/routes.js

@ -0,0 +1,18 @@
import deviceList from "../components/device/deviceList.vue"
import deviceDetail from "../components/device/deviceDetial.vue"
import contractList from "../components/contract/contractList.vue"
import contractDetail from "../components/contract/contractDetail.vue"
import systemUser from "../components/system/systemUser.vue"
import systemDic from "../components/system/systemDic.vue"
const routes = [
{ path: '/contract', name:'contract', component: contractList },
{ path: '/contractDetail', name:'contractDetail', component: contractDetail },
{ path: '/device', name:'device', component: deviceList },
{ path: '/deviceDetail', name:'deviceDetail', component: deviceDetail },
{ path: '/systemUser', name:'systemUser', component: systemUser },
{ path: '/systemDic', name:'systemDic', component: systemDic },
{ path: '/', name:'device', component: deviceList },
]
export default routes

4
yxgck-demo/vue.config.js

@ -0,0 +1,4 @@
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
transpileDependencies: true
})
Loading…
Cancel
Save