From 3e800b5efbd282370d02cdc0773811fa77359b67 Mon Sep 17 00:00:00 2001
From: wente <329538422@qq.com>
Date: 星期三, 29 十一月 2023 16:12:13 +0800
Subject: [PATCH] 流程图
---
web/src/views/modules/itemCirculatOrder/ItemCirculatOrder-AddOrUpdate.vue | 370 +++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 273 insertions(+), 97 deletions(-)
diff --git a/web/src/views/modules/itemCirculatOrder/ItemCirculatOrder-AddOrUpdate.vue b/web/src/views/modules/itemCirculatOrder/ItemCirculatOrder-AddOrUpdate.vue
index b83ab23..7e73462 100644
--- a/web/src/views/modules/itemCirculatOrder/ItemCirculatOrder-AddOrUpdate.vue
+++ b/web/src/views/modules/itemCirculatOrder/ItemCirculatOrder-AddOrUpdate.vue
@@ -1,12 +1,13 @@
<template>
- <zt-dialog ref="dialog" column="2" @confirm="formSubmit">
- <el-form :model="dataForm" :inline="true" ref="dataForm" style="padding-top: 0" :disabled="dataForm.disabled" label-width="120px" class="circulationFormAuto">
- <div class="">
+ <zt-dialog ref="dialog" column="3" :title="title" :stepMarker="stepMarker" @confirm="formSubmit">
+ <el-form :model="dataForm" :inline="true" ref="dataForm" style="padding-top: 0" :disabled="dataForm.disabled"
+ label-width="120px" class="circulationFormAuto">
+ <div>
<el-form-item label-width="60px" label="缂栧彿:" style="width:100%;margin-bottom: -5px">
<span>{{dataForm.circulatOrder.code}}</span>
</el-form-item>
</div>
- <div style="border: 1px solid rgba(0,0,0,.2);width: 99%" >
+ <div style="border: 1px solid rgba(0,0,0,.2);width: 99%">
<div style="border-bottom: 1px solid rgba(0,0,0,.2);" class="circulationContentWidth">
<el-form-item class="marginTopAndMarginBottom" label="涓撲笟瀹為獙瀹�" style="width: 32%">
<el-input v-model="dataForm.testAgencyInfo.agencyName" placeholder="涓撲笟瀹為獙瀹�"></el-input>
@@ -24,120 +25,233 @@
<el-input v-model="dataForm.project.softwareIdentity" placeholder="鐗╁搧缂栧彿"></el-input>
</el-form-item>
<el-form-item class="marginTopAndMarginBottom3" label="鏁� 閲�" style="width: 32%">
- <el-input v-model="dataForm.project.softwareName" placeholder="鏁伴噺"></el-input>
+ <el-input v-model="dataForm.project.isContract" placeholder="鏁伴噺"></el-input>
</el-form-item>
</div>
<div style="border-bottom: 1px solid rgba(0,0,0,.2);">
<div style="padding-left:5px;padding-right:5px;">
<div style="padding: 5px">鐗╁搧鎶�鏈祫鏂欏強鏁伴噺锛�</div>
<div class="table-container">
- <el-table ref="tableSoftwareList" class="el-software el-margin-top-bot" border :data="dataForm.technicalList"
+ <el-table ref="tableCirculatOrderList" class="el-software el-margin-top-bot" border
+ :data="dataForm.technicalList"
stripe>
- <el-table-column prop="no" align="center" width="80" label="搴忓彿">
+ <el-table-column prop="no" align="center" width="60" label="搴忓彿">
<template slot-scope="scope">
<span v-html="indexFormat(scope.$index)"></span>
</template>
</el-table-column>
- <el-table-column prop="infoName" min-width="300" label="鎶�鏈祫鏂欏悕绉�">
+ <el-table-column prop="infoName" min-width="180" label="鎶�鏈祫鏂欏悕绉�">
<template v-slot="{ row }">
<el-input v-model="row.name" placeholder="鎶�鏈祫鏂欏悕绉�"></el-input>
</template>
</el-table-column>
- <el-table-column prop="identify" align="center" width="180" label="鏍囪瘑">
+ <el-table-column prop="identify" align="center" width="150" label="鏍囪瘑">
<template v-slot="{ row }">
<el-input v-model="row.version" placeholder="鏍囪瘑"></el-input>
</template>
</el-table-column>
- <el-table-column prop="version" align="center" width="180" label="鐗堟湰">
+ <el-table-column prop="version" align="center" width="120" label="鐗堟湰">
<template v-slot="{ row }">
<el-input v-model="row.identify" placeholder="鐗堟湰"></el-input>
</template>
</el-table-column>
- <el-table-column prop="secretClass" label="瀵嗙骇" width="180" align="center">
+ <el-table-column prop="secretClass" label="瀵嗙骇" width="100" align="center">
<template v-slot="{ row }">
- <el-input v-model="row.secretClass" placeholder="瀵嗙骇"></el-input>
+ <!-- <el-input v-model="row.secretClass" placeholder="瀵嗙骇"></el-input>-->
+ <zt-dict v-model="row.secretClass" dict="secret_class"></zt-dict>
</template>
</el-table-column>
- <el-table-column prop="medium" label="浠嬭川" width="180" align="center">
+ <el-table-column prop="medium" label="浠嬭川" width="100" align="center">
<template v-slot="{ row }">
<el-input v-model="row.medium" placeholder="浠嬭川"></el-input>
</template>
</el-table-column>
- <el-table-column prop="amount" label="鏁伴噺" width="180" align="center">
+ <el-table-column prop="amount" label="鏁伴噺" width="80" align="center">
<template v-slot="{ row }">
<el-input v-model="row.amount" placeholder="鏁伴噺"></el-input>
</template>
</el-table-column>
- <el-table-column prop="remark" label="澶囨敞" width="180" align="center">
+ <el-table-column prop="remark" label="澶囨敞" width="100" align="center">
<template v-slot="{ row }">
<el-input v-model="row.remark" placeholder="澶囨敞"></el-input>
</template>
</el-table-column>
+ <el-table-column fixed="right" prop="files" label="涓婁紶闄勪欢" width="300" align="center">
+ <template v-slot="{ row }">
+ <!-- <zt-table-button @click="files(row.id)">涓婁紶闄勪欢</zt-table-button>-->
+ <table-uploader busi-type="circulat_order" model-name="row" :dataForm="row"
+ v-model="row.files"/>
+ </template>
+ </el-table-column>
</el-table>
-<!-- <div class="icon-container" @click="addSoftwareRow()">-->
-<!-- <!– 鏀剧疆鍥哄畾鐨勫浘鏍� –>-->
-<!-- <i class="el-icon-plus"></i>-->
-<!-- </div>-->
+ <div class="icon-container" @click="addCirculatRow()">
+ <!-- 鏀剧疆鍥哄畾鐨勫浘鏍� -->
+ <i class="el-icon-plus"></i>
+ </div>
</div>
</div>
</div>
<div class="el-flexCirculationDialog el-border-bottom">
- <div class="DHold">
+ <div style="width: 112px;text-align: center;font-weight: 600">
鐗╁搧鐨勫叾瀹冭姹�
</div>
<div style="width: calc(100% - 120px);">
- <div class="el-border-left">
- <el-form-item label="鐗╁搧鏄惁闇�瑕佽繑杩�" label-width="150px" style="width:100%;padding-left:5%;margin-bottom:0">
+ <div class="el-border-left">
+ <el-form-item label="鐗╁搧鏄惁闇�瑕佽繑杩�" label-width="150px" style="width:100%;padding-left:20px;margin-bottom:0">
<zt-dict v-model="dataForm.circulatOrder.itemRequire" :radio="true"
dict="is_or_not"></zt-dict>
</el-form-item>
- <el-form-item label="鐗╁搧鐨勫叾浠栬姹傦細" label-width="150px" style="width:100%;padding-left:5%;margin-bottom:0">
+ <el-form-item label="鐗╁搧鐨勫叾浠栬姹傦細" label-width="150px" style="width:100%;padding-left:20px;margin-bottom:0">
<el-input v-model="dataForm.circulatOrder.itemOther"></el-input>
</el-form-item>
</div>
</div>
</div>
- <div class="circulationContentWidth">
- <el-form-item class="marginTopAndMarginBottom" label="鐗╁搧鎺ユ敹浜�" style="width: 32%">
- <el-input v-model="dataForm.circulatOrder.itemAccept" placeholder="鐗╁搧鎺ユ敹浜�"></el-input>
- </el-form-item>
- <el-form-item class="marginTopAndMarginBottom" label="鏃堕棿" style="width: 32%">
- <el-input v-model="dataForm.circulatOrder.acceptDate" placeholder="鏃堕棿"></el-input>
- </el-form-item>
- <el-form-item class="marginTopAndMarginBottom" label="鎯呭喌璇存槑" style="width: 32%">
- <el-input v-model="dataForm.circulatOrder.acceptSituation" placeholder="鎯呭喌璇存槑"></el-input>
- </el-form-item>
- <el-form-item class="marginTopAndMarginBottom3" label="鏍″噯妫�娴嬩汉" style="width: 32%">
- <el-input v-model="dataForm.circulatOrder.calibratDetect" placeholder="鏍″噯妫�娴嬩汉"></el-input>
- </el-form-item>
- <el-form-item class="marginTopAndMarginBottom3" label="鏃堕棿" style="width: 32%">
- <el-input v-model="dataForm.circulatOrder.detectDate" placeholder="鏃堕棿"></el-input>
- </el-form-item>
- <el-form-item class="marginTopAndMarginBottom3" label="鎯呭喌璇存槑" style="width: 32%">
- <el-input v-model="dataForm.circulatOrder.detectSituation" placeholder="鎯呭喌璇存槑"></el-input>
- </el-form-item>
- <el-form-item class="marginTopAndMarginBottom2" label="鐗╁搧鍏ュ簱浜�" style="width: 32%">
- <el-input v-model="dataForm.circulatOrder.warehouse" placeholder="鐗╁搧鍏ュ簱浜�"></el-input>
- </el-form-item>
- <el-form-item class="marginTopAndMarginBottom2" label="鏃堕棿" style="width: 32%">
- <el-input v-model="dataForm.circulatOrder.warehouseDate" placeholder="鏃堕棿"></el-input>
- </el-form-item>
- <el-form-item class="marginTopAndMarginBottom2" label="鎯呭喌璇存槑" style="width: 32%">
- <el-input v-model="dataForm.circulatOrder.warehouseSituation" placeholder="鎯呭喌璇存槑"></el-input>
- </el-form-item>
- <el-form-item class="marginTopAndMarginBottom2" label="鐗╁搧鍙戞斁浜�" style="width: 32%">
- <el-input v-model="dataForm.circulatOrder.itemIssue" placeholder="鐗╁搧鍙戞斁浜�"></el-input>
- </el-form-item>
- <el-form-item class="marginTopAndMarginBottom2" label="鏃堕棿" style="width: 32%">
- <el-input v-model="dataForm.circulatOrder.issueDate" placeholder="鏃堕棿"></el-input>
- </el-form-item>
- <el-form-item class="marginTopAndMarginBottom2" label="鎯呭喌璇存槑" style="width: 32%">
- <el-input v-model="dataForm.circulatOrder.issueSituation" placeholder="鎯呭喌璇存槑"></el-input>
- </el-form-item>
- <el-form-item class="marginTopAndMarginBottom2 lastChild" label="澶囨敞" style="width: 100%">
- <el-input v-model="dataForm.circulatOrder.remark" placeholder="澶囨敞"></el-input>
+ <div class="el-flexCirculationDialog el-border-bottom">
+ <div style="width: 112px;text-align: center;font-weight: 600">
+ 鐗╁搧鎺ユ敹浜�
+ </div>
+ <div class="el-border-left-right acceptDate" style="width: 20%;;height: 80px;">
+ <el-form-item style="width: 100%;padding-left:20px;margin:0;">
+ {{dataForm.circulatOrder.itemAcceptor}}
</el-form-item>
</div>
+ <div style="width: 52px;text-align: center;font-weight: 600">
+ 鏃堕棿
+ </div>
+ <div class="el-border-left-right acceptDate" style="width: 20%;height: 80px;">
+ <el-form-item style="width: 100%;padding-left:20px;margin:0;">
+ {{ dataForm.circulatOrder.acceptDate | filterTime('YYYY骞碝M鏈圖D鏃�') }}
+ </el-form-item>
+ </div>
+ <div style="width: 84px;text-align: center;font-weight: 600">
+ 鎯呭喌璇存槑
+ </div>
+ <div class="el-border-left " style="width: 35%;height: 80px;">
+ <el-form-item label="鏄惁瀹屾垚鐥呮瘨鏌ユ潃" label-width="150px" style="padding-left:20px;margin-bottom:0">
+ <zt-dict v-model="dataForm.circulatOrder.acceptSituation" :radio="true" dict="is_or_not"></zt-dict>
+ </el-form-item>
+ <el-form-item label="鐥呮瘨搴撶増鏈細" label-width="150px" style="width:100%;padding-left:20px;margin-bottom:0">
+ <el-input v-model="dataForm.circulatOrder.virusLibraryVersion"></el-input>
+ </el-form-item>
+ </div>
+ </div>
+ <!--<div class="el-flexCirculationDialog el-border-bottom">
+ <div style="width: 112px;text-align: center;font-weight: 600">
+ 鏍″噯/妫�娴嬫帴鏀朵汉
+ </div>
+ <div class="el-border-left-right" style="width: 20%;height: 40px;">
+ <el-form-item style="width: 100%;padding-left:20px;margin:0;">
+ {{dataForm.circulatOrder.itemAccept}}
+ </el-form-item>
+ </div>
+ <div style="width: 52px;text-align: center;font-weight: 600">
+ 鏃堕棿
+ </div>
+ <div class="el-border-left-right" style="width: 20%;height: 40px;">
+ <el-form-item style="width: 100%;padding-left:20px;margin:0;">
+ {{dataForm.circulatOrder.acceptDate}}
+ </el-form-item>
+ </div>
+ <div style="width: 84px;text-align: center;font-weight: 600">
+ 鎯呭喌璇存槑
+ </div>
+ <div class="el-border-left " style="width: 35%;height: 40px;">
+ <el-form-item label="鏄惁婊¤冻娴嬭瘯瑕佹眰" label-width="150px" style="padding-left:20px;margin-bottom:0">
+ <zt-dict v-model="dataForm.circulatOrder.cscs" :radio="true" dict="is_or_not"></zt-dict>
+ </el-form-item>
+ </div>
+ </div>-->
+ <div class="el-flexCirculationDialog el-border-bottom">
+ <div style="width: 112px;text-align: center;font-weight: 600">
+ 鏍″噯妫�娴嬩汉
+ </div>
+ <div class="el-border-left-right" style="width: 20%;height: 40px;">
+ <el-form-item style="width: 100%;padding-left:20px;margin:0;">
+ {{dataForm.circulatOrder.calibratDetector}}
+ </el-form-item>
+ </div>
+ <div style="width: 52px;text-align: center;font-weight: 600">
+ 鏃堕棿
+ </div>
+ <div class="el-border-left-right" style="width: 20%;height: 40px;">
+ <el-form-item style="width: 100%;padding-left:20px;margin:0;">
+<!-- {{dataForm.circulatOrder.detectDate}}-->
+ {{ dataForm.circulatOrder.detectDate | filterTime('YYYY骞碝M鏈圖D鏃�') }}
+ </el-form-item>
+ </div>
+ <div style="width: 84px;text-align: center;font-weight: 600">
+ 鎯呭喌璇存槑
+ </div>
+ <div class="el-border-left " style="width: 35%;height: 40px;">
+ <el-form-item label="鏄惁婊¤冻娴嬭瘯瑕佹眰" label-width="150px" style="padding-left:20px;margin-bottom:0">
+ <zt-dict v-model="dataForm.circulatOrder.detectSituation" :radio="true" dict="is_or_not"></zt-dict>
+ </el-form-item>
+ </div>
+ </div>
+ <!-- <div class="el-flexCirculationDialog el-border-bottom">
+ <div style="width: 112px;text-align: center;font-weight: 600">
+ 鐗╁搧鍏ュ簱浜�
+ </div>
+ <div class="el-border-left-right" style="width: 20%;height: 40px;">
+ <el-form-item style="width: 100%;padding-left:20px;margin:0;">
+ {{dataForm.circulatOrder.warehouse}}
+ </el-form-item>
+ </div>
+ <div style="width: 52px;text-align: center;font-weight: 600">
+ 鏃堕棿
+ </div>
+ <div class="el-border-left-right" style="width: 20%;height: 40px;">
+ <el-form-item style="width: 100%;padding-left:20px;margin:0;">
+ {{dataForm.circulatOrder.warehouseDate}}
+ </el-form-item>
+ </div>
+ <div style="width: 84px;text-align: center;font-weight: 600">
+ 鎯呭喌璇存槑
+ </div>
+ <div class="el-border-left " style="width: 35%;height: 40px;">
+ <el-form-item label="鏄惁婊¤冻娴嬭瘯瑕佹眰" label-width="150px" style="padding-left:20px;margin-bottom:0">
+ <zt-dict v-model="dataForm.circulatOrder.warehouseSituation" :radio="true" dict="is_or_not"></zt-dict>
+ </el-form-item>
+ </div>
+ </div>-->
+ <div class="el-flexCirculationDialog el-border-bottom">
+ <div style="width: 112px;text-align: center;font-weight: 600">
+ 鐗╁搧鍙戞斁浜�
+ </div>
+ <div class="el-border-left-right " style="width: 20%;height: 40px;">
+ <el-form-item style="width: 100%;padding-left:20px;margin:0;">
+ {{dataForm.circulatOrder.itemIssuer}}
+ </el-form-item>
+ </div>
+ <div style="width: 52px;text-align: center;font-weight: 600">
+ 鏃堕棿
+ </div>
+ <div class="el-border-left-right " style="width: 20%;height: 40px;">
+ <el-form-item style="width: 100%;padding-left:20px;margin:0;">
+<!-- {{dataForm.circulatOrder.issueDate}}-->
+ {{ dataForm.circulatOrder.issueDate | filterTime('YYYY骞碝M鏈圖D鏃�') }}
+ </el-form-item>
+ </div>
+ <div style="width: 84px;text-align: center;font-weight: 600">
+ 鎯呭喌璇存槑
+ </div>
+ <div class="el-border-left " style="width: 35%;height: 40px;">
+ <el-form-item label="鏄惁瀹屾垚鏍峰搧鍙戞斁" label-width="150px" style="padding-left:20px;margin-bottom:0">
+ <zt-dict v-model="dataForm.circulatOrder.issueSituation" :radio="true" dict="is_or_not"></zt-dict>
+ </el-form-item>
+ </div>
+ </div>
+ <div class="el-flexCirculationDialog">
+ <div style="width: 112px;text-align: center;font-weight: 600">
+ 澶囨敞
+ </div>
+ <div class="el-border-left " style="width: 20%;height: 40px">
+ <el-form-item style="width: 100%;padding-left:20px;margin:0;">
+ <el-input v-model="dataForm.circulatOrder.itemAcceptr"></el-input>
+ </el-form-item>
+ </div>
+ </div>
</div>
</el-form>
</zt-dialog>
@@ -147,44 +261,72 @@
export default {
data() {
return {
+ stepMarker: '',
+ title: '鏌ョ湅',
dataForm: {
id: '',
- circulatOrder:{
+ circulatOrder: {
code: '1',
itemAccept: '',
itemRequire: '',
- itemOther:'',
- acceptSituation:'',
+ itemOther: '',
+ acceptSituation: '',
acceptDate: '',
- calibratDetect: '',
+ calibratDetector: '',
detectDate: '',
detectSituation: '',
warehouse: '',
warehouseDate: '',
warehouseSituation: '',
- itemIssue: '',
+ itemIssuer: '',
issueDate: '',
issueSituation: '',
remark: '',
+ virusLibraryVersion:'',
+ itemAcceptor:''
},
project: {
softwareIdentity: '',
softwareName: '',
},
testAgencyInfo: {
- agencyName:'',
+ agencyName: '',
},
- technicalList:[]
+ technicalList: [],
+ flowInfoDto: {}
}
}
},
methods: {
- init(id,row){
- this.dataForm.id = row.id
+ indexFormat(index) {
+ return index += 1
+ },
+ init(id, row) {
+ if (id) {
+ this.dataForm.id = id
+ } else {
+ this.dataForm.id = row.id
+ }
this.dataForm.projectId = row.projectId
// this.dataForm.disabled
this.getInfo()
- console.log(this.dataForm.id,this.dataForm.projectId,'params params')
+ if (!this.dataForm.disabled) {
+ if (!row.stepMarker) {
+ this.stepMarker = 'wplz_first'
+ this.title = '鐗╁搧鎺ユ敹'
+ } else {
+ this.title = row.stepName
+ this.stepMarker = row.stepMarker
+ }
+ }
+ console.log(this.dataForm.id, this.dataForm.projectId, this.stepMarker, 'this.dataForm.id, this.dataForm.projectId,this.stepMarker')
+ },
+ addCirculatRow() {
+ this.dataForm.technicalList.push({})
+ this.$nextTick(() => {
+ const tableBody = this.$refs.tableCirculatOrderList.$el.querySelector('.el-table__body-wrapper')
+ tableBody.scrollTop = tableBody.scrollHeight;
+ })
},
// 鑾峰彇淇℃伅
async getInfo() {
@@ -192,17 +334,39 @@
circulatOrderid: this.dataForm.id,
projectId: this.dataForm.projectId
}
- let res = await this.$http.get(`/itemCirculatOrder/ItemCirculatOrder/getDto`,{params: params})
+ let res = await this.$http.get(`/itemCirculatOrder/ItemCirculatOrder/getDto`, {params: params})
this.dataForm = {
...this.dataForm,
...res.data
}
- console.log(this.dataForm,"this.dataForm")
+ console.log(this.dataForm, "getInfo this.dataForm")
},
// 琛ㄥ崟鎻愪氦
- async formSubmit() {
+ async formSubmit(submitType) {
+ console.log(this.dataForm, "this.dataForm11111")
+ if (submitType == 'tj' || submitType == 'bl') {
+ let flowInfo = {
+ flowCode: 'wplz',
+ stepIdMark: this.stepMarker,
+ submitType: submitType
+ }
+ this.dataForm.flowInfoDto = flowInfo;
+ }
let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/itemCirculatOrder/ItemCirculatOrder/', this.dataForm)
if (res.success) {
+ /* if (submitType == 'tj') {
+ console.log(res, 'bbbb')
+ let res2 = await this.$http.get('/wf/startFlow', submitForm)
+ if (res2.success) {
+ let res3 = await this.$http.get('/wf/approvePass', submitForm)
+ if (res3.success) {
+ }
+ }
+ } else if (submitType == 'bl') {
+ let res2 = await this.$http.get('/wf/approvePass', submitForm)
+ if (res2.success) {
+ }
+ }*/
await this.$tip.success()
this.$refs.dialog.close()
this.$emit('refreshDataList')
@@ -212,27 +376,39 @@
}
</script>
<style>
-.el-flexCirculationDialog{
- display: flex;
- align-items: center
-}
-.circulationContentWidth > .el-form-item > .el-form-item__content {
- width: calc(100% - 120px);
-}
-.circulationContentWidth > .el-form-item.lastChild > .el-form-item__content {
- width: calc(100% - 142px);
-}
-.circulationFormAuto .marginTopAndMarginBottom {
- margin-top: 10px !important;
- margin-bottom: 0 !important;
-}
+ .el-flexCirculationDialog {
+ display: flex;
+ align-items: center
+ }
-.circulationFormAuto .marginTopAndMarginBottom2 {
- margin-top: -10px !important;
- margin-bottom: 10px !important;
-}
-.circulationFormAuto .marginTopAndMarginBottom3 {
- margin-top: 0 !important;
- margin-bottom: 10px !important;
-}
+ .circulationContentWidth > .el-form-item > .el-form-item__content {
+ width: calc(100% - 120px);
+ }
+
+ .circulationContentWidth > .el-form-item.lastChild > .el-form-item__content {
+ width: calc(100% - 142px);
+ }
+
+ .circulationFormAuto .marginTopAndMarginBottom {
+ margin-top: 10px !important;
+ margin-bottom: 0 !important;
+ }
+
+ .circulationFormAuto .marginTopAndMarginBottom2 {
+ margin-top: -10px !important;
+ margin-bottom: 10px !important;
+ }
+
+ .circulationFormAuto .marginTopAndMarginBottom3 {
+ margin-top: 0 !important;
+ margin-bottom: 10px !important;
+ }
+
+ .acceptDate > .el-form-item > .el-form-item__content {
+ line-height: 80px;
+ }
+
+ .circulationFormAuto .el-radio {
+ margin-right: 10px;
+ }
</style>
--
Gitblit v1.9.1